Patch from Yann Morin to look for modules.conf in the right place on 2.6.
authorRob Landley <rob@landley.net>
Wed, 19 Jul 2006 21:33:42 +0000 (21:33 -0000)
committerRob Landley <rob@landley.net>
Wed, 19 Jul 2006 21:33:42 +0000 (21:33 -0000)
Fixes http://bugs.busybox.net/view.php?id=942

modutils/modprobe.c

index 6211c7d81eb6b5c3f7c66a8a9389abf4831bce14..a04377180310b8cc85163ec1302ebdda78039329 100644 (file)
@@ -545,28 +545,36 @@ static struct dep_t *build_dep ( void )
        }
        close ( fd );
 
+       /*
+        * First parse system-specific options and aliases
+        * as they take precedence over the kernel ones.
+        */
        if (!ENABLE_FEATURE_2_6_MODULES
                        || ( fd = open ( "/etc/modprobe.conf", O_RDONLY )) < 0 )
                if (( fd = open ( "/etc/modules.conf", O_RDONLY )) < 0 )
-                       if (( fd = open ( "/etc/conf.modules", O_RDONLY )) < 0 )
-                               return first;
+                       fd = open ( "/etc/conf.modules", O_RDONLY );
 
-       include_conf (&first, &current, buffer, sizeof(buffer), fd);
-       close(fd);
+       if (fd >= 0) {
+               include_conf (&first, &current, buffer, sizeof(buffer), fd);
+               close(fd);
+       }
 
-       filename = bb_xasprintf("/lib/modules/%s/modules.alias", un.release);
-       fd = open ( filename, O_RDONLY );
-       if (ENABLE_FEATURE_CLEAN_UP)
-               free(filename);
-       if (fd < 0) {
-               /* Ok, that didn't work.  Fall back to looking in /lib/modules */
-               if (( fd = open ( "/lib/modules/modules.alias", O_RDONLY )) < 0 ) {
-                       return first;
+       /* Only 2.6 has a modules.alias file */
+       if (ENABLE_FEATURE_2_6_MODULES) {
+               /* Parse kernel-declared aliases */
+               filename = bb_xasprintf("/lib/modules/%s/modules.alias", un.release);
+               if ((fd = open ( filename, O_RDONLY )) < 0) {
+                       /* Ok, that didn't work.  Fall back to looking in /lib/modules */
+                       fd = open ( "/lib/modules/modules.alias", O_RDONLY );
                }
-       }
+               if (ENABLE_FEATURE_CLEAN_UP)
+                       free(filename);
 
-       include_conf (&first, &current, buffer, sizeof(buffer), fd);
-       close(fd);
+               if (fd >= 0) {
+                       include_conf (&first, &current, buffer, sizeof(buffer), fd);
+                       close(fd);
+               }
+       }
 
        return first;
 }