diff options
-rwxr-xr-x | tests/find.test | 3 | ||||
-rw-r--r-- | toys/posix/find.c | 3 |
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); |