aboutsummaryrefslogtreecommitdiff
path: root/build2
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-11-19 21:07:26 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-11-19 21:07:26 +0200
commitcf6374ec9a2fc3c765a07dcad73e05ea757ee477 (patch)
tree91aed2975faaee76f25fa4b679d3cd737438c51a /build2
parent8e5675569e57097025429164eaf2903ff3bd824f (diff)
Extend backwards modification time diagnostics
Diffstat (limited to 'build2')
-rw-r--r--build2/cc/link-rule.cxx3
-rw-r--r--build2/depdb.cxx6
-rw-r--r--build2/depdb.hxx2
3 files changed, 7 insertions, 4 deletions
diff --git a/build2/cc/link-rule.cxx b/build2/cc/link-rule.cxx
index d8434d8..c4fd82b 100644
--- a/build2/cc/link-rule.cxx
+++ b/build2/cc/link-rule.cxx
@@ -2076,7 +2076,7 @@ namespace build2
timestamp dd_tt (system_clock::now ());
#endif
- dd.close ();
+ timestamp dd_ct (dd.close ());
// If nothing changed, then we are done.
//
@@ -2569,6 +2569,7 @@ namespace build2
if (dd_mt > tp_mt)
fail << "backwards modification times:\n"
<< dd_tt << " window start\n"
+ << dd_ct << " close mtime\n"
<< dd_mt << " " << dd.path.string () << '\n'
<< tp_mt << " " << tp.string () << '\n'
<< tp_tt << " window end";
diff --git a/build2/depdb.cxx b/build2/depdb.cxx
index 416f1f4..8abd5f2 100644
--- a/build2/depdb.cxx
+++ b/build2/depdb.cxx
@@ -201,7 +201,7 @@ namespace build2
fs_.put ('\n');
}
- void depdb::
+ timestamp depdb::
close ()
{
// If we are at eof, then it means all lines are good, there is the "end
@@ -263,7 +263,9 @@ namespace build2
//
#if defined(_WIN32) || defined(__FreeBSD__)
if (state_ == state::write)
- file_mtime (path);
+ mtime = file_mtime (path);
#endif
+
+ return mtime;
}
}
diff --git a/build2/depdb.hxx b/build2/depdb.hxx
index 7c9e464..ffb3b89 100644
--- a/build2/depdb.hxx
+++ b/build2/depdb.hxx
@@ -90,7 +90,7 @@ namespace build2
// may be left in the old/currupt state. Note that in the read mode this
// function will "chop off" lines that haven't been read.
//
- void
+ timestamp
close ();
// Read the next line. If the result is not NULL, then it is a pointer to