treewide: replace local mkdir_p implementations
authorDaniel Golle <daniel@makrotopia.org>
Sat, 12 Dec 2020 22:59:54 +0000 (22:59 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 12 Dec 2020 22:59:54 +0000 (22:59 +0000)
Replace local implementations of mkdir_p in favour of using the
more robust implementation now added to libubox.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
jail/cgroups.c
jail/fs.c
jail/fs.h
jail/jail.c
plug/hotplug.c

index cb2c7fe4989ab55bdfd708c6336db86b85eb32f5..fc2bbebcf9c129076c2020e87102f22d71d44bf8 100644 (file)
@@ -39,8 +39,8 @@
 #include <libubox/avl-cmp.h>
 #include <libubox/blobmsg.h>
 #include <libubox/list.h>
+#include <libubox/utils.h>
 
-#include "fs.h"
 #include "log.h"
 #include "cgroups.h"
 
index 42019734569781bf5a225433a73655e2ab68fa5b..26bc2825c6382dac75d325a965fc99a5d49e4d56 100644 (file)
--- a/jail/fs.c
+++ b/jail/fs.c
@@ -32,6 +32,7 @@
 #include <libubox/avl-cmp.h>
 #include <libubox/blobmsg.h>
 #include <libubox/list.h>
+#include <libubox/utils.h>
 
 #include "elf.h"
 #include "fs.h"
@@ -54,31 +55,6 @@ struct mount {
 
 struct avl_tree mounts;
 
-int mkdir_p(char *dir, mode_t mask)
-{
-       char *l = strrchr(dir, '/');
-       int ret;
-
-       if (!l)
-               return 0;
-
-       *l = '\0';
-
-       if (mkdir_p(dir, mask))
-               return -1;
-
-       *l = '/';
-
-       ret = mkdir(dir, mask);
-       if (ret && errno == EEXIST)
-               return 0;
-
-       if (ret)
-               ERROR("mkdir(%s, %d) failed: %m\n", dir, mask);
-
-       return ret;
-}
-
 static int do_mount(const char *root, const char *orig_source, const char *target, const char *filesystemtype,
                    unsigned long orig_mountflags, unsigned long propflags, const char *optstr, int error, bool inner)
 {
index 4fb9b764c2a19bcc6be4910ad55dc2b468a3d1da..945b37db83f6c3de4f859b5c84387ee763e3d800 100644 (file)
--- a/jail/fs.h
+++ b/jail/fs.h
@@ -16,7 +16,6 @@
 #include <sys/mount.h>
 #include <libubox/blobmsg.h>
 
-int mkdir_p(char *dir, mode_t mask);
 int add_mount(const char *source, const char *target, const char *filesystemtype,
              unsigned long mountflags, unsigned long propflags, const char *optstr, int error);
 int add_mount_inner(const char *source, const char *target, const char *filesystemtype,
index a143b53c0a584c8320cb909c0808604f30269067..c3a0ccdb7f193503df5ad53be65d662311266264 100644 (file)
 #include "seccomp-oci.h"
 #include "cgroups.h"
 
-#include <libubox/utils.h>
 #include <libubox/blobmsg.h>
 #include <libubox/blobmsg_json.h>
 #include <libubox/list.h>
 #include <libubox/vlist.h>
 #include <libubox/uloop.h>
+#include <libubox/utils.h>
 #include <libubus.h>
 
 #ifndef CLONE_NEWCGROUP
index de0511fbd4891ff5e226f0059e29d3cf016915fe..9aeb1c17dc7fd97d3532177b0efc7faa99ec162e 100644 (file)
@@ -23,6 +23,7 @@
 #include <libubox/blobmsg_json.h>
 #include <libubox/json_script.h>
 #include <libubox/uloop.h>
+#include <libubox/utils.h>
 #include <json-c/json.h>
 
 #include <errno.h>
@@ -108,18 +109,6 @@ static char *hotplug_msg_find_var(struct blob_attr *msg, const char *name)
        return NULL;
 }
 
-static void mkdir_p(char *dir)
-{
-       char *l = strrchr(dir, '/');
-
-       if (l) {
-               *l = '\0';
-               mkdir_p(dir);
-               *l = '/';
-               mkdir(dir, 0755);
-       }
-}
-
 static void chgrp_error(const char *group, const char *target, const char *failed)
 {
        ERROR("cannot set group %s for %s (%s: %d)\n",
@@ -163,7 +152,7 @@ static void handle_makedev(struct blob_attr *msg, struct blob_attr *data)
                char *d = strdup(blobmsg_get_string(tb[0]));
 
                d = dirname(d);
-               mkdir_p(d);
+               mkdir_p(d, 0755);
                free(d);
 
                if (!strcmp(subsystem, "block"))