X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Ftime-util.h;h=7a64d454a04b14a0de68553dcaf7d03996c22e87;hb=9fc688865394518a68539070e10d8c9eb1f0dd6e;hp=16cc593cf59fa5669a542de3881bf908cf9bb678;hpb=a62e83b48cda6a709a796a361abaf6b129650b3c;p=elogind.git diff --git a/src/shared/time-util.h b/src/shared/time-util.h index 16cc593cf..7a64d454a 100644 --- a/src/shared/time-util.h +++ b/src/shared/time-util.h @@ -65,7 +65,9 @@ typedef struct dual_timestamp { #define FORMAT_TIMESTAMP_RELATIVE_MAX 256 #define FORMAT_TIMESPAN_MAX 64 -#define DUAL_TIMESTAMP_NULL ((struct dual_timestamp) { 0, 0 }) +#define TIME_T_MAX (time_t)((1UL << ((sizeof(time_t) << 3) - 1)) - 1) + +#define DUAL_TIMESTAMP_NULL ((struct dual_timestamp) { 0ULL, 0ULL }) usec_t now(clockid_t clock); @@ -84,14 +86,15 @@ struct timespec *timespec_store(struct timespec *ts, usec_t u); usec_t timeval_load(const struct timeval *tv) _pure_; struct timeval *timeval_store(struct timeval *tv, usec_t u); -char *format_timestamp_internal(char *buf, size_t l, usec_t t, bool utc); char *format_timestamp(char *buf, size_t l, usec_t t); -char *format_timestamp_us(char *buf, size_t l, usec_t t, bool utc); +char *format_timestamp_utc(char *buf, size_t l, usec_t t); +char *format_timestamp_us(char *buf, size_t l, usec_t t); +char *format_timestamp_us_utc(char *buf, size_t l, usec_t t); char *format_timestamp_relative(char *buf, size_t l, usec_t t); char *format_timespan(char *buf, size_t l, usec_t t, usec_t accuracy); void dual_timestamp_serialize(FILE *f, const char *name, dual_timestamp *t); -void dual_timestamp_deserialize(const char *value, dual_timestamp *t); +int dual_timestamp_deserialize(const char *value, dual_timestamp *t); int parse_timestamp(const char *t, usec_t *usec); @@ -104,3 +107,5 @@ int get_timezones(char ***l); bool timezone_is_valid(const char *name); clockid_t clock_boottime_or_monotonic(void); + +#define xstrftime(buf, fmt, tm) assert_se(strftime(buf, ELEMENTSOF(buf), fmt, tm) > 0)