X-Git-Url: http://git.vrable.net/?p=cumulus.git;a=blobdiff_plain;f=util.cc;h=76efe0f35e7226b65e516c58daacf1dce4f9eca9;hp=a7479fcf3a754428edf39f56f7eebd34838aa0b7;hb=5d386960f207f991833f1204748bc4323934f761;hpb=adc96a88db941bd79f4be217ac29b2dee86f5ba7 diff --git a/util.cc b/util.cc index a7479fc..76efe0f 100644 --- a/util.cc +++ b/util.cc @@ -31,6 +31,8 @@ #include #include +#include "util.h" + using std::map; using std::ostream; using std::string; @@ -134,3 +136,24 @@ void fatal(string msg) fprintf(stderr, "FATAL: %s\n", msg.c_str()); exit(1); } + +/* Available time formats. */ +const char TimeFormat::FORMAT_FILENAME[] = "%Y%m%dT%H%M%S"; +const char TimeFormat::FORMAT_ISO8601[] = "%Y-%m-%d %H:%M:%S"; +const char TimeFormat::FORMAT_LOCALTIME[] = "%Y-%m-%d %H:%M:%S %z"; + +static size_t MAX_TIMESTAMP_LENGTH = 1024; + +std::string TimeFormat::format(time_t timestamp, const char *format, bool utc) +{ + struct tm time_buf; + + if (utc) + gmtime_r(×tamp, &time_buf); + else + localtime_r(×tamp, &time_buf); + + char buffer[MAX_TIMESTAMP_LENGTH]; + strftime(buffer, MAX_TIMESTAMP_LENGTH, format, &time_buf); + return string(buffer); +}