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
7349aab0
Commit
7349aab0
authored
Nov 25, 2000
by
Jon Griffiths
Committed by
Alexandre Julliard
Nov 25, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Add math calls: scalb, fpclass, nextafter, logb, _CI*
- Add futime, utime, purecall, getpid
parent
d5c40bbe
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
308 additions
and
25 deletions
+308
-25
crtdll.h
dlls/crtdll/crtdll.h
+23
-0
crtdll.spec
dlls/crtdll/crtdll.spec
+23
-23
crtdll_main.c
dlls/crtdll/crtdll_main.c
+206
-0
file.c
dlls/crtdll/file.c
+56
-2
No files found.
dlls/crtdll/crtdll.h
View file @
7349aab0
...
...
@@ -71,6 +71,18 @@
#define _FREEENTRY 0
#define _USEDENTRY 1
/* fpclass constants */
#define _FPCLASS_SNAN 1
#define _FPCLASS_QNAN 2
#define _FPCLASS_NINF 4
#define _FPCLASS_NN 8
#define _FPCLASS_ND 16
#define _FPCLASS_NZ 32
#define _FPCLASS_PZ 64
#define _FPCLASS_PD 128
#define _FPCLASS_PN 256
#define _FPCLASS_PINF 512
/* CRTDLL Globals */
extern
INT
CRTDLL_doserrno
;
extern
INT
CRTDLL_errno
;
...
...
@@ -170,6 +182,12 @@ typedef struct _heapinfo
int
_useflag
;
}
_HEAPINFO
;
struct
_utimbuf
{
time_t
actime
;
time_t
modtime
;
};
typedef
VOID
(
*
sig_handler_type
)(
VOID
);
typedef
VOID
(
*
new_handler_type
)(
VOID
);
...
...
@@ -251,6 +269,7 @@ INT __cdecl CTRDLL__creat( LPCSTR path, INT flags );
INT
__cdecl
CRTDLL__eof
(
INT
fd
);
LONG
__cdecl
CRTDLL__tell
(
INT
fd
);
INT
__cdecl
CRTDLL__umask
(
INT
umask
);
INT
__cdecl
CRTDLL__utime
(
LPCSTR
path
,
struct
_utimbuf
*
t
);
INT
__cdecl
CRTDLL__unlink
(
LPCSTR
pathname
);
INT
__cdecl
CRTDLL_rename
(
LPCSTR
oldpath
,
LPCSTR
newpath
);
int
__cdecl
CRTDLL__stat
(
LPCSTR
filename
,
struct
_stat
*
buf
);
...
...
@@ -261,6 +280,7 @@ INT __cdecl CRTDLL__setmode( INT fh,INT mode );
INT
__cdecl
CRTDLL_remove
(
LPCSTR
path
);
INT
__cdecl
CRTDLL__commit
(
INT
fd
);
INT
__cdecl
CRTDLL__fstat
(
int
file
,
struct
_stat
*
buf
);
INT
__cdecl
CRTDLL__futime
(
INT
fd
,
struct
_utimbuf
*
t
);
HANDLE
__cdecl
CRTDLL__get_osfhandle
(
INT
fd
);
/* CRTDLL_main.c */
...
...
@@ -276,6 +296,7 @@ UINT __cdecl CRTDLL__rotl( UINT x,INT shift );
DWORD
__cdecl
CRTDLL__lrotl
(
DWORD
x
,
INT
shift
);
DWORD
__cdecl
CRTDLL__lrotr
(
DWORD
x
,
INT
shift
);
DWORD
__cdecl
CRTDLL__rotr
(
UINT
x
,
INT
shift
);
double
__cdecl
CRTDLL__scalb
(
double
x
,
LONG
y
);
INT
__cdecl
CRTDLL__mbsicmp
(
unsigned
char
*
x
,
unsigned
char
*
y
);
INT
__cdecl
CRTDLL_vswprintf
(
LPWSTR
buffer
,
LPCWSTR
spec
,
va_list
args
);
VOID
__cdecl
CRTDLL_longjmp
(
jmp_buf
env
,
int
val
);
...
...
@@ -316,10 +337,12 @@ UINT __cdecl CRTDLL__control87( UINT, UINT );
UINT
__cdecl
CRTDLL__controlfp
(
UINT
,
UINT
);
double
__cdecl
CRTDLL__copysign
(
double
x
,
double
sign
);
INT
__cdecl
CRTDLL__finite
(
double
d
);
INT
__cdecl
CRTDLL__fpclass
(
double
d
);
VOID
__cdecl
CRTDLL__fpreset
(
void
);
INT
__cdecl
CRTDLL__isnan
(
double
d
);
LPVOID
__cdecl
CRTDLL__lsearch
(
LPVOID
match
,
LPVOID
start
,
LPUINT
array_size
,
UINT
elem_size
,
comp_func
cf
);
VOID
__cdecl
CRTDLL__purecall
(
VOID
);
/* CRTDLL_mem.c */
LPVOID
__cdecl
CRTDLL_new
(
DWORD
size
);
...
...
dlls/crtdll/crtdll.spec
View file @
7349aab0
...
...
@@ -11,22 +11,22 @@ debug_channels (crtdll)
@ cdecl ??2@YAPAXI@Z(long) CRTDLL_new
@ cdecl ??3@YAXPAX@Z(long) CRTDLL_delete
@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) CRTDLL_set_new_handler
@
stub
_CIacos
@
stub
_CIasin
@
stub
_CIatan
@
stub
_CIatan2
@
stub
_CIcos
@
stub
_CIcosh
@
stub
_CIexp
@
stub
_CIfmod
@
stub
_CIlog
@
stub
_CIlog10
@
cdecl _CIacos() CRTDLL_
_CIacos
@
cdecl _CIasin() CRTDLL_
_CIasin
@
cdecl _CIatan() CRTDLL_
_CIatan
@
cdecl _CIatan2() CRTDLL_
_CIatan2
@
cdecl _CIcos() CRTDLL_
_CIcos
@
cdecl _CIcosh() CRTDLL_
_CIcosh
@
cdecl _CIexp() CRTDLL_
_CIexp
@
cdecl _CIfmod() CRTDLL_
_CIfmod
@
cdecl _CIlog() CRTDLL_
_CIlog
@
cdecl _CIlog10() CRTDLL_
_CIlog10
@ forward _CIpow ntdll._CIpow
@
stub
_CIsin
@
stub
_CIsinh
@
stub
_CIsqrt
@
stub
_CItan
@
stub
_CItanh
@
cdecl _CIsin() CRTDLL_
_CIsin
@
cdecl _CIsinh() CRTDLL_
_CIsinh
@
cdecl _CIsqrt() CRTDLL_
_CIsqrt
@
cdecl _CItan() CRTDLL_
_CItan
@
cdecl _CItanh() CRTDLL_
_CItanh
@ stub _HUGE_dll
@ stub _XcptFilter
@ cdecl __GetMainArgs(ptr ptr ptr long) CRTDLL__GetMainArgs
...
...
@@ -112,7 +112,7 @@ debug_channels (crtdll)
@ cdecl _flsbuf(long ptr) CRTDLL__flsbuf
@ cdecl _flushall() CRTDLL__flushall
@ extern _fmode_dll CRTDLL_fmode_dll
@
stub
_fpclass
@
cdecl _fpclass(double) CRTDLL_
_fpclass
@ stub _fpieee_flt
@ cdecl _fpreset() CRTDLL__fpreset
@ cdecl _fputchar(long) CRTDLL__fputchar
...
...
@@ -122,7 +122,7 @@ debug_channels (crtdll)
@ cdecl _ftime(ptr) CRTDLL__ftime
@ forward _ftol ntdll._ftol
@ cdecl _fullpath(ptr str long) CRTDLL__fullpath
@
stub
_futime
@
cdecl _futime(long ptr) CRTDLL_
_futime
@ stub _gcvt
@ cdecl _get_osfhandle(long) CRTDLL__get_osfhandle
@ stub _getch
...
...
@@ -133,7 +133,7 @@ debug_channels (crtdll)
@ forward _getdllprocaddr kernel32.GetProcAddress
@ cdecl _getdrive() CRTDLL__getdrive
@ forward _getdrives kernel32.GetLogicalDrives
@
stub _getpi
d
@
forward _getpid kernel32.GetCurrentProcessI
d
@ stub _getsystime
@ stub _getw
@ cdecl _global_unwind2(ptr) CRTDLL__global_unwind2
...
...
@@ -182,7 +182,7 @@ debug_channels (crtdll)
@ cdecl _loaddll(str) CRTDLL__loaddll
@ cdecl _local_unwind2(ptr long) CRTDLL__local_unwind2
@ stub _locking
@
stub _
logb
@
cdecl _logb(double)
logb
@ cdecl _lrotl (long long) CRTDLL__lrotl
@ cdecl _lrotr (long long) CRTDLL__lrotr
@ cdecl _lsearch(ptr ptr long long ptr) CRTDLL__lsearch
...
...
@@ -244,7 +244,7 @@ debug_channels (crtdll)
@ cdecl _mkdir(str) CRTDLL__mkdir
@ stub _mktemp
@ cdecl _msize(ptr) CRTDLL__msize
@
stub _
nextafter
@
cdecl _nextafter(double double)
nextafter
@ cdecl _onexit(ptr) CRTDLL__onexit
@ cdecl _open(str long) CRTDLL__open
@ cdecl _open_osfhandle(long long) CRTDLL__open_osfhandle
...
...
@@ -258,7 +258,7 @@ debug_channels (crtdll)
@ stub _pgmptr_dll
@ stub _pipe
@ stub _popen
@
stub
_purecall
@
cdecl _purecall() CRTDLL_
_purecall
@ stub _putch
@ stub _putenv
@ stub _putw
...
...
@@ -268,7 +268,7 @@ debug_channels (crtdll)
@ stub _rmtmp
@ cdecl _rotl (long long) CRTDLL__rotl
@ cdecl _rotr (long long) CRTDLL__rotr
@
stub
_scalb
@
cdecl _scalb (double long) CRTDLL_
_scalb
@ stub _searchenv
@ stub _seterrormode
@ cdecl _setjmp (ptr) CRTDLL__setjmp
...
...
@@ -324,7 +324,7 @@ debug_channels (crtdll)
@ stub _ungetch
@ cdecl _unlink(str) CRTDLL__unlink
@ cdecl _unloaddll(long) CRTDLL__unloaddll
@
stub
_utime
@
cdecl _utime(str ptr) CRTDLL_
_utime
@ cdecl _vsnprintf(ptr long ptr ptr) vsnprintf
@ stub _vsnwprintf
@ cdecl _wcsdup(wstr) CRTDLL__wcsdup
...
...
dlls/crtdll/crtdll_main.c
View file @
7349aab0
...
...
@@ -130,6 +130,156 @@ void __CRTDLL__set_errno(ULONG err)
}
}
#if defined(__GNUC__) && defined(__i386__)
#define FPU_DOUBLE(var) double var; \
__asm__ __volatile__( "fstpl %0;fwait" : "=m" (var) : )
#define FPU_DOUBLES(var1,var2) double var1,var2; \
__asm__ __volatile__( "fstpl %0;fwait" : "=m" (var2) : ); \
__asm__ __volatile__( "fstpl %0;fwait" : "=m" (var1) : )
#else
#define FPU_DOUBLE(var) double var = quiet_nan(); \
FIXME(":not implemented\n");
#define FPU_DOUBLES(var1,var2) double var1,var2; \
var1=var2=quiet_nan(); FIXME(":not implemented\n")
#endif
/*********************************************************************
* _CIacos (CRTDLL.004)
*/
double
__cdecl
CRTDLL__CIacos
(
void
)
{
FPU_DOUBLE
(
x
);
return
acos
(
x
);
}
/*********************************************************************
* _CIasin (CRTDLL.005)
*/
double
__cdecl
CRTDLL__CIasin
(
void
)
{
FPU_DOUBLE
(
x
);
return
asin
(
x
);
}
/*********************************************************************
* _CIatan (CRTDLL.006)
*/
double
__cdecl
CRTDLL__CIatan
(
void
)
{
FPU_DOUBLE
(
x
);
return
atan
(
x
);
}
/*********************************************************************
* _CIatan2 (CRTDLL.007)
*/
double
__cdecl
CRTDLL__CIatan2
(
void
)
{
FPU_DOUBLES
(
x
,
y
);
return
atan2
(
x
,
y
);
}
/*********************************************************************
* _CIcos (CRTDLL.008)
*/
double
__cdecl
CRTDLL__CIcos
(
void
)
{
FPU_DOUBLE
(
x
);
return
cos
(
x
);
}
/*********************************************************************
* _CIcosh (CRTDLL.009)
*/
double
__cdecl
CRTDLL__CIcosh
(
void
)
{
FPU_DOUBLE
(
x
);
return
cosh
(
x
);
}
/*********************************************************************
* _CIexp (CRTDLL.010)
*/
double
__cdecl
CRTDLL__CIexp
(
void
)
{
FPU_DOUBLE
(
x
);
return
exp
(
x
);
}
/*********************************************************************
* _CIfmod (CRTDLL.011)
*/
double
__cdecl
CRTDLL__CIfmod
(
void
)
{
FPU_DOUBLES
(
x
,
y
);
return
fmod
(
x
,
y
);
}
/*********************************************************************
* _CIlog (CRTDLL.012)
*/
double
__cdecl
CRTDLL__CIlog
(
void
)
{
FPU_DOUBLE
(
x
);
return
log
(
x
);
}
/*********************************************************************
* _CIlog10 (CRTDLL.013)
*/
double
__cdecl
CRTDLL__CIlog10
(
void
)
{
FPU_DOUBLE
(
x
);
return
log10
(
x
);
}
/*********************************************************************
* _CIsin (CRTDLL.015)
*/
double
__cdecl
CRTDLL__CIsin
(
void
)
{
FPU_DOUBLE
(
x
);
return
sin
(
x
);
}
/*********************************************************************
* _CIsinh (CRTDLL.016)
*/
double
__cdecl
CRTDLL__CIsinh
(
void
)
{
FPU_DOUBLE
(
x
);
return
sinh
(
x
);
}
/*********************************************************************
* _CIsqrt (CRTDLL.017)
*/
double
__cdecl
CRTDLL__CIsqrt
(
void
)
{
FPU_DOUBLE
(
x
);
return
sqrt
(
x
);
}
/*********************************************************************
* _CItan (CRTDLL.018)
*/
double
__cdecl
CRTDLL__CItan
(
void
)
{
FPU_DOUBLE
(
x
);
return
tan
(
x
);
}
/*********************************************************************
* _CItanh (CRTDLL.019)
*/
double
__cdecl
CRTDLL__CItanh
(
void
)
{
FPU_DOUBLE
(
x
);
return
tanh
(
x
);
}
/*********************************************************************
* _GetMainArgs (CRTDLL.022)
...
...
@@ -212,6 +362,37 @@ LPSTR * __cdecl CRTDLL__GetMainArgs(LPDWORD argc,LPSTR **argv,
/*********************************************************************
* _fpclass (CRTDLL.105)
*
* Return the FP classification of d.
*/
INT
__cdecl
CRTDLL__fpclass
(
double
d
)
{
switch
(
fpclassify
(
d
))
{
case
FP_NAN
:
return
_FPCLASS_QNAN
;
case
FP_INFINITE
:
if
(
signbit
(
d
))
return
_FPCLASS_NINF
;
return
_FPCLASS_PINF
;
case
FP_SUBNORMAL
:
if
(
signbit
(
d
))
return
_FPCLASS_ND
;
return
_FPCLASS_PD
;
case
FP_ZERO
:
if
(
signbit
(
d
))
return
_FPCLASS_NZ
;
return
_FPCLASS_PZ
;
case
FP_NORMAL
:
default:
if
(
signbit
(
d
))
return
_FPCLASS_NN
;
return
_FPCLASS_PN
;
}
}
/*********************************************************************
* _initterm (CRTDLL.135)
*/
DWORD
__cdecl
CRTDLL__initterm
(
_INITTERMFUN
*
start
,
_INITTERMFUN
*
end
)
...
...
@@ -326,6 +507,19 @@ DWORD __cdecl CRTDLL__rotr(UINT x,INT shift)
/*********************************************************************
* _scalb (CRTDLL.259)
*
* Return x*2^y.
*/
double
__cdecl
CRTDLL__scalb
(
double
x
,
LONG
y
)
{
/* Note - Can't forward directly as libc expects y as double */
double
y2
=
(
double
)
y
;
return
scalb
(
x
,
y2
);
}
/*********************************************************************
* vswprintf (CRTDLL.501)
*/
INT
__cdecl
CRTDLL_vswprintf
(
LPWSTR
buffer
,
LPCWSTR
spec
,
va_list
args
)
...
...
@@ -1000,3 +1194,15 @@ INT __cdecl CRTDLL__isnan(double d)
*/
return
isnan
(
d
)
?
1
:
0
;
}
/*********************************************************************
* _purecall (CRTDLL.249)
*
* Abort program after pure virtual function call.
*/
VOID
__cdecl
CRTDLL__purecall
(
VOID
)
{
CRTDLL__amsg_exit
(
6025
);
}
dlls/crtdll/file.c
View file @
7349aab0
...
...
@@ -193,7 +193,7 @@ INT __cdecl CRTDLL__access(LPCSTR filename, INT mode)
{
DWORD
attr
=
GetFileAttributesA
(
filename
);
if
(
attr
==
-
1
)
if
(
attr
==
0xffffffff
)
{
if
(
!
filename
)
{
...
...
@@ -503,6 +503,41 @@ int __cdecl CRTDLL__fstat(int fd, struct _stat* buf)
/*********************************************************************
* _futime (CRTDLL.115)
*
* Set the file access/modification times on an open file.
*/
INT
__cdecl
CRTDLL__futime
(
INT
fd
,
struct
_utimbuf
*
t
)
{
HANDLE
hand
=
__CRTDLL__fdtoh
(
fd
);
FILETIME
at
,
wt
;
if
(
!
t
)
{
time_t
currTime
;
CRTDLL_time
(
&
currTime
);
RtlSecondsSince1970ToTime
(
currTime
,
&
at
);
memcpy
(
&
wt
,
&
at
,
sizeof
(
wt
)
);
}
else
{
RtlSecondsSince1970ToTime
(
t
->
actime
,
&
at
);
if
(
t
->
actime
==
t
->
modtime
)
memcpy
(
&
wt
,
&
at
,
sizeof
(
wt
)
);
else
RtlSecondsSince1970ToTime
(
t
->
modtime
,
&
wt
);
}
if
(
!
SetFileTime
(
hand
,
NULL
,
&
at
,
&
wt
))
{
__CRTDLL__set_errno
(
GetLastError
());
return
-
1
;
}
return
0
;
}
/*********************************************************************
* _get_osfhandle (CRTDLL.117)
*
* Return a Win32 HANDLE from a file descriptor.
...
...
@@ -564,7 +599,7 @@ INT __cdecl CRTDLL__isatty(INT fd)
*/
LONG
__cdecl
CRTDLL__lseek
(
INT
fd
,
LONG
offset
,
INT
whence
)
{
LONG
ret
;
DWORD
ret
;
HANDLE
hand
=
__CRTDLL__fdtoh
(
fd
);
TRACE
(
":fd (%d) handle (%d)
\n
"
,
fd
,
hand
);
...
...
@@ -864,6 +899,25 @@ INT __cdecl CRTDLL__umask(INT umask)
/*********************************************************************
* _utime (CRTDLL.314)
*
* Set the file access/modification times on a file.
*/
INT
__cdecl
CRTDLL__utime
(
LPCSTR
path
,
struct
_utimbuf
*
t
)
{
INT
fd
=
CRTDLL__open
(
path
,
_O_WRONLY
|
_O_BINARY
);
if
(
fd
>
0
)
{
INT
retVal
=
CRTDLL__futime
(
fd
,
t
);
CRTDLL__close
(
fd
);
return
retVal
;
}
return
-
1
;
}
/*********************************************************************
* _unlink (CRTDLL.315)
*
* Delete a file.
...
...
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