Browse Source

Fixed failed mkdir() in restricted environments.

default 1 year ago
parent
commit
d2aa5727ba
2 changed files with 9 additions and 3 deletions
  1. 7 2
      snac.c
  2. 2 1
      snac.h

+ 7 - 2
snac.c

@@ -35,8 +35,13 @@ int mkdirx(const char *pathname)
 {
     int ret;
 
-    if ((ret = mkdir(pathname, DIR_PERM)) != -1)
-        ret = chmod(pathname, DIR_PERM);
+    if ((ret = mkdir(pathname, DIR_PERM)) != -1) {
+        /* try to the set the setgid bit, to allow system users
+           to create files in these directories using the
+           command-line tool. This may fail in some restricted
+           environments, but it's of no use there anyway */
+        chmod(pathname, DIR_PERM_ADD);
+    }
 
     return ret;
 }

+ 2 - 1
snac.h

@@ -7,7 +7,8 @@
 
 #define WHAT_IS_SNAC_URL "https:/" "/comam.es/what-is-snac"
 
-#define DIR_PERM 02770
+#define DIR_PERM 00770
+#define DIR_PERM_ADD 02770
 
 #define ISO_DATE_SPEC "%Y-%m-%dT%H:%M:%SZ"