Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
f7694794
Commit
f7694794
authored
Dec 13, 2002
by
György 'Nog' Jeney
Committed by
Alexandre Julliard
Dec 13, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Reimplement time functions using ntdll functions.
- Some cleanups.
parent
b3123fac
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
97 additions
and
207 deletions
+97
-207
time.c
dlls/kernel/time.c
+97
-52
Makefile.in
dlls/ntdll/Makefile.in
+0
-1
dos_fs.c
files/dos_fs.c
+0
-54
file.c
files/file.c
+0
-18
time.c
win32/time.c
+0
-82
No files found.
dlls/kernel/time.c
View file @
f7694794
/*
* Win32 kernel functions
* Win32 kernel
time
functions
*
* Copyright 1995 Martin von Loewis and Cameron Heide
*
...
...
@@ -59,47 +59,17 @@ WINE_DEFAULT_DEBUG_CHANNEL(win32);
BOOL
WINAPI
SetLocalTime
(
const
SYSTEMTIME
*
systime
)
/* [in] The desired local time. */
{
struct
timeval
tv
;
struct
tm
t
;
time_t
sec
;
time_t
oldsec
=
time
(
NULL
);
int
err
;
/* get the number of seconds */
t
.
tm_sec
=
systime
->
wSecond
;
t
.
tm_min
=
systime
->
wMinute
;
t
.
tm_hour
=
systime
->
wHour
;
t
.
tm_mday
=
systime
->
wDay
;
t
.
tm_mon
=
systime
->
wMonth
-
1
;
t
.
tm_year
=
systime
->
wYear
-
1900
;
t
.
tm_isdst
=
-
1
;
sec
=
mktime
(
&
t
);
/* set the new time */
tv
.
tv_sec
=
sec
;
tv
.
tv_usec
=
systime
->
wMilliseconds
*
1000
;
/* error and sanity check*/
if
(
sec
==
(
time_t
)
-
1
||
abs
((
int
)(
sec
-
oldsec
))
>
SETTIME_MAX_ADJUST
){
err
=
1
;
SetLastError
(
ERROR_INVALID_PARAMETER
);
}
else
{
#ifdef HAVE_SETTIMEOFDAY
err
=
settimeofday
(
&
tv
,
NULL
);
/* 0 is OK, -1 is error */
if
(
err
==
0
)
return
TRUE
;
SetLastError
(
ERROR_PRIVILEGE_NOT_HELD
);
#else
err
=
1
;
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
#endif
}
ERR
(
"Cannot set time to %d/%d/%d %d:%d:%d Time adjustment %ld %s
\n
"
,
systime
->
wYear
,
systime
->
wMonth
,
systime
->
wDay
,
systime
->
wHour
,
systime
->
wMinute
,
systime
->
wSecond
,
sec
-
oldsec
,
err
==
-
1
?
"No Permission"
:
sec
==
(
time_t
)
-
1
?
""
:
"is too large."
);
return
FALSE
;
FILETIME
ft
;
LARGE_INTEGER
st
;
NTSTATUS
status
;
SystemTimeToFileTime
(
systime
,
&
ft
);
RtlLocalTimeToSystemTime
(
(
PLARGE_INTEGER
)
&
ft
,
&
st
);
if
((
status
=
NtSetSystemTime
(
&
st
,
NULL
)))
SetLastError
(
RtlNtStatusToDosError
(
status
)
);
return
!
status
;
}
...
...
@@ -142,19 +112,10 @@ BOOL WINAPI GetSystemTimeAdjustment(
BOOL
WINAPI
SetSystemTime
(
const
SYSTEMTIME
*
systime
)
/* [in] The desired system time. */
{
TIME_FIELDS
tf
;
LARGE_INTEGER
t
;
NTSTATUS
status
;
tf
.
Second
=
systime
->
wSecond
;
tf
.
Minute
=
systime
->
wMinute
;
tf
.
Hour
=
systime
->
wHour
;
tf
.
Day
=
systime
->
wDay
;
tf
.
Month
=
systime
->
wMonth
;
tf
.
Year
=
systime
->
wYear
;
tf
.
Milliseconds
=
systime
->
wMilliseconds
;
RtlTimeFieldsToTime
(
&
tf
,
&
t
);
SystemTimeToFileTime
(
systime
,
(
PFILETIME
)
&
t
);
if
((
status
=
NtSetSystemTime
(
&
t
,
NULL
)))
SetLastError
(
RtlNtStatusToDosError
(
status
)
);
...
...
@@ -496,3 +457,87 @@ BOOL WINAPI FileTimeToLocalFileTime( const FILETIME *utcft,
SetLastError
(
RtlNtStatusToDosError
(
status
)
);
return
!
status
;
}
/*********************************************************************
* FileTimeToSystemTime (KERNEL32.@)
*/
BOOL
WINAPI
FileTimeToSystemTime
(
const
FILETIME
*
ft
,
LPSYSTEMTIME
syst
)
{
TIME_FIELDS
tf
;
RtlTimeToTimeFields
((
PLARGE_INTEGER
)
ft
,
&
tf
);
syst
->
wYear
=
tf
.
Year
;
syst
->
wMonth
=
tf
.
Month
;
syst
->
wDay
=
tf
.
Day
;
syst
->
wHour
=
tf
.
Hour
;
syst
->
wMinute
=
tf
.
Minute
;
syst
->
wSecond
=
tf
.
Second
;
syst
->
wMilliseconds
=
tf
.
Milliseconds
;
syst
->
wDayOfWeek
=
tf
.
Weekday
;
return
TRUE
;
}
/*********************************************************************
* SystemTimeToFileTime (KERNEL32.@)
*/
BOOL
WINAPI
SystemTimeToFileTime
(
const
SYSTEMTIME
*
syst
,
LPFILETIME
ft
)
{
TIME_FIELDS
tf
;
tf
.
Year
=
syst
->
wYear
;
tf
.
Month
=
syst
->
wMonth
;
tf
.
Day
=
syst
->
wDay
;
tf
.
Hour
=
syst
->
wHour
;
tf
.
Minute
=
syst
->
wMinute
;
tf
.
Second
=
syst
->
wSecond
;
tf
.
Milliseconds
=
syst
->
wMilliseconds
;
RtlTimeFieldsToTime
(
&
tf
,
(
PLARGE_INTEGER
)
ft
);
return
TRUE
;
}
/*********************************************************************
* CompareFileTime (KERNEL32.@)
*/
INT
WINAPI
CompareFileTime
(
LPFILETIME
x
,
LPFILETIME
y
)
{
if
(
!
x
||
!
y
)
return
-
1
;
if
(
x
->
dwHighDateTime
>
y
->
dwHighDateTime
)
return
1
;
if
(
x
->
dwHighDateTime
<
y
->
dwHighDateTime
)
return
-
1
;
if
(
x
->
dwLowDateTime
>
y
->
dwLowDateTime
)
return
1
;
if
(
x
->
dwLowDateTime
<
y
->
dwLowDateTime
)
return
-
1
;
return
0
;
}
/*********************************************************************
* GetLocalTime (KERNEL32.@)
*/
VOID
WINAPI
GetLocalTime
(
LPSYSTEMTIME
systime
)
{
FILETIME
lft
;
LARGE_INTEGER
ft
;
NtQuerySystemTime
(
&
ft
);
RtlSystemTimeToLocalTime
(
&
ft
,
(
PLARGE_INTEGER
)
&
lft
);
FileTimeToSystemTime
(
&
lft
,
systime
);
}
/*********************************************************************
* GetSystemTime (KERNEL32.@)
*/
VOID
WINAPI
GetSystemTime
(
LPSYSTEMTIME
systime
)
{
FILETIME
ft
;
NtQuerySystemTime
((
PLARGE_INTEGER
)
&
ft
);
FileTimeToSystemTime
(
&
ft
,
systime
);
}
dlls/ntdll/Makefile.in
View file @
f7694794
...
...
@@ -72,7 +72,6 @@ C_SRCS = \
$(TOPOBJDIR)
/win32/except.c
\
$(TOPOBJDIR)
/win32/kernel32.c
\
$(TOPOBJDIR)
/win32/newfns.c
\
$(TOPOBJDIR)
/win32/time.c
\
cdrom.c
\
critsection.c
\
debugtools.c
\
...
...
files/dos_fs.c
View file @
f7694794
...
...
@@ -2481,25 +2481,6 @@ BOOL WINAPI FileTimeToDosDateTime( const FILETIME *ft, LPWORD fatdate,
return
TRUE
;
}
/***********************************************************************
* FileTimeToSystemTime (KERNEL32.@)
*/
BOOL
WINAPI
FileTimeToSystemTime
(
const
FILETIME
*
ft
,
LPSYSTEMTIME
syst
)
{
struct
tm
*
xtm
;
DWORD
remainder
;
time_t
xtime
=
DOSFS_FileTimeToUnixTime
(
ft
,
&
remainder
);
xtm
=
gmtime
(
&
xtime
);
syst
->
wYear
=
xtm
->
tm_year
+
1900
;
syst
->
wMonth
=
xtm
->
tm_mon
+
1
;
syst
->
wDayOfWeek
=
xtm
->
tm_wday
;
syst
->
wDay
=
xtm
->
tm_mday
;
syst
->
wHour
=
xtm
->
tm_hour
;
syst
->
wMinute
=
xtm
->
tm_min
;
syst
->
wSecond
=
xtm
->
tm_sec
;
syst
->
wMilliseconds
=
remainder
/
10000
;
return
TRUE
;
}
/***********************************************************************
* QueryDosDeviceA (KERNEL32.@)
...
...
@@ -2562,41 +2543,6 @@ DWORD WINAPI QueryDosDeviceW(LPCWSTR devname,LPWSTR target,DWORD bufsize)
/***********************************************************************
* SystemTimeToFileTime (KERNEL32.@)
*/
BOOL
WINAPI
SystemTimeToFileTime
(
const
SYSTEMTIME
*
syst
,
LPFILETIME
ft
)
{
#ifdef HAVE_TIMEGM
struct
tm
xtm
;
time_t
utctime
;
#else
struct
tm
xtm
,
*
utc_tm
;
time_t
localtim
,
utctime
;
#endif
xtm
.
tm_year
=
syst
->
wYear
-
1900
;
xtm
.
tm_mon
=
syst
->
wMonth
-
1
;
xtm
.
tm_wday
=
syst
->
wDayOfWeek
;
xtm
.
tm_mday
=
syst
->
wDay
;
xtm
.
tm_hour
=
syst
->
wHour
;
xtm
.
tm_min
=
syst
->
wMinute
;
xtm
.
tm_sec
=
syst
->
wSecond
;
/* this is UTC */
xtm
.
tm_isdst
=
-
1
;
#ifdef HAVE_TIMEGM
utctime
=
timegm
(
&
xtm
);
DOSFS_UnixTimeToFileTime
(
utctime
,
ft
,
syst
->
wMilliseconds
*
10000
);
#else
localtim
=
mktime
(
&
xtm
);
/* now we've got local time */
utc_tm
=
gmtime
(
&
localtim
);
utctime
=
mktime
(
utc_tm
);
DOSFS_UnixTimeToFileTime
(
2
*
localtim
-
utctime
,
ft
,
syst
->
wMilliseconds
*
10000
);
#endif
return
TRUE
;
}
/***********************************************************************
* DefineDosDeviceA (KERNEL32.@)
*/
BOOL
WINAPI
DefineDosDeviceA
(
DWORD
flags
,
LPCSTR
devname
,
LPCSTR
targetpath
)
{
...
...
files/file.c
View file @
f7694794
...
...
@@ -1038,24 +1038,6 @@ BOOL WINAPI GetFileTime( HANDLE hFile, FILETIME *lpCreationTime,
}
/***********************************************************************
* CompareFileTime (KERNEL32.@)
*/
INT
WINAPI
CompareFileTime
(
LPFILETIME
x
,
LPFILETIME
y
)
{
if
(
!
x
||
!
y
)
return
-
1
;
if
(
x
->
dwHighDateTime
>
y
->
dwHighDateTime
)
return
1
;
if
(
x
->
dwHighDateTime
<
y
->
dwHighDateTime
)
return
-
1
;
if
(
x
->
dwLowDateTime
>
y
->
dwLowDateTime
)
return
1
;
if
(
x
->
dwLowDateTime
<
y
->
dwLowDateTime
)
return
-
1
;
return
0
;
}
/***********************************************************************
* FILE_GetTempFileName : utility for GetTempFileName
*/
static
UINT
FILE_GetTempFileName
(
LPCWSTR
path
,
LPCWSTR
prefix
,
UINT
unique
,
...
...
win32/time.c
deleted
100644 → 0
View file @
b3123fac
/*
* Win32 kernel functions
*
* Copyright 1995 Martin von Loewis and Cameron Heide
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include "wine/port.h"
#include <string.h>
#include <time.h>
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include "file.h"
#include "winerror.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
win32
);
/***********************************************************************
* GetLocalTime (KERNEL32.@)
*/
VOID
WINAPI
GetLocalTime
(
LPSYSTEMTIME
systime
)
{
time_t
local_time
;
struct
tm
*
local_tm
;
struct
timeval
tv
;
gettimeofday
(
&
tv
,
NULL
);
local_time
=
tv
.
tv_sec
;
local_tm
=
localtime
(
&
local_time
);
systime
->
wYear
=
local_tm
->
tm_year
+
1900
;
systime
->
wMonth
=
local_tm
->
tm_mon
+
1
;
systime
->
wDayOfWeek
=
local_tm
->
tm_wday
;
systime
->
wDay
=
local_tm
->
tm_mday
;
systime
->
wHour
=
local_tm
->
tm_hour
;
systime
->
wMinute
=
local_tm
->
tm_min
;
systime
->
wSecond
=
local_tm
->
tm_sec
;
systime
->
wMilliseconds
=
(
tv
.
tv_usec
/
1000
)
%
1000
;
}
/***********************************************************************
* GetSystemTime (KERNEL32.@)
*/
VOID
WINAPI
GetSystemTime
(
LPSYSTEMTIME
systime
)
{
time_t
system_time
;
struct
tm
*
system_tm
;
struct
timeval
tv
;
gettimeofday
(
&
tv
,
NULL
);
system_time
=
tv
.
tv_sec
;
system_tm
=
gmtime
(
&
system_time
);
systime
->
wYear
=
system_tm
->
tm_year
+
1900
;
systime
->
wMonth
=
system_tm
->
tm_mon
+
1
;
systime
->
wDayOfWeek
=
system_tm
->
tm_wday
;
systime
->
wDay
=
system_tm
->
tm_mday
;
systime
->
wHour
=
system_tm
->
tm_hour
;
systime
->
wMinute
=
system_tm
->
tm_min
;
systime
->
wSecond
=
system_tm
->
tm_sec
;
systime
->
wMilliseconds
=
(
tv
.
tv_usec
/
1000
)
%
1000
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment