From fb5d4f1da4f7ec16af7b544754c64629139806ac Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Tue, 6 Sep 2016 17:23:39 +0200 Subject: [PATCH] conf: disable dumpdir and logdir by default Use empty string instead of "." (which is normally the root directory) as the default value of dumpdir and logdir to indicate they are not specified. Print warnings in syslog when trying to log or dump measurements without dumpdir or logdir. --- conf.c | 10 ++++++---- logging.c | 10 ++++++++-- sources.c | 12 +++++++++--- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/conf.c b/conf.c index b6a2b18..a88df6f 100644 --- a/conf.c +++ b/conf.c @@ -330,8 +330,8 @@ CNF_Initialise(int r) ntp_restrictions = ARR_CreateInstance(sizeof (AllowDeny)); cmd_restrictions = ARR_CreateInstance(sizeof (AllowDeny)); - dumpdir = Strdup("."); - logdir = Strdup("."); + dumpdir = Strdup(""); + logdir = Strdup(""); bind_cmd_path = Strdup(DEFAULT_COMMAND_SOCKET); pidfile = Strdup(DEFAULT_PID_FILE); rtc_device = Strdup(DEFAULT_RTC_DEVICE); @@ -1247,8 +1247,10 @@ CNF_CreateDirs(uid_t uid, gid_t gid) { char *dir; - UTI_CreateDirAndParents(logdir, 0755, uid, gid); - UTI_CreateDirAndParents(dumpdir, 0755, uid, gid); + if (logdir[0]) + UTI_CreateDirAndParents(logdir, 0755, uid, gid); + if (dumpdir[0]) + UTI_CreateDirAndParents(dumpdir, 0755, uid, gid); /* Create a directory for the Unix domain command socket */ if (bind_cmd_path[0]) { diff --git a/logging.c b/logging.c index 7eb680d..35562c0 100644 --- a/logging.c +++ b/logging.c @@ -238,10 +238,16 @@ LOG_FileWrite(LOG_FileID id, const char *format, ...) return; if (!logfiles[id].file) { - char filename[512]; + char filename[512], *logdir = CNF_GetLogDir(); + + if (logdir[0] == '\0') { + LOG(LOGS_WARN, LOGF_Logging, "logdir not specified"); + logfiles[id].name = NULL; + return; + } if (snprintf(filename, sizeof(filename), "%s/%s.log", - CNF_GetLogDir(), logfiles[id].name) >= sizeof(filename) || + logdir, logfiles[id].name) >= sizeof (filename) || !(logfiles[id].file = fopen(filename, "a"))) { LOG(LOGS_WARN, LOGF_Refclock, "Couldn't open logfile %s for update", filename); logfiles[id].name = NULL; diff --git a/sources.c b/sources.c index 8109172..6a78366 100644 --- a/sources.c +++ b/sources.c @@ -1172,15 +1172,21 @@ static FILE *open_dumpfile(SRC_Instance inst, const char *mode) { FILE *f; - char filename[1024]; + char filename[1024], *dumpdir; + + dumpdir = CNF_GetDumpDir(); + if (dumpdir[0] == '\0') { + LOG(LOGS_WARN, LOGF_Sources, "dumpdir not specified"); + return NULL; + } /* Include IP address in the name for NTP sources, or reference ID in hex */ if ((inst->type == SRC_NTP && - snprintf(filename, sizeof (filename), "%s/%s.dat", CNF_GetDumpDir(), + snprintf(filename, sizeof (filename), "%s/%s.dat", dumpdir, source_to_string(inst)) >= sizeof (filename)) || (inst->type != SRC_NTP && snprintf(filename, sizeof (filename), "%s/refid:%08"PRIx32".dat", - CNF_GetDumpDir(), inst->ref_id) >= sizeof (filename))) { + dumpdir, inst->ref_id) >= sizeof (filename))) { LOG(LOGS_WARN, LOGF_Sources, "dumpdir too long"); return NULL; }