findutils/find-give-helpful-hint-for-unquoted-patterns-errors.patch
2019-09-30 10:38:48 -04:00

48 lines
1.7 KiB
Diff

From 9530e31f6d4febf8ff08f931f70b40d41603ef8d Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@gmail.com>
Date: Wed, 16 Aug 2017 14:09:17 -0600
Subject: [PATCH 114/224] find: give helpful hint for unquoted patterns errors
Try to detect cases where the user provided an unquoted shell-glob
pattern (which was expanded by the shell before calling find(1),
resulting in an invalid usage).
$ touch a.txt b.txt c.txt
$ find -name *.txt
find: paths must precede expression: `b.txt'
find: possible unquoted pattern after predicate `-name'?
Continuation of
https://savannah.gnu.org/bugs/?51711
https://lists.gnu.org/archive/html/bug-findutils/2017-08/msg00000.html
https://git.sv.gnu.org/cgit/findutils.git/commit/?id=50a7c5d1f572
* find/tree.c (build_expression_tree): If the offending argument is an
existing file, print a hint with the last (valid) predicate.
---
find/tree.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/find/tree.c b/find/tree.c
index ee466ea6..cc7772d2 100644
--- a/find/tree.c
+++ b/find/tree.c
@@ -1275,7 +1275,13 @@ build_expression_tree (int argc, char *argv[], int end_of_leading_options)
{
state.already_issued_stat_error_msg = false;
if (!looks_like_expression (argv[i], false))
- error (EXIT_FAILURE, 0, _("paths must precede expression: `%s'"), argv[i]);
+ {
+ error (0, 0, _("paths must precede expression: `%s'"), argv[i]);
+ if (access(argv[i], F_OK)==0)
+ error (0, 0, _("possible unquoted pattern after predicate `%s'?"),
+ last_pred->p_name);
+ exit (EXIT_FAILURE);
+ }
predicate_name = argv[i];
parse_entry = find_parser (predicate_name);
--
2.19.1