In the 4.7 release of locate there's a bug where

locate -i 'old'

matches Old OLD olD etc

but

locate -i '*old*'

only matches old

There is a missing conditional in fastfind.c:

BEGIN diff -u HERE - fastfind.c 1.10
--- fastfind.c.old      Mon Jun  8 16:18:57 2009
+++ fastfind.c  Fri May 21 22:17:35 2010
@@ -305,7 +305,11 @@
                                                shortpath = basename(path);
 
                                        if ((!f_basename && (!globflag ||
+#ifdef FF_ICASE
+                                           !fnmatch(pathpart, shortpath, 
FNM_CASEFOLD)))
+#else /* FF_ICASE */
                                            !fnmatch(pathpart, shortpath, 0)))
+#endif /* FF_ICASE */
                                            || (strstr(shortpath, pathpart) !=
                                            NULL)) {
                                                if (f_silent)
END diff -u HERE

Thanks!

geoff steckel

Reply via email to