diff options
author | Ron Yorston <rmy@pobox.com> | 2022-04-22 15:26:59 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2022-04-22 15:39:42 +0100 |
commit | 037037df6cdc567132acbeeb2067c442f945889e (patch) | |
tree | 1bc314e37d3bc23f571a5a13ac847b45640e839a | |
parent | 3cbe64df41eb408740a59145c6318b71f47c4f6d (diff) | |
download | busybox-w32-037037df6cdc567132acbeeb2067c442f945889e.tar.gz busybox-w32-037037df6cdc567132acbeeb2067c442f945889e.tar.bz2 busybox-w32-037037df6cdc567132acbeeb2067c442f945889e.zip |
date: enable FEATURE_DATE_NANO
Provide a WIN32 implementation of clock_gettime(2), though only
with support for CLOCK_REALTIME. This makes it possible to enable
FEATURE_DATE_NANO which adds support for the %N date format.
MinGW-w64 has clock_gettime(2) but it's in the winpthreads library
and we don't want to bother with that.
-rw-r--r-- | configs/mingw32_defconfig | 2 | ||||
-rw-r--r-- | configs/mingw64_defconfig | 2 | ||||
-rw-r--r-- | include/mingw.h | 1 | ||||
-rw-r--r-- | win32/mingw.c | 13 | ||||
-rw-r--r-- | win32/sys/syscall.h | 0 |
5 files changed, 16 insertions, 2 deletions
diff --git a/configs/mingw32_defconfig b/configs/mingw32_defconfig index 5d9d98eaf..af6ab53c3 100644 --- a/configs/mingw32_defconfig +++ b/configs/mingw32_defconfig | |||
@@ -251,7 +251,7 @@ CONFIG_CUT=y | |||
251 | CONFIG_FEATURE_CUT_REGEX=y | 251 | CONFIG_FEATURE_CUT_REGEX=y |
252 | CONFIG_DATE=y | 252 | CONFIG_DATE=y |
253 | CONFIG_FEATURE_DATE_ISOFMT=y | 253 | CONFIG_FEATURE_DATE_ISOFMT=y |
254 | # CONFIG_FEATURE_DATE_NANO is not set | 254 | CONFIG_FEATURE_DATE_NANO=y |
255 | CONFIG_FEATURE_DATE_COMPAT=y | 255 | CONFIG_FEATURE_DATE_COMPAT=y |
256 | CONFIG_DD=y | 256 | CONFIG_DD=y |
257 | # CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set | 257 | # CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set |
diff --git a/configs/mingw64_defconfig b/configs/mingw64_defconfig index cd77b98b3..7b8de70f0 100644 --- a/configs/mingw64_defconfig +++ b/configs/mingw64_defconfig | |||
@@ -251,7 +251,7 @@ CONFIG_CUT=y | |||
251 | CONFIG_FEATURE_CUT_REGEX=y | 251 | CONFIG_FEATURE_CUT_REGEX=y |
252 | CONFIG_DATE=y | 252 | CONFIG_DATE=y |
253 | CONFIG_FEATURE_DATE_ISOFMT=y | 253 | CONFIG_FEATURE_DATE_ISOFMT=y |
254 | # CONFIG_FEATURE_DATE_NANO is not set | 254 | CONFIG_FEATURE_DATE_NANO=y |
255 | CONFIG_FEATURE_DATE_COMPAT=y | 255 | CONFIG_FEATURE_DATE_COMPAT=y |
256 | CONFIG_DD=y | 256 | CONFIG_DD=y |
257 | # CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set | 257 | # CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set |
diff --git a/include/mingw.h b/include/mingw.h index 06fb3b289..8a9610898 100644 --- a/include/mingw.h +++ b/include/mingw.h | |||
@@ -276,6 +276,7 @@ struct timespec { | |||
276 | time_t timegm(struct tm *tm); | 276 | time_t timegm(struct tm *tm); |
277 | 277 | ||
278 | int nanosleep(const struct timespec *req, struct timespec *rem); | 278 | int nanosleep(const struct timespec *req, struct timespec *rem); |
279 | int clock_gettime(clockid_t clockid, struct timespec *tp); | ||
279 | 280 | ||
280 | /* | 281 | /* |
281 | * sys/stat.h | 282 | * sys/stat.h |
diff --git a/win32/mingw.c b/win32/mingw.c index 91c52b75c..2de07122e 100644 --- a/win32/mingw.c +++ b/win32/mingw.c | |||
@@ -927,6 +927,19 @@ int gettimeofday(struct timeval *tv, void *tz UNUSED_PARAM) | |||
927 | return 0; | 927 | return 0; |
928 | } | 928 | } |
929 | 929 | ||
930 | int clock_gettime(clockid_t clockid, struct timespec *tp) | ||
931 | { | ||
932 | FILETIME ft; | ||
933 | |||
934 | if (clockid != CLOCK_REALTIME) { | ||
935 | errno = ENOSYS; | ||
936 | return -1; | ||
937 | } | ||
938 | GetSystemTimeAsFileTime(&ft); | ||
939 | *tp = filetime_to_timespec(&ft); | ||
940 | return 0; | ||
941 | } | ||
942 | |||
930 | int pipe(int filedes[2]) | 943 | int pipe(int filedes[2]) |
931 | { | 944 | { |
932 | if (_pipe(filedes, PIPE_BUF, 0) < 0) | 945 | if (_pipe(filedes, PIPE_BUF, 0) < 0) |
diff --git a/win32/sys/syscall.h b/win32/sys/syscall.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/win32/sys/syscall.h | |||