]> granicus.if.org Git - apache/commitdiff
replace duplicate code with new function ap_parse_log_level()
authorStefan Fritsch <sf@apache.org>
Mon, 1 Feb 2010 23:27:32 +0000 (23:27 +0000)
committerStefan Fritsch <sf@apache.org>
Mon, 1 Feb 2010 23:27:32 +0000 (23:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@905454 13f79535-47bb-0310-9956-ffa450edef68

include/ap_mmn.h
include/http_config.h
modules/debugging/mod_dumpio.c
server/core.c
server/log.c
server/main.c

index 47c0bb6bfc74b5e739eaeabf89822dd26e9e4c4e..3eb0aebe1594220300e10a283a54ff81d5b7bbde 100644 (file)
  *                         to proxy_ftp_dir_conf(mod_proxy_ftp)
  * 20091230.1 (2.3.5-dev)  add util_ldap_state_t.opTimeout
  * 20091230.2 (2.3.5-dev)  add ap_get_server_name_for_url()
+ * 20091230.3 (2.3.6-dev)  add ap_parse_log_level()
  *
  */
 
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
 #define MODULE_MAGIC_NUMBER_MAJOR 20091230
 #endif
-#define MODULE_MAGIC_NUMBER_MINOR 2                     /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 3                     /* 0...n */
 
 /**
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
index 4daf3d8c6ee1b31e0d66557437dd7c90da1dd83e..ff6e5e1732489bb2de43ed73d4be49a4b113040a 100644 (file)
@@ -490,6 +490,14 @@ AP_DECLARE_NONSTD(const char *) ap_set_int_slot(cmd_parms *cmd,
                                                 void *struct_ptr,
                                                 const char *arg);
 
+/**
+ * Parsing function for log level
+ * @param str The string to parse
+ * @param val The parsed log level
+ * @return An error string or NULL on success
+ */
+AP_DECLARE(const char *) ap_parse_log_level(const char *str, int *val);
+
 /**
  * Return true if the specified method is limited by being listed in
  * a &lt;Limit&gt; container, or by *not* being listed in a &lt;LimitExcept&gt;
index 56a34ae8cf750c362ad814bbcf66457262144ea2..209be72ff042e5fdbe1cdad632ef59b6a0d8d792 100644 (file)
@@ -244,34 +244,9 @@ static const char *set_loglevel(cmd_parms *cmd, void *dummy, const char *arg)
     }
 
     if ((str = ap_getword_conf(cmd->pool, &arg))) {
-        if (!strcasecmp(str, "emerg")) {
-            ptr->loglevel = APLOG_EMERG;
-        }
-        else if (!strcasecmp(str, "alert")) {
-            ptr->loglevel = APLOG_ALERT;
-        }
-        else if (!strcasecmp(str, "crit")) {
-            ptr->loglevel = APLOG_CRIT;
-        }
-        else if (!strcasecmp(str, "error")) {
-            ptr->loglevel = APLOG_ERR;
-        }
-        else if (!strcasecmp(str, "warn")) {
-            ptr->loglevel = APLOG_WARNING;
-        }
-        else if (!strcasecmp(str, "notice")) {
-            ptr->loglevel = APLOG_NOTICE;
-        }
-        else if (!strcasecmp(str, "info")) {
-            ptr->loglevel = APLOG_INFO;
-        }
-        else if (!strcasecmp(str, "debug")) {
-            ptr->loglevel = APLOG_DEBUG;
-        }
-        else {
-            return "DumpIOLogLevel requires level keyword: one of "
-                   "emerg/alert/crit/error/warn/notice/info/debug";
-        }
+        err = ap_parse_log_level(str, &ptr->loglevel);
+        if (err != NULL)
+            return err;
     }
     else {
         return "DumpIOLogLevel requires level keyword";
index b33c99e364924ba7714bcc72962e1303d3417b72..5824ae37c9b1f3fa6557aef95977b72662d0a991 100644 (file)
@@ -2626,34 +2626,9 @@ static const char *set_loglevel(cmd_parms *cmd, void *dummy, const char *arg)
     }
 
     if ((str = ap_getword_conf(cmd->pool, &arg))) {
-        if (!strcasecmp(str, "emerg")) {
-            cmd->server->loglevel = APLOG_EMERG;
-        }
-        else if (!strcasecmp(str, "alert")) {
-            cmd->server->loglevel = APLOG_ALERT;
-        }
-        else if (!strcasecmp(str, "crit")) {
-            cmd->server->loglevel = APLOG_CRIT;
-        }
-        else if (!strcasecmp(str, "error")) {
-            cmd->server->loglevel = APLOG_ERR;
-        }
-        else if (!strcasecmp(str, "warn")) {
-            cmd->server->loglevel = APLOG_WARNING;
-        }
-        else if (!strcasecmp(str, "notice")) {
-            cmd->server->loglevel = APLOG_NOTICE;
-        }
-        else if (!strcasecmp(str, "info")) {
-            cmd->server->loglevel = APLOG_INFO;
-        }
-        else if (!strcasecmp(str, "debug")) {
-            cmd->server->loglevel = APLOG_DEBUG;
-        }
-        else {
-            return "LogLevel requires level keyword: one of "
-                   "emerg/alert/crit/error/warn/notice/info/debug";
-        }
+        err = ap_parse_log_level(arg, &cmd->server->loglevel);
+        if (err != NULL)
+            return err;
     }
     else {
         return "LogLevel requires level keyword";
index 7e224a6d02b32d8240ef58abb49cbc4930bfba94..c3abd5a8d43807d5df0158f8da59e8aa9459972a 100644 (file)
@@ -1127,6 +1127,25 @@ AP_DECLARE(void) ap_close_piped_log(piped_log *pl)
     apr_pool_cleanup_run(pl->p, pl, piped_log_cleanup);
 }
 
+AP_DECLARE(const char *) ap_parse_log_level(const char *str, int *val)
+{
+    char *err = "Loglevel keyword must be one of emerg/alert/crit/error/warn/"
+                "notice/info/debug";
+    int i = 0;
+
+    if (str == NULL)
+        return err;
+
+    while (priorities[i].t_name != NULL) {
+        if (!strcasecmp(str, priorities[i].t_name)) {
+            *val = priorities[i].t_val;
+            return NULL;
+        }
+        i++;
+    }
+    return err;
+}
+
 AP_IMPLEMENT_HOOK_VOID(error_log,
                        (const char *file, int line, int level,
                         apr_status_t status, const server_rec *s,
index d80ec62ade31477897cf2960db96c005d36e60d8..65fac67f2dce2a57f34371a5ce37a004245638ff 100644 (file)
@@ -530,33 +530,8 @@ int main(int argc, const char * const argv[])
             break;
 
         case 'e':
-            if (strcasecmp(optarg, "emerg") == 0) {
-                ap_default_loglevel = APLOG_EMERG;
-            }
-            else if (strcasecmp(optarg, "alert") == 0) {
-                ap_default_loglevel = APLOG_ALERT;
-            }
-            else if (strcasecmp(optarg, "crit") == 0) {
-                ap_default_loglevel = APLOG_CRIT;
-            }
-            else if (strncasecmp(optarg, "err", 3) == 0) {
-                ap_default_loglevel = APLOG_ERR;
-            }
-            else if (strncasecmp(optarg, "warn", 4) == 0) {
-                ap_default_loglevel = APLOG_WARNING;
-            }
-            else if (strcasecmp(optarg, "notice") == 0) {
-                ap_default_loglevel = APLOG_NOTICE;
-            }
-            else if (strcasecmp(optarg, "info") == 0) {
-                ap_default_loglevel = APLOG_INFO;
-            }
-            else if (strcasecmp(optarg, "debug") == 0) {
-                ap_default_loglevel = APLOG_DEBUG;
-            }
-            else {
+            if (ap_parse_log_level(optarg, &ap_default_loglevel) != NULL)
                 usage(process);
-            }
             break;
 
         case 'E':