summaryrefslogtreecommitdiffstats
path: root/TODO-RELEASE
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-03-05 16:42:50 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2019-04-12 01:00:16 +0200
commitecef7ec3c36805e70e3da88ea694aeaf526e751d (patch)
tree85edb94effe46e05b4e802f38dbb17914d6c6d31 /TODO-RELEASE
parent8531d6695f7363e5fa24141c53253e699d99ca0a (diff)
add osmo_{escape,quote}_str_buf2() for standard args ordering
To be able to append an escaped or quoted string using OSMO_STRBUF_APPEND_NOLEN(), the function signature must have the buf and len as first args, like most other *_buf() functions. Add osmo_escape_str_buf2() and osmo_quote_str_buf2() to match this signature. A recent patch [1] has changed the return value of osmo_escape_str_buf() to char*, removing the const. However, the functions may return const strings, hence re-add the const. The new signatures always return the non-const buffer. To avoid code duplication, implement osmo_quote_str_buf() and osmo_escape_str_buf() by calling the new functions. I decided to allow slight changes to the behavior for current osmo_escape_str() and osmo_escape_str_buf(), because impact on callers is minimal: (1) The new implementation uses OSMO_STRBUF_*, and in consequence osmo_quote_str() no longer prints an ending double quote after truncated strings; Before, a truncated output was, sic: "this string is trunca" and now this becomes, sic: "this string is truncat I decided to not keep the old behavior because it is questionable to begin with. It looks like the string actually ended at the truncation boundary instead of the reason being not enough space in the output buffer. (2) The new osmo_escape_str_buf2() function obviously cannot pass-thru an unchanged char* if no escaping was needed. Sacrifice this tiny optimization feature to avoid code duplication: - it is an unnoticeable optimization, - the caller anyway always passes a string buffer, - the feature caused handling strings and buffers differently depending on their content (i.e. code that usually writes out strings in full length "suddenly" truncates because a non-printable character is contained, etc.) I considered adding a skip_if_unescaped flag to the osmo_quote_str_buf2() function signature, but in the end decided that the API clutter is not worth having for all the above reasons. Adjust tests to accomodate above changes. [1] 4a62eda225ab7f3c9556990c81a6fc5e19b5eec8 Ibf85f79e93244f53b2684ff6f1095c5b41203e05 Change-Id: Id748b906b0083b1f1887f2be7a53cae705a8a9ae
Diffstat (limited to 'TODO-RELEASE')
-rw-r--r--TODO-RELEASE8
1 files changed, 8 insertions, 0 deletions
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 5ddc57a3..7c81e323 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -11,3 +11,11 @@ libosmogb gprs_ns_inst Adding bss_sns_fi member for IP-SNS support
libosmogb gprs_nsvc Adding sig_weight and data_weight members for IP-SNS support
libosmogb various new symbols Adding functions related to IP-SNS support
libosmocore osmo_fsm_inst Add flag proc.terminating (ABI change)
+libosmocore osmo_escape_str(), These now always copy to the buffer instead of returning the
+ osmo_escape_str_buf() unchanged input string when no chars needed escaping, hence
+ returned strings might now also be truncated even if all chars were printable.
+libosmocore osmo_escape_str_buf2() New function signature similar to snprintf(), for use with OSMO_STRBUF_APPEND().
+libosmocore osmo_quote_str(), On string truncation, these used to print a closing quote '"' after the
+ osmo_quote_str_buf() truncated string. This is no longer the case. e.g. a string 'truncated' in a
+ 9-char buffer used to print '"trunca"\0', which now becomes '"truncat\0'.
+libosmocore osmo_quote_str_buf2() New function signature similar to snprintf(), for use with OSMO_STRBUF_APPEND().