From d0779463da2a8fe91d90322e01a40b34aeb59747 Mon Sep 17 00:00:00 2001
From: Mike McCormack <mike@codeweavers.com>
Date: Mon, 12 Jan 2004 22:12:27 +0000
Subject: [PATCH] Stub enough of MSVCRT40 to make IE4 install work.

---
 configure                   |  3 ++-
 configure.ac                |  1 +
 dlls/Makefile.in            | 13 +++++++++++++
 dlls/msvcrt40/.cvsignore    |  4 ++++
 dlls/msvcrt40/Makefile.in   | 13 +++++++++++++
 dlls/msvcrt40/msvcrt40.c    |  1 +
 dlls/msvcrt40/msvcrt40.spec | 22 ++++++++++++++++++++++
 7 files changed, 56 insertions(+), 1 deletion(-)
 create mode 100644 dlls/msvcrt40/.cvsignore
 create mode 100644 dlls/msvcrt40/Makefile.in
 create mode 100644 dlls/msvcrt40/msvcrt40.c
 create mode 100644 dlls/msvcrt40/msvcrt40.spec

diff --git a/configure b/configure
index eb039b42811..3588635537c 100755
--- a/configure
+++ b/configure
@@ -19106,7 +19106,7 @@ MAKE_LIB_RULES=libs/Makelib.rules
 MAKE_PROG_RULES=programs/Makeprog.rules
 
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/wined3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/ddraw/tests/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/glut32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/iphlpapi/tests/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrtd/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/newdev/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/unicows/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uxtheme/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/uuid/Makefile libs/wine/Makefile libs/wpp/Makefile loader/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/progman/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winebrowser/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile"
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/wined3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/ddraw/tests/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/glut32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/iphlpapi/tests/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrt40/Makefile dlls/msvcrtd/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/newdev/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/unicows/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uxtheme/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/uuid/Makefile libs/wine/Makefile libs/wpp/Makefile loader/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/progman/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winebrowser/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -19711,6 +19711,7 @@ do
   "dlls/msvcrt/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvcrt/Makefile" ;;
   "dlls/msvcrt/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvcrt/tests/Makefile" ;;
   "dlls/msvcrt20/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvcrt20/Makefile" ;;
+  "dlls/msvcrt40/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvcrt40/Makefile" ;;
   "dlls/msvcrtd/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvcrtd/Makefile" ;;
   "dlls/msvideo/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvideo/Makefile" ;;
   "dlls/msvideo/msrle32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/msvideo/msrle32/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index ed5167fb8d1..9807b834f32 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1547,6 +1547,7 @@ dlls/msnet32/Makefile
 dlls/msvcrt/Makefile
 dlls/msvcrt/tests/Makefile
 dlls/msvcrt20/Makefile
+dlls/msvcrt40/Makefile
 dlls/msvcrtd/Makefile
 dlls/msvideo/Makefile
 dlls/msvideo/msrle32/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 77a5045b06e..a7306e0c577 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -68,6 +68,7 @@ BASEDIRS = \
 	msnet32 \
 	msvcrt \
 	msvcrt20 \
+	msvcrt40 \
 	msvcrtd \
 	msvideo \
 	msvideo/msrle32 \
@@ -267,6 +268,7 @@ SYMLINKS = \
 	msrle32.dll$(DLLEXT) \
 	msvcrt.dll$(DLLEXT) \
 	msvcrt20.dll$(DLLEXT) \
+	msvcrt40.dll$(DLLEXT) \
 	msvcrtd.dll$(DLLEXT) \
 	msvfw32.dll$(DLLEXT) \
 	mswsock.dll$(DLLEXT) \
@@ -555,6 +557,9 @@ msvcrt.dll$(DLLEXT): msvcrt/msvcrt.dll$(DLLEXT)
 msvcrt20.dll$(DLLEXT): msvcrt20/msvcrt20.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msvcrt20/msvcrt20.dll$(DLLEXT) $@
 
+msvcrt40.dll$(DLLEXT): msvcrt40/msvcrt40.dll$(DLLEXT)
+	$(RM) $@ && $(LN_S) msvcrt40/msvcrt40.dll$(DLLEXT) $@
+
 msvcrtd.dll$(DLLEXT): msvcrtd/msvcrtd.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msvcrtd/msvcrtd.dll$(DLLEXT) $@
 
@@ -850,6 +855,7 @@ IMPORT_LIBS = \
 	libmsrle32 \
 	libmsvcrt \
 	libmsvcrt20 \
+	libmsvcrt40 \
 	libmsvcrtd \
 	libmsvfw32 \
 	libmswsock \
@@ -1174,6 +1180,11 @@ libmsvcrt20.def: msvcrt20/msvcrt20.spec.def
 libmsvcrt20.a: msvcrt20/msvcrt20.spec.def
 	$(DLLTOOL) -k -l $@ -d msvcrt20/msvcrt20.spec.def
 
