diff options
Diffstat (limited to 'ports/winnt/libntp/SetSystemTime.c')
-rw-r--r-- | ports/winnt/libntp/SetSystemTime.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/ports/winnt/libntp/SetSystemTime.c b/ports/winnt/libntp/SetSystemTime.c new file mode 100644 index 0000000..8cb4317 --- /dev/null +++ b/ports/winnt/libntp/SetSystemTime.c @@ -0,0 +1,34 @@ + +#include <config.h> + +#include "clockstuff.h" +#include "ntp_stdlib.h" +#include "ntp_unixtime.h" + +pset_tod_using set_tod_using = NULL; + +int +ntp_set_tod( + struct timeval *tv, + void *tzp + ) +{ + SYSTEMTIME st; + union { + FILETIME ft; + ULONGLONG ull; + } t; + + UNUSED_ARG(tzp); + + t.ull = FILETIME_1970 + + (ULONGLONG)tv->tv_sec * 10 * 1000 * 1000 + + (ULONGLONG)tv->tv_usec * 10; + + if (!FileTimeToSystemTime(&t.ft, &st) || !SetSystemTime(&st)) { + msyslog(LOG_ERR, "SetSystemTime failed: %m"); + return -1; + } + + return 0; +} |