NetworkManager/shared/nm-utils
Thomas Haller 57c371e32f shared: add nm_utils_buf_utf8safe_escape() util
We already have nm_utils_str_utf8safe_escape() to convert a
NUL termianted string to an UTF-8 string. nm_utils_str_utf8safe_escape()
operates under the assumption, that the input strig is already valid UTF-8
and returns the input string verbatim. That way, in the common expected
cases, the string just looks like a regular UTF-8 string.
However, in case there are invalid UTF-8 sequences (or a backslash
escape characters), the function will use backslash escaping to encode
the input string as a valid UTF-8 sequence. Note that the escaped
sequence, can be reverted to the original non-UTF-8 string via
unescape.
An example, where this is useful are file names or interface names.
Which are not in a defined encoding, but NUL terminated and commonly ASCII or
UTF-8 encoded.

Extend this, to also handle not NUL terminated buffers. The same
applies, except that the process cannot be reverted via g_strcompress()
-- because the NUL character cannot be unescaped.

This will be useful to escape a Wi-Fi SSID. Commonly we expect the SSID
to be in UTF-8/ASCII encoding and we want to print it verbatim. Only
if that is not the case, we fallback to backslash escaping. However, the
orginal value can be fully recovered via unescape(). The difference
between an SSID and a filename is, that the former can contain '\0'
bytes.
2018-08-22 10:49:34 +02:00
..
c-list-util.c shared: implement c_list_sort() as non-recursive merge-sort 2018-01-03 16:41:47 +01:00
c-list-util.h shared: drop duplicate c-list.h header 2018-04-18 15:22:14 +02:00
nm-c-list.h shared: drop duplicate c-list.h header 2018-04-18 15:22:14 +02:00
nm-compat.c shared/compat: minor refactoring of compat code 2017-12-22 15:53:22 +01:00
nm-compat.h shared/compat: add compat for nm_setting_vpn_get_data_keys() and nm_setting_vpn_get_secret_keys() 2017-11-23 14:44:25 +01:00
nm-dedup-multi.c shared/utils/dedup-multi: make nm_dedup_multi_obj_unref() return void 2018-02-08 17:11:46 +01:00
nm-dedup-multi.h all: replace "it's" with "its" where needed 2018-04-18 14:14:07 +02:00
nm-enum-utils.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-enum-utils.h all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-glib.h shared/gsystem-local-alloc: merge "gsystem-local-alloc.h" into "nm-macros-shared.h" 2018-07-18 10:21:27 +02:00
nm-hash-utils.c all: replace systemd's siphash24 with c-siphash 2018-05-31 15:59:38 +02:00
nm-hash-utils.h shared: add nm_hash_val() macro 2018-07-11 16:16:22 +02:00
nm-jansson.h all: require jansson 2.5 2018-01-18 11:45:24 +01:00
nm-macros-internal.h shared: add NM_DIV_ROUND_UP() helper macro 2018-08-10 10:38:19 +02:00
nm-obj.h all: replace "it's" with "its" where needed 2018-04-18 14:14:07 +02:00
nm-random-utils.c shared/trivial: fix typo on comment 2018-05-24 16:21:28 +02:00
nm-random-utils.h shared: split random and hash utils 2017-10-17 20:02:59 +02:00
nm-shared-utils.c shared: add nm_utils_buf_utf8safe_escape() util 2018-08-22 10:49:34 +02:00
nm-shared-utils.h shared: add nm_utils_buf_utf8safe_escape() util 2018-08-22 10:49:34 +02:00
nm-test-utils.h utils/test: don't assert on debug level messages 2018-08-11 11:45:03 +02:00
nm-udev-utils.c all: fix -Wcast-function-type warnings 2018-02-08 17:11:46 +01:00
nm-udev-utils.h udev: add and use nm_udev_utils_property_decode() function 2017-03-22 12:41:06 +01:00
nm-vpn-editor-plugin-call.h shared: include "gsystem-local-alloc.h" from "nm-glib.h" 2016-06-16 10:45:54 +02:00
nm-vpn-plugin-macros.h shared: add nm_utils_syslog_coerce_from_nm() util 2016-09-19 15:35:33 +02:00
nm-vpn-plugin-utils.c shared: add "nm-utils/nm-vpn-plugin-utils.h" 2016-06-16 10:45:54 +02:00
nm-vpn-plugin-utils.h shared: add "nm-utils/nm-vpn-plugin-utils.h" 2016-06-16 10:45:54 +02:00
unaligned.h systemd: update code from upstream (2018-06-15) 2018-06-15 15:18:28 +02:00