mirror of https://gerrit.osmocom.org/libosmocore
8a7eed50db
Provide string escaping that - returns the required buffer size, so it can be used with OSMO_STRBUF_APPEND(). - uses C compatible string constant escaping sequences. This is intended as a replacement for all previous osmo_escape_str* and osmo_quote_str* API. It pains me that I didn't get them right the first nor the second time: - The buffer functions do not return the chars needed, which is required for allocating sufficient memory in the *_c versions of the functions. - Because of that, these functions are accurately usable for OSMO_STRBUF_APPEND(), producing truncated strings, for example when dumping a GSUP message. - They do not use the C equivalent string constant escaping: for some reason I thought "\15" would be valid, but it should be "\x0f". If I could, I would completely drop those mislead implementations ... but backwards compat prohibits that. A previous patch already provided internal static functions that accurately return the required buffer size. Enhance these to also support C compatible string escaping, and use them as implementation of the new functions: osmo_escape_cstr_buf() osmo_escape_cstr_c() osmo_quote_cstr_buf() osmo_quote_cstr_c() In the tests for these, also test C string equivalence. Naming: from API versions, it would be kind of logical to call them osmo_escape_str_buf3() and osmo_escape_str_c2(). Since these anyway return a different escaping, it makes sense to me to have distinct names instead. Quasi missing are variants of the non-C-compatible weird legacy escaping that return the required buffer size, but I refrain from adding those, because we have enough API cruft as it is. Just always use these new cstr variants. Change-Id: I3dfb892036e01000033dd8e7e4a6a0c32a3caa9b |
||
---|---|---|
.. | ||
codec | ||
coding | ||
ctrl | ||
gb | ||
gsm | ||
pseudotalloc | ||
sim | ||
vty | ||
Makefile.am | ||
application.c | ||
backtrace.c | ||
bitcomp.c | ||
bits.c | ||
bitvec.c | ||
context.c | ||
conv.c | ||
conv_acc.c | ||
conv_acc_generic.c | ||
conv_acc_sse.c | ||
conv_acc_sse_avx.c | ||
conv_acc_sse_impl.h | ||
counter.c | ||
crc16.c | ||
crcXXgen.c.tpl | ||
fsm.c | ||
gsmtap_util.c | ||
isdnhdlc.c | ||
logging.c | ||
logging_gsmtap.c | ||
logging_syslog.c | ||
loggingrb.c | ||
macaddr.c | ||
msgb.c | ||
msgfile.c | ||
panic.c | ||
plugin.c | ||
prbs.c | ||
prim.c | ||
rate_ctr.c | ||
rbtree.c | ||
select.c | ||
sercomm.c | ||
serial.c | ||
signal.c | ||
sockaddr_str.c | ||
socket.c | ||
stat_item.c | ||
stats.c | ||
stats_statsd.c | ||
strrb.c | ||
tdef.c | ||
timer.c | ||
timer_clockgettime.c | ||
timer_gettimeofday.c | ||
use_count.c | ||
utils.c | ||
write_queue.c |