From: Lucas De Marchi Date: Wed, 28 Nov 2012 16:26:23 +0000 (-0200) Subject: depmod: fix checking file extension X-Git-Tag: v12~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=650f89cd2510820a71dfc1b004634a309f12ecf1;p=thirdparty%2Fkmod.git depmod: fix checking file extension 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. --- diff --git a/tools/depmod.c b/tools/depmod.c index de773918..682e6625 100644 --- a/tools/depmod.c +++ b/tools/depmod.c @@ -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) {