summaryrefslogtreecommitdiffstats
path: root/src/simutil.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-05-24 11:30:59 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-05-25 16:52:51 -0500
commitec8a6cbc43a81b8973f4238cd56645b3bb8246f3 (patch)
treea53794f60796fecb75c421d32e5ae76e87af0ad0 /src/simutil.c
parentea46bae631c831549914cdcf5bedc11a3b591180 (diff)
downloadofono-ec8a6cbc43a81b8973f4238cd56645b3bb8246f3.tar.bz2
simutil: Simplify ber_tlv_builder_optimize logic
Diffstat (limited to 'src/simutil.c')
-rw-r--r--src/simutil.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/simutil.c b/src/simutil.c
index 2509cccd..c0c72f0a 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -631,20 +631,23 @@ gboolean ber_tlv_builder_recurse_comprehension(struct ber_tlv_builder *builder,
}
void ber_tlv_builder_optimize(struct ber_tlv_builder *builder,
- unsigned char **pdu, unsigned int *len)
+ unsigned char **out_pdu, unsigned int *out_len)
{
+ unsigned int len;
+ unsigned char *pdu;
+
ber_tlv_builder_write_header(builder);
- if (pdu == NULL)
- return;
+ len = builder->pos + MAX_BER_TLV_HEADER + builder->len;
- *len = builder->pos + MAX_BER_TLV_HEADER + builder->len;
- *pdu = builder->pdu;
+ for (pdu = builder->pdu; *pdu == 0xff; pdu++)
+ len--;
- while (**pdu == 0xff) {
- (*len)--;
- (*pdu)++;
- }
+ if (out_pdu)
+ *out_pdu = pdu;
+
+ if (out_len)
+ *out_len = len;
}
gboolean comprehension_tlv_builder_init(