diff options
author | Evan Martin <martine@danga.com> | 2012-06-18 22:47:38 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2012-06-18 22:59:13 (GMT) |
commit | 91b986fe22f327df3ed69234f4472d10e5bd883f (patch) | |
tree | 9e7f74a187002622c114872165034d622ef95d09 /src/build_log.cc | |
parent | b77614301e032e19e7cb2b3b5a6dea9464c05a5e (diff) | |
download | Ninja-91b986fe22f327df3ed69234f4472d10e5bd883f.zip Ninja-91b986fe22f327df3ed69234f4472d10e5bd883f.tar.gz Ninja-91b986fe22f327df3ed69234f4472d10e5bd883f.tar.bz2 |
drop support of log formats < 4
Log format 4 was introduced in January.
There's been plenty of time to migrate.
Diffstat (limited to 'src/build_log.cc')
-rw-r--r-- | src/build_log.cc | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/build_log.cc b/src/build_log.cc index 4baff42..86b660f 100644 --- a/src/build_log.cc +++ b/src/build_log.cc @@ -39,6 +39,7 @@ namespace { const char kFileSignature[] = "# ninja log v%d\n"; +const int kOldestSupportedVersion = 4; const int kCurrentVersion = 5; // 64bit MurmurHash2, by Austin Appleby @@ -229,19 +230,23 @@ bool BuildLog::Load(const string& path, string* err) { char* line_end = 0; while (reader.ReadLine(&line_start, &line_end)) { if (!log_version) { - log_version = 1; // Assume by default. - if (sscanf(line_start, kFileSignature, &log_version) > 0) - continue; + sscanf(line_start, kFileSignature, &log_version); + + if (log_version < kOldestSupportedVersion) { + *err = "unable to extract version from build log, perhaps due to " + "being too old; you must clobber your build output and rebuild"; + return false; + } } // If no newline was found in this chunk, read the next. if (!line_end) continue; - char field_separator = log_version >= 4 ? '\t' : ' '; + const char kFieldSeparator = '\t'; char* start = line_start; - char* end = (char*)memchr(start, field_separator, line_end - start); + char* end = (char*)memchr(start, kFieldSeparator, line_end - start); if (!end) continue; *end = 0; @@ -252,21 +257,21 @@ bool BuildLog::Load(const string& path, string* err) { start_time = atoi(start); start = end + 1; - end = (char*)memchr(start, field_separator, line_end - start); + end = (char*)memchr(start, kFieldSeparator, line_end - start); if (!end) continue; *end = 0; end_time = atoi(start); start = end + 1; - end = (char*)memchr(start, field_separator, line_end - start); + end = (char*)memchr(start, kFieldSeparator, line_end - start); if (!end) continue; *end = 0; restat_mtime = atol(start); start = end + 1; - end = (char*)memchr(start, field_separator, line_end - start); + end = (char*)memchr(start, kFieldSeparator, line_end - start); if (!end) continue; string output = string(start, end - start); @@ -293,10 +298,10 @@ bool BuildLog::Load(const string& path, string* err) { char c = *end; *end = '\0'; entry->command_hash = (uint64_t)strtoull(start, NULL, 10); *end = c; - } - else + } else { entry->command_hash = LogEntry::HashCommand(StringPiece(start, end - start)); + } } fclose(file); |