aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/find.test3
-rw-r--r--toys/posix/find.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/tests/find.test b/tests/find.test
index b3e2c4fa..1f59149b 100755
--- a/tests/find.test
+++ b/tests/find.test
@@ -122,4 +122,7 @@ testing "missing root error" \
"LANG=C find -L dir/missing-root 2>err ; grep -q dir/missing-root err || echo missing error" \
"" "" ""
+testing "-path match root" "find dir/f* -path dir/file" "dir/file\n" "" ""
+testing "-name match root" "find dir/f* -name file" "dir/file\n" "" ""
+
rm -rf dir
diff --git a/toys/posix/find.c b/toys/posix/find.c
index 58a6f88d..02fdf3c4 100644
--- a/toys/posix/find.c
+++ b/toys/posix/find.c
@@ -368,7 +368,8 @@ static int do_find(struct dirtree *new)
}
if (check) {
- test = !fnmatch(arg, name, FNM_PATHNAME*(!is_path));
+ test = !fnmatch(arg, is_path ? name : basename(name),
+ FNM_PATHNAME*(!is_path));
if (i) free(name);
}
free(path);