From: Lennart Poettering Date: Tue, 22 May 2018 10:09:59 +0000 (+0200) Subject: volatile-mode: use the usual string table macros for implementing volatile_mode_from_... X-Git-Tag: v239~226^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=081a0c7256136e949a4a27fa965d40368cb8e5ce;p=thirdparty%2Fsystemd.git volatile-mode: use the usual string table macros for implementing volatile_mode_from_string() Let's shorten our code a bit, and also add the matching _to_string() call. --- diff --git a/src/shared/volatile-util.c b/src/shared/volatile-util.c index d70d5856d32..a20f0b43f45 100644 --- a/src/shared/volatile-util.c +++ b/src/shared/volatile-util.c @@ -11,27 +11,10 @@ #include "macro.h" #include "parse-util.h" #include "proc-cmdline.h" +#include "string-table.h" #include "string-util.h" #include "volatile-util.h" -VolatileMode volatile_mode_from_string(const char *s) { - int b; - - if (isempty(s)) - return _VOLATILE_MODE_INVALID; - - b = parse_boolean(s); - if (b > 0) - return VOLATILE_YES; - if (b == 0) - return VOLATILE_NO; - - if (streq(s, "state")) - return VOLATILE_STATE; - - return _VOLATILE_MODE_INVALID; -} - int query_volatile_mode(VolatileMode *ret) { _cleanup_free_ char *mode = NULL; VolatileMode m = VOLATILE_NO; @@ -56,3 +39,11 @@ finish: *ret = m; return r; } + +static const char* const volatile_mode_table[_VOLATILE_MODE_MAX] = { + [VOLATILE_NO] = "no", + [VOLATILE_YES] = "yes", + [VOLATILE_STATE] = "state", +}; + +DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(volatile_mode, VolatileMode, VOLATILE_YES); diff --git a/src/shared/volatile-util.h b/src/shared/volatile-util.h index b275bff1767..4312c97a995 100644 --- a/src/shared/volatile-util.h +++ b/src/shared/volatile-util.h @@ -16,5 +16,6 @@ typedef enum VolatileMode { } VolatileMode; VolatileMode volatile_mode_from_string(const char *s); +const char* volatile_mode_to_string(VolatileMode m); int query_volatile_mode(VolatileMode *ret);