summaryrefslogtreecommitdiff
path: root/log.c
diff options
context:
space:
mode:
authorC. McEnroe2021-10-16 17:03:31 -0400
committerC. McEnroe2021-10-16 17:03:31 -0400
commitb6cf41ab77a4324b4f4cf0bc9e3d82a5fef9ebd4 (patch)
tree45fb76bbe6f5037d5827130c89e63e6d9cc22c16 /log.c
parent54c632e8c35c3283a890c589f1b7937887c13877 (diff)
Import refactored xdg.c from pounce
Diffstat (limited to 'log.c')
-rw-r--r--log.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/log.c b/log.c
index c13293a..32d771f 100644
--- a/log.c
+++ b/log.c
@@ -47,10 +47,15 @@
static int logDir = -1;
void logOpen(void) {
- dataMkdir("");
- const char *path = dataMkdir("log");
- logDir = open(path, O_RDONLY | O_CLOEXEC);
- if (logDir < 0) err(EX_CANTCREAT, "%s", path);
+ char buf[PATH_MAX];
+ int error = mkdir(dataPath(buf, sizeof(buf), "", 0), S_IRWXU);
+ if (error && errno != EEXIST) err(EX_CANTCREAT, "%s", buf);
+
+ error = mkdir(dataPath(buf, sizeof(buf), "log", 0), S_IRWXU);
+ if (error && errno != EEXIST) err(EX_CANTCREAT, "%s", buf);
+
+ logDir = open(buf, O_RDONLY | O_CLOEXEC);
+ if (logDir < 0) err(EX_CANTCREAT, "%s", buf);
#ifdef __FreeBSD__
cap_rights_t rights;
@@ -58,7 +63,7 @@ void logOpen(void) {
&rights, CAP_MKDIRAT, CAP_CREATE, CAP_WRITE,
/* for fdopen(3) */ CAP_FCNTL, CAP_FSTAT
);
- int error = caph_rights_limit(logDir, &rights);
+ error = caph_rights_limit(logDir, &rights);
if (error) err(EX_OSERR, "cap_rights_limit");
#endif
}