]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
depmod: fix checking file extension
authorLucas De Marchi <lucas.de.marchi@gmail.com>
Wed, 28 Nov 2012 16:26:23 +0000 (14:26 -0200)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Wed, 28 Nov 2012 16:26:23 +0000 (14:26 -0200)
In depfile_up_to_date_dir() we need to check if name has a kmod
extension. "path" variable there will be the directory name, which
doesn't contain an extension.

Without this, "depmod -A" returns that the modules.dep is up to date,
even if it isn't.

In depmod_modules_search_file() it's pointless to compare the basename,
so pass only the name to be checked.

tools/depmod.c

index de773918ae788c73daa7a30c96d36a28da227bc9..682e662574208ad1b4a3d2f1c0aba8b52ca5ce91 100644 (file)
@@ -1191,7 +1191,7 @@ static int depmod_modules_search_file(struct depmod *depmod, size_t baselen, siz
        size_t modnamelen;
        int err;
 
-       if (!path_ends_with_kmod_ext(path, baselen + namelen))
+       if (!path_ends_with_kmod_ext(path + baselen, namelen))
                return 0;
 
        if (path_to_modname(path, modname, &modnamelen) == NULL) {
@@ -2387,8 +2387,9 @@ static int depfile_up_to_date_dir(DIR *d, time_t mtime, size_t baselen, char *pa
                                                     path);
                        closedir(subdir);
                } else if (S_ISREG(st.st_mode)) {
-                       if (!path_ends_with_kmod_ext(path, namelen))
+                       if (!path_ends_with_kmod_ext(name, namelen))
                                continue;
+
                        memcpy(path + baselen, name, namelen + 1);
                        err = st.st_mtime <= mtime;
                        if (err == 0) {