2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis and Cameron Heide
17 /***********************************************************************
18 * GetLocalTime (KERNEL32.228)
20 VOID GetLocalTime(LPSYSTEMTIME systime)
26 gettimeofday(&tv, NULL);
27 local_time = tv.tv_sec;
28 local_tm = localtime(&local_time);
30 systime->wYear = local_tm->tm_year + 1900;
31 systime->wMonth = local_tm->tm_mon + 1;
32 systime->wDayOfWeek = local_tm->tm_wday;
33 systime->wDay = local_tm->tm_mday;
34 systime->wHour = local_tm->tm_hour;
35 systime->wMinute = local_tm->tm_min;
36 systime->wSecond = local_tm->tm_sec;
37 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
40 /***********************************************************************
41 * GetSystemTime (KERNEL32.285)
43 VOID GetSystemTime(LPSYSTEMTIME systime)
49 gettimeofday(&tv, NULL);
50 local_time = tv.tv_sec;
51 local_tm = gmtime(&local_time);
53 systime->wYear = local_tm->tm_year + 1900;
54 systime->wMonth = local_tm->tm_mon + 1;
55 systime->wDayOfWeek = local_tm->tm_wday;
56 systime->wDay = local_tm->tm_mday;
57 systime->wHour = local_tm->tm_hour;
58 systime->wMinute = local_tm->tm_min;
59 systime->wSecond = local_tm->tm_sec;
60 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
64 /***********************************************************************
65 * SetSystemTime (KERNEL32.507)
67 BOOL SetSystemTime(const SYSTEMTIME *systime)
74 /* call gettimeofday to get the current timezone */
75 gettimeofday(&tv, &tz);
77 /* get the number of seconds */
78 t.tm_sec = systime->wSecond;
79 t.tm_min = systime->wMinute;
80 t.tm_hour = systime->wHour;
81 t.tm_mday = systime->wDay;
82 t.tm_mon = systime->wMonth;
83 t.tm_year = systime->wYear;
86 /* set the new time */
88 tv.tv_usec = systime->wMilliseconds * 1000;
89 if (settimeofday(&tv, &tz))
100 /***********************************************************************
101 * GetTimeZoneInformation (KERNEL32.302)
103 DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION tzinfo)
107 memset(tzinfo, 0, sizeof(TIME_ZONE_INFORMATION));
110 lt = mktime(localtime(&gmt));
111 tzinfo->Bias = (gmt - lt) / 60;
112 tzinfo->StandardBias = 0;
113 tzinfo->DaylightBias = -60;
115 return TIME_ZONE_ID_UNKNOWN;
119 /***********************************************************************
120 * SetTimeZoneInformation (KERNEL32.515)
122 BOOL32 SetTimeZoneInformation(const TIME_ZONE_INFORMATION *tzinfo)
126 tz.tz_minuteswest = tzinfo->Bias;
127 tz.tz_dsttime = DST_NONE;
128 return !settimeofday(NULL, &tz);
132 /***********************************************************************
133 * Sleep (KERNEL32.523)
135 VOID Sleep(DWORD cMilliseconds)
137 if(cMilliseconds == INFINITE)
138 while(1) sleep(1000); /* Spin forever */
139 usleep(cMilliseconds*1000);