]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
strutils: add function strtotimespec_or_err
authorThomas Weißschuh <thomas@t-8ch.de>
Fri, 6 Jan 2023 14:36:37 +0000 (14:36 +0000)
committerThomas Weißschuh <thomas@t-8ch.de>
Fri, 6 Jan 2023 14:37:55 +0000 (14:37 +0000)
include/strutils.h
lib/strutils.c

index 34822e72bb1addd3fe29d7bd7368b446b2ef4ce3..a51459f86f83f8d60412e2d4d9fe132bc9dcee74 100644 (file)
@@ -48,6 +48,8 @@ extern long double strtold_or_err(const char *str, const char *errmesg);
 
 extern void strtotimeval_or_err(const char *str, struct timeval *tv,
                const char *errmesg);
+extern void strtotimespec_or_err(const char *str, struct timespec *ts,
+               const char *errmesg);
 extern time_t strtotime_or_err(const char *str, const char *errmesg);
 
 extern int isdigit_strend(const char *str, const char **end);
index 6d863b85f65556c6fe31ef772a7b9abe2aaec0ac..f6f299db4cf250b76cedb0eaa15cf44780065e0f 100644 (file)
@@ -500,6 +500,15 @@ void strtotimeval_or_err(const char *str, struct timeval *tv, const char *errmes
        tv->tv_usec = (suseconds_t)((user_input - tv->tv_sec) * 1000000);
 }
 
+void strtotimespec_or_err(const char *str, struct timespec *ts, const char *errmesg)
+{
+       long double user_input;
+
+       user_input = strtold_or_err(str, errmesg);
+       ts->tv_sec = (time_t) user_input;
+       ts->tv_nsec = (long)((user_input - ts->tv_sec) * 1000000000);
+}
+
 time_t strtotime_or_err(const char *str, const char *errmesg)
 {
        int64_t user_input;