chiark / gitweb /
conf-parse: make syntax logging functions behave more like other log functons
authorLennart Poettering <lennart@poettering.net>
Wed, 7 Jan 2015 21:05:20 +0000 (22:05 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 7 Jan 2015 22:44:08 +0000 (23:44 +0100)
In particular, don't patch the error number to EINVAL if 0, and don't
negate it.

(Also, add do {} while (false) around multi-line macro)

src/shared/conf-parser.c
src/shared/conf-parser.h

index 5fe983a..a1a94da 100644 (file)
@@ -61,7 +61,7 @@ int log_syntax_internal(
 
         if (unit)
                 r = log_struct_internal(level,
-                                        error > 0 ? error : EINVAL,
+                                        error,
                                         file, line, func,
                                         getpid() == 1 ? "UNIT=%s" : "USER_UNIT=%s", unit,
                                         LOG_MESSAGE_ID(SD_MESSAGE_CONFIG_ERROR),
@@ -71,7 +71,7 @@ int log_syntax_internal(
                                         NULL);
         else
                 r = log_struct_internal(level,
-                                        error > 0 ? error : EINVAL,
+                                        error,
                                         file, line, func,
                                         LOG_MESSAGE_ID(SD_MESSAGE_CONFIG_ERROR),
                                         "CONFIG_FILE=%s", config_file,
index 2507a44..7a2f855 100644 (file)
@@ -136,11 +136,12 @@ int log_syntax_internal(
                             config_file, config_line,                   \
                             error, __VA_ARGS__)
 
-#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) { \
-        _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", __p);   \
-        }
+#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,                                  \