From: Tavian Barnes <taviana...@tavianator.com> See https://savannah.gnu.org/bugs/?15235 for a discussion of why the POSIX wording implies that "-" by itself is not part of the expression. --- find.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/find.c b/find.c index 03889a8..f96c05b 100644 --- a/find.c +++ b/find.c @@ -1015,6 +1015,12 @@ usage(void) eprintf("usage: %s [-H | -L] path ... [expression ...]\n", argv0); } +static int +is_path(const char *arg) +{ + return !(arg[0] == '-' && arg[1]) && strcmp(arg, "!") && strcmp(arg, "("); +} + int main(int argc, char **argv) { @@ -1037,7 +1043,7 @@ main(int argc, char **argv) paths = argv; - for (; *argv && **argv != '-' && strcmp(*argv, "!") && strcmp(*argv, "("); argv++) + for (; *argv && is_path(*argv); argv++) ; if (!(npaths = argv - paths)) -- 2.19.1