From a09f0bd8e0c526250aa80895175728fe025c9958 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Mon, 29 Oct 2018 15:15:31 +0100 Subject: Store log files in /var/log/syslog, also create parent directories Signed-off-by: David Oberhollenzer --- syslogd.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'syslogd.c') diff --git a/syslogd.c b/syslogd.c index 4db7060..e85a054 100644 --- a/syslogd.c +++ b/syslogd.c @@ -175,10 +175,24 @@ fail: static int chroot_setup(void) { - if (mkdir(SYSLOG_PATH, 0750)) { - if (errno != EEXIST) { - perror("mkdir " SYSLOG_PATH); - return -1; + size_t i, len = strlen(SYSLOG_PATH); + char *buffer = alloca(len + 1); + + memcpy(buffer, SYSLOG_PATH, len + 1); + + for (i = 0; i < len; ++i) { + if (buffer[i] == '\0' || buffer[i] == '/') { + buffer[i] = '\0'; + + if (mkdir(buffer, 0755)) { + if (errno != EEXIST) { + perror(buffer); + return -1; + } + } + + if (i < (len - 1)) + buffer[i] = '/'; } } -- cgit v1.2.3