aboutsummaryrefslogtreecommitdiff
path: root/src/syslog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/syslog.c')
-rw-r--r--src/syslog.c29
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;
}

Return to:

Send suggestions and report system problems to the System administrator.