diff options
Diffstat (limited to 'src/syslog.c')
-rw-r--r-- | src/syslog.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/syslog.c b/src/syslog.c index a2a6482..6c7f5e7 100644 --- a/src/syslog.c +++ b/src/syslog.c @@ -51,11 +51,6 @@ struct log_message_in /* Fallback log file is used to log critical messages when syslog daemon is unavailable. If NULL, stderr will be used. */ char *pies_fallback_file = "/tmp/pies_logger.log"; -/* Name of the syslog device. If starts with a slash, it is assumed - to be a UNIX socket name. Otherwise, it is assumed to be a host name - or IPv4 address of the syslog daemon, optionally followed by a colon - and port number or service name. */ -static char *pies_log_dev = PIES_LOG_DEV; /* Log tag */ char *pies_log_tag = "pies"; /* Log facility */ @@ -63,6 +58,14 @@ int pies_log_facility = LOG_USER; /* Maximum capacity of the log message queue */ size_t pies_log_max_queue = PIES_LOG_MAX_QUEUE; +/* Name of the syslog device. If starts with a slash, it is assumed + to be a UNIX socket name. Otherwise, it is assumed to be a host name + or IPv4 address of the syslog daemon, optionally followed by a colon + and port number or service name. + If NULL, PIES_LOG_DEV is assumed. + The user can modify this value using the pies_syslog_set_dev call. +*/ +static char *log_dev; /* Log socket descriptor. */ static int log_fd = -1; @@ -118,15 +121,16 @@ reopen_logger (void) if (log_salen == 0) { - if (pies_log_dev[0] == '/') + char *dev = log_dev ? log_dev : PIES_LOG_DEV; + if (dev[0] == '/') { - size_t len = strlen (pies_log_dev); + size_t len = strlen (dev); if (len >= sizeof log_sa.s_un.sun_path) { - fallback_log ("%s: UNIX socket name too long", pies_log_dev); + fallback_log ("%s: UNIX socket name too long", dev); return -1; } - strcpy (log_sa.s_un.sun_path, pies_log_dev); + strcpy (log_sa.s_un.sun_path, dev); log_sa.s_un.sun_family = AF_UNIX; log_family = PF_UNIX; log_salen = sizeof (log_sa.s_un); @@ -139,7 +143,7 @@ reopen_logger (void) char *node; char *service; - node = strdup (pies_log_dev); + node = strdup (dev); if (!node) return -1; @@ -158,7 +162,7 @@ reopen_logger (void) free(node); if (rc) { - fallback_log ("%s: invalid socket address", pies_log_dev); + fallback_log ("%s: invalid socket address", dev); return -1; } @@ -469,8 +473,9 @@ pies_syslog_set_dev (char const *dev) char *p = strdup (dev); if (!p) return -1; - pies_log_dev = p; pies_syslog_close (); + free (log_dev); + log_dev = p; log_salen = 0; return 0; } |