X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=util.cc;h=76efe0f35e7226b65e516c58daacf1dce4f9eca9;hb=ca9732d7fe1cc7023f5642fd50774982bb430d64;hp=0aa5efbb8eb521e14f935bc286de8c081067a62c;hpb=dd553bb0b2ac2fe7a1904d2f2670f37e3bb25ae6;p=cumulus.git diff --git a/util.cc b/util.cc index 0aa5efb..76efe0f 100644 --- a/util.cc +++ b/util.cc @@ -1,7 +1,6 @@ -/* Cumulus: Smart Filesystem Backup to Dumb Servers - * - * Copyright (C) 2007 The Regents of the University of California - * Written by Michael Vrable +/* Cumulus: Efficient Filesystem Backup to the Cloud + * Copyright (C) 2007-2008 The Cumulus Developers + * See the AUTHORS file for a list of contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,6 +31,8 @@ #include #include +#include "util.h" + using std::map; using std::ostream; using std::string; @@ -135,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); +}