diff options
author | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-10-29 15:15:31 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-10-29 15:41:56 +0100 |
commit | a09f0bd8e0c526250aa80895175728fe025c9958 (patch) | |
tree | e324a491bb82642eb82802f2fc098008ee579656 /syslogd.c | |
parent | 5fcb1a06cb4b560fee6d1a9c676852bd8f67a9b2 (diff) |
Store log files in /var/log/syslog, also create parent directories
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'syslogd.c')
-rw-r--r-- | syslogd.c | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -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] = '/'; } } |