diff options
author | Zach Mullen <zach.mullen@kitware.com> | 2010-03-18 17:51:40 (GMT) |
---|---|---|
committer | Zach Mullen <zach.mullen@kitware.com> | 2010-03-18 17:53:40 (GMT) |
commit | 9676c52c3ea26dcd74bdffd14fa91869c00354f7 (patch) | |
tree | 51ac6af8ac10ba265604f5776d5a614b04b15454 /Source/CTest/cmCTestRunTest.cxx | |
parent | a2fe175647718a562e41c84717b67917adbe584d (diff) | |
download | CMake-9676c52c3ea26dcd74bdffd14fa91869c00354f7.zip CMake-9676c52c3ea26dcd74bdffd14fa91869c00354f7.tar.gz CMake-9676c52c3ea26dcd74bdffd14fa91869c00354f7.tar.bz2 |
Fix for StopTime for cases when gmtime is a day ahead of localtime
Diffstat (limited to 'Source/CTest/cmCTestRunTest.cxx')
-rw-r--r-- | Source/CTest/cmCTestRunTest.cxx | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 8e7b9cd..adabbc2 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -531,10 +531,22 @@ double cmCTestRunTest::ResolveTimeout() time_t current_time = time(0); lctime = gmtime(¤t_time); int gm_hour = lctime->tm_hour; + time_t gm_time = mktime(lctime); lctime = localtime(¤t_time); int local_hour = lctime->tm_hour; - int timezone = (local_hour - gm_hour) * 100; + int tzone_offset = 0; + if(gm_time > current_time && gm_hour < local_hour) + { + // this means gm_time is on the next day + tzone_offset = local_hour - gm_hour - 24; + } + else + { + tzone_offset = local_hour - gm_hour; + } + + tzone_offset *= 100; char buf[1024]; // add todays year day and month to the time in str because // curl_getdate no longer assumes the day is today @@ -543,10 +555,8 @@ double cmCTestRunTest::ResolveTimeout() lctime->tm_mon + 1, lctime->tm_mday, this->CTest->GetStopTime().c_str(), - timezone); + tzone_offset); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Computed stop time=" - << buf << std::endl); time_t stop_time = curl_getdate(buf, ¤t_time); if(stop_time == -1) { @@ -558,7 +568,7 @@ double cmCTestRunTest::ResolveTimeout() { stop_time += 24*60*60; } - double stop_timeout = stop_time - current_time; + int stop_timeout = (stop_time - current_time) % (24*60*60); if(stop_timeout <= 0) { @@ -567,7 +577,8 @@ double cmCTestRunTest::ResolveTimeout() exit(-1); } #undef min - return timeout == 0 ? stop_timeout : std::min(timeout, stop_timeout); + return timeout == 0 ? stop_timeout : + std::min(timeout, static_cast<double>(stop_timeout)); } //---------------------------------------------------------------------- |