- implement __pioinfo, __badioinfo and _adjust_fdiv - remove all stubs of data item from the spec file, those actually may hide problems.
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 1738d79..1a69336 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c
@@ -60,12 +60,16 @@ #define WX_APPEND 0x20 #define WX_TEXT 0x80 +/* FIXME: this should be allocated dynamically */ #define MSVCRT_MAX_FILES 2048 -static struct { +typedef struct { HANDLE handle; unsigned char wxflag; -} MSVCRT_fdesc[MSVCRT_MAX_FILES]; + DWORD unkn[7]; /* critical section and init flag */ +} ioinfo; + +static ioinfo MSVCRT_fdesc[MSVCRT_MAX_FILES]; MSVCRT_FILE MSVCRT__iob[3]; @@ -2888,3 +2892,26 @@ va_end(valist); return res; } + +/********************************************************************* + * __pioinfo (MSVCRT.@) + * FIXME: see MSVCRT_MAX_FILES define. + */ +ioinfo * MSVCRT___pioinfo[] = { /* array of pointers to ioinfo arrays [64] */ + &MSVCRT_fdesc[0 * 64], &MSVCRT_fdesc[1 * 64], &MSVCRT_fdesc[2 * 64], + &MSVCRT_fdesc[3 * 64], &MSVCRT_fdesc[4 * 64], &MSVCRT_fdesc[5 * 64], + &MSVCRT_fdesc[6 * 64], &MSVCRT_fdesc[7 * 64], &MSVCRT_fdesc[8 * 64], + &MSVCRT_fdesc[9 * 64], &MSVCRT_fdesc[10 * 64], &MSVCRT_fdesc[11 * 64], + &MSVCRT_fdesc[12 * 64], &MSVCRT_fdesc[13 * 64], &MSVCRT_fdesc[14 * 64], + &MSVCRT_fdesc[15 * 64], &MSVCRT_fdesc[16 * 64], &MSVCRT_fdesc[17 * 64], + &MSVCRT_fdesc[18 * 64], &MSVCRT_fdesc[19 * 64], &MSVCRT_fdesc[20 * 64], + &MSVCRT_fdesc[21 * 64], &MSVCRT_fdesc[22 * 64], &MSVCRT_fdesc[23 * 64], + &MSVCRT_fdesc[24 * 64], &MSVCRT_fdesc[25 * 64], &MSVCRT_fdesc[26 * 64], + &MSVCRT_fdesc[27 * 64], &MSVCRT_fdesc[28 * 64], &MSVCRT_fdesc[29 * 64], + &MSVCRT_fdesc[30 * 64], &MSVCRT_fdesc[31 * 64] +} ; + +/********************************************************************* + * __badioinfo (MSVCRT.@) + */ +ioinfo MSVCRT___badioinfo = { INVALID_HANDLE_VALUE, WX_TEXT };
diff --git a/dlls/msvcrt/main.c b/dlls/msvcrt/main.c index 017cc28..ab7d2d7 100644 --- a/dlls/msvcrt/main.c +++ b/dlls/msvcrt/main.c
@@ -117,4 +117,13 @@ void MSVCRT_I10_OUTPUT(void) { /* FIXME: This is probably data, not a function */ + /* no it is a function. I10 is an Int of 10 bytes */ + /* also known as 80 bit flotaing point (long double */ + /* for some compilers, not MSVC) */ } + +/********************************************************************* + * _adjust_fdiv (MSVCRT.@) + * Used by the MSVC compiler to work around the Pentium FDIV bug. + */ +int MSVCRT__adjust_fdiv = 0;
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index ba646b7..4a12c6e 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec
@@ -83,7 +83,7 @@ @ stub __STRINGTOLD #(ptr ptr str long) @ extern __argc MSVCRT___argc @ extern __argv MSVCRT___argv -@ stub __badioinfo +@ extern __badioinfo MSVCRT___badioinfo @ stub __crtCompareStringA @ stub __crtGetLocaleInfoW @ cdecl __crtLCMapStringA(long long str long ptr long long long) @@ -95,9 +95,9 @@ @ cdecl __isascii(long) MSVCRT___isascii @ cdecl __iscsym(long) MSVCRT___iscsym @ cdecl __iscsymf(long) MSVCRT___iscsymf -@ stub __lc_codepage +# extern __lc_codepage @ stub __lc_collate -@ stub __lc_handle +# extern __lc_handle @ cdecl __lconv_init() @ extern __mb_cur_max MSVCRT___mb_cur_max @ cdecl __p___argc() @@ -129,7 +129,7 @@ @ cdecl __p__winminor() @ cdecl __p__winver() @ cdecl __p__wpgmptr() -@ stub __pioinfo #() +@ extern __pioinfo MSVCRT___pioinfo @ stub __pxcptinfoptrs #() @ cdecl __set_app_type(long) MSVCRT___set_app_type @ extern __setlc_active MSVCRT___setlc_active @@ -159,8 +159,8 @@ @ cdecl _adj_fprem() @ cdecl _adj_fprem1() @ cdecl _adj_fptan() -@ cdecl _adjust_fdiv() -@ extern _aexit_rtn +@ extern _adjust_fdiv MSVCRT__adjust_fdiv +# extern _aexit_rtn @ cdecl _amsg_exit(long) @ cdecl _assert(str str long) MSVCRT__assert @ stub _atodbl #(ptr str) @@ -194,7 +194,7 @@ @ extern _ctype MSVCRT__ctype @ cdecl _cwait(ptr long long) @ extern _daylight MSVCRT___daylight -@ stub _dstbias +# extern _dstbias @ cdecl _dup (long) @ cdecl _dup2 (long long) @ cdecl _ecvt(double long ptr ptr) @@ -221,7 +221,7 @@ @ cdecl _fgetchar() @ cdecl _fgetwchar() @ cdecl _filbuf(ptr) MSVCRT__filbuf -@ stub _fileinfo +# extern _fileinfo @ cdecl _filelength(long) @ cdecl -ret64 _filelengthi64(long) @ cdecl _fileno(ptr) MSVCRT__fileno @@ -334,7 +334,7 @@ @ cdecl _matherr(ptr) MSVCRT__matherr @ cdecl _mbbtombc(long) @ stub _mbbtype #(long long) -@ stub _mbcasemap +# extern _mbcasemap @ cdecl _mbccpy (str str) strcpy @ stub _mbcjistojms #(long) @ stub _mbcjmstojis #(long) @@ -410,7 +410,7 @@ @ cdecl _putenv(str) @ cdecl _putw(long ptr) MSVCRT__putw @ cdecl _putws(wstr) -@ stub _pwctype +# extern _pwctype @ cdecl _read(long ptr long) @ cdecl _rmdir(str) @ cdecl _rmtmp() @@ -469,10 +469,10 @@ @ cdecl _tell(long) @ cdecl -ret64 _telli64(long) @ cdecl _tempnam(str str) -@ stub _timezone # extern +# extern _timezone @ cdecl _tolower(long) MSVCRT__tolower @ cdecl _toupper(long) MSVCRT__toupper -@ stub _tzname # extern +# extern _tzname @ cdecl _tzset() tzset @ cdecl _ui64toa(long long ptr long) ntdll._ui64toa @ cdecl _ui64tow(long long ptr long) ntdll._ui64tow @@ -763,4 +763,4 @@ @ varargs wprintf(wstr) MSVCRT_wprintf @ varargs wscanf(wstr) MSVCRT_wscanf @ cdecl _Gettnames() _Gettnames -@ stub __lc_collate_cp +# extern __lc_collate_cp
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec index 792f73a..4657ccf 100644 --- a/dlls/msvcrt40/msvcrt40.spec +++ b/dlls/msvcrt40/msvcrt40.spec
@@ -572,7 +572,7 @@ @ cdecl _adj_fprem() msvcrt._adj_fprem @ cdecl _adj_fprem1() msvcrt._adj_fprem1 @ cdecl _adj_fptan() msvcrt._adj_fptan -@ cdecl _adjust_fdiv() msvcrt._adjust_fdiv +@ extern _adjust_fdiv msvcrt._adjust_fdiv @ extern _aexit_rtn msvcrt._aexit_rtn @ cdecl _amsg_exit(long) msvcrt._amsg_exit @ cdecl _assert(str str long) msvcrt._assert