prevent find from ever descending into an xdev'ed directory.
authorPaul Fox <pgf@brightstareng.com>
Mon, 27 Mar 2006 16:42:33 +0000 (16:42 -0000)
committerPaul Fox <pgf@brightstareng.com>
Mon, 27 Mar 2006 16:42:33 +0000 (16:42 -0000)
findutils/find.c

index c6aaf7a..7a71af9 100644 (file)
@@ -79,6 +79,15 @@ static int exec_opt;
 
 static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
 {
+#ifdef CONFIG_FEATURE_FIND_XDEV
+       if (S_ISDIR(statbuf->st_mode) && xdev_count) {
+               int i;
+               for (i=0; i<xdev_count; i++) {
+                       if (xdev_dev[i] != statbuf->st_dev)
+                               return SKIP;
+               }
+       }
+#endif
        if (pattern != NULL) {
                const char *tmp = strrchr(fileName, '/');
 
@@ -125,21 +134,6 @@ static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
                        goto no_match;
        }
 #endif
-#ifdef CONFIG_FEATURE_FIND_XDEV
-       if (xdev_count) {
-               int i;
-               for (i=0; i<xdev_count; i++) {
-                       if (xdev_dev[i] == statbuf-> st_dev)
-                               break;
-               }
-               if (i == xdev_count) {
-                       if(S_ISDIR(statbuf->st_mode))
-                               return SKIP;
-                       else
-                               goto no_match;
-               }
-       }
-#endif
 #ifdef CONFIG_FEATURE_FIND_NEWER
        if (newer_mtime != 0) {
                time_t file_age = newer_mtime - statbuf->st_mtime;