From 8dd0a223519e54e7b7958186e48e34dd3d25d513 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 3 Aug 2019 19:57:51 -0700 Subject: [PATCH] ircd: Add additional formatted microdate(). --- include/ircd/timedate.h | 1 + ircd/timedate.cc | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/ircd/timedate.h b/include/ircd/timedate.h index 2b5836b92..dbfabc77e 100644 --- a/include/ircd/timedate.h +++ b/include/ircd/timedate.h @@ -46,6 +46,7 @@ namespace ircd // Other tools string_view smalldate(const mutable_buffer &buf, const time_t <ime); + string_view microdate(const mutable_buffer &buf); // Interface conveniences. std::ostream &operator<<(std::ostream &, const microtime_t &); diff --git a/ircd/timedate.cc b/ircd/timedate.cc index d99df8888..0be34d524 100644 --- a/ircd/timedate.cc +++ b/ircd/timedate.cc @@ -54,6 +54,34 @@ ircd::smalldate(const mutable_buffer &buf, }; } +ircd::string_view +ircd::microdate(const mutable_buffer &buf) +{ + auto mt + { + microtime() + }; + + struct tm lt; + localtime_r(&mt.first, <); + const auto length + { + ::snprintf(data(buf), size(buf), "%04d/%02d/%02d %02d:%02d:%02d.%06d", + lt.tm_year + 1900, + lt.tm_mon + 1, + lt.tm_mday, + lt.tm_hour, + lt.tm_min, + lt.tm_sec, + mt.second) + }; + + return string_view + { + data(buf), size_t(length) + }; +} + ircd::string_view ircd::timef(const mutable_buffer &out, const char *const &fmt)