diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/build.cc | 1 | ||||
-rw-r--r-- | src/build_log.cc | 1 | ||||
-rw-r--r-- | src/build_log.h | 5 | ||||
-rw-r--r-- | src/build_log_test.cc | 4 | ||||
-rw-r--r-- | src/build_test.cc | 16 | ||||
-rw-r--r-- | src/depfile_parser.cc | 16 | ||||
-rw-r--r-- | src/depfile_parser.in.cc | 2 | ||||
-rw-r--r-- | src/depfile_parser_test.cc | 15 | ||||
-rw-r--r-- | src/ninja.cc | 1 | ||||
-rw-r--r-- | src/subprocess.cc | 2 |
10 files changed, 39 insertions, 24 deletions
diff --git a/src/build.cc b/src/build.cc index 44c1df6..a2e4f64 100644 --- a/src/build.cc +++ b/src/build.cc @@ -20,6 +20,7 @@ #ifdef _WIN32 #include <windows.h> #else +#include <unistd.h> #include <sys/ioctl.h> #include <sys/time.h> #include <sys/termios.h> diff --git a/src/build_log.cc b/src/build_log.cc index fd93ea8..0cecd70 100644 --- a/src/build_log.cc +++ b/src/build_log.cc @@ -17,6 +17,7 @@ #include <errno.h> #include <stdlib.h> #include <string.h> +#include <unistd.h> #include "build.h" #include "graph.h" diff --git a/src/build_log.h b/src/build_log.h index 040609d..da8e726 100644 --- a/src/build_log.h +++ b/src/build_log.h @@ -71,10 +71,11 @@ struct BuildLog { /// Rewrite the known log entries, throwing away old data. bool Recompact(const string& path, string* err); - // TODO: make these private. typedef ExternalStringHashMap<LogEntry*>::Type Log; + const Log& log() const { return log_; } + + private: Log log_; -private: FILE* log_file_; BuildConfig* config_; bool needs_recompaction_; diff --git a/src/build_log_test.cc b/src/build_log_test.cc index c6d6bc3..9b729c7 100644 --- a/src/build_log_test.cc +++ b/src/build_log_test.cc @@ -54,8 +54,8 @@ TEST_F(BuildLogTest, WriteRead) { EXPECT_TRUE(log2.Load(kTestFilename, &err)); ASSERT_EQ("", err); - ASSERT_EQ(2u, log1.log_.size()); - ASSERT_EQ(2u, log2.log_.size()); + ASSERT_EQ(2u, log1.log().size()); + ASSERT_EQ(2u, log2.log().size()); BuildLog::LogEntry* e1 = log1.LookupByOutput("out"); ASSERT_TRUE(e1); BuildLog::LogEntry* e2 = log2.LookupByOutput("out"); diff --git a/src/build_test.cc b/src/build_test.cc index 5b35513..c015bc9 100644 --- a/src/build_test.cc +++ b/src/build_test.cc @@ -868,15 +868,15 @@ TEST_F(BuildTest, RspFileSuccess) size_t files_removed = fs_.files_removed_.size(); EXPECT_TRUE(builder_.Build(&err)); - ASSERT_EQ(2, commands_ran_.size()); // cat + cat_rsp + ASSERT_EQ(2u, commands_ran_.size()); // cat + cat_rsp // The RSP file was created ASSERT_EQ(files_created + 1, fs_.files_created_.size()); - ASSERT_EQ(1, fs_.files_created_.count("out2.rsp")); + ASSERT_EQ(1u, fs_.files_created_.count("out2.rsp")); // The RSP file was removed ASSERT_EQ(files_removed + 1, fs_.files_removed_.size()); - ASSERT_EQ(1, fs_.files_removed_.count("out2.rsp")); + ASSERT_EQ(1u, fs_.files_removed_.count("out2.rsp")); } // Test that RSP file is created but not removed for commands, which fail @@ -903,15 +903,15 @@ TEST_F(BuildTest, RspFileFailure) { EXPECT_FALSE(builder_.Build(&err)); ASSERT_EQ("subcommand failed", err); - ASSERT_EQ(1, commands_ran_.size()); + ASSERT_EQ(1u, commands_ran_.size()); // The RSP file was created ASSERT_EQ(files_created + 1, fs_.files_created_.size()); - ASSERT_EQ(1, fs_.files_created_.count("out.rsp")); + ASSERT_EQ(1u, fs_.files_created_.count("out.rsp")); // The RSP file was NOT removed ASSERT_EQ(files_removed, fs_.files_removed_.size()); - ASSERT_EQ(0, fs_.files_removed_.count("out.rsp")); + ASSERT_EQ(0u, fs_.files_removed_.count("out.rsp")); // The RSP file contains what it should ASSERT_EQ("Another very long command", fs_.files_["out.rsp"].contents); @@ -939,7 +939,7 @@ TEST_F(BuildWithLogTest, RspFileCmdLineChange) { // 1. Build for the 1st time (-> populate log) EXPECT_TRUE(builder_.Build(&err)); - ASSERT_EQ(1, commands_ran_.size()); + ASSERT_EQ(1u, commands_ran_.size()); // 2. Build again (no change) commands_ran_.clear(); @@ -960,7 +960,7 @@ TEST_F(BuildWithLogTest, RspFileCmdLineChange) { EXPECT_TRUE(builder_.AddTarget("out", &err)); EXPECT_EQ("", err); EXPECT_TRUE(builder_.Build(&err)); - EXPECT_EQ(1, commands_ran_.size()); + EXPECT_EQ(1u, commands_ran_.size()); } TEST_F(BuildTest, InterruptCleanup) { diff --git a/src/depfile_parser.cc b/src/depfile_parser.cc index 7219eb0..261893f 100644 --- a/src/depfile_parser.cc +++ b/src/depfile_parser.cc @@ -64,7 +64,7 @@ bool DepfileParser::Parse(string* content, string* err) { 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, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 0, 0, 0, 128, 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, @@ -84,7 +84,7 @@ bool DepfileParser::Parse(string* content, string* err) { }; yych = *in; - if (yych <= '[') { + if (yych <= '\\') { if (yych <= ':') { if (yych <= 0x00) goto yy6; if (yych <= '*') goto yy8; @@ -92,20 +92,18 @@ bool DepfileParser::Parse(string* content, string* err) { } else { if (yych <= '@') goto yy8; if (yych <= 'Z') goto yy4; - goto yy8; + 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 <= '`') goto yy8; if (yych <= 'z') goto yy4; + if (yych == '~') goto yy4; goto yy8; } } -yy2: ++in; if ((yych = *in) <= '$') { if (yych <= '\n') { diff --git a/src/depfile_parser.in.cc b/src/depfile_parser.in.cc index 419ed8d..5e073df 100644 --- a/src/depfile_parser.in.cc +++ b/src/depfile_parser.in.cc @@ -68,7 +68,7 @@ bool DepfileParser::Parse(string* content, string* err) { *out++ = yych; continue; } - [a-zA-Z0-9+,/_:.-]+ { + [a-zA-Z0-9+,/_:.~-]+ { // Got a span of plain text. int len = in - start; // Need to shift it over if we're overwriting backslashes. diff --git a/src/depfile_parser_test.cc b/src/depfile_parser_test.cc index 883926a..9094283 100644 --- a/src/depfile_parser_test.cc +++ b/src/depfile_parser_test.cc @@ -108,7 +108,7 @@ TEST_F(DepfileParserTest, UnifyMultupleOutputs) { string err; EXPECT_TRUE(Parse("foo foo: x y z", &err)); ASSERT_EQ(parser_.out_.AsString(), "foo"); - ASSERT_EQ(parser_.ins_.size(), 3); + ASSERT_EQ(parser_.ins_.size(), 3u); EXPECT_EQ("x", parser_.ins_[0].AsString()); EXPECT_EQ("y", parser_.ins_[1].AsString()); EXPECT_EQ("z", parser_.ins_[2].AsString()); @@ -119,3 +119,16 @@ TEST_F(DepfileParserTest, RejectMultipleDifferentOutputs) { string err; EXPECT_FALSE(Parse("foo bar: x y z", &err)); } + +TEST_F(DepfileParserTest, Tilde) { + string err; + EXPECT_TRUE(Parse( +"foo~.o: foo~.c", + &err)); + ASSERT_EQ("", err); + EXPECT_EQ("foo~.o", + parser_.out_.AsString()); + ASSERT_EQ(1u, parser_.ins_.size()); + EXPECT_EQ("foo~.c", + parser_.ins_[0].AsString()); +} diff --git a/src/ninja.cc b/src/ninja.cc index 04cd771..7d020db 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -31,6 +31,7 @@ #include <windows.h> #else #include <getopt.h> +#include <unistd.h> #endif #include "browse.h" diff --git a/src/subprocess.cc b/src/subprocess.cc index 99de93f..25b1bda 100644 --- a/src/subprocess.cc +++ b/src/subprocess.cc @@ -45,7 +45,7 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { #if !defined(linux) // On linux we use ppoll in DoWork(); elsewhere we use pselect and so must // avoid overly-large FDs. - if (fd_ >= FD_SETSIZE) + if (fd_ >= static_cast<int>(FD_SETSIZE)) Fatal("pipe: %s", strerror(EMFILE)); #endif // !linux SetCloseOnExec(fd_); |