From 4d7213b2747ddd87002f970ccc60b1a9ab637136 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 3 Mar 2014 21:23:12 +0100 Subject: [PATCH] core: move ShowStatus type into the core Let's make the scope of the show-status stuff a bit smaller, and make it private to the core, rather than shared API in shared/. --- Makefile.am | 4 +++- src/core/main.c | 51 ++++++++++++++++++++++++++++++++-------- src/core/manager.h | 1 + src/shared/conf-parser.c | 29 ----------------------- src/shared/conf-parser.h | 1 - src/shared/exit-status.c | 17 -------------- src/shared/exit-status.h | 14 ++--------- 7 files changed, 47 insertions(+), 70 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3eafcff4b..5a02d1ef3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1018,7 +1018,9 @@ libsystemd_core_la_SOURCES = \ src/core/audit-fd.c \ src/core/audit-fd.h \ src/core/async.c \ - src/core/async.h + src/core/async.h \ + src/core/show-status.c \ + src/core/show-status.h if HAVE_KMOD libsystemd_core_la_SOURCES += \ diff --git a/src/core/main.c b/src/core/main.c index 71ec607de..4ca847c78 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -468,16 +468,17 @@ DEFINE_SETTER(config_parse_target, log_set_target_from_string, "target") DEFINE_SETTER(config_parse_color, log_show_color_from_string, "color" ) DEFINE_SETTER(config_parse_location, log_show_location_from_string, "location") -static int config_parse_cpu_affinity2(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) { +static int config_parse_cpu_affinity2( + 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) { char *w; size_t l; @@ -524,6 +525,36 @@ static int config_parse_cpu_affinity2(const char *unit, return 0; } +static int config_parse_show_status( + 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 k; + ShowStatus *b = data; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + k = parse_show_status(rvalue, b); + if (k < 0) { + log_syntax(unit, LOG_ERR, filename, line, -k, + "Failed to parse show status setting, ignoring: %s", rvalue); + return 0; + } + + return 0; +} + static void strv_free_free(char ***l) { char ***i; diff --git a/src/core/manager.h b/src/core/manager.h index 3192b63df..92985caef 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -58,6 +58,7 @@ typedef enum ManagerExitCode { #include "execute.h" #include "unit-name.h" #include "exit-status.h" +#include "show-status.h" struct Manager { /* Note that the set of units we know of is allowed to be diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index f39a4cd1f..accbdac6b 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -565,35 +565,6 @@ int config_parse_bool(const char* unit, return 0; } -int config_parse_show_status(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 k; - ShowStatus *b = data; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - k = parse_show_status(rvalue, b); - if (k < 0) { - log_syntax(unit, LOG_ERR, filename, line, -k, - "Failed to parse show status setting, ignoring: %s", rvalue); - return 0; - } - - return 0; -} - int config_parse_string(const char *unit, const char *filename, unsigned line, diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index 7948465d0..50e9270af 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -101,7 +101,6 @@ int config_parse_iec_size(const char *unit, const char *filename, unsigned line, int config_parse_si_size(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_iec_off(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_bool(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_show_status(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_string(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_path(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_strv(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); diff --git a/src/shared/exit-status.c b/src/shared/exit-status.c index c1c086116..d860b5551 100644 --- a/src/shared/exit-status.c +++ b/src/shared/exit-status.c @@ -205,20 +205,3 @@ bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status) { code == CLD_EXITED && (status == EXIT_NOTINSTALLED || status == EXIT_NOTCONFIGURED); } - -int parse_show_status(const char *v, ShowStatus *ret) { - int r; - - assert(v); - assert(ret); - - if (streq(v, "auto")) { - *ret = SHOW_STATUS_AUTO; - return 0; - } - r = parse_boolean(v); - if (r < 0) - return r; - *ret = r ? SHOW_STATUS_YES : SHOW_STATUS_NO; - return 0; -} diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h index 9dc3fce0b..385d6def0 100644 --- a/src/shared/exit-status.h +++ b/src/shared/exit-status.h @@ -22,7 +22,9 @@ ***/ #include + #include "set.h" + typedef enum ExitStatus { /* EXIT_SUCCESS defined by libc */ /* EXIT_FAILURE defined by libc */ @@ -91,15 +93,3 @@ const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) _con bool is_clean_exit(int code, int status, ExitStatusSet *success_status); bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status); - -/* Manager status */ - -typedef enum ShowStatus { - _SHOW_STATUS_UNSET = -2, - SHOW_STATUS_AUTO = -1, - SHOW_STATUS_NO = 0, - SHOW_STATUS_YES = 1, - SHOW_STATUS_TEMPORARY = 2, -} ShowStatus; - -int parse_show_status(const char *v, ShowStatus *ret); -- 2.30.2