[#1334] exec script for devices even if they dont have device nodes
authorMike Frysinger <vapier@gentoo.org>
Wed, 20 Feb 2008 18:31:36 +0000 (18:31 -0000)
committerMike Frysinger <vapier@gentoo.org>
Wed, 20 Feb 2008 18:31:36 +0000 (18:31 -0000)
util-linux/mdev.c

index 2bb022476fae9f9aa9af82b856f86d401b5a7405..9c33feb3590df32fc21fe0b251f6a3351a8053da 100644 (file)
@@ -45,8 +45,13 @@ static void make_device(char *path, int delete)
                strcat(path, "/dev");
                len = open_read_close(path, temp + 1, 64);
                *temp++ = 0;
-               if (len < 1)
-                       return;
+               if (len < 1) {
+                       if (ENABLE_FEATURE_MDEV_EXEC)
+                               /* no "dev" file, so just try to run script */
+                               *temp = 0;
+                       else
+                               return;
+               }
        }
 
        /* Determine device name, type, major and minor */
@@ -181,8 +186,12 @@ static void make_device(char *path, int delete)
        }
 
        if (!delete) {
-               if (sscanf(temp, "%d:%d", &major, &minor) != 2)
-                       return;
+               if (sscanf(temp, "%d:%d", &major, &minor) != 2) {
+                       if (ENABLE_FEATURE_MDEV_EXEC)
+                               goto skip_creation;
+                       else
+                               return;
+               }
 
                if (ENABLE_FEATURE_MDEV_RENAME)
                        unlink(device_name);
@@ -217,6 +226,7 @@ static void make_device(char *path, int delete)
                                free(dest);
                        }
                }
+ skip_creation: /* nothing */ ;
        }
        if (ENABLE_FEATURE_MDEV_EXEC && command) {
                /* setenv will leak memory, so use putenv */