48 lines
1.7 KiB
Diff
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
|
|
|