aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2018-02-08 06:13:33 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-02-08 06:13:33 +0000
commite14ea3ab0b568091b0563decd96969036ebf033d (patch)
treec75669fd7602753774c8113a2fd5f3a6761e2f2a
parent789deaf978d8572b98df5f11bdf3ffc9bb5200a4 (diff)
parent398aa879e959a01d3feb7ba18c2cb163ff41180e (diff)
downloadkati-e14ea3ab0b568091b0563decd96969036ebf033d.tar.gz
Merge remote-tracking branch 'aosp/upstream' into master
am: 398aa879e9 Change-Id: Id3345d4e46e010cee3f21a2cc633408a32009e72
-rw-r--r--find.cc16
-rw-r--r--testcase/find_command.mk1
2 files changed, 11 insertions, 6 deletions
diff --git a/find.cc b/find.cc
index 1b9e23f..1bf0b9e 100644
--- a/find.cc
+++ b/find.cc
@@ -526,12 +526,16 @@ class FindCommandParser {
while (true) {
if (!GetNextToken(&tok))
return NULL;
- if (tok != "-and" && tok != "-a") {
- UngetToken(tok);
- return c.release();
+ if (tok == "-and" || tok == "-a") {
+ if (!GetNextToken(&tok) || tok.empty())
+ return NULL;
+ } else {
+ if (tok != "-not" && tok != "\\!" && tok != "\\(" && tok != "-name" &&
+ tok != "-type") {
+ UngetToken(tok);
+ return c.release();
+ }
}
- if (!GetNextToken(&tok) || tok.empty())
- return NULL;
unique_ptr<FindCond> r(ParseFact(tok));
if (!r.get()) {
return NULL;
@@ -562,7 +566,7 @@ class FindCommandParser {
}
// <expr> ::= <term> {<or> <term>}
- // <term> ::= <fact> {<and> <fact>}
+ // <term> ::= <fact> {[<and>] <fact>}
// <fact> ::= <not> <fact> | '\(' <expr> '\)' | <pred>
// <not> ::= '-not' | '\!'
// <and> ::= '-and' | '-a'
diff --git a/testcase/find_command.mk b/testcase/find_command.mk
index c3e8a07..b714879 100644
--- a/testcase/find_command.mk
+++ b/testcase/find_command.mk
@@ -67,6 +67,7 @@ endif
$(call run_find, find testdir -name "file1")
$(call run_find, find testdir -name "file1")
$(call run_find, find testdir -name "*1")
+ $(call run_find, find testdir -name "*1" -name "file*")
$(call run_find, find testdir -name "*1" -and -name "file*")
$(call run_find, find testdir -name "*1" -or -name "file*")
$(call run_find, find testdir -name "*1" -or -type f)