return 0;
}
+#define TIME_BUF_SIZE 128
+
+void rgw_to_iso8601(const real_time& t, char *dest, int buf_size)
+{
+ utime_t ut(t);
+
+ char buf[TIME_BUF_SIZE];
+ struct tm result;
+ time_t epoch = ut.sec();
+ struct tm *tmp = gmtime_r(&epoch, &result);
+ if (tmp == NULL)
+ return;
+
+ if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T", tmp) == 0)
+ return;
+
+ snprintf(dest, buf_size, "%s.%03dZ", buf, (int)(ut.usec() / 1000));
+}
+
+void rgw_to_iso8601(const real_time& t, string *dest)
+{
+ char buf[TIME_BUF_SIZE];
+ rgw_to_iso8601(t, buf, sizeof(buf));
+ *dest = buf;
+}
+
/*
* calculate the sha1 value of a given msg and key
*/
extern string rgw_trim_whitespace(const string& src);
extern string rgw_trim_quotes(const string& val);
+extern void rgw_to_iso8601(const real_time& t, char *dest, int buf_size);
+extern void rgw_to_iso8601(const real_time& t, string *dest);
/** Check if the req_state's user has the necessary permissions
* to do the requested action */
void dump_time(struct req_state *s, const char *name, real_time *t)
{
- utime_t ut(*t);
-
char buf[TIME_BUF_SIZE];
- struct tm result;
- time_t epoch = ut.sec();
- struct tm *tmp = gmtime_r(&epoch, &result);
- if (tmp == NULL)
- return;
-
- if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T", tmp) == 0)
- return;
-
- char buf2[TIME_BUF_SIZE];
- snprintf(buf2, sizeof(buf2), "%s.%03dZ", buf, (int)(ut.usec() / 1000));
+ rgw_to_iso8601(*t, buf, sizeof(buf));
- s->formatter->dump_string(name, buf2);
+ s->formatter->dump_string(name, buf);
}
void dump_owner(struct req_state *s, rgw_user& id, string& name,