aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2022-04-22 15:26:59 +0100
committerRon Yorston <rmy@pobox.com>2022-04-22 15:39:42 +0100
commit037037df6cdc567132acbeeb2067c442f945889e (patch)
tree1bc314e37d3bc23f571a5a13ac847b45640e839a
parent3cbe64df41eb408740a59145c6318b71f47c4f6d (diff)
downloadbusybox-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_defconfig2
-rw-r--r--configs/mingw64_defconfig2
-rw-r--r--include/mingw.h1
-rw-r--r--win32/mingw.c13
-rw-r--r--win32/sys/syscall.h0
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
251CONFIG_FEATURE_CUT_REGEX=y 251CONFIG_FEATURE_CUT_REGEX=y
252CONFIG_DATE=y 252CONFIG_DATE=y
253CONFIG_FEATURE_DATE_ISOFMT=y 253CONFIG_FEATURE_DATE_ISOFMT=y
254# CONFIG_FEATURE_DATE_NANO is not set 254CONFIG_FEATURE_DATE_NANO=y
255CONFIG_FEATURE_DATE_COMPAT=y 255CONFIG_FEATURE_DATE_COMPAT=y
256CONFIG_DD=y 256CONFIG_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
251CONFIG_FEATURE_CUT_REGEX=y 251CONFIG_FEATURE_CUT_REGEX=y
252CONFIG_DATE=y 252CONFIG_DATE=y
253CONFIG_FEATURE_DATE_ISOFMT=y 253CONFIG_FEATURE_DATE_ISOFMT=y
254# CONFIG_FEATURE_DATE_NANO is not set 254CONFIG_FEATURE_DATE_NANO=y
255CONFIG_FEATURE_DATE_COMPAT=y 255CONFIG_FEATURE_DATE_COMPAT=y
256CONFIG_DD=y 256CONFIG_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 {
276time_t timegm(struct tm *tm); 276time_t timegm(struct tm *tm);
277 277
278int nanosleep(const struct timespec *req, struct timespec *rem); 278int nanosleep(const struct timespec *req, struct timespec *rem);
279int 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
930int 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
930int pipe(int filedes[2]) 943int 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