From 5b331f1ef18682349a65af219c987fe827246531 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Mon, 26 Feb 2001 22:36:09 +0000 Subject: [PATCH] * times.cc (settimeofday): Replace function stub with working code. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/times.cc | 26 +++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 453d802a9..a7a5e5a12 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2001-02-26 Mike Simons + + * times.cc (settimeofday): Replace function stub with working code. + Mon Feb 26 10:42:00 2001 Corinna Vinschen * strace.cc (strace::vprntf): Move prntf functionality to this function diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index 790291248..0681b4064 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -17,6 +17,7 @@ details. */ #include #include #include "cygerrno.h" +#include "perprocess.h" #include "fhandler.h" #include "path.h" #include "sync.h" @@ -92,10 +93,29 @@ _times (struct tms * buf) /* settimeofday: BSD */ extern "C" int -settimeofday (const struct timeval *, const struct timezone *) +settimeofday (const struct timeval *tv, const struct timezone *tz) { - set_errno (ENOSYS); - return -1; + SYSTEMTIME st; + struct tm *ptm; + int res; + + tz = tz; /* silence warning about unused variable */ + + ptm = gmtime(&tv->tv_sec); + st.wYear = ptm->tm_year + 1900; + st.wMonth = ptm->tm_mon + 1; + st.wDayOfWeek = ptm->tm_wday; + st.wDay = ptm->tm_mday; + st.wHour = ptm->tm_hour; + st.wMinute = ptm->tm_min; + st.wSecond = ptm->tm_sec; + st.wMilliseconds = tv->tv_usec / 1000; + + res = !SetSystemTime(&st); + + syscall_printf ("%d = settimeofday (%x, %x)", res, tv, tz); + + return res; } /* timezone: standards? */