- 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