Index: main/syslog.c =================================================================== --- main/syslog.c (revision 0) +++ main/syslog.c (revision 0) @@ -0,0 +1,100 @@ +/* + * Asterisk -- An open source telephony toolkit. + * + * Copyright (C) 2009, malleable, LLC. + * + * Sean Bright + * + * See http://www.asterisk.org for more information about + * the Asterisk project. Please do not directly contact + * any of the maintainers of this project for assistance; + * the project provides a web site, mailing lists and IRC + * channels for your use. + * + * This program is free software, distributed under the terms of + * the GNU General Public License Version 2. See the LICENSE file + * at the top of the source tree. + */ + +/*! \file + * + * \brief Asterisk Syslog Utility Functions + * \author Sean Bright + */ + +/* + * Define _ASTERISK_LOGGER_H to prevent the inclusion of logger.h; + * it redefines the LOG_* constants. + */ +#define _ASTERISK_LOGGER_H +#include "asterisk.h" + +ASTERISK_FILE_VERSION(__FILE__, "$Revision:$") + +#include + +int ast_map_syslog_facility(const char *facility) +{ + if (!strcasecmp(facility, "KERN")) { + return LOG_KERN; + } else if (!strcasecmp(facility, "USER")) { + return LOG_USER; + } else if (!strcasecmp(facility, "MAIL")) { + return LOG_MAIL; + } else if (!strcasecmp(facility, "DAEMON")) { + return LOG_DAEMON; + } else if (!strcasecmp(facility, "AUTH")) { + return LOG_AUTH; + } else if (!strcasecmp(facility, "SYSLOG")) { + return LOG_SYSLOG; + } else if (!strcasecmp(facility, "LPR")) { + return LOG_LPR; + } else if (!strcasecmp(facility, "NEWS")) { + return LOG_NEWS; + } else if (!strcasecmp(facility, "UUCP")) { + return LOG_UUCP; + } else if (!strcasecmp(facility, "CRON")) { + return LOG_CRON; + } else if (!strcasecmp(facility, "LOCAL0")) { + return LOG_LOCAL0; + } else if (!strcasecmp(facility, "LOCAL1")) { + return LOG_LOCAL1; + } else if (!strcasecmp(facility, "LOCAL2")) { + return LOG_LOCAL2; + } else if (!strcasecmp(facility, "LOCAL3")) { + return LOG_LOCAL3; + } else if (!strcasecmp(facility, "LOCAL4")) { + return LOG_LOCAL4; + } else if (!strcasecmp(facility, "LOCAL5")) { + return LOG_LOCAL5; + } else if (!strcasecmp(facility, "LOCAL6")) { + return LOG_LOCAL6; + } else if (!strcasecmp(facility, "LOCAL7")) { + return LOG_LOCAL7; + } + + return -1; +} + +int ast_map_syslog_priority(const char *priority) +{ + if (!strcasecmp(priority, "ALERT")) { + return LOG_ALERT; + } else if (!strcasecmp(priority, "CRIT")) { + return LOG_CRIT; + } else if (!strcasecmp(priority, "DEBUG")) { + return LOG_DEBUG; + } else if (!strcasecmp(priority, "EMERG")) { + return LOG_EMERG; + } else if (!strcasecmp(priority, "ERR")) { + return LOG_ERR; + } else if (!strcasecmp(priority, "INFO")) { + return LOG_INFO; + } else if (!strcasecmp(priority, "NOTICE")) { + return LOG_NOTICE; + } else if (!strcasecmp(priority, "WARNING")) { + return LOG_WARNING; + } + + return -1; +} Index: main/logger.c =================================================================== --- main/logger.c (revision 203378) +++ main/logger.c (working copy) @@ -50,8 +50,6 @@ #define MAX_BACKTRACE_FRAMES 20 #endif -#define SYSLOG_NAMES /* so we can map syslog facilities names to their numeric values, - from which is included by logger.h */ #include static const int syslog_level_map[] = { @@ -256,9 +254,6 @@ { struct logchannel *chan; char *facility; -#ifndef SOLARIS - CODE *cptr; -#endif if (ast_strlen_zero(channel) || !(chan = ast_calloc(1, sizeof(*chan) + strlen(components) + 1))) return NULL; @@ -278,59 +273,7 @@ facility = "local0"; } -#ifndef SOLARIS - /* - * Walk through the list of facilitynames (defined in sys/syslog.h) - * to see if we can find the one we have been given - */ - chan->facility = -1; - cptr = facilitynames; - while (cptr->c_name) { - if (!strcasecmp(facility, cptr->c_name)) { - chan->facility = cptr->c_val; - break; - } - cptr++; - } -#else - chan->facility = -1; - if (!strcasecmp(facility, "kern")) - chan->facility = LOG_KERN; - else if (!strcasecmp(facility, "USER")) - chan->facility = LOG_USER; - else if (!strcasecmp(facility, "MAIL")) - chan->facility = LOG_MAIL; - else if (!strcasecmp(facility, "DAEMON")) - chan->facility = LOG_DAEMON; - else if (!strcasecmp(facility, "AUTH")) - chan->facility = LOG_AUTH; - else if (!strcasecmp(facility, "SYSLOG")) - chan->facility = LOG_SYSLOG; - else if (!strcasecmp(facility, "LPR")) - chan->facility = LOG_LPR; - else if (!strcasecmp(facility, "NEWS")) - chan->facility = LOG_NEWS; - else if (!strcasecmp(facility, "UUCP")) - chan->facility = LOG_UUCP; - else if (!strcasecmp(facility, "CRON")) - chan->facility = LOG_CRON; - else if (!strcasecmp(facility, "LOCAL0")) - chan->facility = LOG_LOCAL0; - else if (!strcasecmp(facility, "LOCAL1")) - chan->facility = LOG_LOCAL1; - else if (!strcasecmp(facility, "LOCAL2")) - chan->facility = LOG_LOCAL2; - else if (!strcasecmp(facility, "LOCAL3")) - chan->facility = LOG_LOCAL3; - else if (!strcasecmp(facility, "LOCAL4")) - chan->facility = LOG_LOCAL4; - else if (!strcasecmp(facility, "LOCAL5")) - chan->facility = LOG_LOCAL5; - else if (!strcasecmp(facility, "LOCAL6")) - chan->facility = LOG_LOCAL6; - else if (!strcasecmp(facility, "LOCAL7")) - chan->facility = LOG_LOCAL7; -#endif /* Solaris */ + chan->facility = convert_facility_name_to_int(facility); if (0 > chan->facility) { fprintf(stderr, "Logger Warning: bad syslog facility in logger.conf\n");