+libmsvcrt40.def: msvcrt40/msvcrt40.spec.def
+	$(RM) $@ && $(LN_S) msvcrt40/msvcrt40.spec.def $@
+libmsvcrt40.a: msvcrt40/msvcrt40.spec.def
+	$(DLLTOOL) -k -l $@ -d msvcrt40/msvcrt40.spec.def
+
 libmsvcrtd.def: msvcrtd/msvcrtd.spec.def
 	$(RM) $@ && $(LN_S) msvcrtd/msvcrtd.spec.def $@
 libmsvcrtd.a: msvcrtd/msvcrtd.spec.def
@@ -1493,6 +1504,7 @@ msnet32/msnet32.spec.def: $(WINEBUILD)
 msvideo/msrle32/msrle32.spec.def: $(WINEBUILD)
 msvcrt/msvcrt.spec.def: $(WINEBUILD)
 msvcrt20/msvcrt20.spec.def: $(WINEBUILD)
+msvcrt40/msvcrt40.spec.def: $(WINEBUILD)
 msvcrtd/msvcrtd.spec.def: $(WINEBUILD)
 msvideo/msvfw32.spec.def: $(WINEBUILD)
 mswsock/mswsock.spec.def: $(WINEBUILD)
@@ -1619,6 +1631,7 @@ msnet32/msnet32.dll$(DLLEXT): msnet32
 msvideo/msrle32/msrle32.dll$(DLLEXT): msvideo/msrle32
 msvcrt/msvcrt.dll$(DLLEXT): msvcrt
 msvcrt20/msvcrt20.dll$(DLLEXT): msvcrt20
+msvcrt40/msvcrt40.dll$(DLLEXT): msvcrt40
 msvcrtd/msvcrtd.dll$(DLLEXT): msvcrtd
 msvideo/msvfw32.dll$(DLLEXT): msvideo
 mswsock/mswsock.dll$(DLLEXT): mswsock
diff --git a/dlls/msvcrt40/.cvsignore b/dlls/msvcrt40/.cvsignore
new file mode 100644
index 00000000000..bb0fc29f338
--- /dev/null
+++ b/dlls/msvcrt40/.cvsignore
@@ -0,0 +1,4 @@
+Makefile
+msvcrt40.dll.dbg.c
+msvcrt40.spec.c
+msvcrt40.spec.def
diff --git a/dlls/msvcrt40/Makefile.in b/dlls/msvcrt40/Makefile.in
new file mode 100644
index 00000000000..5d6b04bbbb9
--- /dev/null
+++ b/dlls/msvcrt40/Makefile.in
@@ -0,0 +1,13 @@
+EXTRADEFS = -DUSE_MSVCRT_PREFIX
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = msvcrt40.dll
+IMPORTS   = msvcrt
+
+C_SRCS = msvcrt40.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/dlls/msvcrt40/msvcrt40.c b/dlls/msvcrt40/msvcrt40.c
new file mode 100644
index 00000000000..67a01ed518c
--- /dev/null
+++ b/dlls/msvcrt40/msvcrt40.c
@@ -0,0 +1 @@
+/* nothing here yet */
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
new file mode 100644
index 00000000000..3237ec2b7df
--- /dev/null
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -0,0 +1,22 @@
+@ cdecl ??2@YAPAXI@Z(long) msvcrt.??2@YAPAXI@Z
+@ cdecl ??3@YAXPAX@Z(ptr) msvcrt.??3@YAXPAX@Z
+@ cdecl _adjust_fdiv() msvcrt._adjust_fdiv
+@ cdecl _except_handler3(ptr ptr ptr ptr) msvcrt._except_handler3
+@ cdecl _initterm(ptr ptr) msvcrt._initterm
+@ cdecl _stricmp(str str) msvcrt._stricmp
+@ cdecl _strnicmp(str str long) msvcrt._strnicmp
+@ stub _strnir
+@ cdecl _strupr(str) msvcrt._strupr
+@ cdecl free(ptr) msvcrt.free
+@ cdecl malloc(long) msvcrt.malloc
+@ cdecl mbstowcs(ptr str long) msvcrt.mbstowcs
+@ cdecl rand() msvcrt.rand
+@ varargs sprintf(ptr str) msvcrt.sprintf
+@ cdecl strchr(str long) msvcrt.strchr
+@ cdecl strncmp(str str long) msvcrt.strncmp
+@ cdecl tolower(long) msvcrt.tolower
+@ cdecl toupper(long) msvcrt.toupper
+@ cdecl wcscmp(wstr wstr) msvcrt.wcscmp
+@ cdecl wcscpy(ptr wstr) msvcrt.wcscpy
+@ cdecl wcslen(wstr) msvcrt.wcslen
+@ cdecl wcstombs(ptr ptr long) msvcrt.wcstombs
-- 
GitLab