From d6293c070e6e4b83d8e7ec56e465b0b215d55d98 Mon Sep 17 00:00:00 2001 From: Filipe Brandenburger Date: Tue, 2 Jun 2015 21:08:24 -0700 Subject: util: New flag UNQUOTE_UNESCAPE_RELAX for unquote_first_word The new flag UNQUOTE_UNESCAPE_RELAX preserves unrecognized escape sequences verbatim in unquote_first_word, either when it's a trailing backslash (similar to UNQUOTE_RELAX, but in this case keep the extra backslash in the output) or in the middle of a sequence string. Add unit test cases to ensure the new flag works as expected and to prevent regressions from being introduced. Tested with a follow up commit converting config_parse_exec() to start using unquote_first_word, in which case this flags makes it possible to preserve unrecognized escape sequences. Relevant bug: https://bugs.freedesktop.org/show_bug.cgi?id=90794 --- src/basic/util.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/basic/util.h') diff --git a/src/basic/util.h b/src/basic/util.h index 7aca46d777..748f22f1a2 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -839,8 +839,9 @@ int is_dir(const char *path, bool follow); int is_device_node(const char *path); typedef enum UnquoteFlags { - UNQUOTE_RELAX = 1, - UNQUOTE_CUNESCAPE = 2, + UNQUOTE_RELAX = 1, + UNQUOTE_CUNESCAPE = 2, + UNQUOTE_CUNESCAPE_RELAX = 4, } UnquoteFlags; int unquote_first_word(const char **p, char **ret, UnquoteFlags flags); -- cgit v1.2.3-54-g00ecf