When the flag is set, the string which contains non-ascii characters
will be refused.
return 0;
}
+ if (FLAGS_SET(ltype, CONFIG_PARSE_STRING_ASCII) && !ascii_is_valid(rvalue)) {
+ _cleanup_free_ char *escaped = NULL;
+
+ escaped = cescape(rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, 0,
+ "Specified string contains invalid ASCII characters, ignoring: %s", strna(escaped));
+ return 0;
+ }
+
return free_and_strdup_warn(s, empty_to_null(rvalue));
}
typedef enum ConfigParseStringFlags {
CONFIG_PARSE_STRING_SAFE = 1 << 0,
+ CONFIG_PARSE_STRING_ASCII = 1 << 1,
+
+ CONFIG_PARSE_STRING_SAFE_AND_ASCII = CONFIG_PARSE_STRING_SAFE | CONFIG_PARSE_STRING_ASCII,
} ConfigParseStringFlags;
#define DEFINE_CONFIG_PARSE(function, parser, msg) \