mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 08:56:15 +09:00
log: move log_invalid_utf8() to log.h
Also, make sure it follows the same scheme as log_syntax() does in its behaviour.
This commit is contained in:
@@ -227,3 +227,15 @@ int log_syntax_internal(
|
||||
? log_syntax_internal(unit, _level, config_file, config_line, _e, __FILE__, __LINE__, __func__, __VA_ARGS__) \
|
||||
: -abs(_e); \
|
||||
})
|
||||
|
||||
#define log_syntax_invalid_utf8(unit, level, config_file, config_line, rvalue) \
|
||||
({ \
|
||||
int _level = (level); \
|
||||
if (log_get_max_level() >= LOG_PRI(_level)) { \
|
||||
_cleanup_free_ char *_p = NULL; \
|
||||
_p = utf8_escape_invalid(rvalue); \
|
||||
log_syntax_internal(unit, _level, config_file, config_line, 0, __FILE__, __LINE__, __func__, \
|
||||
"String is not UTF-8 clean, ignoring assignment: %s", strna(_p)); \
|
||||
} \
|
||||
-EINVAL; \
|
||||
})
|
||||
|
||||
@@ -259,7 +259,7 @@ int config_parse_unit_path_strv_printf(
|
||||
}
|
||||
|
||||
if (!utf8_is_valid(k)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1835,7 +1835,7 @@ int config_parse_working_directory(
|
||||
path_kill_slashes(k);
|
||||
|
||||
if (!utf8_is_valid(k)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, 0, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2193,7 +2193,7 @@ int config_parse_unit_requires_mounts_for(
|
||||
return log_oom();
|
||||
|
||||
if (!utf8_is_valid(n)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3172,7 +3172,7 @@ int config_parse_namespace_path_strv(
|
||||
return log_oom();
|
||||
|
||||
if (!utf8_is_valid(n)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -620,7 +620,7 @@ int config_parse_string(
|
||||
assert(data);
|
||||
|
||||
if (!utf8_is_valid(rvalue)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -658,7 +658,7 @@ int config_parse_path(
|
||||
assert(data);
|
||||
|
||||
if (!utf8_is_valid(rvalue)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -724,7 +724,7 @@ int config_parse_strv(const char *unit,
|
||||
return log_oom();
|
||||
|
||||
if (!utf8_is_valid(n)) {
|
||||
log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
||||
free(n);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -123,13 +123,6 @@ int config_parse_log_level(const char *unit, const char *filename, unsigned line
|
||||
int config_parse_signal(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_personality(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
|
||||
#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) \
|
||||
do { \
|
||||
_cleanup_free_ char *_p = utf8_escape_invalid(rvalue); \
|
||||
log_syntax(unit, level, config_file, config_line, error, \
|
||||
"String is not UTF-8 clean, ignoring assignment: %s", strna(_p)); \
|
||||
} while(false)
|
||||
|
||||
#define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \
|
||||
int function(const char *unit, \
|
||||
const char *filename, \
|
||||
|
||||
Reference in New Issue
Block a user