* 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
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 <Limit> container, or by *not* being listed in a <LimitExcept>
}
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";
}
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";
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,
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':