From 8fc9e5ac4b3a699f8d6b78471829692f0c92d5fa Mon Sep 17 00:00:00 2001 From: Thomas Guyot-Sionnest Date: Wed, 29 Jan 2014 03:20:23 -0500 Subject: Move negate' translate_state() to utils_base.h mp_translate_state() Also use strcasecmp imported from gnulib for simplicity --- lib/utils_base.c | 17 +++++++++++++++++ lib/utils_base.h | 13 +++++++++---- plugins/negate.c | 29 +++++------------------------ 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/lib/utils_base.c b/lib/utils_base.c index f5f75067..04c4b4f9 100644 --- a/lib/utils_base.c +++ b/lib/utils_base.c @@ -369,6 +369,23 @@ char *np_extract_value(const char *varlist, const char *name, char sep) { return value; } + +/* + * Read a string representing a state (ok, warning... or numeric: 0, 1) and + * return the corresponding STATE_ value or ERROR) + */ +int mp_translate_state (char *state_text) { + if (!strcasecmp(state_text,"OK") || !strcmp(state_text,"0")) + return STATE_OK; + if (!strcasecmp(state_text,"WARNING") || !strcmp(state_text,"1")) + return STATE_WARNING; + if (!strcasecmp(state_text,"CRITICAL") || !strcmp(state_text,"2")) + return STATE_CRITICAL; + if (!strcasecmp(state_text,"UNKNOWN") || !strcmp(state_text,"3")) + return STATE_UNKNOWN; + return ERROR; +} + /* * Returns a string to use as a keyname, based on an md5 hash of argv, thus * hopefully a unique key per service/plugin invocation. Use the extra-opts diff --git a/lib/utils_base.h b/lib/utils_base.h index b4bd92ee..04f6370c 100644 --- a/lib/utils_base.h +++ b/lib/utils_base.h @@ -79,6 +79,10 @@ int np_check_if_root(void); * code from the above function, in case it's helpful for testing */ int np_warn_if_not_root(void); +/* mp_suid() returns true if the real and effective uids differs, such as when + * running a suid plugin */ +#define mp_suid() (getuid() != geteuid()) + /* * Extract the value from key/value pairs, or return NULL. The value returned * can be free()ed. @@ -93,6 +97,11 @@ char *np_extract_value(const char*, const char*, char); */ #define np_extract_ntpvar(l, n) np_extract_value(l, n, ',') +/* + * Read a string representing a state (ok, warning... or numeric: 0, 1) and + * return the corresponding NP_STATE or ERROR) + */ +int mp_translate_state (char *); void np_enable_state(char *, int); state_data *np_state_read(); @@ -102,8 +111,4 @@ void np_init(char *, int argc, char **argv); void np_set_args(int argc, char **argv); void np_cleanup(); -/* mp_suid() returns true if the real and effective uids differs, such as when - * running a suid plugin */ -#define mp_suid() (getuid() != geteuid()) - #endif /* _UTILS_BASE_ */ diff --git a/plugins/negate.c b/plugins/negate.c index 84ad7eb3..4bd09deb 100644 --- a/plugins/negate.c +++ b/plugins/negate.c @@ -45,7 +45,6 @@ const char *email = "devel@monitoring-plugins.org"; static const char **process_arguments (int, char **); int validate_arguments (char **); -int translate_state (char *); void print_help (void); void print_usage (void); int subst_text = FALSE; @@ -166,27 +165,27 @@ process_arguments (int argc, char **argv) timeout_interval = atoi (optarg); break; case 'T': /* Result to return on timeouts */ - if ((timeout_state = translate_state(optarg)) == ERROR) + if ((timeout_state = mp_translate_state(optarg)) == ERROR) usage4 (_("Timeout result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); break; case 'o': /* replacement for OK */ - if ((state[STATE_OK] = translate_state(optarg)) == ERROR) + if ((state[STATE_OK] = mp_translate_state(optarg)) == ERROR) usage4 (_("Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); permute = FALSE; break; case 'w': /* replacement for WARNING */ - if ((state[STATE_WARNING] = translate_state(optarg)) == ERROR) + if ((state[STATE_WARNING] = mp_translate_state(optarg)) == ERROR) usage4 (_("Warning must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); permute = FALSE; break; case 'c': /* replacement for CRITICAL */ - if ((state[STATE_CRITICAL] = translate_state(optarg)) == ERROR) + if ((state[STATE_CRITICAL] = mp_translate_state(optarg)) == ERROR) usage4 (_("Critical must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); permute = FALSE; break; case 'u': /* replacement for UNKNOWN */ - if ((state[STATE_UNKNOWN] = translate_state(optarg)) == ERROR) + if ((state[STATE_UNKNOWN] = mp_translate_state(optarg)) == ERROR) usage4 (_("Unknown must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); permute = FALSE; break; @@ -218,24 +217,6 @@ validate_arguments (char **command_line) } -int -translate_state (char *state_text) -{ - char *temp_ptr; - for (temp_ptr = state_text; *temp_ptr; temp_ptr++) { - *temp_ptr = toupper(*temp_ptr); - } - if (!strcmp(state_text,"OK") || !strcmp(state_text,"0")) - return STATE_OK; - if (!strcmp(state_text,"WARNING") || !strcmp(state_text,"1")) - return STATE_WARNING; - if (!strcmp(state_text,"CRITICAL") || !strcmp(state_text,"2")) - return STATE_CRITICAL; - if (!strcmp(state_text,"UNKNOWN") || !strcmp(state_text,"3")) - return STATE_UNKNOWN; - return ERROR; -} - void print_help (void) { -- cgit v1.2.3-74-g34f1