]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
static-nodes: tmpfiles - also create parents directories of device nodes
authorTom Gundersen <teg@jklm.no>
Fri, 19 Apr 2013 21:53:35 +0000 (23:53 +0200)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Fri, 19 Apr 2013 22:03:03 +0000 (19:03 -0300)
Before:

c /dev/cpu/microcode 0600 - - - 10:184
c /dev/fuse 0600 - - - 10:229
c /dev/btrfs-control 0600 - - - 10:234
c /dev/loop-control 0600 - - - 10:237
c /dev/snd/timer 0600 - - - 116:33

After:

d /dev/cpu 0755 - - -
c /dev/cpu/microcode 0600 - - - 10:184
c /dev/fuse 0600 - - - 10:229
c /dev/btrfs-control 0600 - - - 10:234
c /dev/loop-control 0600 - - - 10:237
d /dev/snd 0755 - - -
c /dev/snd/timer 0600 - - - 116:33

tools/static-nodes.c

index 65a36fc013f99758e11618b95ce8703637fe7c82..1dec8252212f68e946e071ca1740a6281263a215 100644 (file)
@@ -84,13 +84,21 @@ static const struct static_nodes_format static_nodes_format_human = {
 
 static int write_tmpfiles(FILE *out, char modname[], char devname[], char type, unsigned int maj, unsigned int min)
 {
+        const char *dir;
         int ret;
 
+        dir = strrchr(devname, '/');
+        if (dir) {
+                ret = fprintf(out, "d /dev/%.*s 0755 - - -\n", (int)(dir - devname), devname);
+                if (ret < 0)
+                        return EXIT_FAILURE;
+        }
+
         ret = fprintf(out, "%c /dev/%s 0600 - - - %u:%u\n", type, devname, maj, min);
-        if (ret >= 0)
-                return EXIT_SUCCESS;
-        else
+        if (ret < 0)
                 return EXIT_FAILURE;
+
+        return EXIT_SUCCESS;
 }
 
 static const struct static_nodes_format static_nodes_format_tmpfiles = {