diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-12-13 18:20:45 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-12-13 18:20:45 +0000 |
commit | cfb04309fb01de8797f85f2f945e375fd6091a99 (patch) | |
tree | c63a917781d2602db08b190b582115b56806eee4 /src/main.c | |
parent | 60fbc52f285b19ccbc9723cdae135cbb22acfe98 (diff) | |
download | mailfromd-cfb04309fb01de8797f85f2f945e375fd6091a99.tar.gz mailfromd-cfb04309fb01de8797f85f2f945e375fd6091a99.tar.bz2 |
Ported r1536 from branches/release_4_2_patches (= r1535 from tags/release_4_2):
git-svn-id: file:///svnroot/mailfromd/trunk@1538 7a8a7f39-df28-0410-adc6-e0d955640f24
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 26 |
1 files changed, 20 insertions, 6 deletions
@@ -39,14 +39,12 @@ # include <mailutils/argp.h> #else # include <mailutils/libargp.h> #endif #include "mailfromd.h" -#include "syslog_async.h" - /* Configurable options */ int mode = MAILFROMD_DAEMON; /* Default operation mode */ enum smtp_state test_state = smtp_state_envfrom; /* State for --test mode */ int need_config = 1;/* Set if the current mode requires reading the @@ -78,14 +76,17 @@ char *portspec; /* Communication socket specification. int force_remove; /* Remove local communication socket if it already exists */ int foreground; /* Stay in foreground */ int single_process_option; /* Run in single process mode. */ unsigned long source_address = INADDR_ANY; /* Source address for TCP connections */ +#ifdef USE_SYSLOG_ASYNC int use_syslog_async = DEFAULT_SYSLOG_ASYNC; - /* Use asynchronous syslog implementation */ + /* Use asynchronous syslog implementation */ +#endif + char *syslog_tag; /* Tag to mark syslog entries with. */ char *mailfromd_state_dir; /* see init_names() */ char *pidfile; /* see init_names() */ char *user = DEFAULT_USER; /* Switch to this user privileges after startup */ mu_list_t retain_groups; /* List of group IDs to retain when switching @@ -125,26 +126,30 @@ time_t response_timeout = 30; /* Logging & debugging */ int syslog_printer (int prio, const char *fmt, va_list ap) { +#ifdef USE_SYSLOG_ASYNC if (use_syslog_async) { vsyslog_async (prio, fmt, ap); - } else { + } else +#endif + { #if HAVE_VSYSLOG vsyslog (prio, fmt, ap); #else char buf[128]; vsnprintf (buf, sizeof buf, fmt, ap); syslog (prio, "%s", buf); #endif } return 0; } +#ifdef USE_SYSLOG_ASYNC void mf_gacopyz_syslog_async_log_printer(int level, char *fmt, va_list ap) { switch (level) { case SMI_LOG_DEBUG: level = LOG_DEBUG; @@ -162,12 +167,13 @@ mf_gacopyz_syslog_async_log_printer(int level, char *fmt, va_list ap) case SMI_LOG_FATAL: default: level = LOG_EMERG; } vsyslog_async(level, fmt, ap); } +#endif int syslog_error_printer (const char *fmt, va_list ap) { return syslog_printer(LOG_ERR, fmt, ap); } @@ -1066,16 +1072,18 @@ static struct argp_option options[] = { { "gacopyz-log", OPTION_GACOPYZ_LOG, N_("LEVEL"), 0, N_("Set Gacopyz log level"), GRP+1 }, { "stderr", 's', NULL, 0, N_("Log to stderr"), GRP+1 }, { "syslog", OPTION_SYSLOG, NULL, 0, N_("Log to syslog (default)"), GRP+1 }, +#ifdef USE_SYSLOG_ASYNC { "syslog-async", OPTION_SYSLOG_ASYNC, NULL, 0, N_("Use asynchronous syslog"), GRP+1 }, { "no-syslog-async", OPTION_NO_SYSLOG_ASYNC, NULL, 0, N_("Use system syslog"), GRP+1 }, +#endif { "log-tag", OPTION_LOG_TAG, N_("STRING"), 0, N_("Set the identifier used in syslog messages to STRING"), GRP+1 }, { "source-info", OPTION_SOURCE_INFO, NULL, 0, N_("Debug messages include source information"), GRP+1 }, { "stack-trace", OPTION_STACK_TRACE, NULL, 0, N_("Enable stack traces on runtime errors"), GRP+1 }, @@ -1389,20 +1397,21 @@ parse_opt (int key, char *arg, struct argp_state *state) break; case OPTION_SYSLOG: log_to_stderr = 0; break; +#ifdef USE_SYSLOG_ASYNC case OPTION_SYSLOG_ASYNC: use_syslog_async = 1; break; case OPTION_NO_SYSLOG_ASYNC: use_syslog_async = 0; break; - +#endif case OPTION_TIMEOUT: set_option("timeout", arg, 1); break; case OPTION_TRACE: do_trace = 1; @@ -1973,17 +1982,19 @@ mailfromd_show_defaults() printf("script file: %s\n", script_file); printf("preprocessor: %s\n", ext_pp ? ext_pp : "none"); printf("user: %s\n", user); printf("statedir: %s\n", mailfromd_state_dir); printf("socket: %s\n", portspec); printf("pidfile: %s\n", pidfile); +#ifdef USE_SYSLOG_ASYNC #if DEFAULT_SYSLOG_ASYNC == 1 printf("default syslog: non-blocking\n"); #else printf("default syslog: blocking\n"); #endif +#endif printf("database format: "); #if defined WITH_GDBM printf("GDBM"); #elif defined WITH_BDB printf("Berkeley DB %d.x", WITH_BDB); #endif @@ -1994,16 +2005,19 @@ mailfromd_show_defaults() void log_setup(int want_stderr) { /* Set up logging */ if (!want_stderr) { +#ifdef USE_SYSLOG_ASYNC if (use_syslog_async) { openlog_async(syslog_tag, LOG_PID, log_facility); gacopyz_set_logger(mf_gacopyz_syslog_async_log_printer); - } else { + } else +#endif + { openlog(syslog_tag, LOG_PID, log_facility); gacopyz_set_logger(gacopyz_syslog_log_printer); } mu_error_set_print(syslog_error_printer); } else { gacopyz_set_logger(gacopyz_stderr_log_printer); |