X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fcore%2Ftime.c;h=d0ed0b8dd9917d11596fa54da2f65071026c968f;hb=b072d9b2786422fcb8f068dd5076bd108a6228e9;hp=762ffd0034fc3315c77e3951c0a41f5566fa2a3b;hpb=1b899f6e899047a521d473d00492bcf699f44ede;p=sysdb.git diff --git a/src/core/time.c b/src/core/time.c index 762ffd0..d0ed0b8 100644 --- a/src/core/time.c +++ b/src/core/time.c @@ -34,6 +34,7 @@ #include +#include #include #include @@ -41,7 +42,7 @@ * public API */ -/* 1 second (in micro-seconds) */ +/* 1 second (in nano-seconds) */ #define SEC 1000000000L const sdb_time_t SDB_INTERVAL_YEAR = 3652425L * 24L * 60L * 60L * 100000L; @@ -98,7 +99,7 @@ sdb_strfinterval(char *s, size_t len, sdb_time_t interval) size_t i; /* special case the optional fractional part for seconds */ - _Bool have_seconds = 0; + bool have_seconds = 0; struct { sdb_time_t interval; @@ -147,5 +148,31 @@ sdb_strfinterval(char *s, size_t len, sdb_time_t interval) return n; } /* sdb_strfinterval */ +sdb_time_t +sdb_strpunit(const char *s) +{ + struct { + const char *s; + sdb_time_t unit; + } units[] = { + { "Y", SDB_INTERVAL_YEAR }, + { "M", SDB_INTERVAL_MONTH }, + { "D", SDB_INTERVAL_DAY }, + { "h", SDB_INTERVAL_HOUR }, + { "m", SDB_INTERVAL_MINUTE }, + { "s", SDB_INTERVAL_SECOND }, + { "ms", SDB_INTERVAL_SECOND / 1000L }, + { "us", SDB_INTERVAL_SECOND / 1000000L }, + { "ns", 1 }, + }; + + size_t i; + + for (i = 0; i < SDB_STATIC_ARRAY_LEN(units); ++i) + if (! strcmp(s, units[i].s)) + return units[i].unit; + return 0; +} /* sdb_strpunit */ + /* vim: set tw=78 sw=4 ts=4 noexpandtab : */