diff options
| author | Denis Kenzior <denkenz@gmail.com> | 2010-05-24 11:30:59 -0500 | 
|---|---|---|
| committer | Denis Kenzior <denkenz@gmail.com> | 2010-05-25 16:52:51 -0500 | 
| commit | ec8a6cbc43a81b8973f4238cd56645b3bb8246f3 (patch) | |
| tree | a53794f60796fecb75c421d32e5ae76e87af0ad0 /src/simutil.c | |
| parent | ea46bae631c831549914cdcf5bedc11a3b591180 (diff) | |
| download | ofono-ec8a6cbc43a81b8973f4238cd56645b3bb8246f3.tar.bz2 | |
simutil: Simplify ber_tlv_builder_optimize logic
Diffstat (limited to 'src/simutil.c')
| -rw-r--r-- | src/simutil.c | 21 | 
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( |