summaryrefslogtreecommitdiffstats
path: root/src/depfile_parser.cc
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2013-03-30 23:36:47 (GMT)
committerEvan Martin <martine@danga.com>2013-03-30 23:36:47 (GMT)
commit7ab6dcbdb6447861eefafc47fc3e10f3273cede2 (patch)
treeed5e0cf81b20d03a58a12f6ab8c919514ea40536 /src/depfile_parser.cc
parente2e7a18953723e678b5280a4525ab8173fec08c9 (diff)
downloadNinja-7ab6dcbdb6447861eefafc47fc3e10f3273cede2.zip
Ninja-7ab6dcbdb6447861eefafc47fc3e10f3273cede2.tar.gz
Ninja-7ab6dcbdb6447861eefafc47fc3e10f3273cede2.tar.bz2
allow paths with '!' in depfiles
See funny paths in https://github.com/google/libcxx/tree/master/test/iterators/stream.iterators/istreambuf.iterator/
Diffstat (limited to 'src/depfile_parser.cc')
-rw-r--r--src/depfile_parser.cc44
1 files changed, 16 insertions, 28 deletions
diff --git a/src/depfile_parser.cc b/src/depfile_parser.cc
index 6887c91..c8fb92e 100644
--- a/src/depfile_parser.cc
+++ b/src/depfile_parser.cc
@@ -53,10 +53,10 @@ bool DepfileParser::Parse(string* content, string* err) {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 0, 128, 128, 128, 128, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 128, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 0, 0,
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
@@ -84,38 +84,26 @@ bool DepfileParser::Parse(string* content, string* err) {
};
yych = *in;
- if (yych <= 'Z') {
- if (yych <= '*') {
+ if (yych <= '\\') {
+ if (yych <= '=') {
if (yych <= 0x00) goto yy6;
- if (yych <= '\'') goto yy8;
- if (yych <= ')') goto yy4;
- goto yy8;
+ if (yych <= ' ') goto yy8;
+ goto yy4;
} else {
- if (yych <= '<') {
- if (yych <= ':') goto yy4;
- goto yy8;
- } else {
- if (yych <= '=') goto yy4;
- if (yych <= '?') goto yy8;
- goto yy4;
- }
+ if (yych <= '?') goto yy8;
+ if (yych <= 'Z') goto yy4;
+ if (yych <= '[') goto yy8;
}
} else {
- if (yych <= '_') {
- if (yych == '\\') goto yy2;
- if (yych <= '^') goto yy8;
- goto yy4;
+ if (yych <= '`') {
+ if (yych == '_') goto yy4;
+ goto yy8;
} else {
- if (yych <= 'z') {
- if (yych <= '`') goto yy8;
- goto yy4;
- } else {
- if (yych == '~') goto yy4;
- goto yy8;
- }
+ if (yych <= 'z') goto yy4;
+ if (yych == '~') goto yy4;
+ goto yy8;
}
}
-yy2:
++in;
if ((yych = *in) <= '$') {
if (yych <= '\n') {