Fix -mindepth and -maxdepth to not drill down into excluded directories.
authorRob Landley <rob@landley.net>
Fri, 8 Aug 2014 04:19:18 +0000 (23:19 -0500)
committerRob Landley <rob@landley.net>
Fri, 8 Aug 2014 04:19:18 +0000 (23:19 -0500)
The fact other implementations don't implement "! -mindepth" doesn't mean we can't. Also, find uses +N, N, -N for everything else but this extension doesn't. Also, -depth already had a definition and this has nothing to do with that. It's a poorly thought-out extension, is what I'm saying.

toys/posix/find.c

index 051c270..a5a95d9 100644 (file)
@@ -342,8 +342,13 @@ static int do_find(struct dirtree *new)
           int i = 0, d = atolx(ss[1]);
 
           while ((dt = dt->parent)) i++;
-
-          test = s[1] == 'i' ? i >= d : i <= d;
+          if (s[1] == 'i') {
+            test = i >= d;
+            if (i == d && not) recurse = 0;
+          } else {
+            test = i <= d;
+            if (i == d && !not) recurse = 0;
+          }
         }
       } else if (!strcmp(s, "user") || !strcmp(s, "group")
               || !strcmp(s, "newer"))