diff options
-rw-r--r-- | bin/bbackupquery/BackupQueries.cpp | 21 | ||||
-rw-r--r-- | lib/common/BoxTimeToText.cpp | 38 | ||||
-rw-r--r-- | lib/common/BoxTimeToText.h | 2 |
3 files changed, 42 insertions, 19 deletions
diff --git a/bin/bbackupquery/BackupQueries.cpp b/bin/bbackupquery/BackupQueries.cpp index 15fabd34..4ab09a3a 100644 --- a/bin/bbackupquery/BackupQueries.cpp +++ b/bin/bbackupquery/BackupQueries.cpp @@ -180,7 +180,7 @@ void BackupQueries::DoCommand(const char *Command) { { "quit", "" }, { "exit", "" }, - { "list", "rodIFtsh", }, + { "list", "rodIFtTsh", }, { "pwd", "" }, { "cd", "od" }, { "lcd", "" }, @@ -350,8 +350,9 @@ void BackupQueries::CommandList(const std::vector<std::string> &args, const bool #define LIST_OPTION_ALLOWOLD 'o' #define LIST_OPTION_ALLOWDELETED 'd' #define LIST_OPTION_NOOBJECTID 'I' - #define LIST_OPTION_NOFLAGS 'F' - #define LIST_OPTION_TIMES 't' + #define LIST_OPTION_NOFLAGS 'F' + #define LIST_OPTION_TIMES_LOCAL 't' + #define LIST_OPTION_TIMES_UTC 'T' #define LIST_OPTION_SIZEINBLOCKS 's' #define LIST_OPTION_DISPLAY_HASH 'h' @@ -468,11 +469,19 @@ void BackupQueries::List(int64_t DirID, const std::string &rListRoot, const bool } } - if(opts[LIST_OPTION_TIMES]) + if(opts[LIST_OPTION_TIMES_UTC]) { - // Show times... + // Show UTC times... std::string time = BoxTimeToISO8601String( - en->GetModificationTime()); + en->GetModificationTime(), false); + printf("%s ", time.c_str()); + } + + if(opts[LIST_OPTION_TIMES_LOCAL]) + { + // Show local times... + std::string time = BoxTimeToISO8601String( + en->GetModificationTime(), true); printf("%s ", time.c_str()); } diff --git a/lib/common/BoxTimeToText.cpp b/lib/common/BoxTimeToText.cpp index ff8b2e49..dbeefe1b 100644 --- a/lib/common/BoxTimeToText.cpp +++ b/lib/common/BoxTimeToText.cpp @@ -20,23 +20,31 @@ // -------------------------------------------------------------------------- // // Function -// Name: BoxTimeToISO8601String(box_time_t) -// Purpose: Convert a 64 bit box time to a ISO 8601 complient string +// Name: BoxTimeToISO8601String(box_time_t, bool) +// Purpose: Convert a 64 bit box time to a ISO 8601 compliant +// string, either in local or UTC time // Created: 2003/10/10 // // -------------------------------------------------------------------------- -std::string BoxTimeToISO8601String(box_time_t Time) +std::string BoxTimeToISO8601String(box_time_t Time, bool localTime) { + time_t timeInSecs = BoxTimeToSeconds(Time); + char str[128]; // more than enough space + #ifdef WIN32 struct tm *time; - time_t bob = BoxTimeToSeconds(Time); + __time64_t winTime = timeInSecs; - __time64_t winTime = bob; + if(localTime) + { + time = _localtime64(&winTime); + } + else + { + time = _gmtime64(&winTime); + } - time = _gmtime64(&winTime); - char str[128]; // more than enough space - - if ( time == NULL ) + if(time == NULL) { // ::sprintf(str, "%016I64x ", bob); return std::string("unable to convert time"); @@ -46,11 +54,17 @@ std::string BoxTimeToISO8601String(box_time_t Time) time->tm_mon + 1, time->tm_mday, time->tm_hour, time->tm_min, time->tm_sec); #else // ! WIN32 - time_t timeInSecs = BoxTimeToSeconds(Time); struct tm time; - gmtime_r(&timeInSecs, &time); + + if(localTime) + { + localtime_r(&timeInSecs, &time); + } + else + { + gmtime_r(&timeInSecs, &time); + } - char str[128]; // more than enough space sprintf(str, "%04d-%02d-%02dT%02d:%02d:%02d", time.tm_year + 1900, time.tm_mon + 1, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec); diff --git a/lib/common/BoxTimeToText.h b/lib/common/BoxTimeToText.h index a25c70b6..21fa5d57 100644 --- a/lib/common/BoxTimeToText.h +++ b/lib/common/BoxTimeToText.h @@ -13,7 +13,7 @@ #include <string> #include "BoxTime.h" -std::string BoxTimeToISO8601String(box_time_t Time); +std::string BoxTimeToISO8601String(box_time_t Time, bool localTime); #endif // BOXTIMETOTEXT__H |