Split the MSVCRT implementation headers from the public headers.
Fix some naming conventions aberrations.
Add tests to ensure consistency between the two sets of symbols.
diff --git a/dlls/msvcrt/Makefile.in b/dlls/msvcrt/Makefile.in
index edab9d1..1a350da 100644
--- a/dlls/msvcrt/Makefile.in
+++ b/dlls/msvcrt/Makefile.in
@@ -1,4 +1,4 @@
-EXTRADEFS = -DUSE_MSVCRT_PREFIX -D_MT
+EXTRADEFS = -D_MT
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
diff --git a/dlls/msvcrt/console.c b/dlls/msvcrt/console.c
index 4130b45..9fce341 100644
--- a/dlls/msvcrt/console.c
+++ b/dlls/msvcrt/console.c
@@ -20,14 +20,10 @@
* Note: init and free don't need MT locking since they are called at DLL
* (de)attachment time, which is syncronised for us
*/
+
#include "msvcrt.h"
#include "wincon.h"
-
-#include "msvcrt/conio.h"
-#include "msvcrt/malloc.h"
-#include "msvcrt/stdio.h"
#include "mtdll.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c
index 7dfa9ad..245d483 100644
--- a/dlls/msvcrt/cpp.c
+++ b/dlls/msvcrt/cpp.c
@@ -31,9 +31,6 @@
#include "wine/exception.h"
#include "excpt.h"
#include "wine/debug.h"
-#include "msvcrt/malloc.h"
-#include "msvcrt/stdlib.h"
-
#include "msvcrt.h"
#include "cppexcept.h"
#include "mtdll.h"
@@ -539,9 +536,9 @@
if (!_this->name)
{
/* Create and set the demangled name */
- char* name = MSVCRT___unDName(0, _this->mangled, 0,
- (MSVCRT_malloc_func)MSVCRT_malloc,
- (MSVCRT_free_func)MSVCRT_free, 0x2800);
+ char* name = __unDName(0, _this->mangled, 0,
+ (malloc_func_t)MSVCRT_malloc,
+ (free_func_t)MSVCRT_free, 0x2800);
if (name)
{
@@ -953,10 +950,10 @@
* RETURNS
* The previously installed handler function, if any.
*/
-terminate_function MSVCRT_set_terminate(terminate_function func)
+MSVCRT_terminate_function MSVCRT_set_terminate(MSVCRT_terminate_function func)
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
- terminate_function previous = data->terminate_handler;
+ thread_data_t *data = msvcrt_get_thread_data();
+ MSVCRT_terminate_function previous = data->terminate_handler;
TRACE("(%p) returning %p\n",func,previous);
data->terminate_handler = func;
return previous;
@@ -973,10 +970,10 @@
* RETURNS
* The previously installed handler function, if any.
*/
-unexpected_function MSVCRT_set_unexpected(unexpected_function func)
+MSVCRT_unexpected_function MSVCRT_set_unexpected(MSVCRT_unexpected_function func)
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
- unexpected_function previous = data->unexpected_handler;
+ thread_data_t *data = msvcrt_get_thread_data();
+ MSVCRT_unexpected_function previous = data->unexpected_handler;
TRACE("(%p) returning %p\n",func,previous);
data->unexpected_handler = func;
return previous;
@@ -985,10 +982,10 @@
/******************************************************************
* ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z (MSVCRT.@)
*/
-_se_translator_function MSVCRT__set_se_translator(_se_translator_function func)
+MSVCRT__se_translator_function MSVCRT__set_se_translator(MSVCRT__se_translator_function func)
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
- _se_translator_function previous = data->se_translator;
+ thread_data_t *data = msvcrt_get_thread_data();
+ MSVCRT__se_translator_function previous = data->se_translator;
TRACE("(%p) returning %p\n",func,previous);
data->se_translator = func;
return previous;
@@ -1009,7 +1006,7 @@
*/
void MSVCRT_terminate(void)
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
+ thread_data_t *data = msvcrt_get_thread_data();
if (data->terminate_handler) data->terminate_handler();
MSVCRT_abort();
}
@@ -1019,7 +1016,7 @@
*/
void MSVCRT_unexpected(void)
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
+ thread_data_t *data = msvcrt_get_thread_data();
if (data->unexpected_handler) data->unexpected_handler();
MSVCRT_terminate();
}
diff --git a/dlls/msvcrt/cppexcept.c b/dlls/msvcrt/cppexcept.c
index ed41ede..54b4f5a 100644
--- a/dlls/msvcrt/cppexcept.c
+++ b/dlls/msvcrt/cppexcept.c
@@ -269,7 +269,7 @@
void *addr, *object = (void *)rec->ExceptionInformation[1];
struct catch_func_nested_frame nested_frame;
int trylevel = frame->trylevel;
- MSVCRT_thread_data *thread_data = msvcrt_get_thread_data();
+ thread_data_t *thread_data = msvcrt_get_thread_data();
for (i = 0; i < descr->tryblock_count; i++)
{
diff --git a/dlls/msvcrt/ctype.c b/dlls/msvcrt/ctype.c
index 5786f40..1cbf80f 100644
--- a/dlls/msvcrt/ctype.c
+++ b/dlls/msvcrt/ctype.c
@@ -18,26 +18,23 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "msvcrt.h"
-
-#include "msvcrt/ctype.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
/* Some abbreviations to make the following table readable */
-#define _C_ _CONTROL
-#define _S_ _SPACE
-#define _P_ _PUNCT
-#define _D_ _DIGIT
-#define _H_ _HEX
-#define _U_ _UPPER
-#define _L_ _LOWER
+#define _C_ MSVCRT__CONTROL
+#define _S_ MSVCRT__SPACE
+#define _P_ MSVCRT__PUNCT
+#define _D_ MSVCRT__DIGIT
+#define _H_ MSVCRT__HEX
+#define _U_ MSVCRT__UPPER
+#define _L_ MSVCRT__LOWER
WORD MSVCRT__ctype [257] = {
0, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _S_|_C_, _S_|_C_,
_S_|_C_, _S_|_C_, _S_|_C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_,
- _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _S_|_BLANK,
+ _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _S_|MSVCRT__BLANK,
_P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_,
_P_, _D_|_H_, _D_|_H_, _D_|_H_, _D_|_H_, _D_|_H_, _D_|_H_, _D_|_H_,
_D_|_H_, _D_|_H_, _D_|_H_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _U_|_H_,
@@ -90,7 +87,7 @@
WORD typeInfo;
char convert[3], *pconv = convert;
- if (MSVCRT__pctype[(UINT)c >> 8] & _LEADBYTE)
+ if (MSVCRT__pctype[(UINT)c >> 8] & MSVCRT__LEADBYTE)
*pconv++ = (UINT)c >> 8;
*pconv++ = c & 0xff;
*pconv = 0;
@@ -107,7 +104,7 @@
*/
int MSVCRT_isalnum(int c)
{
- return _isctype( c, _ALPHA | _DIGIT );
+ return _isctype( c, MSVCRT__ALPHA | MSVCRT__DIGIT );
}
/*********************************************************************
@@ -115,7 +112,7 @@
*/
int MSVCRT_isalpha(int c)
{
- return _isctype( c, _ALPHA );
+ return _isctype( c, MSVCRT__ALPHA );
}
/*********************************************************************
@@ -123,7 +120,7 @@
*/
int MSVCRT_iscntrl(int c)
{
- return _isctype( c, _CONTROL );
+ return _isctype( c, MSVCRT__CONTROL );
}
/*********************************************************************
@@ -131,7 +128,7 @@
*/
int MSVCRT_isdigit(int c)
{
- return _isctype( c, _DIGIT );
+ return _isctype( c, MSVCRT__DIGIT );
}
/*********************************************************************
@@ -139,7 +136,7 @@
*/
int MSVCRT_isgraph(int c)
{
- return _isctype( c, _ALPHA | _DIGIT | _PUNCT );
+ return _isctype( c, MSVCRT__ALPHA | MSVCRT__DIGIT | MSVCRT__PUNCT );
}
/*********************************************************************
@@ -147,7 +144,7 @@
*/
int MSVCRT_isleadbyte(int c)
{
- return _isctype( c, _LEADBYTE );
+ return _isctype( c, MSVCRT__LEADBYTE );
}
/*********************************************************************
@@ -155,7 +152,7 @@
*/
int MSVCRT_islower(int c)
{
- return _isctype( c, _LOWER );
+ return _isctype( c, MSVCRT__LOWER );
}
/*********************************************************************
@@ -163,7 +160,7 @@
*/
int MSVCRT_isprint(int c)
{
- return _isctype( c, _ALPHA | _DIGIT | _BLANK | _PUNCT );
+ return _isctype( c, MSVCRT__ALPHA | MSVCRT__DIGIT | MSVCRT__BLANK | MSVCRT__PUNCT );
}
/*********************************************************************
@@ -171,7 +168,7 @@
*/
int MSVCRT_ispunct(int c)
{
- return _isctype( c, _PUNCT );
+ return _isctype( c, MSVCRT__PUNCT );
}
/*********************************************************************
@@ -179,7 +176,7 @@
*/
int MSVCRT_isspace(int c)
{
- return _isctype( c, _SPACE );
+ return _isctype( c, MSVCRT__SPACE );
}
/*********************************************************************
@@ -187,7 +184,7 @@
*/
int MSVCRT_isupper(int c)
{
- return _isctype( c, _UPPER );
+ return _isctype( c, MSVCRT__UPPER );
}
/*********************************************************************
@@ -195,7 +192,7 @@
*/
int MSVCRT_isxdigit(int c)
{
- return _isctype( c, _HEX );
+ return _isctype( c, MSVCRT__HEX );
}
/*********************************************************************
diff --git a/dlls/msvcrt/data.c b/dlls/msvcrt/data.c
index 3156724..72660e4 100644
--- a/dlls/msvcrt/data.c
+++ b/dlls/msvcrt/data.c
@@ -23,11 +23,6 @@
#include <math.h>
#include "msvcrt.h"
-
-#include "msvcrt/fcntl.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-
#include "wine/library.h"
#include "wine/unicode.h"
#include "wine/debug.h"
@@ -57,8 +52,8 @@
MSVCRT_wchar_t **MSVCRT___wargv;
char *MSVCRT__acmdln;
MSVCRT_wchar_t *MSVCRT__wcmdln;
-char **MSVCRT__environ = 0;
-MSVCRT_wchar_t **MSVCRT__wenviron = 0;
+char **_environ = 0;
+MSVCRT_wchar_t **_wenviron = 0;
char **MSVCRT___initenv = 0;
MSVCRT_wchar_t **MSVCRT___winitenv = 0;
int MSVCRT_timezone;
@@ -211,9 +206,9 @@
*/
char*** __p__environ(void)
{
- if (!MSVCRT__environ)
- MSVCRT__environ = msvcrt_SnapshotOfEnvironmentA(NULL);
- return &MSVCRT__environ;
+ if (!_environ)
+ _environ = msvcrt_SnapshotOfEnvironmentA(NULL);
+ return &_environ;
}
/*********************************************************************
@@ -221,9 +216,9 @@
*/
MSVCRT_wchar_t*** __p__wenviron(void)
{
- if (!MSVCRT__wenviron)
- MSVCRT__wenviron = msvcrt_SnapshotOfEnvironmentW(NULL);
- return &MSVCRT__wenviron;
+ if (!_wenviron)
+ _wenviron = msvcrt_SnapshotOfEnvironmentW(NULL);
+ return &_wenviron;
}
/*********************************************************************
@@ -286,7 +281,7 @@
MSVCRT___setlc_active = 0;
MSVCRT___unguarded_readlc_active = 0;
MSVCRT_timezone = 0;
- MSVCRT__fmode = _O_TEXT;
+ MSVCRT__fmode = MSVCRT__O_TEXT;
MSVCRT___initenv= msvcrt_SnapshotOfEnvironmentA(NULL);
MSVCRT___winitenv= msvcrt_SnapshotOfEnvironmentW(NULL);
@@ -317,8 +312,8 @@
/* FIXME: more things to free */
if (MSVCRT___initenv) HeapFree(GetProcessHeap(), 0, MSVCRT___initenv);
if (MSVCRT___winitenv) HeapFree(GetProcessHeap(), 0, MSVCRT___winitenv);
- if (MSVCRT__environ) HeapFree(GetProcessHeap(), 0, MSVCRT__environ);
- if (MSVCRT__wenviron) HeapFree(GetProcessHeap(), 0, MSVCRT__wenviron);
+ if (_environ) HeapFree(GetProcessHeap(), 0, _environ);
+ if (_wenviron) HeapFree(GetProcessHeap(), 0, _wenviron);
if (MSVCRT__pgmptr) HeapFree(GetProcessHeap(), 0, MSVCRT__pgmptr);
if (MSVCRT__wpgmptr) HeapFree(GetProcessHeap(), 0, MSVCRT__wpgmptr);
}
diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c
index 38f502d..827ba73 100644
--- a/dlls/msvcrt/dir.c
+++ b/dlls/msvcrt/dir.c
@@ -33,14 +33,6 @@
#include "winternl.h"
#include "wine/unicode.h"
#include "msvcrt.h"
-#include "msvcrt/errno.h"
-
-#include "wine/unicode.h"
-#include "msvcrt/io.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-#include "msvcrt/dos.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -144,7 +136,7 @@
{
if (!SetCurrentDirectoryA(newdir))
{
- MSVCRT__set_errno(newdir?GetLastError():0);
+ msvcrt_set_errno(newdir?GetLastError():0);
return -1;
}
return 0;
@@ -159,7 +151,7 @@
{
if (!SetCurrentDirectoryW(newdir))
{
- MSVCRT__set_errno(newdir?GetLastError():0);
+ msvcrt_set_errno(newdir?GetLastError():0);
return -1;
}
return 0;
@@ -187,7 +179,7 @@
buffer[0] += newdrive - 1;
if (!SetCurrentDirectoryW( buffer ))
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
if (newdrive <= 0)
*MSVCRT__errno() = MSVCRT_EACCES;
return -1;
@@ -215,7 +207,7 @@
TRACE(":handle %ld\n",hand);
if (!FindClose((HANDLE)hand))
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
return 0;
@@ -246,7 +238,7 @@
hfind = FindFirstFileA(fspec, &find_data);
if (hfind == INVALID_HANDLE_VALUE)
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
msvcrt_fttofd(&find_data,ft);
@@ -267,7 +259,7 @@
hfind = FindFirstFileW(fspec, &find_data);
if (hfind == INVALID_HANDLE_VALUE)
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
msvcrt_wfttofd(&find_data,ft);
@@ -288,7 +280,7 @@
hfind = FindFirstFileA(fspec, &find_data);
if (hfind == INVALID_HANDLE_VALUE)
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
msvcrt_fttofdi64(&find_data,ft);
@@ -309,7 +301,7 @@
hfind = FindFirstFileW(fspec, &find_data);
if (hfind == INVALID_HANDLE_VALUE)
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
msvcrt_wfttofdi64(&find_data,ft);
@@ -619,7 +611,7 @@
return 0;
}
err = GetLastError();
- MSVCRT__set_errno(err);
+ msvcrt_set_errno(err);
return err;
}
@@ -642,7 +634,7 @@
{
if (CreateDirectoryA(newdir,NULL))
return 0;
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -655,7 +647,7 @@
{
if (CreateDirectoryW(newdir,NULL))
return 0;
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -678,7 +670,7 @@
{
if (RemoveDirectoryA(dir))
return 0;
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -691,7 +683,7 @@
{
if (RemoveDirectoryW(dir))
return 0;
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -1216,7 +1208,7 @@
{
GetFullPathNameA( file, MAX_PATH, buf, NULL );
/* Sigh. This error is *always* set, regardless of success */
- MSVCRT__set_errno(ERROR_FILE_NOT_FOUND);
+ msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
return;
}
@@ -1224,7 +1216,7 @@
envVal = MSVCRT_getenv(env);
if (!envVal)
{
- MSVCRT__set_errno(ERROR_FILE_NOT_FOUND);
+ msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
return;
}
@@ -1238,7 +1230,7 @@
while(*end && *end != ';') end++; /* Find end of next path */
if (penv == end || !*penv)
{
- MSVCRT__set_errno(ERROR_FILE_NOT_FOUND);
+ msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
return;
}
strncpy(curPath, penv, end - penv);
@@ -1255,7 +1247,7 @@
if (GetFileAttributesA( curPath ) != INVALID_FILE_ATTRIBUTES)
{
strcpy(buf, curPath);
- MSVCRT__set_errno(ERROR_FILE_NOT_FOUND);
+ msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
return; /* Found */
}
penv = *end ? end + 1 : end;
diff --git a/dlls/msvcrt/environ.c b/dlls/msvcrt/environ.c
index 31e29e4..78bf32c 100644
--- a/dlls/msvcrt/environ.c
+++ b/dlls/msvcrt/environ.c
@@ -22,10 +22,6 @@
*/
#include "wine/unicode.h"
#include "msvcrt.h"
-
-#include "msvcrt/stdlib.h"
-
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -97,10 +93,10 @@
ret = !SetEnvironmentVariableA(name, value[0] ? value : NULL);
/* Update the __p__environ array only when already initialized */
- if (MSVCRT__environ)
- MSVCRT__environ = msvcrt_SnapshotOfEnvironmentA(MSVCRT__environ);
- if (MSVCRT__wenviron)
- MSVCRT__wenviron = msvcrt_SnapshotOfEnvironmentW(MSVCRT__wenviron);
+ if (_environ)
+ _environ = msvcrt_SnapshotOfEnvironmentA(_environ);
+ if (_wenviron)
+ _wenviron = msvcrt_SnapshotOfEnvironmentW(_wenviron);
return ret;
}
@@ -129,9 +125,9 @@
ret = !SetEnvironmentVariableW(name, value[0] ? value : NULL);
/* Update the __p__environ array only when already initialized */
- if (MSVCRT__environ)
- MSVCRT__environ = msvcrt_SnapshotOfEnvironmentA(MSVCRT__environ);
- if (MSVCRT__wenviron)
- MSVCRT__wenviron = msvcrt_SnapshotOfEnvironmentW(MSVCRT__wenviron);
+ if (_environ)
+ _environ = msvcrt_SnapshotOfEnvironmentA(_environ);
+ if (_wenviron)
+ _wenviron = msvcrt_SnapshotOfEnvironmentW(_wenviron);
return ret;
}
diff --git a/dlls/msvcrt/errno.c b/dlls/msvcrt/errno.c
index ec8d090..5d014a6 100644
--- a/dlls/msvcrt/errno.c
+++ b/dlls/msvcrt/errno.c
@@ -18,24 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "msvcrt.h"
-#include "msvcrt/errno.h"
-
#include <stdio.h>
#include <string.h>
-#include "msvcrt/conio.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-
-
+#include "msvcrt.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
/* INTERNAL: Set the crt and dos errno's from the OS error given. */
-void MSVCRT__set_errno(int err)
+void msvcrt_set_errno(int err)
{
int *errno = MSVCRT__errno();
unsigned long *doserrno = MSVCRT___doserrno();
@@ -154,10 +147,10 @@
*/
int _set_error_mode(int mode)
{
- static int current_mode = _OUT_TO_DEFAULT;
+ static int current_mode = MSVCRT__OUT_TO_DEFAULT;
const int old = current_mode;
- if ( _REPORT_ERRMODE != mode ) {
+ if ( MSVCRT__REPORT_ERRMODE != mode ) {
current_mode = mode;
FIXME("dummy implementation (old mode: %d, new mode: %d)\n",
old, mode);
diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c
index 7ada266..5387d7a 100644
--- a/dlls/msvcrt/except.c
+++ b/dlls/msvcrt/except.c
@@ -36,11 +36,7 @@
#include "winternl.h"
#include "wine/exception.h"
#include "msvcrt.h"
-
-#include "msvcrt/setjmp.h"
#include "excpt.h"
-
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -281,7 +277,7 @@
* _setjmp (MSVCRT.@)
*/
DEFINE_REGS_ENTRYPOINT( MSVCRT__setjmp, _MSVCRT__setjmp, 4, 0 );
-void _MSVCRT__setjmp(_JUMP_BUFFER *jmp, CONTEXT86* context)
+void _MSVCRT__setjmp(struct MSVCRT___JUMP_BUFFER *jmp, CONTEXT86* context)
{
TRACE("(%p)\n",jmp);
jmp->Ebp = context->Ebp;
@@ -303,7 +299,7 @@
* _setjmp3 (MSVCRT.@)
*/
DEFINE_REGS_ENTRYPOINT( MSVCRT__setjmp3, _MSVCRT__setjmp3, 8, 0 );
-void _MSVCRT__setjmp3(_JUMP_BUFFER *jmp, int nb_args, CONTEXT86* context)
+void _MSVCRT__setjmp3(struct MSVCRT___JUMP_BUFFER *jmp, int nb_args, CONTEXT86* context)
{
TRACE("(%p,%d)\n",jmp,nb_args);
jmp->Ebp = context->Ebp;
@@ -340,7 +336,7 @@
* longjmp (MSVCRT.@)
*/
DEFINE_REGS_ENTRYPOINT( MSVCRT_longjmp, _MSVCRT_longjmp, 8, 0 );
-void _MSVCRT_longjmp(_JUMP_BUFFER *jmp, int retval, CONTEXT86* context)
+void _MSVCRT_longjmp(struct MSVCRT___JUMP_BUFFER *jmp, int retval, CONTEXT86* context)
{
unsigned long cur_frame = 0;
@@ -383,7 +379,7 @@
/*********************************************************************
* _seh_longjmp_unwind (MSVCRT.@)
*/
-void __stdcall _seh_longjmp_unwind(_JUMP_BUFFER *jmp)
+void __stdcall _seh_longjmp_unwind(struct MSVCRT___JUMP_BUFFER *jmp)
{
_local_unwind2( (MSVCRT_EXCEPTION_FRAME *)jmp->Registration, jmp->TryLevel );
}
diff --git a/dlls/msvcrt/exit.c b/dlls/msvcrt/exit.c
index fe43f98..259368e 100644
--- a/dlls/msvcrt/exit.c
+++ b/dlls/msvcrt/exit.c
@@ -19,12 +19,8 @@
*/
#include <stdio.h>
#include "msvcrt.h"
-
-#include "msvcrt/conio.h"
-#include "msvcrt/stdlib.h"
#include "mtdll.h"
#include "winuser.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -132,7 +128,7 @@
/*********************************************************************
* _amsg_exit (MSVCRT.@)
*/
-void MSVCRT__amsg_exit(int errnum)
+void _amsg_exit(int errnum)
{
TRACE("(%d)\n", errnum);
/* FIXME: text for the error number. */
@@ -259,5 +255,5 @@
void _purecall(void)
{
TRACE("(void)\n");
- MSVCRT__amsg_exit( 25 );
+ _amsg_exit( 25 );
}
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index f26cae0..5feabc7 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -31,36 +31,24 @@
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#include <sys/types.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "winternl.h"
#include "msvcrt.h"
-#include "msvcrt/errno.h"
#include "wine/unicode.h"
-#include "msvcrt/fcntl.h"
-#include "msvcrt/io.h"
-#include "msvcrt/sys/locking.h"
-#include "msvcrt/stdio.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-#include "msvcrt/sys/stat.h"
-#include "msvcrt/sys/utime.h"
-#include "msvcrt/time.h"
-#include "msvcrt/share.h"
-#include "msvcrt/wctype.h"
-#include "msvcrt/direct.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
/* for stat mode, permissions apply to all,owner and group */
-#define MSVCRT_S_IREAD (_S_IREAD | (_S_IREAD >> 3) | (_S_IREAD >> 6))
-#define MSVCRT_S_IWRITE (_S_IWRITE | (_S_IWRITE >> 3) | (_S_IWRITE >> 6))
-#define MSVCRT_S_IEXEC (_S_IEXEC | (_S_IEXEC >> 3) | (_S_IEXEC >> 6))
+#define ALL_S_IREAD (MSVCRT__S_IREAD | (MSVCRT__S_IREAD >> 3) | (MSVCRT__S_IREAD >> 6))
+#define ALL_S_IWRITE (MSVCRT__S_IWRITE | (MSVCRT__S_IWRITE >> 3) | (MSVCRT__S_IWRITE >> 6))
+#define ALL_S_IEXEC (MSVCRT__S_IEXEC | (MSVCRT__S_IEXEC >> 3) | (MSVCRT__S_IEXEC >> 6))
/* _access() bit flags FIXME: incomplete */
#define MSVCRT_W_OK 0x02
@@ -181,9 +169,9 @@
}
MSVCRT_fdesc[fd].handle = hand;
MSVCRT_fdesc[fd].xflag = WX_OPEN;
- if (flag & _O_NOINHERIT) MSVCRT_fdesc[fd].xflag |= WX_DONTINHERIT;
- if (flag & _O_APPEND) MSVCRT_fdesc[fd].xflag |= WX_APPEND;
- if (flag & _O_TEXT) MSVCRT_fdesc[fd].xflag |= WX_TEXT;
+ if (flag & MSVCRT__O_NOINHERIT) MSVCRT_fdesc[fd].xflag |= WX_DONTINHERIT;
+ if (flag & MSVCRT__O_APPEND) MSVCRT_fdesc[fd].xflag |= WX_APPEND;
+ if (flag & MSVCRT__O_TEXT) MSVCRT_fdesc[fd].xflag |= WX_TEXT;
/* locate next free slot */
if (fd == MSVCRT_fdend)
@@ -352,12 +340,12 @@
if (!filename || attr == INVALID_FILE_ATTRIBUTES)
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
if ((attr & FILE_ATTRIBUTE_READONLY) && (mode & MSVCRT_W_OK))
{
- MSVCRT__set_errno(ERROR_ACCESS_DENIED);
+ msvcrt_set_errno(ERROR_ACCESS_DENIED);
return -1;
}
return 0;
@@ -374,12 +362,12 @@
if (!filename || attr == INVALID_FILE_ATTRIBUTES)
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
if ((attr & FILE_ATTRIBUTE_READONLY) && (mode & MSVCRT_W_OK))
{
- MSVCRT__set_errno(ERROR_ACCESS_DENIED);
+ msvcrt_set_errno(ERROR_ACCESS_DENIED);
return -1;
}
return 0;
@@ -394,13 +382,13 @@
if (oldFlags != INVALID_FILE_ATTRIBUTES)
{
- DWORD newFlags = (flags & _S_IWRITE)? oldFlags & ~FILE_ATTRIBUTE_READONLY:
+ DWORD newFlags = (flags & MSVCRT__S_IWRITE)? oldFlags & ~FILE_ATTRIBUTE_READONLY:
oldFlags | FILE_ATTRIBUTE_READONLY;
if (newFlags == oldFlags || SetFileAttributesA(path, newFlags))
return 0;
}
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -413,13 +401,13 @@
if (oldFlags != INVALID_FILE_ATTRIBUTES)
{
- DWORD newFlags = (flags & _S_IWRITE)? oldFlags & ~FILE_ATTRIBUTE_READONLY:
+ DWORD newFlags = (flags & MSVCRT__S_IWRITE)? oldFlags & ~FILE_ATTRIBUTE_READONLY:
oldFlags | FILE_ATTRIBUTE_READONLY;
if (newFlags == oldFlags || SetFileAttributesW(path, newFlags))
return 0;
}
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -459,7 +447,7 @@
if(DeleteFileA(path))
return 0;
TRACE("failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -472,7 +460,7 @@
if(DeleteFileW(path))
return 0;
TRACE("failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -533,7 +521,7 @@
if (!CloseHandle(hand))
{
WARN(":failed-last error (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
msvcrt_free_fd(fd);
@@ -562,7 +550,7 @@
return 0;
}
TRACE(":failed-last error (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
TRACE(":ok\n");
@@ -654,7 +642,7 @@
return ((__int64)hoffset << 32) | ret;
}
TRACE(":error-last error (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -688,11 +676,11 @@
}
TRACE(":fd (%d) by 0x%08lx mode %s\n",
- fd,nbytes,(mode==_LK_UNLCK)?"_LK_UNLCK":
- (mode==_LK_LOCK)?"_LK_LOCK":
- (mode==_LK_NBLCK)?"_LK_NBLCK":
- (mode==_LK_RLCK)?"_LK_RLCK":
- (mode==_LK_NBRLCK)?"_LK_NBRLCK":
+ fd,nbytes,(mode==MSVCRT__LK_UNLCK)?"_LK_UNLCK":
+ (mode==MSVCRT__LK_LOCK)?"_LK_LOCK":
+ (mode==MSVCRT__LK_NBLCK)?"_LK_NBLCK":
+ (mode==MSVCRT__LK_RLCK)?"_LK_RLCK":
+ (mode==MSVCRT__LK_NBRLCK)?"_LK_NBRLCK":
"UNKNOWN");
if ((cur_locn = SetFilePointer(hand, 0L, NULL, SEEK_CUR)) == INVALID_SET_FILE_POINTER)
@@ -701,7 +689,7 @@
*MSVCRT__errno() = MSVCRT_EINVAL; /* FIXME */
return -1;
}
- if (mode == _LK_LOCK || mode == _LK_RLCK)
+ if (mode == MSVCRT__LK_LOCK || mode == MSVCRT__LK_RLCK)
{
int nretry = 10;
ret = 1; /* just to satisfy gcc */
@@ -709,10 +697,10 @@
{
ret = LockFile(hand, cur_locn, 0L, nbytes, 0L);
if (ret) break;
- _sleep (1);
+ Sleep(1);
}
}
- else if (mode == _LK_UNLCK)
+ else if (mode == MSVCRT__LK_UNLCK)
ret = UnlockFile(hand, cur_locn, 0L, nbytes, 0L);
else
ret = LockFile(hand, cur_locn, 0L, nbytes, 0L);
@@ -768,15 +756,15 @@
switch(*mode++)
{
case 'R': case 'r':
- *open_flags = plus ? _O_RDWR : _O_RDONLY;
+ *open_flags = plus ? MSVCRT__O_RDWR : MSVCRT__O_RDONLY;
*stream_flags = plus ? MSVCRT__IORW : MSVCRT__IOREAD;
break;
case 'W': case 'w':
- *open_flags = _O_CREAT | _O_TRUNC | (plus ? _O_RDWR : _O_WRONLY);
+ *open_flags = MSVCRT__O_CREAT | MSVCRT__O_TRUNC | (plus ? MSVCRT__O_RDWR : MSVCRT__O_WRONLY);
*stream_flags = plus ? MSVCRT__IORW : MSVCRT__IOWRT;
break;
case 'A': case 'a':
- *open_flags = _O_CREAT | _O_APPEND | (plus ? _O_RDWR : _O_WRONLY);
+ *open_flags = MSVCRT__O_CREAT | MSVCRT__O_APPEND | (plus ? MSVCRT__O_RDWR : MSVCRT__O_WRONLY);
*stream_flags = plus ? MSVCRT__IORW : MSVCRT__IOWRT;
break;
default:
@@ -787,12 +775,12 @@
switch (*mode++)
{
case 'B': case 'b':
- *open_flags |= _O_BINARY;
- *open_flags &= ~_O_TEXT;
+ *open_flags |= MSVCRT__O_BINARY;
+ *open_flags &= ~MSVCRT__O_TEXT;
break;
case 'T': case 't':
- *open_flags |= _O_TEXT;
- *open_flags &= ~_O_BINARY;
+ *open_flags |= MSVCRT__O_TEXT;
+ *open_flags &= ~MSVCRT__O_BINARY;
break;
case '+':
break;
@@ -916,7 +904,7 @@
if (!buf)
{
WARN(":failed-NULL buf\n");
- MSVCRT__set_errno(ERROR_INVALID_PARAMETER);
+ msvcrt_set_errno(ERROR_INVALID_PARAMETER);
return -1;
}
@@ -925,7 +913,7 @@
if (!GetFileInformationByHandle(hand, &hfi))
{
WARN(":failed-last error (%ld)\n",GetLastError());
- MSVCRT__set_errno(ERROR_INVALID_PARAMETER);
+ msvcrt_set_errno(ERROR_INVALID_PARAMETER);
return -1;
}
FIXME(":dwFileAttributes = %ld, mode set to 0\n",hfi.dwFileAttributes);
@@ -954,7 +942,7 @@
/*********************************************************************
* _futime (MSVCRT.@)
*/
-int _futime(int fd, struct _utimbuf *t)
+int _futime(int fd, struct MSVCRT__utimbuf *t)
{
HANDLE hand = msvcrt_fdtoh(fd);
FILETIME at, wt;
@@ -977,7 +965,7 @@
if (!SetFileTime(hand, NULL, &at, &wt))
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1 ;
}
return 0;
@@ -1108,71 +1096,71 @@
TRACE(":file (%s) oflags: 0x%04x shflags: 0x%04x\n",
path, oflags, shflags);
- switch(oflags & (_O_RDONLY | _O_WRONLY | _O_RDWR))
+ switch(oflags & (MSVCRT__O_RDONLY | MSVCRT__O_WRONLY | MSVCRT__O_RDWR))
{
- case _O_RDONLY:
+ case MSVCRT__O_RDONLY:
access |= GENERIC_READ;
ioflag |= MSVCRT__IOREAD;
break;
- case _O_WRONLY:
+ case MSVCRT__O_WRONLY:
access |= GENERIC_WRITE;
ioflag |= MSVCRT__IOWRT;
break;
- case _O_RDWR:
+ case MSVCRT__O_RDWR:
access |= GENERIC_WRITE | GENERIC_READ;
ioflag |= MSVCRT__IORW;
break;
}
- if (oflags & _O_CREAT)
+ if (oflags & MSVCRT__O_CREAT)
{
va_start(ap, shflags);
pmode = va_arg(ap, int);
va_end(ap);
- if(pmode & ~(_S_IREAD | _S_IWRITE))
+ if(pmode & ~(MSVCRT__S_IREAD | MSVCRT__S_IWRITE))
FIXME(": pmode 0x%04x ignored\n", pmode);
else
WARN(": pmode 0x%04x ignored\n", pmode);
- if (oflags & _O_EXCL)
+ if (oflags & MSVCRT__O_EXCL)
creation = CREATE_NEW;
- else if (oflags & _O_TRUNC)
+ else if (oflags & MSVCRT__O_TRUNC)
creation = CREATE_ALWAYS;
else
creation = OPEN_ALWAYS;
}
- else /* no _O_CREAT */
+ else /* no MSVCRT__O_CREAT */
{
- if (oflags & _O_TRUNC)
+ if (oflags & MSVCRT__O_TRUNC)
creation = TRUNCATE_EXISTING;
else
creation = OPEN_EXISTING;
}
- if (oflags & _O_APPEND)
- ioflag |= _O_APPEND;
+ if (oflags & MSVCRT__O_APPEND)
+ ioflag |= MSVCRT__O_APPEND;
- if (oflags & _O_BINARY)
- ioflag |= _O_BINARY;
- else if (oflags & _O_TEXT)
- ioflag |= _O_TEXT;
- else if (*__p__fmode() & _O_BINARY)
- ioflag |= _O_BINARY;
+ if (oflags & MSVCRT__O_BINARY)
+ ioflag |= MSVCRT__O_BINARY;
+ else if (oflags & MSVCRT__O_TEXT)
+ ioflag |= MSVCRT__O_TEXT;
+ else if (*__p__fmode() & MSVCRT__O_BINARY)
+ ioflag |= MSVCRT__O_BINARY;
else
- ioflag |= _O_TEXT; /* default to TEXT*/
+ ioflag |= MSVCRT__O_TEXT; /* default to TEXT*/
switch( shflags )
{
- case _SH_DENYRW:
+ case MSVCRT__SH_DENYRW:
sharing = 0L;
break;
- case _SH_DENYWR:
+ case MSVCRT__SH_DENYWR:
sharing = FILE_SHARE_READ;
break;
- case _SH_DENYRD:
+ case MSVCRT__SH_DENYRD:
sharing = FILE_SHARE_WRITE;
break;
- case _SH_DENYNO:
+ case MSVCRT__SH_DENYNO:
sharing = FILE_SHARE_READ | FILE_SHARE_WRITE;
break;
default:
@@ -1181,26 +1169,26 @@
}
attrib = FILE_ATTRIBUTE_NORMAL;
- if (oflags & _O_TEMPORARY)
+ if (oflags & MSVCRT__O_TEMPORARY)
{
attrib |= FILE_FLAG_DELETE_ON_CLOSE;
access |= DELETE;
sharing |= FILE_SHARE_DELETE;
}
- if (oflags & ~(_O_BINARY|_O_TEXT|_O_APPEND|_O_TRUNC|_O_EXCL
- |_O_CREAT|_O_RDWR|_O_WRONLY|_O_TEMPORARY|_O_NOINHERIT))
+ if (oflags & ~(MSVCRT__O_BINARY|MSVCRT__O_TEXT|MSVCRT__O_APPEND|MSVCRT__O_TRUNC|MSVCRT__O_EXCL
+ |MSVCRT__O_CREAT|MSVCRT__O_RDWR|MSVCRT__O_WRONLY|MSVCRT__O_TEMPORARY|MSVCRT__O_NOINHERIT))
ERR(":unsupported oflags 0x%04x\n",oflags);
sa.nLength = sizeof( SECURITY_ATTRIBUTES );
sa.lpSecurityDescriptor = NULL;
- sa.bInheritHandle = (oflags & _O_NOINHERIT) ? FALSE : TRUE;
+ sa.bInheritHandle = (oflags & MSVCRT__O_NOINHERIT) ? FALSE : TRUE;
hand = CreateFileA(path, access, sharing, &sa, creation, attrib, 0);
if (hand == INVALID_HANDLE_VALUE) {
WARN(":failed-last error (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -1210,7 +1198,7 @@
if (fd > 0)
{
- if (oflags & _O_APPEND)
+ if (oflags & MSVCRT__O_APPEND)
_lseek(fd, 0, FILE_END);
}
@@ -1238,7 +1226,7 @@
return retval;
}
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -1249,16 +1237,16 @@
{
va_list ap;
- if (flags & _O_CREAT)
+ if (flags & MSVCRT__O_CREAT)
{
int pmode;
va_start(ap, flags);
pmode = va_arg(ap, int);
va_end(ap);
- return MSVCRT__sopen( path, flags, _SH_DENYNO, pmode );
+ return MSVCRT__sopen( path, flags, MSVCRT__SH_DENYNO, pmode );
}
else
- return MSVCRT__sopen( path, flags, _SH_DENYNO);
+ return MSVCRT__sopen( path, flags, MSVCRT__SH_DENYNO);
}
/*********************************************************************
@@ -1282,7 +1270,7 @@
return retval;
}
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -1291,7 +1279,7 @@
*/
int _creat(const char *path, int flags)
{
- int usedFlags = (flags & _O_TEXT)| _O_CREAT| _O_WRONLY| _O_TRUNC;
+ int usedFlags = (flags & MSVCRT__O_TEXT)| MSVCRT__O_CREAT| MSVCRT__O_WRONLY| MSVCRT__O_TRUNC;
return _open(path, usedFlags);
}
@@ -1300,7 +1288,7 @@
*/
int _wcreat(const MSVCRT_wchar_t *path, int flags)
{
- int usedFlags = (flags & _O_TEXT)| _O_CREAT| _O_WRONLY| _O_TRUNC;
+ int usedFlags = (flags & MSVCRT__O_TEXT)| MSVCRT__O_CREAT| MSVCRT__O_WRONLY| MSVCRT__O_TRUNC;
return _wopen(path, usedFlags);
}
@@ -1311,16 +1299,16 @@
{
int fd;
- /* _O_RDONLY (0) always matches, so set the read flag
+ /* MSVCRT__O_RDONLY (0) always matches, so set the read flag
* MFC's CStdioFile clears O_RDONLY (0)! if it wants to write to the
- * file, so set the write flag. It also only sets _O_TEXT if it wants
- * text - it never sets _O_BINARY.
+ * file, so set the write flag. It also only sets MSVCRT__O_TEXT if it wants
+ * text - it never sets MSVCRT__O_BINARY.
*/
/* FIXME: handle more flags */
- if (!(flags & (_O_BINARY | _O_TEXT)) && (*__p__fmode() & _O_BINARY))
- flags |= _O_BINARY;
+ if (!(flags & (MSVCRT__O_BINARY | MSVCRT__O_TEXT)) && (*__p__fmode() & MSVCRT__O_BINARY))
+ flags |= MSVCRT__O_BINARY;
else
- flags |= _O_TEXT;
+ flags |= MSVCRT__O_TEXT;
fd = msvcrt_alloc_fd((HANDLE)hand,flags);
TRACE(":handle (%ld) fd (%d) flags 0x%08x\n",hand,fd,flags);
@@ -1433,10 +1421,10 @@
*/
int _setmode(int fd,int mode)
{
- int ret = MSVCRT_fdesc[fd].xflag & WX_TEXT ? _O_TEXT : _O_BINARY;
- if (mode & (~(_O_TEXT|_O_BINARY)))
+ int ret = MSVCRT_fdesc[fd].xflag & WX_TEXT ? MSVCRT__O_TEXT : MSVCRT__O_BINARY;
+ if (mode & (~(MSVCRT__O_TEXT|MSVCRT__O_BINARY)))
FIXME("fd (%d) mode (0x%08x) unknown\n",fd,mode);
- if ((mode & _O_TEXT) == _O_TEXT)
+ if ((mode & MSVCRT__O_TEXT) == MSVCRT__O_TEXT)
MSVCRT_fdesc[fd].xflag |= WX_TEXT;
else
MSVCRT_fdesc[fd].xflag &= ~WX_TEXT;
@@ -1450,7 +1438,7 @@
{
DWORD dw;
WIN32_FILE_ATTRIBUTE_DATA hfi;
- unsigned short mode = MSVCRT_S_IREAD;
+ unsigned short mode = ALL_S_IREAD;
int plen;
TRACE(":file (%s) buf(%p)\n",path,buf);
@@ -1458,7 +1446,7 @@
if (!GetFileAttributesExA(path, GetFileExInfoStandard, &hfi))
{
TRACE("failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(ERROR_FILE_NOT_FOUND);
+ msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
return -1;
}
@@ -1479,22 +1467,22 @@
/* Dir, or regular file? */
if ((hfi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ||
(path[plen-1] == '\\'))
- mode |= (_S_IFDIR | MSVCRT_S_IEXEC);
+ mode |= (MSVCRT__S_IFDIR | ALL_S_IEXEC);
else
{
- mode |= _S_IFREG;
+ mode |= MSVCRT__S_IFREG;
/* executable? */
if (plen > 6 && path[plen-4] == '.') /* shortest exe: "\x.exe" */
{
unsigned int ext = tolower(path[plen-1]) | (tolower(path[plen-2]) << 8) |
(tolower(path[plen-3]) << 16);
if (ext == EXE || ext == BAT || ext == CMD || ext == COM)
- mode |= MSVCRT_S_IEXEC;
+ mode |= ALL_S_IEXEC;
}
}
if (!(hfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
- mode |= MSVCRT_S_IWRITE;
+ mode |= ALL_S_IWRITE;
buf->st_mode = mode;
buf->st_nlink = 1;
@@ -1529,7 +1517,7 @@
{
DWORD dw;
WIN32_FILE_ATTRIBUTE_DATA hfi;
- unsigned short mode = MSVCRT_S_IREAD;
+ unsigned short mode = ALL_S_IREAD;
int plen;
TRACE(":file (%s) buf(%p)\n",debugstr_w(path),buf);
@@ -1537,7 +1525,7 @@
if (!GetFileAttributesExW(path, GetFileExInfoStandard, &hfi))
{
TRACE("failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(ERROR_FILE_NOT_FOUND);
+ msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
return -1;
}
@@ -1554,22 +1542,22 @@
/* Dir, or regular file? */
if ((hfi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ||
(path[plen-1] == '\\'))
- mode |= (_S_IFDIR | MSVCRT_S_IEXEC);
+ mode |= (MSVCRT__S_IFDIR | ALL_S_IEXEC);
else
{
- mode |= _S_IFREG;
+ mode |= MSVCRT__S_IFREG;
/* executable? */
if (plen > 6 && path[plen-4] == '.') /* shortest exe: "\x.exe" */
{
ULONGLONG ext = tolowerW(path[plen-1]) | (tolowerW(path[plen-2]) << 16) |
((ULONGLONG)tolowerW(path[plen-3]) << 32);
if (ext == WCEXE || ext == WCBAT || ext == WCCMD || ext == WCCOM)
- mode |= MSVCRT_S_IEXEC;
+ mode |= ALL_S_IEXEC;
}
}
if (!(hfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
- mode |= MSVCRT_S_IWRITE;
+ mode |= ALL_S_IWRITE;
buf->st_mode = mode;
buf->st_nlink = 1;
@@ -1663,9 +1651,9 @@
/*********************************************************************
* _utime (MSVCRT.@)
*/
-int _utime(const char* path, struct _utimbuf *t)
+int _utime(const char* path, struct MSVCRT__utimbuf *t)
{
- int fd = _open(path, _O_WRONLY | _O_BINARY);
+ int fd = _open(path, MSVCRT__O_WRONLY | MSVCRT__O_BINARY);
if (fd > 0)
{
@@ -1679,9 +1667,9 @@
/*********************************************************************
* _wutime (MSVCRT.@)
*/
-int _wutime(const MSVCRT_wchar_t* path, struct _utimbuf *t)
+int _wutime(const MSVCRT_wchar_t* path, struct MSVCRT__utimbuf *t)
{
- int fd = _wopen(path, _O_WRONLY | _O_BINARY);
+ int fd = _wopen(path, MSVCRT__O_WRONLY | MSVCRT__O_BINARY);
if (fd > 0)
{
@@ -1921,7 +1909,7 @@
/*********************************************************************
* fgetwc (MSVCRT.@)
*
- * In _O_TEXT mode, multibyte characters are read from the file, dropping
+ * In MSVCRT__O_TEXT mode, multibyte characters are read from the file, dropping
* the CR from CR/LF combinations
*/
MSVCRT_wint_t MSVCRT_fgetwc(MSVCRT_FILE* file)
@@ -2074,7 +2062,7 @@
if (msvcrt_get_flags(mode, &open_flags, &stream_flags) == -1)
return NULL;
- fd = _open(path, open_flags, _S_IREAD | _S_IWRITE);
+ fd = _open(path, open_flags, MSVCRT__S_IREAD | MSVCRT__S_IWRITE);
if (fd < 0)
return NULL;
@@ -2114,7 +2102,7 @@
return retval;
}
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return NULL;
}
@@ -2250,7 +2238,7 @@
if (msvcrt_get_flags(mode, &open_flags, &stream_flags) == -1)
return NULL;
- fd = _open(path, open_flags, _S_IREAD | _S_IWRITE);
+ fd = _open(path, open_flags, MSVCRT__S_IREAD | MSVCRT__S_IWRITE);
if (fd < 0)
return NULL;
@@ -2258,7 +2246,7 @@
{
file->_flag = 0;
WARN(":failed-last error (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return NULL;
}
return file;
@@ -2432,7 +2420,7 @@
if (DeleteFileA(path))
return 0;
TRACE(":failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -2445,7 +2433,7 @@
if (DeleteFileW(path))
return 0;
TRACE(":failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -2458,7 +2446,7 @@
if (MoveFileExA(oldpath, newpath, MOVEFILE_COPY_ALLOWED))
return 0;
TRACE(":failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -2471,7 +2459,7 @@
if (MoveFileExW(oldpath, newpath, MOVEFILE_COPY_ALLOWED))
return 0;
TRACE(":failed (%ld)\n",GetLastError());
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
@@ -2539,10 +2527,10 @@
int fd;
MSVCRT_FILE* file = NULL;
- fd = _open(filename, _O_CREAT | _O_BINARY | _O_RDWR | _O_TEMPORARY);
+ fd = _open(filename, MSVCRT__O_CREAT | MSVCRT__O_BINARY | MSVCRT__O_RDWR | MSVCRT__O_TEMPORARY);
if (fd != -1 && (file = msvcrt_alloc_fp()))
{
- if (msvcrt_init_fp(file, fd, _O_RDWR) == -1)
+ if (msvcrt_init_fp(file, fd, MSVCRT__O_RDWR) == -1)
{
file->_flag = 0;
file = NULL;
diff --git a/dlls/msvcrt/heap.c b/dlls/msvcrt/heap.c
index 35994cd..74e7b37 100644
--- a/dlls/msvcrt/heap.c
+++ b/dlls/msvcrt/heap.c
@@ -22,12 +22,7 @@
*/
#include "msvcrt.h"
-#include "msvcrt/errno.h"
-
-#include "msvcrt/malloc.h"
-#include "msvcrt/stdlib.h"
#include "mtdll.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -145,10 +140,10 @@
{
if (!HeapValidate( GetProcessHeap(), 0, NULL))
{
- MSVCRT__set_errno(GetLastError());
- return _HEAPBADNODE;
+ msvcrt_set_errno(GetLastError());
+ return MSVCRT__HEAPBADNODE;
}
- return _HEAPOK;
+ return MSVCRT__HEAPOK;
}
/*********************************************************************
@@ -159,7 +154,7 @@
if (!HeapCompact( GetProcessHeap(), 0 ))
{
if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
return 0;
@@ -168,21 +163,21 @@
/*********************************************************************
* _heapwalk (MSVCRT.@)
*/
-int _heapwalk(_HEAPINFO* next)
+int _heapwalk(struct MSVCRT__heapinfo* next)
{
PROCESS_HEAP_ENTRY phe;
LOCK_HEAP;
phe.lpData = next->_pentry;
phe.cbData = next->_size;
- phe.wFlags = next->_useflag == _USEDENTRY ? PROCESS_HEAP_ENTRY_BUSY : 0;
+ phe.wFlags = next->_useflag == MSVCRT__USEDENTRY ? PROCESS_HEAP_ENTRY_BUSY : 0;
if (phe.lpData && phe.wFlags & PROCESS_HEAP_ENTRY_BUSY &&
!HeapValidate( GetProcessHeap(), 0, phe.lpData ))
{
UNLOCK_HEAP;
- MSVCRT__set_errno(GetLastError());
- return _HEAPBADNODE;
+ msvcrt_set_errno(GetLastError());
+ return MSVCRT__HEAPBADNODE;
}
do
@@ -191,19 +186,19 @@
{
UNLOCK_HEAP;
if (GetLastError() == ERROR_NO_MORE_ITEMS)
- return _HEAPEND;
- MSVCRT__set_errno(GetLastError());
+ return MSVCRT__HEAPEND;
+ msvcrt_set_errno(GetLastError());
if (!phe.lpData)
- return _HEAPBADBEGIN;
- return _HEAPBADNODE;
+ return MSVCRT__HEAPBADBEGIN;
+ return MSVCRT__HEAPBADNODE;
}
} while (phe.wFlags & (PROCESS_HEAP_REGION|PROCESS_HEAP_UNCOMMITTED_RANGE));
UNLOCK_HEAP;
next->_pentry = phe.lpData;
next->_size = phe.cbData;
- next->_useflag = phe.wFlags & PROCESS_HEAP_ENTRY_BUSY ? _USEDENTRY : _FREEENTRY;
- return _HEAPOK;
+ next->_useflag = phe.wFlags & PROCESS_HEAP_ENTRY_BUSY ? MSVCRT__USEDENTRY : MSVCRT__FREEENTRY;
+ return MSVCRT__HEAPOK;
}
/*********************************************************************
@@ -212,17 +207,17 @@
int _heapset(unsigned int value)
{
int retval;
- _HEAPINFO heap;
+ struct MSVCRT__heapinfo heap;
- memset( &heap, 0, sizeof(_HEAPINFO) );
+ memset( &heap, 0, sizeof(heap) );
LOCK_HEAP;
- while ((retval = _heapwalk(&heap)) == _HEAPOK)
+ while ((retval = _heapwalk(&heap)) == MSVCRT__HEAPOK)
{
- if (heap._useflag == _FREEENTRY)
+ if (heap._useflag == MSVCRT__FREEENTRY)
memset(heap._pentry, value, heap._size);
}
UNLOCK_HEAP;
- return retval == _HEAPEND? _HEAPOK : retval;
+ return retval == MSVCRT__HEAPEND? MSVCRT__HEAPOK : retval;
}
/*********************************************************************
@@ -272,7 +267,7 @@
{
void *ret = HeapAlloc(GetProcessHeap(),0,size);
if (!ret)
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return ret;
}
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index b125794..2edd860 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -30,7 +30,6 @@
#include "winuser.h"
#include "msvcrt.h"
-#include "msvcrt/locale.h"
#include "mtdll.h"
#include "wine/debug.h"
@@ -44,7 +43,7 @@
#define MAX_LOCALE_LENGTH 256
char MSVCRT_current_lc_all[MAX_LOCALE_LENGTH];
LCID MSVCRT_current_lc_all_lcid;
-int MSVCRT_current_lc_all_cp;
+int msvcrt_current_lc_all_cp;
/* MT */
#define LOCK_LOCALE _mlock(_SETLOCALE_LOCK);
@@ -275,7 +274,7 @@
unsigned char *traverse = (unsigned char *)cp.LeadByte;
memset(MSVCRT_current_ctype, 0, sizeof(MSVCRT__ctype));
- MSVCRT_current_lc_all_cp = codepage;
+ msvcrt_current_lc_all_cp = codepage;
/* Switch ctype macros to MBCS if needed */
MSVCRT___mb_cur_max = cp.MaxCharSize;
@@ -342,7 +341,7 @@
{
MSVCRT_current_lc_all[0] = 'C';
MSVCRT_current_lc_all[1] = '\0';
- MSVCRT_current_lc_all_cp = GetACP();
+ msvcrt_current_lc_all_cp = GetACP();
switch (category) {
case MSVCRT_LC_ALL:
@@ -520,10 +519,10 @@
void _setmbcp(int cp)
{
LOCK_LOCALE;
- if (MSVCRT_current_lc_all_cp != cp)
+ if (msvcrt_current_lc_all_cp != cp)
{
/* FIXME: set ctype behaviour for this cp */
- MSVCRT_current_lc_all_cp = cp;
+ msvcrt_current_lc_all_cp = cp;
}
UNLOCK_LOCALE;
}
@@ -533,7 +532,7 @@
*/
int _getmbcp(void)
{
- return MSVCRT_current_lc_all_cp;
+ return msvcrt_current_lc_all_cp;
}
/*********************************************************************
diff --git a/dlls/msvcrt/main.c b/dlls/msvcrt/main.c
index dffbe11..61411bf 100644
--- a/dlls/msvcrt/main.c
+++ b/dlls/msvcrt/main.c
@@ -19,15 +19,12 @@
*/
#include "msvcrt.h"
-#include "msvcrt/locale.h"
-#include "msvcrt/stdio.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
/* Index to TLS */
-DWORD MSVCRT_tls_index;
+DWORD msvcrt_tls_index;
static inline BOOL msvcrt_init_tls(void);
static inline BOOL msvcrt_free_tls(void);
@@ -38,12 +35,12 @@
*/
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
- MSVCRT_thread_data *tls;
+ thread_data_t *tls;
TRACE("(%p, %s, %p) pid(%lx), tid(%lx), tls(%ld)\n",
hinstDLL, msvcrt_get_reason(fdwReason), lpvReserved,
GetCurrentProcessId(), GetCurrentThreadId(),
- (long)MSVCRT_tls_index);
+ (long)msvcrt_tls_index);
switch (fdwReason)
{
@@ -70,7 +67,7 @@
break;
case DLL_THREAD_DETACH:
/* Free TLS */
- tls = TlsGetValue(MSVCRT_tls_index);
+ tls = TlsGetValue(msvcrt_tls_index);
if (tls) HeapFree(GetProcessHeap(), 0, tls);
TRACE("finished thread free\n");
break;
@@ -80,9 +77,9 @@
static inline BOOL msvcrt_init_tls(void)
{
- MSVCRT_tls_index = TlsAlloc();
+ msvcrt_tls_index = TlsAlloc();
- if (MSVCRT_tls_index == TLS_OUT_OF_INDEXES)
+ if (msvcrt_tls_index == TLS_OUT_OF_INDEXES)
{
ERR("TlsAlloc() failed!\n");
return FALSE;
@@ -92,7 +89,7 @@
static inline BOOL msvcrt_free_tls(void)
{
- if (!TlsFree(MSVCRT_tls_index))
+ if (!TlsFree(msvcrt_tls_index))
{
ERR("TlsFree() failed!\n");
return FALSE;
@@ -140,11 +137,9 @@
* Success: A string pointing to the unmangled name, allocated with memget.
* Failure: NULL.
*/
-char* MSVCRT___unDNameEx(char * OutStr, const char* mangled, int OutStrLen,
- MSVCRT_malloc_func memget,
- MSVCRT_free_func memfree,
- void * unknown,
- unsigned short int flags)
+char* __unDNameEx(char * OutStr, const char* mangled, int OutStrLen,
+ malloc_func_t memget, free_func_t memfree,
+ void * unknown, unsigned short int flags)
{
FIXME("(%p,%s,%d,%p,%p,%p,%x) stub!\n",
OutStr, mangled, OutStrLen, memget, memfree, unknown, flags);
@@ -177,11 +172,9 @@
/*********************************************************************
* __unDName (MSVCRT.@)
*/
-char* MSVCRT___unDName(char * OutStr, const char* mangled, int OutStrLen,
- MSVCRT_malloc_func memget,
- MSVCRT_free_func memfree,
- unsigned short int flags)
+char* __unDName(char * OutStr, const char* mangled, int OutStrLen,
+ malloc_func_t memget, free_func_t memfree,
+ unsigned short int flags)
{
- return MSVCRT___unDNameEx( OutStr, mangled, OutStrLen, memget, memfree,
- NULL, flags);
+ return __unDNameEx( OutStr, mangled, OutStrLen, memget, memfree, 0, flags);
}
diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c
index ad077f8..e937348 100644
--- a/dlls/msvcrt/math.c
+++ b/dlls/msvcrt/math.c
@@ -28,10 +28,6 @@
#endif
#include "msvcrt.h"
-#include "msvcrt/errno.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/math.h"
-#include "msvcrt/float.h"
#include "wine/debug.h"
@@ -262,50 +258,50 @@
switch (fpclass( num ))
{
#ifdef FP_SNAN
- case FP_SNAN: return _FPCLASS_SNAN;
+ case FP_SNAN: return MSVCRT__FPCLASS_SNAN;
#endif
#ifdef FP_QNAN
- case FP_QNAN: return _FPCLASS_QNAN;
+ case FP_QNAN: return MSVCRT__FPCLASS_QNAN;
#endif
#ifdef FP_NINF
- case FP_NINF: return _FPCLASS_NINF;
+ case FP_NINF: return MSVCRT__FPCLASS_NINF;
#endif
#ifdef FP_PINF
- case FP_PINF: return _FPCLASS_PINF;
+ case FP_PINF: return MSVCRT__FPCLASS_PINF;
#endif
#ifdef FP_NDENORM
- case FP_NDENORM: return _FPCLASS_ND;
+ case FP_NDENORM: return MSVCRT__FPCLASS_ND;
#endif
#ifdef FP_PDENORM
- case FP_PDENORM: return _FPCLASS_PD;
+ case FP_PDENORM: return MSVCRT__FPCLASS_PD;
#endif
#ifdef FP_NZERO
- case FP_NZERO: return _FPCLASS_NZ;
+ case FP_NZERO: return MSVCRT__FPCLASS_NZ;
#endif
#ifdef FP_PZERO
- case FP_PZERO: return _FPCLASS_PZ;
+ case FP_PZERO: return MSVCRT__FPCLASS_PZ;
#endif
#ifdef FP_NNORM
- case FP_NNORM: return _FPCLASS_NN;
+ case FP_NNORM: return MSVCRT__FPCLASS_NN;
#endif
#ifdef FP_PNORM
- case FP_PNORM: return _FPCLASS_PN;
+ case FP_PNORM: return MSVCRT__FPCLASS_PN;
#endif
}
- return _FPCLASS_PN;
+ return MSVCRT__FPCLASS_PN;
#elif defined (fpclassify)
switch (fpclassify( num ))
{
- case FP_NAN: return _FPCLASS_QNAN;
- case FP_INFINITE: return signbit(num) ? _FPCLASS_NINF : _FPCLASS_PINF;
- case FP_SUBNORMAL: return signbit(num) ?_FPCLASS_ND : _FPCLASS_PD;
- case FP_ZERO: return signbit(num) ? _FPCLASS_NZ : _FPCLASS_PZ;
+ case FP_NAN: return MSVCRT__FPCLASS_QNAN;
+ case FP_INFINITE: return signbit(num) ? MSVCRT__FPCLASS_NINF : MSVCRT__FPCLASS_PINF;
+ case FP_SUBNORMAL: return signbit(num) ?MSVCRT__FPCLASS_ND : MSVCRT__FPCLASS_PD;
+ case FP_ZERO: return signbit(num) ? MSVCRT__FPCLASS_NZ : MSVCRT__FPCLASS_PZ;
}
- return signbit(num) ? _FPCLASS_NN : _FPCLASS_PN;
+ return signbit(num) ? MSVCRT__FPCLASS_NN : MSVCRT__FPCLASS_PN;
#else
if (!finite(num))
- return _FPCLASS_QNAN;
- return num == 0.0 ? _FPCLASS_PZ : (num < 0 ? _FPCLASS_NN : _FPCLASS_PN);
+ return MSVCRT__FPCLASS_QNAN;
+ return num == 0.0 ? MSVCRT__FPCLASS_PZ : (num < 0 ? MSVCRT__FPCLASS_NN : MSVCRT__FPCLASS_PN);
#endif
}
@@ -400,12 +396,12 @@
unsigned int fpword;
__asm__ __volatile__( "fstsw %0" : "=m" (fpword) : );
- if (fpword & 0x1) retVal |= _SW_INVALID;
- if (fpword & 0x2) retVal |= _SW_DENORMAL;
- if (fpword & 0x4) retVal |= _SW_ZERODIVIDE;
- if (fpword & 0x8) retVal |= _SW_OVERFLOW;
- if (fpword & 0x10) retVal |= _SW_UNDERFLOW;
- if (fpword & 0x20) retVal |= _SW_INEXACT;
+ if (fpword & 0x1) retVal |= MSVCRT__SW_INVALID;
+ if (fpword & 0x2) retVal |= MSVCRT__SW_DENORMAL;
+ if (fpword & 0x4) retVal |= MSVCRT__SW_ZERODIVIDE;
+ if (fpword & 0x8) retVal |= MSVCRT__SW_OVERFLOW;
+ if (fpword & 0x10) retVal |= MSVCRT__SW_UNDERFLOW;
+ if (fpword & 0x20) retVal |= MSVCRT__SW_INEXACT;
#else
FIXME(":Not implemented!\n");
#endif
@@ -482,46 +478,46 @@
TRACE("Control word before : %08x\n", fpword);
/* Convert into mask constants */
- if (fpword & 0x1) flags |= _EM_INVALID;
- if (fpword & 0x2) flags |= _EM_DENORMAL;
- if (fpword & 0x4) flags |= _EM_ZERODIVIDE;
- if (fpword & 0x8) flags |= _EM_OVERFLOW;
- if (fpword & 0x10) flags |= _EM_UNDERFLOW;
- if (fpword & 0x20) flags |= _EM_INEXACT;
+ if (fpword & 0x1) flags |= MSVCRT__EM_INVALID;
+ if (fpword & 0x2) flags |= MSVCRT__EM_DENORMAL;
+ if (fpword & 0x4) flags |= MSVCRT__EM_ZERODIVIDE;
+ if (fpword & 0x8) flags |= MSVCRT__EM_OVERFLOW;
+ if (fpword & 0x10) flags |= MSVCRT__EM_UNDERFLOW;
+ if (fpword & 0x20) flags |= MSVCRT__EM_INEXACT;
switch(fpword & 0xC00) {
- case 0xC00: flags |= _RC_UP|_RC_DOWN; break;
- case 0x800: flags |= _RC_UP; break;
- case 0x400: flags |= _RC_DOWN; break;
+ case 0xC00: flags |= MSVCRT__RC_UP|MSVCRT__RC_DOWN; break;
+ case 0x800: flags |= MSVCRT__RC_UP; break;
+ case 0x400: flags |= MSVCRT__RC_DOWN; break;
}
switch(fpword & 0x300) {
- case 0x0: flags |= _PC_24; break;
- case 0x200: flags |= _PC_53; break;
- case 0x300: flags |= _PC_64; break;
+ case 0x0: flags |= MSVCRT__PC_24; break;
+ case 0x200: flags |= MSVCRT__PC_53; break;
+ case 0x300: flags |= MSVCRT__PC_64; break;
}
- if (fpword & 0x1000) flags |= _IC_AFFINE;
+ if (fpword & 0x1000) flags |= MSVCRT__IC_AFFINE;
/* Mask with parameters */
flags = (flags & ~mask) | (newval & mask);
/* Convert (masked) value back to fp word */
fpword = 0;
- if (flags & _EM_INVALID) fpword |= 0x1;
- if (flags & _EM_DENORMAL) fpword |= 0x2;
- if (flags & _EM_ZERODIVIDE) fpword |= 0x4;
- if (flags & _EM_OVERFLOW) fpword |= 0x8;
- if (flags & _EM_UNDERFLOW) fpword |= 0x10;
- if (flags & _EM_INEXACT) fpword |= 0x20;
- switch(flags & (_RC_UP | _RC_DOWN)) {
- case _RC_UP|_RC_DOWN: fpword |= 0xC00; break;
- case _RC_UP: fpword |= 0x800; break;
- case _RC_DOWN: fpword |= 0x400; break;
+ if (flags & MSVCRT__EM_INVALID) fpword |= 0x1;
+ if (flags & MSVCRT__EM_DENORMAL) fpword |= 0x2;
+ if (flags & MSVCRT__EM_ZERODIVIDE) fpword |= 0x4;
+ if (flags & MSVCRT__EM_OVERFLOW) fpword |= 0x8;
+ if (flags & MSVCRT__EM_UNDERFLOW) fpword |= 0x10;
+ if (flags & MSVCRT__EM_INEXACT) fpword |= 0x20;
+ switch(flags & (MSVCRT__RC_UP | MSVCRT__RC_DOWN)) {
+ case MSVCRT__RC_UP|MSVCRT__RC_DOWN: fpword |= 0xC00; break;
+ case MSVCRT__RC_UP: fpword |= 0x800; break;
+ case MSVCRT__RC_DOWN: fpword |= 0x400; break;
}
- switch (flags & (_PC_24 | _PC_53)) {
- case _PC_64: fpword |= 0x300; break;
- case _PC_53: fpword |= 0x200; break;
- case _PC_24: fpword |= 0x0; break;
+ switch (flags & (MSVCRT__PC_24 | MSVCRT__PC_53)) {
+ case MSVCRT__PC_64: fpword |= 0x300; break;
+ case MSVCRT__PC_53: fpword |= 0x200; break;
+ case MSVCRT__PC_24: fpword |= 0x0; break;
}
- if (flags & _IC_AFFINE) fpword |= 0x1000;
+ if (flags & MSVCRT__IC_AFFINE) fpword |= 0x1000;
TRACE("Control word after : %08x\n", fpword);
@@ -541,7 +537,7 @@
unsigned int _controlfp(unsigned int newval, unsigned int mask)
{
#ifdef __i386__
- return _control87( newval, mask & ~_EM_DENORMAL );
+ return _control87( newval, mask & ~MSVCRT__EM_DENORMAL );
#else
FIXME(":Not Implemented!\n");
return 0;
@@ -598,7 +594,7 @@
double retval;
if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
retval = y0(num);
- if (_fpclass(retval) == _FPCLASS_NINF)
+ if (_fpclass(retval) == MSVCRT__FPCLASS_NINF)
{
*MSVCRT__errno() = MSVCRT_EDOM;
retval = sqrt(-1);
@@ -614,7 +610,7 @@
double retval;
if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
retval = y1(num);
- if (_fpclass(retval) == _FPCLASS_NINF)
+ if (_fpclass(retval) == MSVCRT__FPCLASS_NINF)
{
*MSVCRT__errno() = MSVCRT_EDOM;
retval = sqrt(-1);
@@ -630,7 +626,7 @@
double retval;
if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
retval = yn(order,num);
- if (_fpclass(retval) == _FPCLASS_NINF)
+ if (_fpclass(retval) == MSVCRT__FPCLASS_NINF)
{
*MSVCRT__errno() = MSVCRT_EDOM;
retval = sqrt(-1);
@@ -654,7 +650,7 @@
*/
char *_ecvt( double number, int ndigits, int *decpt, int *sign )
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
+ thread_data_t *data = msvcrt_get_thread_data();
char *dec;
if (!data->efcvt_buffer)
@@ -672,7 +668,7 @@
*/
char *_fcvt( double number, int ndigits, int *decpt, int *sign )
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
+ thread_data_t *data = msvcrt_get_thread_data();
char *dec;
if (!data->efcvt_buffer)
diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
index b8ee9d4..a2bd7f4 100644
--- a/dlls/msvcrt/mbcs.c
+++ b/dlls/msvcrt/mbcs.c
@@ -24,13 +24,6 @@
*/
#include "msvcrt.h"
-
-#include "msvcrt/mbctype.h"
-#include "msvcrt/mbstring.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-#include "msvcrt/wctype.h"
-
#include "wine/unicode.h"
#include "wine/debug.h"
@@ -53,7 +46,7 @@
mbch[1] = ch & 0xff;
n_chars = 2;
}
- if (!MultiByteToWideChar(MSVCRT_current_lc_all_cp, 0, mbch, n_chars, &chW, 1))
+ if (!MultiByteToWideChar(msvcrt_current_lc_all_cp, 0, mbch, n_chars, &chW, 1))
{
WARN("MultiByteToWideChar failed on %x\n", ch);
return 0;
@@ -555,7 +548,7 @@
*/
unsigned char* _mbstok(unsigned char *str, const unsigned char *delim)
{
- MSVCRT_thread_data *data = msvcrt_get_thread_data();
+ thread_data_t *data = msvcrt_get_thread_data();
char *ret;
if(MSVCRT___mb_cur_max > 1)
@@ -626,7 +619,7 @@
int _ismbbkana(unsigned int c)
{
/* FIXME: use lc_ctype when supported, not lc_all */
- if(MSVCRT_current_lc_all_cp == 932)
+ if(msvcrt_current_lc_all_cp == 932)
{
/* Japanese/Katakana, CP 932 */
return (c >= 0xa1 && c <= 0xdf);
@@ -736,7 +729,7 @@
int _ismbchira(unsigned int c)
{
/* FIXME: use lc_ctype when supported, not lc_all */
- if(MSVCRT_current_lc_all_cp == 932)
+ if(msvcrt_current_lc_all_cp == 932)
{
/* Japanese/Hiragana, CP 932 */
return (c >= 0x829f && c <= 0x82f1);
@@ -750,7 +743,7 @@
int _ismbckata(unsigned int c)
{
/* FIXME: use lc_ctype when supported, not lc_all */
- if(MSVCRT_current_lc_all_cp == 932)
+ if(msvcrt_current_lc_all_cp == 932)
{
if(c < 256)
return _ismbbkana(c);
diff --git a/dlls/msvcrt/misc.c b/dlls/msvcrt/misc.c
index 57c3d56..ae65d08 100644
--- a/dlls/msvcrt/misc.c
+++ b/dlls/msvcrt/misc.c
@@ -24,8 +24,6 @@
#include <stdlib.h>
#include "msvcrt.h"
-#include "msvcrt/stdlib.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index 9a13bc0..97ae662 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -1,5 +1,6 @@
/*
* Copyright 2001 Jon Griffiths
+ * Copyright 2004 Dimitrie O. Paun
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -14,6 +15,22 @@
* 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
+ *
+ * NOTES
+ * Naming conventions
+ * - Symbols are prefixed with MSVCRT_ if they conflict
+ * with libc symbols
+ * - Internal symbolx are usually prefixed by msvcrt_.
+ * - Exported symbols that are not present in the public
+ * headers are usually kept the same as the original.
+ * Other conventions
+ * - To avoid conflicts with the standard C library,
+ * no msvcrt headers are included in the implementation.
+ * - Instead, symbols are duplicated here, prefixed with
+ * MSVCRT_, as explained above.
+ * - To avoid inconsistencies, a test for each symbol is
+ * added into tests/headers.c. Please always add a
+ * corresponding test when you add a new symbol!
*/
#ifndef __WINE_MSVCRT_H
@@ -28,38 +45,58 @@
#include "winerror.h"
#include "winnls.h"
-#include "msvcrt/string.h"
-#include "msvcrt/eh.h"
+typedef unsigned short MSVCRT_wchar_t;
+typedef unsigned short MSVCRT_wint_t;
+typedef unsigned short MSVCRT_wctype_t;
+typedef unsigned short MSVCRT__ino_t;
+typedef unsigned long MSVCRT__fsize_t;
+typedef unsigned int MSVCRT_size_t;
+typedef unsigned int MSVCRT__dev_t;
+typedef int MSVCRT__off_t;
+typedef long MSVCRT_clock_t;
+typedef long MSVCRT_time_t;
+typedef long MSVCRT_fpos_t;
+
+typedef void (*MSVCRT_terminate_handler)();
+typedef void (*MSVCRT_terminate_function)();
+typedef void (*MSVCRT_unexpected_handler)();
+typedef void (*MSVCRT_unexpected_function)();
+typedef void (*MSVCRT__se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info);
+typedef void (*MSVCRT__beginthread_start_routine_t)(void *);
+typedef unsigned int (__stdcall *MSVCRT__beginthreadex_start_routine_t)(void *);
+typedef int (*MSVCRT__onexit_t)(void);
+
/* TLS data */
-extern DWORD MSVCRT_tls_index;
+extern DWORD msvcrt_tls_index;
-typedef struct __MSVCRT_thread_data
-{
- int thread_errno;
- unsigned long thread_doserrno;
- char *mbstok_next; /* next ptr for mbstok() */
- char *efcvt_buffer; /* buffer for ecvt/fcvt */
- int fpecode;
- terminate_function terminate_handler;
- unexpected_function unexpected_handler;
- _se_translator_function se_translator;
- EXCEPTION_RECORD *exc_record;
-} MSVCRT_thread_data;
+struct __thread_data {
+ int thread_errno;
+ unsigned long thread_doserrno;
+ char *mbstok_next; /* next ptr for mbstok() */
+ char *efcvt_buffer; /* buffer for ecvt/fcvt */
+ int fpecode;
+ MSVCRT_terminate_function terminate_handler;
+ MSVCRT_unexpected_function unexpected_handler;
+ MSVCRT__se_translator_function se_translator;
+ EXCEPTION_RECORD *exc_record;
+};
-extern MSVCRT_thread_data *msvcrt_get_thread_data(void);
+typedef struct __thread_data thread_data_t;
-extern int MSVCRT_current_lc_all_cp;
+extern thread_data_t *msvcrt_get_thread_data(void);
-void _purecall(void);
-void MSVCRT__set_errno(int);
+extern int msvcrt_current_lc_all_cp;
+
+void msvcrt_set_errno(int);
char* msvcrt_strndup(const char*,unsigned int);
MSVCRT_wchar_t *msvcrt_wstrndup(const MSVCRT_wchar_t*, unsigned int);
-void MSVCRT__amsg_exit(int errnum);
+void _purecall(void);
+void _amsg_exit(int errnum);
-extern char **MSVCRT__environ;
-extern MSVCRT_wchar_t **MSVCRT__wenviron;
+extern char **_environ;
+extern MSVCRT_wchar_t **_wenviron;
extern char ** msvcrt_SnapshotOfEnvironmentA(char **);
extern MSVCRT_wchar_t ** msvcrt_SnapshotOfEnvironmentW(MSVCRT_wchar_t **);
@@ -70,13 +107,13 @@
int MSVCRT__set_new_mode(int mode);
void* MSVCRT_operator_new(unsigned long size);
-void MSVCRT_operator_delete(void*);
+void MSVCRT_operator_delete(void*);
-typedef void* (*MSVCRT_malloc_func)(MSVCRT_size_t);
-typedef void (*MSVCRT_free_func)(void*);
+typedef void* (*malloc_func_t)(MSVCRT_size_t);
+typedef void (*free_func_t)(void*);
-extern char* MSVCRT___unDName(char *,const char*,int,MSVCRT_malloc_func,MSVCRT_free_func,unsigned short int);
-extern char* MSVCRT___unDNameEx(char *,const char*,int,MSVCRT_malloc_func,MSVCRT_free_func,void *,unsigned short int);
+extern char* __unDName(char *,const char*,int,malloc_func_t,free_func_t,unsigned short int);
+extern char* __unDNameEx(char *,const char*,int,malloc_func_t,free_func_t,void *,unsigned short int);
/* Setup and teardown multi threaded locks */
extern void msvcrt_init_mt_locks(void);
@@ -123,4 +160,429 @@
#define _RT_CRNL 252
#define _RT_BANNER 255
+struct MSVCRT_tm {
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+};
+
+struct MSVCRT__timeb {
+ MSVCRT_time_t time;
+ unsigned short millitm;
+ short timezone;
+ short dstflag;
+};
+
+struct MSVCRT__iobuf {
+ char* _ptr;
+ int _cnt;
+ char* _base;
+ int _flag;
+ int _file;
+ int _charbuf;
+ int _bufsiz;
+ char* _tmpfname;
+};
+
+typedef struct MSVCRT__iobuf MSVCRT_FILE;
+
+struct MSVCRT_lconv {
+ char* decimal_point;
+ char* thousands_sep;
+ char* grouping;
+ char* int_curr_symbol;
+ char* currency_symbol;
+ char* mon_decimal_point;
+ char* mon_thousands_sep;
+ char* mon_grouping;
+ char* positive_sign;
+ char* negative_sign;
+ char int_frac_digits;
+ char frac_digits;
+ char p_cs_precedes;
+ char p_sep_by_space;
+ char n_cs_precedes;
+ char n_sep_by_space;
+ char p_sign_posn;
+ char n_sign_posn;
+};
+
+struct MSVCRT__exception {
+ int type;
+ char* name;
+ double arg1;
+ double arg2;
+ double retval;
+};
+
+struct MSVCRT__complex {
+ double x; /* Real part */
+ double y; /* Imaginary part */
+};
+
+struct MSVCRT__heapinfo {
+ int* _pentry;
+ MSVCRT_size_t _size;
+ int _useflag;
+};
+
+#ifdef __i386__
+struct MSVCRT___JUMP_BUFFER {
+ unsigned long Ebp;
+ unsigned long Ebx;
+ unsigned long Edi;
+ unsigned long Esi;
+ unsigned long Esp;
+ unsigned long Eip;
+ unsigned long Registration;
+ unsigned long TryLevel;
+ /* Start of new struct members */
+ unsigned long Cookie;
+ unsigned long UnwindFunc;
+ unsigned long UnwindData[6];
+};
+#endif /* __i386__ */
+
+struct MSVCRT__diskfree_t {
+ unsigned int total_clusters;
+ unsigned int avail_clusters;
+ unsigned int sectors_per_cluster;
+ unsigned int bytes_per_sector;
+};
+
+struct MSVCRT__finddata_t {
+ unsigned attrib;
+ MSVCRT_time_t time_create;
+ MSVCRT_time_t time_access;
+ MSVCRT_time_t time_write;
+ MSVCRT__fsize_t size;
+ char name[260];
+};
+
+struct MSVCRT__finddatai64_t {
+ unsigned attrib;
+ MSVCRT_time_t time_create;
+ MSVCRT_time_t time_access;
+ MSVCRT_time_t time_write;
+ __int64 size;
+ char name[260];
+};
+
+struct MSVCRT__wfinddata_t {
+ unsigned attrib;
+ MSVCRT_time_t time_create;
+ MSVCRT_time_t time_access;
+ MSVCRT_time_t time_write;
+ MSVCRT__fsize_t size;
+ MSVCRT_wchar_t name[260];
+};
+
+struct MSVCRT__wfinddatai64_t {
+ unsigned attrib;
+ MSVCRT_time_t time_create;
+ MSVCRT_time_t time_access;
+ MSVCRT_time_t time_write;
+ __int64 size;
+ MSVCRT_wchar_t name[260];
+};
+
+struct MSVCRT__utimbuf
+{
+ MSVCRT_time_t actime;
+ MSVCRT_time_t modtime;
+};
+
+/* for FreeBSD */
+#undef st_atime
+#undef st_ctime
+#undef st_mtime
+
+struct MSVCRT__stat {
+ MSVCRT__dev_t st_dev;
+ MSVCRT__ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ MSVCRT__dev_t st_rdev;
+ MSVCRT__off_t st_size;
+ MSVCRT_time_t st_atime;
+ MSVCRT_time_t st_mtime;
+ MSVCRT_time_t st_ctime;
+};
+
+struct MSVCRT_stat {
+ MSVCRT__dev_t st_dev;
+ MSVCRT__ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ MSVCRT__dev_t st_rdev;
+ MSVCRT__off_t st_size;
+ MSVCRT_time_t st_atime;
+ MSVCRT_time_t st_mtime;
+ MSVCRT_time_t st_ctime;
+};
+
+struct MSVCRT__stati64 {
+ MSVCRT__dev_t st_dev;
+ MSVCRT__ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ MSVCRT__dev_t st_rdev;
+ __int64 st_size;
+ MSVCRT_time_t st_atime;
+ MSVCRT_time_t st_mtime;
+ MSVCRT_time_t st_ctime;
+};
+
+#define MSVCRT_WEOF (MSVCRT_wint_t)(0xFFFF)
+#define MSVCRT_EOF (-1)
+#define MSVCRT_TMP_MAX 0x7fff
+#define MSVCRT_BUFSIZ 512
+
+#define MSVCRT_STDIN_FILENO 0
+#define MSVCRT_STDOUT_FILENO 1
+#define MSVCRT_STDERR_FILENO 2
+
+/* more file._flag flags, but these conflict with Unix */
+#define MSVCRT__IOFBF 0x0000
+#define MSVCRT__IONBF 0x0004
+#define MSVCRT__IOLBF 0x0040
+
+#define MSVCRT_FILENAME_MAX 260
+#define MSVCRT_stdin (MSVCRT__iob+MSVCRT_STDIN_FILENO)
+#define MSVCRT_stdout (MSVCRT__iob+MSVCRT_STDOUT_FILENO)
+#define MSVCRT_stderr (MSVCRT__iob+MSVCRT_STDERR_FILENO)
+
+#define MSVCRT__P_WAIT 0
+#define MSVCRT__P_NOWAIT 1
+#define MSVCRT__P_OVERLAY 2
+#define MSVCRT__P_NOWAITO 3
+#define MSVCRT__P_DETACH 4
+
+#define MSVCRT_EPERM 1
+#define MSVCRT_ENOENT 2
+#define MSVCRT_ESRCH 3
+#define MSVCRT_EINTR 4
+#define MSVCRT_EIO 5
+#define MSVCRT_ENXIO 6
+#define MSVCRT_E2BIG 7
+#define MSVCRT_ENOEXEC 8
+#define MSVCRT_EBADF 9
+#define MSVCRT_ECHILD 10
+#define MSVCRT_EAGAIN 11
+#define MSVCRT_ENOMEM 12
+#define MSVCRT_EACCES 13
+#define MSVCRT_EFAULT 14
+#define MSVCRT_EBUSY 16
+#define MSVCRT_EEXIST 17
+#define MSVCRT_EXDEV 18
+#define MSVCRT_ENODEV 19
+#define MSVCRT_ENOTDIR 20
+#define MSVCRT_EISDIR 21
+#define MSVCRT_EINVAL 22
+#define MSVCRT_ENFILE 23
+#define MSVCRT_EMFILE 24
+#define MSVCRT_ENOTTY 25
+#define MSVCRT_EFBIG 27
+#define MSVCRT_ENOSPC 28
+#define MSVCRT_ESPIPE 29
+#define MSVCRT_EROFS 30
+#define MSVCRT_EMLINK 31
+#define MSVCRT_EPIPE 32
+#define MSVCRT_EDOM 33
+#define MSVCRT_ERANGE 34
+#define MSVCRT_EDEADLK 36
+#define MSVCRT_EDEADLOCK MSVCRT_EDEADLK
+#define MSVCRT_ENAMETOOLONG 38
+#define MSVCRT_ENOLCK 39
+#define MSVCRT_ENOSYS 40
+#define MSVCRT_ENOTEMPTY 41
+
+#define MSVCRT_LC_ALL 0
+#define MSVCRT_LC_COLLATE 1
+#define MSVCRT_LC_CTYPE 2
+#define MSVCRT_LC_MONETARY 3
+#define MSVCRT_LC_NUMERIC 4
+#define MSVCRT_LC_TIME 5
+#define MSVCRT_LC_MIN MSVCRT_LC_ALL
+#define MSVCRT_LC_MAX MSVCRT_LC_TIME
+
+#define MSVCRT__HEAPEMPTY -1
+#define MSVCRT__HEAPOK -2
+#define MSVCRT__HEAPBADBEGIN -3
+#define MSVCRT__HEAPBADNODE -4
+#define MSVCRT__HEAPEND -5
+#define MSVCRT__HEAPBADPTR -6
+
+#define MSVCRT__FREEENTRY 0
+#define MSVCRT__USEDENTRY 1
+
+#define MSVCRT__OUT_TO_DEFAULT 0
+#define MSVCRT__REPORT_ERRMODE 3
+
+/* ASCII char classification table - binary compatible */
+#define MSVCRT__UPPER 0x0001 /* C1_UPPER */
+#define MSVCRT__LOWER 0x0002 /* C1_LOWER */
+#define MSVCRT__DIGIT 0x0004 /* C1_DIGIT */
+#define MSVCRT__SPACE 0x0008 /* C1_SPACE */
+#define MSVCRT__PUNCT 0x0010 /* C1_PUNCT */
+#define MSVCRT__CONTROL 0x0020 /* C1_CNTRL */
+#define MSVCRT__BLANK 0x0040 /* C1_BLANK */
+#define MSVCRT__HEX 0x0080 /* C1_XDIGIT */
+#define MSVCRT__LEADBYTE 0x8000
+#define MSVCRT__ALPHA (0x0100|MSVCRT__UPPER|MSVCRT__LOWER) /* (C1_ALPHA|_UPPER|_LOWER) */
+
+#define MSVCRT__IOREAD 0x0001
+#define MSVCRT__IOWRT 0x0002
+#define MSVCRT__IOMYBUF 0x0008
+#define MSVCRT__IOEOF 0x0010
+#define MSVCRT__IOERR 0x0020
+#define MSVCRT__IOSTRG 0x0040
+#define MSVCRT__IORW 0x0080
+
+#define MSVCRT__S_IEXEC 0x0040
+#define MSVCRT__S_IWRITE 0x0080
+#define MSVCRT__S_IREAD 0x0100
+#define MSVCRT__S_IFIFO 0x1000
+#define MSVCRT__S_IFCHR 0x2000
+#define MSVCRT__S_IFDIR 0x4000
+#define MSVCRT__S_IFREG 0x8000
+#define MSVCRT__S_IFMT 0xF000
+
+#define MSVCRT__LK_UNLCK 0
+#define MSVCRT__LK_LOCK 1
+#define MSVCRT__LK_NBLCK 2
+#define MSVCRT__LK_RLCK 3
+#define MSVCRT__LK_NBRLCK 4
+
+#define MSVCRT__SH_COMPAT 0x00 /* Compatibility */
+#define MSVCRT__SH_DENYRW 0x10 /* Deny read/write */
+#define MSVCRT__SH_DENYWR 0x20 /* Deny write */
+#define MSVCRT__SH_DENYRD 0x30 /* Deny read */
+#define MSVCRT__SH_DENYNO 0x40 /* Deny nothing */
+
+#define MSVCRT__O_RDONLY 0
+#define MSVCRT__O_WRONLY 1
+#define MSVCRT__O_RDWR 2
+#define MSVCRT__O_ACCMODE (MSVCRT__O_RDONLY|MSVCRT__O_WRONLY|MSVCRT__O_RDWR)
+#define MSVCRT__O_APPEND 0x0008
+#define MSVCRT__O_RANDOM 0x0010
+#define MSVCRT__O_SEQUENTIAL 0x0020
+#define MSVCRT__O_TEMPORARY 0x0040
+#define MSVCRT__O_NOINHERIT 0x0080
+#define MSVCRT__O_CREAT 0x0100
+#define MSVCRT__O_TRUNC 0x0200
+#define MSVCRT__O_EXCL 0x0400
+#define MSVCRT__O_SHORT_LIVED 0x1000
+#define MSVCRT__O_TEXT 0x4000
+#define MSVCRT__O_BINARY 0x8000
+#define MSVCRT__O_RAW MSVCRT__O_BINARY
+
+/* _statusfp bit flags */
+#define MSVCRT__SW_INEXACT 0x00000001 /* inexact (precision) */
+#define MSVCRT__SW_UNDERFLOW 0x00000002 /* underflow */
+#define MSVCRT__SW_OVERFLOW 0x00000004 /* overflow */
+#define MSVCRT__SW_ZERODIVIDE 0x00000008 /* zero divide */
+#define MSVCRT__SW_INVALID 0x00000010 /* invalid */
+
+#define MSVCRT__SW_UNEMULATED 0x00000040 /* unemulated instruction */
+#define MSVCRT__SW_SQRTNEG 0x00000080 /* square root of a neg number */
+#define MSVCRT__SW_STACKOVERFLOW 0x00000200 /* FP stack overflow */
+#define MSVCRT__SW_STACKUNDERFLOW 0x00000400 /* FP stack underflow */
+
+#define MSVCRT__SW_DENORMAL 0x00080000 /* denormal status bit */
+
+/* fpclass constants */
+#define MSVCRT__FPCLASS_SNAN 0x0001 /* Signaling "Not a Number" */
+#define MSVCRT__FPCLASS_QNAN 0x0002 /* Quiet "Not a Number" */
+#define MSVCRT__FPCLASS_NINF 0x0004 /* Negative Infinity */
+#define MSVCRT__FPCLASS_NN 0x0008 /* Negative Normal */
+#define MSVCRT__FPCLASS_ND 0x0010 /* Negative Denormal */
+#define MSVCRT__FPCLASS_NZ 0x0020 /* Negative Zero */
+#define MSVCRT__FPCLASS_PZ 0x0040 /* Positive Zero */
+#define MSVCRT__FPCLASS_PD 0x0080 /* Positive Denormal */
+#define MSVCRT__FPCLASS_PN 0x0100 /* Positive Normal */
+#define MSVCRT__FPCLASS_PINF 0x0200 /* Positive Infinity */
+
+#define MSVCRT__EM_INVALID 0x00000010
+#define MSVCRT__EM_DENORMAL 0x00080000
+#define MSVCRT__EM_ZERODIVIDE 0x00000008
+#define MSVCRT__EM_OVERFLOW 0x00000004
+#define MSVCRT__EM_UNDERFLOW 0x00000002
+#define MSVCRT__EM_INEXACT 0x00000001
+#define MSVCRT__IC_AFFINE 0x00040000
+#define MSVCRT__IC_PROJECTIVE 0x00000000
+#define MSVCRT__RC_CHOP 0x00000300
+#define MSVCRT__RC_UP 0x00000200
+#define MSVCRT__RC_DOWN 0x00000100
+#define MSVCRT__RC_NEAR 0x00000000
+#define MSVCRT__PC_24 0x00020000
+#define MSVCRT__PC_53 0x00010000
+#define MSVCRT__PC_64 0x00000000
+
+void MSVCRT_free(void*);
+void* MSVCRT_malloc(MSVCRT_size_t);
+void* MSVCRT_calloc(MSVCRT_size_t,MSVCRT_size_t);
+void* MSVCRT_realloc(void*,MSVCRT_size_t);
+
+int MSVCRT_iswalpha(MSVCRT_wint_t);
+int MSVCRT_iswspace(MSVCRT_wint_t);
+int MSVCRT_iswdigit(MSVCRT_wint_t);
+int MSVCRT_isleadbyte(int);
+
+int MSVCRT_fgetc(MSVCRT_FILE*);
+int MSVCRT_ungetc(int,MSVCRT_FILE*);
+MSVCRT_wint_t MSVCRT_fgetwc(MSVCRT_FILE*);
+MSVCRT_wint_t MSVCRT_ungetwc(MSVCRT_wint_t,MSVCRT_FILE*);
+void MSVCRT__exit(int);
+void MSVCRT_abort();
+unsigned long* MSVCRT___doserrno(void);
+int* MSVCRT__errno(void);
+char* MSVCRT_getenv(const char*);
+char* MSVCRT_setlocale(int,const char*);
+int MSVCRT_fclose(MSVCRT_FILE*);
+void MSVCRT_terminate();
+MSVCRT_FILE* MSVCRT__p__iob(void);
+MSVCRT_time_t MSVCRT_time(MSVCRT_time_t*);
+
+#ifndef __WINE_MSVCRT_TEST
+int _write(int,const void*,unsigned int);
+int _getch(void);
+int _vsnwprintf(MSVCRT_wchar_t*,MSVCRT_size_t,const MSVCRT_wchar_t*,va_list);
+int _ismbstrail(const unsigned char* start, const unsigned char* str);
+int _spawnve(int,const char*,const char* const *,const char* const *);
+void _searchenv(const char*,const char*,char*);
+int _getdrive(void);
+char* _strdup(const char*);
+char* _strnset(char*,int,MSVCRT_size_t);
+char* _strset(char*,int);
+int _ungetch(int);
+int _cputs(const char*);
+int _cprintf(const char*,...);
+int _snprintf(char*,size_t,const char*,...);
+char*** __p__environ(void);
+int* __p___mb_cur_max(void);
+unsigned int* __p__fmode(void);
+MSVCRT_wchar_t* _wcsdup(const MSVCRT_wchar_t*);
+MSVCRT_wchar_t*** __p__wenviron(void);
+#endif
+
+/* FIXME: Functions that we forward to. They shouldn't be defined
+ * here, but for now they're not declared in the standard headers.
+ */
+void _splitpath(const char*,char*,char*,char*,char*);
+char* _strlwr(char*);
+char* _strupr(char*);
+
#endif /* __WINE_MSVCRT_H */
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 4ed4111..0203348 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -137,8 +137,8 @@
@ cdecl __threadhandle() kernel32.GetCurrentThread
@ cdecl __threadid() kernel32.GetCurrentThreadId
@ cdecl __toascii(long) MSVCRT___toascii
-@ cdecl __unDName(ptr str long ptr ptr long) MSVCRT___unDName
-@ cdecl __unDNameEx(ptr str long ptr ptr ptr long) MSVCRT___unDNameEx
+@ cdecl __unDName(ptr str long ptr ptr long)
+@ cdecl __unDNameEx(ptr str long ptr ptr ptr long)
@ extern __unguarded_readlc_active MSVCRT___unguarded_readlc_active
@ extern __wargv MSVCRT___wargv
@ cdecl __wgetmainargs(ptr ptr ptr long ptr)
@@ -161,7 +161,7 @@
@ cdecl _adj_fptan()
@ cdecl _adjust_fdiv()
@ extern _aexit_rtn
-@ cdecl _amsg_exit(long) MSVCRT__amsg_exit
+@ cdecl _amsg_exit(long)
@ cdecl _assert(str str long) MSVCRT__assert
@ stub _atodbl #(ptr str)
@ cdecl -ret64 _atoi64(str) ntdll._atoi64
@@ -200,7 +200,7 @@
@ cdecl _ecvt(double long ptr ptr)
@ cdecl _endthread ()
@ cdecl _endthreadex(long)
-@ extern _environ MSVCRT__environ
+@ extern _environ
@ cdecl _eof(long)
@ cdecl _errno() MSVCRT__errno
@ cdecl _except_handler2(ptr ptr ptr ptr)
@@ -504,7 +504,7 @@
@ cdecl _wcsset(wstr long)
@ cdecl _wcsupr(wstr) ntdll._wcsupr
@ stub _wctime #(ptr)
-@ extern _wenviron MSVCRT__wenviron
+@ extern _wenviron
@ stub _wexecl #(wstr wstr) varargs
@ stub _wexecle #(wstr wstr) varargs
@ stub _wexeclp #(wstr wstr) varargs
diff --git a/dlls/msvcrt/process.c b/dlls/msvcrt/process.c
index 889eeba..8cee161 100644
--- a/dlls/msvcrt/process.c
+++ b/dlls/msvcrt/process.c
@@ -30,13 +30,6 @@
#include <stdarg.h>
#include "msvcrt.h"
-#include "msvcrt/errno.h"
-
-#include "msvcrt/stdio.h"
-#include "msvcrt/process.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -50,7 +43,7 @@
if (sizeof(HANDLE) != sizeof(int))
WARN("This call is unsuitable for your architecture\n");
- if ((unsigned)flags > _P_DETACH)
+ if ((unsigned)flags > MSVCRT__P_DETACH)
{
*MSVCRT__errno() = MSVCRT_EINVAL;
return -1;
@@ -62,30 +55,30 @@
si.cb = sizeof(si);
if (!CreateProcessA(exe, cmdline, NULL, NULL, TRUE,
- flags == _P_DETACH ? DETACHED_PROCESS : 0,
+ flags == MSVCRT__P_DETACH ? DETACHED_PROCESS : 0,
env, NULL, &si, &pi))
{
- MSVCRT__set_errno(GetLastError());
+ msvcrt_set_errno(GetLastError());
return -1;
}
switch(flags)
{
- case _P_WAIT:
+ case MSVCRT__P_WAIT:
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess,&pi.dwProcessId);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return (int)pi.dwProcessId;
- case _P_DETACH:
+ case MSVCRT__P_DETACH:
CloseHandle(pi.hProcess);
pi.hProcess = 0;
/* fall through */
- case _P_NOWAIT:
- case _P_NOWAITO:
+ case MSVCRT__P_NOWAIT:
+ case MSVCRT__P_NOWAITO:
CloseHandle(pi.hThread);
return (int)pi.hProcess;
- case _P_OVERLAY:
+ case MSVCRT__P_OVERLAY:
MSVCRT__exit(0);
}
return -1; /* can't reach here */
@@ -218,7 +211,7 @@
*MSVCRT___doserrno() = doserrno;
}
else
- MSVCRT__set_errno(doserrno);
+ msvcrt_set_errno(doserrno);
return status ? *status = -1 : -1;
}
@@ -239,7 +232,7 @@
args = msvcrt_valisttos(arg0, ap, ' ');
va_end(ap);
- ret = msvcrt_spawn(_P_OVERLAY, name, args, NULL);
+ ret = msvcrt_spawn(MSVCRT__P_OVERLAY, name, args, NULL);
MSVCRT_free(args);
return ret;
@@ -273,7 +266,7 @@
args = msvcrt_valisttos(arg0, ap, ' ');
va_end(ap);
- ret = msvcrt_spawn(_P_OVERLAY, fullname[0] ? fullname : name, args, NULL);
+ ret = msvcrt_spawn(MSVCRT__P_OVERLAY, fullname[0] ? fullname : name, args, NULL);
MSVCRT_free(args);
return ret;
@@ -296,7 +289,7 @@
*/
int _execv(const char* name, char* const* argv)
{
- return _spawnve(_P_OVERLAY, name, (const char* const*) argv, NULL);
+ return _spawnve(MSVCRT__P_OVERLAY, name, (const char* const*) argv, NULL);
}
/*********************************************************************
@@ -307,7 +300,7 @@
*/
int _execve(const char* name, char* const* argv, const char* const* envv)
{
- return _spawnve(_P_OVERLAY, name, (const char* const*) argv, envv);
+ return _spawnve(MSVCRT__P_OVERLAY, name, (const char* const*) argv, envv);
}
/*********************************************************************
@@ -321,7 +314,7 @@
char fullname[MAX_PATH];
_searchenv(name, "PATH", fullname);
- return _spawnve(_P_OVERLAY, fullname[0] ? fullname : name,
+ return _spawnve(MSVCRT__P_OVERLAY, fullname[0] ? fullname : name,
(const char* const*) argv, envv);
}
@@ -504,7 +497,7 @@
/* Make a writable copy for CreateProcess */
cmdcopy=_strdup(cmd);
/* FIXME: should probably launch cmd interpreter in COMSPEC */
- res=msvcrt_spawn(_P_WAIT, NULL, cmdcopy, NULL);
+ res=msvcrt_spawn(MSVCRT__P_WAIT, NULL, cmdcopy, NULL);
MSVCRT_free(cmdcopy);
return res;
}
@@ -527,7 +520,7 @@
else
{
int err = GetLastError();
- MSVCRT__set_errno(err);
+ msvcrt_set_errno(err);
return err;
}
}
diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c
index e7b240b..82de826 100644
--- a/dlls/msvcrt/scanf.c
+++ b/dlls/msvcrt/scanf.c
@@ -30,10 +30,6 @@
#include "winreg.h"
#include "winternl.h"
#include "msvcrt.h"
-#include "msvcrt/conio.h"
-#include "msvcrt/io.h"
-#include "msvcrt/stdio.h"
-#include "msvcrt/wctype.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index b478a39..f86bfbf 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -22,9 +22,6 @@
*/
#include "msvcrt.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
diff --git a/dlls/msvcrt/tests/.cvsignore b/dlls/msvcrt/tests/.cvsignore
index 1d08f65..bd56b02 100644
--- a/dlls/msvcrt/tests/.cvsignore
+++ b/dlls/msvcrt/tests/.cvsignore
@@ -1,6 +1,7 @@
Makefile
cpp.ok
file.ok
+headers.ok
heap.ok
scanf.ok
string.ok
diff --git a/dlls/msvcrt/tests/Makefile.in b/dlls/msvcrt/tests/Makefile.in
index d940f6b..785a37c 100644
--- a/dlls/msvcrt/tests/Makefile.in
+++ b/dlls/msvcrt/tests/Makefile.in
@@ -4,11 +4,12 @@
VPATH = @srcdir@
TESTDLL = msvcrt.dll
IMPORTS = msvcrt
-EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt
+EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt -I$(SRCDIR)/..
CTESTS = \
cpp.c \
file.c \
+ headers.c \
heap.c \
scanf.c \
string.c \
diff --git a/dlls/msvcrt/tests/headers.c b/dlls/msvcrt/tests/headers.c
new file mode 100644
index 0000000..019d0ca
--- /dev/null
+++ b/dlls/msvcrt/tests/headers.c
@@ -0,0 +1,451 @@
+/*
+ * Copyright 2004 Dimitrie O. Paun
+ *
+ * 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
+ *
+ * This file contains tests to ensure consystencies between symbols
+ * defined in the msvcrt headers, and corresponding duplciated
+ * symbol defined in msvcrt.h (prefixed by MSVCRT_).
+ */
+
+#define __WINE_MSVCRT_TEST
+#include "dos.h"
+#include "math.h"
+#include "stdlib.h"
+#include "eh.h"
+#include "io.h"
+#include "errno.h"
+#include "unistd.h"
+#include "fcntl.h"
+#include "malloc.h"
+#include "limits.h"
+#include "mbctype.h"
+#include "stdio.h"
+#include "wchar.h"
+#include "ctype.h"
+#include "crtdbg.h"
+#include "share.h"
+#include "search.h"
+#include "wctype.h"
+#include "float.h"
+#include "stddef.h"
+#include "mbstring.h"
+#include "sys/unistd.h"
+#include "sys/locking.h"
+#include "sys/utime.h"
+#include "sys/types.h"
+#include "sys/stat.h"
+#include "sys/timeb.h"
+#include "direct.h"
+#include "conio.h"
+#include "dirent.h"
+#include "process.h"
+#include "string.h"
+#include "time.h"
+#include "locale.h"
+#include "setjmp.h"
+#include "msvcrt.h"
+#include "wine/test.h"
+
+#ifdef __GNUC__
+#define TYPEOF(type) typeof(type)
+#else
+#define TYPEOF(type) int
+#endif
+#define MSVCRT(x) MSVCRT_##x
+#define OFFSET(T,F) ((unsigned int)((char *)&((struct T *)0L)->F - (char *)0L))
+#define CHECK_SIZE(e) ok(sizeof(e) == sizeof(MSVCRT(e)), "Element has different sizes\n")
+#define CHECK_TYPE(t) { TYPEOF(t) a = 0; TYPEOF(MSVCRT(t)) b = 0; a = b; CHECK_SIZE(t); }
+#define CHECK_STRUCT(s) ok(sizeof(struct s) == sizeof(struct MSVCRT(s)), "Struct has different sizes\n")
+#define CHECK_FIELD(s,e) ok(OFFSET(s,e) == OFFSET(MSVCRT(s),e), "Bad offset\n")
+#define CHECK_DEF(n,d1,d2) ok(d1 == d2, "Defines (MSVCRT_)%s are different: '%d' vs. '%d'\n", n, d1, d2)
+
+/************* Checking types ***************/
+void test_types()
+{
+ CHECK_TYPE(wchar_t);
+ CHECK_TYPE(wint_t);
+ CHECK_TYPE(wctype_t);
+ CHECK_TYPE(_ino_t);
+ CHECK_TYPE(_fsize_t);
+ CHECK_TYPE(size_t);
+ CHECK_TYPE(_dev_t);
+ CHECK_TYPE(_off_t);
+ CHECK_TYPE(clock_t);
+ CHECK_TYPE(time_t);
+ CHECK_TYPE(fpos_t);
+ CHECK_SIZE(FILE);
+ CHECK_TYPE(terminate_handler);
+ CHECK_TYPE(terminate_function);
+ CHECK_TYPE(unexpected_handler);
+ CHECK_TYPE(unexpected_function);
+ CHECK_TYPE(_se_translator_function);
+ CHECK_TYPE(_beginthread_start_routine_t);
+ CHECK_TYPE(_onexit_t);
+}
+
+/************* Checking structs ***************/
+void test_structs()
+{
+ CHECK_STRUCT(tm);
+ CHECK_FIELD(tm, tm_sec);
+ CHECK_FIELD(tm, tm_min);
+ CHECK_FIELD(tm, tm_hour);
+ CHECK_FIELD(tm, tm_mday);
+ CHECK_FIELD(tm, tm_mon);
+ CHECK_FIELD(tm, tm_year);
+ CHECK_FIELD(tm, tm_wday);
+ CHECK_FIELD(tm, tm_yday);
+ CHECK_FIELD(tm, tm_isdst);
+ CHECK_STRUCT(_timeb);
+ CHECK_FIELD(_timeb, time);
+ CHECK_FIELD(_timeb, millitm);
+ CHECK_FIELD(_timeb, timezone);
+ CHECK_FIELD(_timeb, dstflag);
+ CHECK_STRUCT(_iobuf);
+ CHECK_FIELD(_iobuf, _ptr);
+ CHECK_FIELD(_iobuf, _cnt);
+ CHECK_FIELD(_iobuf, _base);
+ CHECK_FIELD(_iobuf, _flag);
+ CHECK_FIELD(_iobuf, _file);
+ CHECK_FIELD(_iobuf, _charbuf);
+ CHECK_FIELD(_iobuf, _bufsiz);
+ CHECK_FIELD(_iobuf, _tmpfname);
+ CHECK_STRUCT(lconv);
+ CHECK_FIELD(lconv, decimal_point);
+ CHECK_FIELD(lconv, thousands_sep);
+ CHECK_FIELD(lconv, grouping);
+ CHECK_FIELD(lconv, int_curr_symbol);
+ CHECK_FIELD(lconv, currency_symbol);
+ CHECK_FIELD(lconv, mon_decimal_point);
+ CHECK_FIELD(lconv, mon_thousands_sep);
+ CHECK_FIELD(lconv, mon_grouping);
+ CHECK_FIELD(lconv, positive_sign);
+ CHECK_FIELD(lconv, negative_sign);
+ CHECK_FIELD(lconv, int_frac_digits);
+ CHECK_FIELD(lconv, frac_digits);
+ CHECK_FIELD(lconv, p_cs_precedes);
+ CHECK_FIELD(lconv, p_sep_by_space);
+ CHECK_FIELD(lconv, n_cs_precedes);
+ CHECK_FIELD(lconv, n_sep_by_space);
+ CHECK_FIELD(lconv, p_sign_posn);
+ CHECK_FIELD(lconv, n_sign_posn);
+ CHECK_STRUCT(_exception);
+ CHECK_FIELD(_exception, type);
+ CHECK_FIELD(_exception, name);
+ CHECK_FIELD(_exception, arg1);
+ CHECK_FIELD(_exception, arg2);
+ CHECK_FIELD(_exception, retval);
+ CHECK_STRUCT(_complex);
+ CHECK_FIELD(_complex, x);
+ CHECK_FIELD(_complex, y);
+ CHECK_STRUCT(_heapinfo);
+ CHECK_FIELD(_heapinfo, _pentry);
+ CHECK_FIELD(_heapinfo, _size);
+ CHECK_FIELD(_heapinfo, _useflag);
+ CHECK_STRUCT(__JUMP_BUFFER);
+ CHECK_FIELD(__JUMP_BUFFER, Ebp);
+ CHECK_FIELD(__JUMP_BUFFER, Ebx);
+ CHECK_FIELD(__JUMP_BUFFER, Edi);
+ CHECK_FIELD(__JUMP_BUFFER, Esi);
+ CHECK_FIELD(__JUMP_BUFFER, Esp);
+ CHECK_FIELD(__JUMP_BUFFER, Eip);
+ CHECK_FIELD(__JUMP_BUFFER, Registration);
+ CHECK_FIELD(__JUMP_BUFFER, TryLevel);
+ CHECK_FIELD(__JUMP_BUFFER, Cookie);
+ CHECK_FIELD(__JUMP_BUFFER, UnwindFunc);
+ CHECK_FIELD(__JUMP_BUFFER, UnwindData[6]);
+ CHECK_STRUCT(_diskfree_t);
+ CHECK_FIELD(_diskfree_t, total_clusters);
+ CHECK_FIELD(_diskfree_t, avail_clusters);
+ CHECK_FIELD(_diskfree_t, sectors_per_cluster);
+ CHECK_FIELD(_diskfree_t, bytes_per_sector);
+ CHECK_STRUCT(_finddata_t);
+ CHECK_FIELD(_finddata_t, attrib);
+ CHECK_FIELD(_finddata_t, time_create);
+ CHECK_FIELD(_finddata_t, time_access);
+ CHECK_FIELD(_finddata_t, time_write);
+ CHECK_FIELD(_finddata_t, size);
+ CHECK_FIELD(_finddata_t, name[260]);
+ CHECK_STRUCT(_finddatai64_t);
+ CHECK_FIELD(_finddatai64_t, attrib);
+ CHECK_FIELD(_finddatai64_t, time_create);
+ CHECK_FIELD(_finddatai64_t, time_access);
+ CHECK_FIELD(_finddatai64_t, time_write);
+ CHECK_FIELD(_finddatai64_t, size);
+ CHECK_FIELD(_finddatai64_t, name[260]);
+ CHECK_STRUCT(_wfinddata_t);
+ CHECK_FIELD(_wfinddata_t, attrib);
+ CHECK_FIELD(_wfinddata_t, time_create);
+ CHECK_FIELD(_wfinddata_t, time_access);
+ CHECK_FIELD(_wfinddata_t, time_write);
+ CHECK_FIELD(_wfinddata_t, size);
+ CHECK_FIELD(_wfinddata_t, name[260]);
+ CHECK_STRUCT(_wfinddatai64_t);
+ CHECK_FIELD(_wfinddatai64_t, attrib);
+ CHECK_FIELD(_wfinddatai64_t, time_create);
+ CHECK_FIELD(_wfinddatai64_t, time_access);
+ CHECK_FIELD(_wfinddatai64_t, time_write);
+ CHECK_FIELD(_wfinddatai64_t, size);
+ CHECK_FIELD(_wfinddatai64_t, name[260]);
+ CHECK_STRUCT(_utimbuf);
+ CHECK_FIELD(_utimbuf, actime);
+ CHECK_FIELD(_utimbuf, modtime);
+ CHECK_STRUCT(_stat);
+ CHECK_FIELD(_stat, st_dev);
+ CHECK_FIELD(_stat, st_ino);
+ CHECK_FIELD(_stat, st_mode);
+ CHECK_FIELD(_stat, st_nlink);
+ CHECK_FIELD(_stat, st_uid);
+ CHECK_FIELD(_stat, st_gid);
+ CHECK_FIELD(_stat, st_rdev);
+ CHECK_FIELD(_stat, st_size);
+ CHECK_FIELD(_stat, st_atime);
+ CHECK_FIELD(_stat, st_mtime);
+ CHECK_FIELD(_stat, st_ctime);
+ CHECK_FIELD(_stat, st_dev);
+ CHECK_FIELD(_stat, st_ino);
+ CHECK_FIELD(_stat, st_mode);
+ CHECK_FIELD(_stat, st_nlink);
+ CHECK_FIELD(_stat, st_uid);
+ CHECK_FIELD(_stat, st_gid);
+ CHECK_FIELD(_stat, st_rdev);
+ CHECK_FIELD(_stat, st_size);
+ CHECK_FIELD(_stat, st_atime);
+ CHECK_FIELD(_stat, st_mtime);
+ CHECK_FIELD(_stat, st_ctime);
+ CHECK_FIELD(_stat, st_dev);
+ CHECK_FIELD(_stat, st_ino);
+ CHECK_FIELD(_stat, st_mode);
+ CHECK_FIELD(_stat, st_nlink);
+ CHECK_FIELD(_stat, st_uid);
+ CHECK_FIELD(_stat, st_gid);
+ CHECK_FIELD(_stat, st_rdev);
+ CHECK_FIELD(_stat, st_size);
+ CHECK_FIELD(_stat, st_atime);
+ CHECK_FIELD(_stat, st_mtime);
+ CHECK_FIELD(_stat, st_ctime);
+ CHECK_STRUCT(stat);
+ CHECK_FIELD(stat, st_dev);
+ CHECK_FIELD(stat, st_ino);
+ CHECK_FIELD(stat, st_mode);
+ CHECK_FIELD(stat, st_nlink);
+ CHECK_FIELD(stat, st_uid);
+ CHECK_FIELD(stat, st_gid);
+ CHECK_FIELD(stat, st_rdev);
+ CHECK_FIELD(stat, st_size);
+ CHECK_FIELD(stat, st_atime);
+ CHECK_FIELD(stat, st_mtime);
+ CHECK_FIELD(stat, st_ctime);
+ CHECK_FIELD(stat, st_dev);
+ CHECK_FIELD(stat, st_ino);
+ CHECK_FIELD(stat, st_mode);
+ CHECK_FIELD(stat, st_nlink);
+ CHECK_FIELD(stat, st_uid);
+ CHECK_FIELD(stat, st_gid);
+ CHECK_FIELD(stat, st_rdev);
+ CHECK_FIELD(stat, st_size);
+ CHECK_FIELD(stat, st_atime);
+ CHECK_FIELD(stat, st_mtime);
+ CHECK_FIELD(stat, st_ctime);
+ CHECK_FIELD(stat, st_dev);
+ CHECK_FIELD(stat, st_ino);
+ CHECK_FIELD(stat, st_mode);
+ CHECK_FIELD(stat, st_nlink);
+ CHECK_FIELD(stat, st_uid);
+ CHECK_FIELD(stat, st_gid);
+ CHECK_FIELD(stat, st_rdev);
+ CHECK_FIELD(stat, st_size);
+ CHECK_FIELD(stat, st_atime);
+ CHECK_FIELD(stat, st_mtime);
+ CHECK_FIELD(stat, st_ctime);
+ CHECK_STRUCT(_stati64);
+ CHECK_FIELD(_stati64, st_dev);
+ CHECK_FIELD(_stati64, st_ino);
+ CHECK_FIELD(_stati64, st_mode);
+ CHECK_FIELD(_stati64, st_nlink);
+ CHECK_FIELD(_stati64, st_uid);
+ CHECK_FIELD(_stati64, st_gid);
+ CHECK_FIELD(_stati64, st_rdev);
+ CHECK_FIELD(_stati64, st_size);
+ CHECK_FIELD(_stati64, st_atime);
+ CHECK_FIELD(_stati64, st_mtime);
+ CHECK_FIELD(_stati64, st_ctime);
+}
+
+/************* Checking defines ***************/
+void test_defines()
+{
+ CHECK_DEF("WEOF", WEOF, MSVCRT_WEOF);
+ CHECK_DEF("EOF", EOF, MSVCRT_EOF);
+ CHECK_DEF("TMP_MAX", TMP_MAX, MSVCRT_TMP_MAX);
+ CHECK_DEF("BUFSIZ", BUFSIZ, MSVCRT_BUFSIZ);
+ CHECK_DEF("STDIN_FILENO", STDIN_FILENO, MSVCRT_STDIN_FILENO);
+ CHECK_DEF("STDOUT_FILENO", STDOUT_FILENO, MSVCRT_STDOUT_FILENO);
+ CHECK_DEF("STDERR_FILENO", STDERR_FILENO, MSVCRT_STDERR_FILENO);
+ CHECK_DEF("_IOFBF", _IOFBF, MSVCRT__IOFBF);
+ CHECK_DEF("_IONBF", _IONBF, MSVCRT__IONBF);
+ CHECK_DEF("_IOLBF", _IOLBF, MSVCRT__IOLBF);
+ CHECK_DEF("FILENAME_MAX", FILENAME_MAX, MSVCRT_FILENAME_MAX);
+ CHECK_DEF("_P_WAIT", _P_WAIT, MSVCRT__P_WAIT);
+ CHECK_DEF("_P_NOWAIT", _P_NOWAIT, MSVCRT__P_NOWAIT);
+ CHECK_DEF("_P_OVERLAY", _P_OVERLAY, MSVCRT__P_OVERLAY);
+ CHECK_DEF("_P_NOWAITO", _P_NOWAITO, MSVCRT__P_NOWAITO);
+ CHECK_DEF("_P_DETACH", _P_DETACH, MSVCRT__P_DETACH);
+ CHECK_DEF("EPERM", EPERM, MSVCRT_EPERM);
+ CHECK_DEF("ENOENT", ENOENT, MSVCRT_ENOENT);
+ CHECK_DEF("ESRCH", ESRCH, MSVCRT_ESRCH);
+ CHECK_DEF("EINTR", EINTR, MSVCRT_EINTR);
+ CHECK_DEF("EIO", EIO, MSVCRT_EIO);
+ CHECK_DEF("ENXIO", ENXIO, MSVCRT_ENXIO);
+ CHECK_DEF("E2BIG", E2BIG, MSVCRT_E2BIG);
+ CHECK_DEF("ENOEXEC", ENOEXEC, MSVCRT_ENOEXEC);
+ CHECK_DEF("EBADF", EBADF, MSVCRT_EBADF);
+ CHECK_DEF("ECHILD", ECHILD, MSVCRT_ECHILD);
+ CHECK_DEF("EAGAIN", EAGAIN, MSVCRT_EAGAIN);
+ CHECK_DEF("ENOMEM", ENOMEM, MSVCRT_ENOMEM);
+ CHECK_DEF("EACCES", EACCES, MSVCRT_EACCES);
+ CHECK_DEF("EFAULT", EFAULT, MSVCRT_EFAULT);
+ CHECK_DEF("EBUSY", EBUSY, MSVCRT_EBUSY);
+ CHECK_DEF("EEXIST", EEXIST, MSVCRT_EEXIST);
+ CHECK_DEF("EXDEV", EXDEV, MSVCRT_EXDEV);
+ CHECK_DEF("ENODEV", ENODEV, MSVCRT_ENODEV);
+ CHECK_DEF("ENOTDIR", ENOTDIR, MSVCRT_ENOTDIR);
+ CHECK_DEF("EISDIR", EISDIR, MSVCRT_EISDIR);
+ CHECK_DEF("EINVAL", EINVAL, MSVCRT_EINVAL);
+ CHECK_DEF("ENFILE", ENFILE, MSVCRT_ENFILE);
+ CHECK_DEF("EMFILE", EMFILE, MSVCRT_EMFILE);
+ CHECK_DEF("ENOTTY", ENOTTY, MSVCRT_ENOTTY);
+ CHECK_DEF("EFBIG", EFBIG, MSVCRT_EFBIG);
+ CHECK_DEF("ENOSPC", ENOSPC, MSVCRT_ENOSPC);
+ CHECK_DEF("ESPIPE", ESPIPE, MSVCRT_ESPIPE);
+ CHECK_DEF("EROFS", EROFS, MSVCRT_EROFS);
+ CHECK_DEF("EMLINK", EMLINK, MSVCRT_EMLINK);
+ CHECK_DEF("EPIPE", EPIPE, MSVCRT_EPIPE);
+ CHECK_DEF("EDOM", EDOM, MSVCRT_EDOM);
+ CHECK_DEF("ERANGE", ERANGE, MSVCRT_ERANGE);
+ CHECK_DEF("EDEADLK", EDEADLK, MSVCRT_EDEADLK);
+ CHECK_DEF("EDEADLOCK", EDEADLOCK, MSVCRT_EDEADLOCK);
+ CHECK_DEF("ENAMETOOLONG", ENAMETOOLONG, MSVCRT_ENAMETOOLONG);
+ CHECK_DEF("ENOLCK", ENOLCK, MSVCRT_ENOLCK);
+ CHECK_DEF("ENOSYS", ENOSYS, MSVCRT_ENOSYS);
+ CHECK_DEF("ENOTEMPTY", ENOTEMPTY, MSVCRT_ENOTEMPTY);
+ CHECK_DEF("LC_ALL", LC_ALL, MSVCRT_LC_ALL);
+ CHECK_DEF("LC_COLLATE", LC_COLLATE, MSVCRT_LC_COLLATE);
+ CHECK_DEF("LC_CTYPE", LC_CTYPE, MSVCRT_LC_CTYPE);
+ CHECK_DEF("LC_MONETARY", LC_MONETARY, MSVCRT_LC_MONETARY);
+ CHECK_DEF("LC_NUMERIC", LC_NUMERIC, MSVCRT_LC_NUMERIC);
+ CHECK_DEF("LC_TIME", LC_TIME, MSVCRT_LC_TIME);
+ CHECK_DEF("LC_MIN", LC_MIN, MSVCRT_LC_MIN);
+ CHECK_DEF("LC_MAX", LC_MAX, MSVCRT_LC_MAX);
+ CHECK_DEF("_HEAPEMPTY", _HEAPEMPTY, MSVCRT__HEAPEMPTY);
+ CHECK_DEF("_HEAPOK", _HEAPOK, MSVCRT__HEAPOK);
+ CHECK_DEF("_HEAPBADBEGIN", _HEAPBADBEGIN, MSVCRT__HEAPBADBEGIN);
+ CHECK_DEF("_HEAPBADNODE", _HEAPBADNODE, MSVCRT__HEAPBADNODE);
+ CHECK_DEF("_HEAPEND", _HEAPEND, MSVCRT__HEAPEND);
+ CHECK_DEF("_HEAPBADPTR", _HEAPBADPTR, MSVCRT__HEAPBADPTR);
+ CHECK_DEF("_FREEENTRY", _FREEENTRY, MSVCRT__FREEENTRY);
+ CHECK_DEF("_USEDENTRY", _USEDENTRY, MSVCRT__USEDENTRY);
+ CHECK_DEF("_OUT_TO_DEFAULT", _OUT_TO_DEFAULT, MSVCRT__OUT_TO_DEFAULT);
+ CHECK_DEF("_REPORT_ERRMODE", _REPORT_ERRMODE, MSVCRT__REPORT_ERRMODE);
+ CHECK_DEF("_UPPER", _UPPER, MSVCRT__UPPER);
+ CHECK_DEF("_LOWER", _LOWER, MSVCRT__LOWER);
+ CHECK_DEF("_DIGIT", _DIGIT, MSVCRT__DIGIT);
+ CHECK_DEF("_SPACE", _SPACE, MSVCRT__SPACE);
+ CHECK_DEF("_PUNCT", _PUNCT, MSVCRT__PUNCT);
+ CHECK_DEF("_CONTROL", _CONTROL, MSVCRT__CONTROL);
+ CHECK_DEF("_BLANK", _BLANK, MSVCRT__BLANK);
+ CHECK_DEF("_HEX", _HEX, MSVCRT__HEX);
+ CHECK_DEF("_LEADBYTE", _LEADBYTE, MSVCRT__LEADBYTE);
+ CHECK_DEF("_ALPHA", _ALPHA, MSVCRT__ALPHA);
+ CHECK_DEF("_IOREAD", _IOREAD, MSVCRT__IOREAD);
+ CHECK_DEF("_IOWRT", _IOWRT, MSVCRT__IOWRT);
+ CHECK_DEF("_IOMYBUF", _IOMYBUF, MSVCRT__IOMYBUF);
+ CHECK_DEF("_IOEOF", _IOEOF, MSVCRT__IOEOF);
+ CHECK_DEF("_IOERR", _IOERR, MSVCRT__IOERR);
+ CHECK_DEF("_IOSTRG", _IOSTRG, MSVCRT__IOSTRG);
+ CHECK_DEF("_IORW", _IORW, MSVCRT__IORW);
+ CHECK_DEF("_S_IEXEC", _S_IEXEC, MSVCRT__S_IEXEC);
+ CHECK_DEF("_S_IWRITE", _S_IWRITE, MSVCRT__S_IWRITE);
+ CHECK_DEF("_S_IREAD", _S_IREAD, MSVCRT__S_IREAD);
+ CHECK_DEF("_S_IFIFO", _S_IFIFO, MSVCRT__S_IFIFO);
+ CHECK_DEF("_S_IFCHR", _S_IFCHR, MSVCRT__S_IFCHR);
+ CHECK_DEF("_S_IFDIR", _S_IFDIR, MSVCRT__S_IFDIR);
+ CHECK_DEF("_S_IFREG", _S_IFREG, MSVCRT__S_IFREG);
+ CHECK_DEF("_S_IFMT", _S_IFMT, MSVCRT__S_IFMT);
+ CHECK_DEF("_LK_UNLCK", _LK_UNLCK, MSVCRT__LK_UNLCK);
+ CHECK_DEF("_LK_LOCK", _LK_LOCK, MSVCRT__LK_LOCK);
+ CHECK_DEF("_LK_NBLCK", _LK_NBLCK, MSVCRT__LK_NBLCK);
+ CHECK_DEF("_LK_RLCK", _LK_RLCK, MSVCRT__LK_RLCK);
+ CHECK_DEF("_LK_NBRLCK", _LK_NBRLCK, MSVCRT__LK_NBRLCK);
+ CHECK_DEF("_O_RDONLY", _O_RDONLY, MSVCRT__O_RDONLY);
+ CHECK_DEF("_O_WRONLY", _O_WRONLY, MSVCRT__O_WRONLY);
+ CHECK_DEF("_O_RDWR", _O_RDWR, MSVCRT__O_RDWR);
+ CHECK_DEF("_O_ACCMODE", _O_ACCMODE, MSVCRT__O_ACCMODE);
+ CHECK_DEF("_O_APPEND", _O_APPEND, MSVCRT__O_APPEND);
+ CHECK_DEF("_O_RANDOM", _O_RANDOM, MSVCRT__O_RANDOM);
+ CHECK_DEF("_O_SEQUENTIAL", _O_SEQUENTIAL, MSVCRT__O_SEQUENTIAL);
+ CHECK_DEF("_O_TEMPORARY", _O_TEMPORARY, MSVCRT__O_TEMPORARY);
+ CHECK_DEF("_O_NOINHERIT", _O_NOINHERIT, MSVCRT__O_NOINHERIT);
+ CHECK_DEF("_O_CREAT", _O_CREAT, MSVCRT__O_CREAT);
+ CHECK_DEF("_O_TRUNC", _O_TRUNC, MSVCRT__O_TRUNC);
+ CHECK_DEF("_O_EXCL", _O_EXCL, MSVCRT__O_EXCL);
+ CHECK_DEF("_O_SHORT_LIVED", _O_SHORT_LIVED, MSVCRT__O_SHORT_LIVED);
+ CHECK_DEF("_O_TEXT", _O_TEXT, MSVCRT__O_TEXT);
+ CHECK_DEF("_O_BINARY", _O_BINARY, MSVCRT__O_BINARY);
+ CHECK_DEF("_O_RAW", _O_RAW, MSVCRT__O_RAW);
+ CHECK_DEF("_SW_INEXACT", _SW_INEXACT, MSVCRT__SW_INEXACT);
+ CHECK_DEF("_SW_UNDERFLOW", _SW_UNDERFLOW, MSVCRT__SW_UNDERFLOW);
+ CHECK_DEF("_SW_OVERFLOW", _SW_OVERFLOW, MSVCRT__SW_OVERFLOW);
+ CHECK_DEF("_SW_ZERODIVIDE", _SW_ZERODIVIDE, MSVCRT__SW_ZERODIVIDE);
+ CHECK_DEF("_SW_INVALID", _SW_INVALID, MSVCRT__SW_INVALID);
+ CHECK_DEF("_SW_UNEMULATED", _SW_UNEMULATED, MSVCRT__SW_UNEMULATED);
+ CHECK_DEF("_SW_SQRTNEG", _SW_SQRTNEG, MSVCRT__SW_SQRTNEG);
+ CHECK_DEF("_SW_STACKOVERFLOW", _SW_STACKOVERFLOW, MSVCRT__SW_STACKOVERFLOW);
+ CHECK_DEF("_SW_STACKUNDERFLOW", _SW_STACKUNDERFLOW, MSVCRT__SW_STACKUNDERFLOW);
+ CHECK_DEF("_SW_DENORMAL", _SW_DENORMAL, MSVCRT__SW_DENORMAL);
+ CHECK_DEF("_FPCLASS_SNAN", _FPCLASS_SNAN, MSVCRT__FPCLASS_SNAN);
+ CHECK_DEF("_FPCLASS_QNAN", _FPCLASS_QNAN, MSVCRT__FPCLASS_QNAN);
+ CHECK_DEF("_FPCLASS_NINF", _FPCLASS_NINF, MSVCRT__FPCLASS_NINF);
+ CHECK_DEF("_FPCLASS_NN", _FPCLASS_NN, MSVCRT__FPCLASS_NN);
+ CHECK_DEF("_FPCLASS_ND", _FPCLASS_ND, MSVCRT__FPCLASS_ND);
+ CHECK_DEF("_FPCLASS_NZ", _FPCLASS_NZ, MSVCRT__FPCLASS_NZ);
+ CHECK_DEF("_FPCLASS_PZ", _FPCLASS_PZ, MSVCRT__FPCLASS_PZ);
+ CHECK_DEF("_FPCLASS_PD", _FPCLASS_PD, MSVCRT__FPCLASS_PD);
+ CHECK_DEF("_FPCLASS_PN", _FPCLASS_PN, MSVCRT__FPCLASS_PN);
+ CHECK_DEF("_FPCLASS_PINF", _FPCLASS_PINF, MSVCRT__FPCLASS_PINF);
+ CHECK_DEF("_EM_INVALID", _EM_INVALID, MSVCRT__EM_INVALID);
+ CHECK_DEF("_EM_DENORMAL", _EM_DENORMAL, MSVCRT__EM_DENORMAL);
+ CHECK_DEF("_EM_ZERODIVIDE", _EM_ZERODIVIDE, MSVCRT__EM_ZERODIVIDE);
+ CHECK_DEF("_EM_OVERFLOW", _EM_OVERFLOW, MSVCRT__EM_OVERFLOW);
+ CHECK_DEF("_EM_UNDERFLOW", _EM_UNDERFLOW, MSVCRT__EM_UNDERFLOW);
+ CHECK_DEF("_EM_INEXACT", _EM_INEXACT, MSVCRT__EM_INEXACT);
+ CHECK_DEF("_IC_AFFINE", _IC_AFFINE, MSVCRT__IC_AFFINE);
+ CHECK_DEF("_IC_PROJECTIVE", _IC_PROJECTIVE, MSVCRT__IC_PROJECTIVE);
+ CHECK_DEF("_RC_CHOP", _RC_CHOP, MSVCRT__RC_CHOP);
+ CHECK_DEF("_RC_UP", _RC_UP, MSVCRT__RC_UP);
+ CHECK_DEF("_RC_DOWN", _RC_DOWN, MSVCRT__RC_DOWN);
+ CHECK_DEF("_RC_NEAR", _RC_NEAR, MSVCRT__RC_NEAR);
+ CHECK_DEF("_PC_24", _PC_24, MSVCRT__PC_24);
+ CHECK_DEF("_PC_53", _PC_53, MSVCRT__PC_53);
+ CHECK_DEF("_PC_64", _PC_64, MSVCRT__PC_64);
+}
+
+START_TEST(headers)
+{
+ test_types();
+ test_structs();
+ test_defines();
+}
diff --git a/dlls/msvcrt/thread.c b/dlls/msvcrt/thread.c
index e06db1c..ffe2b0d 100644
--- a/dlls/msvcrt/thread.c
+++ b/dlls/msvcrt/thread.c
@@ -18,10 +18,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "msvcrt.h"
-
-#include "msvcrt/malloc.h"
-#include "msvcrt/process.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -29,7 +25,7 @@
/********************************************************************/
typedef struct {
- _beginthread_start_routine_t start_address;
+ MSVCRT__beginthread_start_routine_t start_address;
void *arglist;
} _beginthread_trampoline_t;
@@ -38,16 +34,16 @@
*
* Return the thread local storage structure.
*/
-MSVCRT_thread_data *msvcrt_get_thread_data(void)
+thread_data_t *msvcrt_get_thread_data(void)
{
- MSVCRT_thread_data *ptr;
+ thread_data_t *ptr;
DWORD err = GetLastError(); /* need to preserve last error */
- if (!(ptr = TlsGetValue( MSVCRT_tls_index )))
+ if (!(ptr = TlsGetValue( msvcrt_tls_index )))
{
if (!(ptr = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*ptr) )))
- MSVCRT__amsg_exit( _RT_THREAD );
- if (!TlsSetValue( MSVCRT_tls_index, ptr )) MSVCRT__amsg_exit( _RT_THREAD );
+ _amsg_exit( _RT_THREAD );
+ if (!TlsSetValue( msvcrt_tls_index, ptr )) _amsg_exit( _RT_THREAD );
}
SetLastError( err );
return ptr;
@@ -75,7 +71,7 @@
* _beginthread (MSVCRT.@)
*/
unsigned long _beginthread(
- _beginthread_start_routine_t start_address, /* [in] Start address of routine that begins execution of new thread */
+ MSVCRT__beginthread_start_routine_t start_address, /* [in] Start address of routine that begins execution of new thread */
unsigned int stack_size, /* [in] Stack size for new thread or 0 */
void *arglist) /* [in] Argument list to be passed to new thread or NULL */
{
@@ -102,7 +98,7 @@
unsigned long _beginthreadex(
void *security, /* [in] Security descriptor for new thread; must be NULL for Windows 9x applications */
unsigned int stack_size, /* [in] Stack size for new thread or 0 */
- _beginthreadex_start_routine_t start_address, /* [in] Start address of routine that begins execution of new thread */
+ MSVCRT__beginthreadex_start_routine_t start_address, /* [in] Start address of routine that begins execution of new thread */
void *arglist, /* [in] Argument list to be passed to new thread or NULL */
unsigned int initflag, /* [in] Initial state of new thread (0 for running or CREATE_SUSPEND for suspended) */
unsigned int *thrdaddr) /* [out] Points to a 32-bit variable that receives the thread identifier */
diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c
index 42ff2be..44cf92a 100644
--- a/dlls/msvcrt/time.c
+++ b/dlls/msvcrt/time.c
@@ -30,11 +30,7 @@
#endif
#include "msvcrt.h"
-#include "msvcrt/sys/timeb.h"
-#include "msvcrt/time.h"
-
#include "winbase.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -221,23 +217,9 @@
}
/*********************************************************************
- * time (MSVCRT.@)
- */
-MSVCRT_time_t MSVCRT_time(MSVCRT_time_t* buf)
-{
- MSVCRT_time_t curtime;
- struct _timeb tb;
-
- _ftime(&tb);
-
- curtime = tb.time;
- return buf ? *buf = curtime : curtime;
-}
-
-/*********************************************************************
* _ftime (MSVCRT.@)
*/
-void _ftime(struct _timeb *buf)
+void _ftime(struct MSVCRT__timeb *buf)
{
TIME_ZONE_INFORMATION tzinfo;
FILETIME ft;
@@ -255,6 +237,20 @@
}
/*********************************************************************
+ * time (MSVCRT.@)
+ */
+MSVCRT_time_t MSVCRT_time(MSVCRT_time_t* buf)
+{
+ MSVCRT_time_t curtime;
+ struct MSVCRT__timeb tb;
+
+ _ftime(&tb);
+
+ curtime = tb.time;
+ return buf ? *buf = curtime : curtime;
+}
+
+/*********************************************************************
* _daylight (MSVCRT.@)
*/
int MSVCRT___daylight = 1; /* FIXME: assume daylight */
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 0a346e6..bae0d7f 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -24,12 +24,6 @@
#include "msvcrt.h"
#include "winnls.h"
#include "wine/unicode.h"
-
-#include "msvcrt/stdio.h"
-#include "msvcrt/stdlib.h"
-#include "msvcrt/string.h"
-#include "msvcrt/wctype.h"
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);