From c607532ae429d3be56071056c2722c0217cca148 Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Sun, 9 Jul 2000 11:19:35 +0000
Subject: [PATCH] Created separate libraries for dplay, shfolder, shlwapi,
 wow32 and wsock32 so that we have at most one Win32 dll in each .so library.

---
 Make.rules.in                          |   5 +
 configure                              |  14 +-
 configure.in                           |   7 +-
 dlls/Makefile.in                       |  49 +++-
 dlls/dplay/.cvsignore                  |   3 +
 dlls/dplay/Makefile.in                 |  11 +
 dlls/dplay/dplay.spec                  |   8 +
 dlls/dplayx/Makefile.in                |   2 -
 dlls/dplayx/dplay.spec                 |   8 -
 dlls/kernel/.cvsignore                 |   1 -
 dlls/kernel/Makefile.in                |   2 +-
 dlls/kernel/wow32.spec                 |  22 --
 dlls/shell32/Makefile.in               |   2 +-
 dlls/shell32/shell32_main.c            |  26 --
 dlls/shell32/shell32_main.h            |   5 -
 dlls/shell32/shellord.c                | 374 ------------------------
 dlls/shell32/shfolder.spec             |   6 -
 dlls/shfolder/.cvsignore               |   3 +
 dlls/shfolder/Makefile.in              |  12 +
 dlls/shfolder/shfolder.spec            |   5 +
 dlls/shlwapi/.cvsignore                |   3 +
 dlls/shlwapi/Makefile.in               |  16 +
 dlls/shlwapi/ordinal.c                 | 390 +++++++++++++++++++++++++
 dlls/{shell32 => shlwapi}/shlwapi.spec |  88 +++---
 dlls/shlwapi/shlwapi_main.c            |  31 ++
 dlls/winsock/.cvsignore                |   2 +-
 dlls/winsock/Makefile.in               |   4 +-
 dlls/winsock/socket.c                  |  71 +----
 dlls/winsock/ws2_32.spec               |   4 +-
 dlls/winsock/wsock32.spec              |  81 -----
 dlls/wow32/.cvsignore                  |   3 +
 dlls/wow32/Makefile.in                 |  10 +
 dlls/wow32/wow32.spec                  |  24 ++
 dlls/wsock32/.cvsignore                |   3 +
 dlls/wsock32/Makefile.in               |  13 +
 dlls/wsock32/socket.c                  |  57 ++++
 dlls/wsock32/wsock32.spec              |  83 ++++++
 37 files changed, 787 insertions(+), 661 deletions(-)
 create mode 100644 dlls/dplay/.cvsignore
 create mode 100644 dlls/dplay/Makefile.in
 create mode 100644 dlls/dplay/dplay.spec
 delete mode 100644 dlls/dplayx/dplay.spec
 delete mode 100644 dlls/kernel/wow32.spec
 delete mode 100644 dlls/shell32/shfolder.spec
 create mode 100644 dlls/shfolder/.cvsignore
 create mode 100644 dlls/shfolder/Makefile.in
 create mode 100644 dlls/shfolder/shfolder.spec
 create mode 100644 dlls/shlwapi/.cvsignore
 create mode 100644 dlls/shlwapi/Makefile.in
 create mode 100644 dlls/shlwapi/ordinal.c
 rename dlls/{shell32 => shlwapi}/shlwapi.spec (87%)
 create mode 100644 dlls/shlwapi/shlwapi_main.c
 delete mode 100644 dlls/winsock/wsock32.spec
 create mode 100644 dlls/wow32/.cvsignore
 create mode 100644 dlls/wow32/Makefile.in
 create mode 100644 dlls/wow32/wow32.spec
 create mode 100644 dlls/wsock32/.cvsignore
 create mode 100644 dlls/wsock32/Makefile.in
 create mode 100644 dlls/wsock32/socket.c
 create mode 100644 dlls/wsock32/wsock32.spec

diff --git a/Make.rules.in b/Make.rules.in
index 980ca9d7de4..b55a0b39167 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -99,6 +99,7 @@ DLLS = \
 	crtdll \
 	dciman32 \
 	dinput \
+	dplay \
 	dplayx \
 	dsound \
 	gdi32 \
@@ -133,6 +134,8 @@ DLLS = \
 	setupapi \
 	setupx \
 	shell32 \
+	shfolder \
+	shlwapi \
 	sound \
 	stress \
 	tapi32 \
@@ -150,6 +153,8 @@ DLLS = \
 	winmm \
 	winspool.drv \
 	wnaspi32 \
+	wow32 \
+	ws2_32 \
 	wsock32
 
 # Implicit rules
diff --git a/configure b/configure
index dcb814a27dd..237b8d5b887 100755
--- a/configure
+++ b/configure
@@ -6182,6 +6182,7 @@ dlls/crtdll/Makefile
 dlls/dciman32/Makefile
 dlls/ddraw/Makefile
 dlls/dinput/Makefile
+dlls/dplay/Makefile
 dlls/dplayx/Makefile
 dlls/dsound/Makefile
 dlls/gdi/Makefile
@@ -6210,10 +6211,13 @@ dlls/richedit/Makefile
 dlls/setupapi/Makefile
 dlls/setupx/Makefile
 dlls/shell32/Makefile
+dlls/shfolder/Makefile
+dlls/shlwapi/Makefile
 dlls/sound/Makefile
 dlls/stress/Makefile
 dlls/tapi32/Makefile
 dlls/ttydrv/Makefile
+dlls/ttydrv/Makefile
 dlls/urlmon/Makefile
 dlls/user/Makefile
 dlls/version/Makefile
@@ -6236,7 +6240,8 @@ dlls/winmm/wavemap/Makefile
 dlls/winmm/wineoss/Makefile
 dlls/winsock/Makefile
 dlls/winspool/Makefile
-dlls/ttydrv/Makefile
+dlls/wow32/Makefile
+dlls/wsock32/Makefile
 dlls/x11drv/Makefile
 documentation/Makefile
 documentation/wine.conf.man
@@ -6416,6 +6421,7 @@ dlls/crtdll/Makefile
 dlls/dciman32/Makefile
 dlls/ddraw/Makefile
 dlls/dinput/Makefile
+dlls/dplay/Makefile
 dlls/dplayx/Makefile
 dlls/dsound/Makefile
 dlls/gdi/Makefile
@@ -6444,10 +6450,13 @@ dlls/richedit/Makefile
 dlls/setupapi/Makefile
 dlls/setupx/Makefile
 dlls/shell32/Makefile
+dlls/shfolder/Makefile
+dlls/shlwapi/Makefile
 dlls/sound/Makefile
 dlls/stress/Makefile
 dlls/tapi32/Makefile
 dlls/ttydrv/Makefile
+dlls/ttydrv/Makefile
 dlls/urlmon/Makefile
 dlls/user/Makefile
 dlls/version/Makefile
@@ -6470,7 +6479,8 @@ dlls/winmm/wavemap/Makefile
 dlls/winmm/wineoss/Makefile
 dlls/winsock/Makefile
 dlls/winspool/Makefile
-dlls/ttydrv/Makefile
+dlls/wow32/Makefile
+dlls/wsock32/Makefile
 dlls/x11drv/Makefile
 documentation/Makefile
 documentation/wine.conf.man
diff --git a/configure.in b/configure.in
index 65dc0866703..09aabf52d3e 100644
--- a/configure.in
+++ b/configure.in
@@ -981,6 +981,7 @@ dlls/crtdll/Makefile
 dlls/dciman32/Makefile
 dlls/ddraw/Makefile
 dlls/dinput/Makefile
+dlls/dplay/Makefile
 dlls/dplayx/Makefile
 dlls/dsound/Makefile
 dlls/gdi/Makefile
@@ -1009,10 +1010,13 @@ dlls/richedit/Makefile
 dlls/setupapi/Makefile
 dlls/setupx/Makefile
 dlls/shell32/Makefile
+dlls/shfolder/Makefile
+dlls/shlwapi/Makefile
 dlls/sound/Makefile
 dlls/stress/Makefile
 dlls/tapi32/Makefile
 dlls/ttydrv/Makefile
+dlls/ttydrv/Makefile
 dlls/urlmon/Makefile
 dlls/user/Makefile
 dlls/version/Makefile
@@ -1035,7 +1039,8 @@ dlls/winmm/wavemap/Makefile
 dlls/winmm/wineoss/Makefile
 dlls/winsock/Makefile
 dlls/winspool/Makefile
-dlls/ttydrv/Makefile
+dlls/wow32/Makefile
+dlls/wsock32/Makefile
 dlls/x11drv/Makefile
 documentation/Makefile
 documentation/wine.conf.man
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 9c168fadbf9..11750b13211 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -19,6 +19,7 @@ DLLFILES = \
 	crtdll/libcrtdll.@LIBEXT@ \
 	dciman32/libdciman32.@LIBEXT@ \
 	dinput/libdinput.@LIBEXT@ \
+	dplay/libdplay.@LIBEXT@ \
 	dplayx/libdplayx.@LIBEXT@ \
 	dsound/libdsound.@LIBEXT@ \
 	gdi/libgdi32.@LIBEXT@ \
@@ -45,6 +46,8 @@ DLLFILES = \
 	setupx/libsetupx.@LIBEXT@ \
 	setupapi/libsetupapi.@LIBEXT@ \
 	shell32/libshell32.@LIBEXT@ \
+	shfolder/libshfolder.@LIBEXT@ \
+	shlwapi/libshlwapi.@LIBEXT@ \
 	sound/libsound.@LIBEXT@ \
 	stress/libstress.@LIBEXT@ \
 	tapi32/libtapi32.@LIBEXT@ \
@@ -69,8 +72,10 @@ DLLFILES = \
 	winmm/midimap/libmidimap.drv.@LIBEXT@ \
 	winmm/wavemap/libmsacm.drv.@LIBEXT@ \
 	winmm/wineoss/libwineoss.drv.@LIBEXT@ \
-	winsock/libwsock32.@LIBEXT@ \
-	winspool/libwinspool.drv.@LIBEXT@
+	winsock/libws2_32.@LIBEXT@ \
+	winspool/libwinspool.drv.@LIBEXT@ \
+	wow32/libwow32.@LIBEXT@ \
+	wsock32/libwsock32.@LIBEXT@
 
 # extra names for dlls containing multiple spec files
 EXTRADLLNAMES = \
@@ -81,7 +86,6 @@ EXTRADLLNAMES = \
 	ddeml \
 	dispdib \
 	display \
-	dplay \
 	gdi \
 	kernel \
 	keyboard \
@@ -99,8 +103,6 @@ EXTRADLLNAMES = \
 	olesvr \
 	rasapi16 \
 	shell \
-	shfolder \
-	shlwapi \
 	storage \
 	system \
 	toolhelp \
@@ -111,8 +113,6 @@ EXTRADLLNAMES = \
 	win32s16 \
 	winaspi \
 	winsock \
-	ws2_32 \
-	wow32 \
 	wprocs
 
 SUBDIRS = \
@@ -123,6 +123,7 @@ SUBDIRS = \
 	dciman32 \
 	ddraw \
 	dinput \
+	dplay \
 	dplayx \
 	dsound \
 	gdi \
@@ -149,6 +150,8 @@ SUBDIRS = \
 	richedit \
 	setupx \
 	shell32 \
+	shfolder \
+	shlwapi \
 	sound \
 	stress \
 	tapi32 \
@@ -166,6 +169,8 @@ SUBDIRS = \
 	winmm \
 	winsock \
 	winspool \
+	wow32 \
+	wsock32 \
 	x11drv
 
 @MAKE_RULES@
@@ -195,7 +200,10 @@ libddraw.@LIBEXT@: ddraw/libddraw.@LIBEXT@
 libdinput.@LIBEXT@: dinput/libdinput.@LIBEXT@
 	$(RM) $@ && $(LN_S) dinput/libdinput.@LIBEXT@ $@
 
-libdplayx.@LIBEXT@ libdplay.@LIBEXT@: dplayx/libdplayx.@LIBEXT@
+libdplay.@LIBEXT@: dplay/libdplay.@LIBEXT@
+	$(RM) $@ && $(LN_S) dplay/libdplay.@LIBEXT@ $@
+
+libdplayx.@LIBEXT@: dplayx/libdplayx.@LIBEXT@
 	$(RM) $@ && $(LN_S) dplayx/libdplayx.@LIBEXT@ $@
 
 libdsound.@LIBEXT@: dsound/libdsound.@LIBEXT@
@@ -213,7 +221,7 @@ libimagehlp.@LIBEXT@: imagehlp/libimagehlp.@LIBEXT@
 libimm32.@LIBEXT@: imm32/libimm32.@LIBEXT@
 	$(RM) $@ && $(LN_S) imm32/libimm32.@LIBEXT@ $@
 
-libkernel32.@LIBEXT@ libwow32.@LIBEXT@ libcomm.@LIBEXT@ libkernel.@LIBEXT@ libsystem.@LIBEXT@ libtoolhelp.@LIBEXT@ libwprocs.@LIBEXT@: kernel/libkernel32.@LIBEXT@
+libkernel32.@LIBEXT@ libcomm.@LIBEXT@ libkernel.@LIBEXT@ libsystem.@LIBEXT@ libtoolhelp.@LIBEXT@ libwprocs.@LIBEXT@: kernel/libkernel32.@LIBEXT@
 	$(RM) $@ && $(LN_S) kernel/libkernel32.@LIBEXT@ $@
 
 libjoystick.drv.@LIBEXT@: winmm/joystick/libjoystick.drv.@LIBEXT@
@@ -297,9 +305,15 @@ libsetupapi.@LIBEXT@: setupapi/libsetupapi.@LIBEXT@
 libsetupx.@LIBEXT@: setupx/libsetupx.@LIBEXT@
 	$(RM) $@ && $(LN_S) setupx/libsetupx.@LIBEXT@ $@
 
-libshell32.@LIBEXT@ libshell.@LIBEXT@ libshlwapi.@LIBEXT@ libshfolder.@LIBEXT@: shell32/libshell32.@LIBEXT@
+libshell32.@LIBEXT@ libshell.@LIBEXT@: shell32/libshell32.@LIBEXT@
 	$(RM) $@ && $(LN_S) shell32/libshell32.@LIBEXT@ $@
 
+libshfolder.@LIBEXT@: shfolder/libshfolder.@LIBEXT@
+	$(RM) $@ && $(LN_S) shfolder/libshfolder.@LIBEXT@ $@
+
+libshlwapi.@LIBEXT@: shlwapi/libshlwapi.@LIBEXT@
+	$(RM) $@ && $(LN_S) shlwapi/libshlwapi.@LIBEXT@ $@
+
 libsound.@LIBEXT@: sound/libsound.@LIBEXT@
 	$(RM) $@ && $(LN_S) sound/libsound.@LIBEXT@ $@
 
@@ -351,8 +365,14 @@ libwinspool.drv.@LIBEXT@: winspool/libwinspool.drv.@LIBEXT@
 libwnaspi32.@LIBEXT@ libwinaspi.@LIBEXT@: winaspi/libwnaspi32.@LIBEXT@
 	$(RM) $@ && $(LN_S) winaspi/libwnaspi32.@LIBEXT@ $@
 
-libwsock32.@LIBEXT@ libwinsock.@LIBEXT@ libws2_32.@LIBEXT@: winsock/libwsock32.@LIBEXT@
-	$(RM) $@ && $(LN_S) winsock/libwsock32.@LIBEXT@ $@
+libwow32.@LIBEXT@: wow32/libwow32.@LIBEXT@
+	$(RM) $@ && $(LN_S) wow32/libwow32.@LIBEXT@ $@
+
+libws2_32.@LIBEXT@ libwinsock.@LIBEXT@: winsock/libws2_32.@LIBEXT@
+	$(RM) $@ && $(LN_S) winsock/libws2_32.@LIBEXT@ $@
+
+libwsock32.@LIBEXT@: wsock32/libwsock32.@LIBEXT@
+	$(RM) $@ && $(LN_S) wsock32/libwsock32.@LIBEXT@ $@
 
 libx11drv.@LIBEXT@: x11drv/libx11drv.@LIBEXT@
 	$(RM) $@ && $(LN_S) x11drv/libx11drv.@LIBEXT@ $@
@@ -364,12 +384,15 @@ commdlg/libcomdlg32.so: libwinspool.drv.so
 dinput/libdinput.so: libuser32.so
 ddraw/libddraw.so: libx11drv.so
 dplayx/libdplayx.so: libole32.so
+dsound/libdsound.so: libwinmm.so
 msvideo/libmsvfw32.so: libwinmm.so
 oleaut32/liboleaut32.so: libole32.so libcomctl32.so
 olecli/libolecli32.so: libolesvr32.so libole32.so
 olepro32/libolepro32.so: liboleaut32.so libole32.so
 opengl32/libopengl32.so: libx11drv.so libgdi32.so
 shell32/libshell32.so: libole32.so
+shfolder/libshfolder.so: libshell32.so
+shlwapi/libshlwapi.so: libshell32.so
 urlmon/liburlmon.so: libole32.so
 version/libversion.so: liblz32.so
 winmm/joystick/libjoystick.drv.so: libwinmm.so
@@ -381,7 +404,7 @@ winmm/mciwave/libmciwave.drv.so: libwinmm.so
 winmm/midimap/libmidimap.drv.so: libwinmm.so
 winmm/wavemap/libmsacm.drv.so: libwinmm.so
 winmm/wineoss/libwineoss.drv.so: libwinmm.so
-
+wsock32/libwsock32.so: libws2_32.so
 
 $(DLLFILES): dummy
 	@cd `dirname $@` && $(MAKE)
diff --git a/dlls/dplay/.cvsignore b/dlls/dplay/.cvsignore
new file mode 100644
index 00000000000..dff7196193f
--- /dev/null
+++ b/dlls/dplay/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+dplay.spec.c
+libdplay.so.1.0
diff --git a/dlls/dplay/Makefile.in b/dlls/dplay/Makefile.in
new file mode 100644
index 00000000000..0ae0181acce
--- /dev/null
+++ b/dlls/dplay/Makefile.in
@@ -0,0 +1,11 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = dplay
+SOVERSION = 1.0
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
+
diff --git a/dlls/dplay/dplay.spec b/dlls/dplay/dplay.spec
new file mode 100644
index 00000000000..b05a832b8e5
--- /dev/null
+++ b/dlls/dplay/dplay.spec
@@ -0,0 +1,8 @@
+# First DirectPlay dll. Replaced by dplayx.dll.
+name dplay
+type win32
+
+import dplayx.dll
+
+@ forward DirectPlayCreate dplayx.DirectPlayCreate
+@ forward DirectPlayEnumerate dplayx.DirectPlayEnumerate
diff --git a/dlls/dplayx/Makefile.in b/dlls/dplayx/Makefile.in
index da6469f46bb..393fb8780ca 100644
--- a/dlls/dplayx/Makefile.in
+++ b/dlls/dplayx/Makefile.in
@@ -4,7 +4,6 @@ SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = dplayx
 SOVERSION = 1.0
-ALTNAMES  = dplay
 IMPORTS   = ole32
 
 C_SRCS = dplay.c \
@@ -14,7 +13,6 @@ C_SRCS = dplay.c \
          dplayx_global.c \
          name_server.c
 
-
 @MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/dplayx/dplay.spec b/dlls/dplayx/dplay.spec
deleted file mode 100644
index fb4a4bfcf7c..00000000000
--- a/dlls/dplayx/dplay.spec
+++ /dev/null
@@ -1,8 +0,0 @@
-# First DirectPlay dll. Replaced by dplayx.dll.
-name dplay
-type win32
-
-import  dplayx.dll
-
-@ forward DirectPlayCreate DPLAYX.DirectPlayCreate
-@ forward DirectPlayEnumerate DPLAYX.DirectPlayEnumerate
diff --git a/dlls/kernel/.cvsignore b/dlls/kernel/.cvsignore
index 8ac6011eaa6..d2cd93cdc5e 100644
--- a/dlls/kernel/.cvsignore
+++ b/dlls/kernel/.cvsignore
@@ -5,5 +5,4 @@ kernel32.spec.c
 libkernel32.so.1.0
 system.spec.c
 toolhelp.spec.c
-wow32.spec.c
 wprocs.spec.c
diff --git a/dlls/kernel/Makefile.in b/dlls/kernel/Makefile.in
index 60aa9a71c0e..1f171838363 100644
--- a/dlls/kernel/Makefile.in
+++ b/dlls/kernel/Makefile.in
@@ -4,7 +4,7 @@ SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = kernel32
 SOVERSION = 1.0
-ALTNAMES  = wow32 comm kernel system toolhelp wprocs
+ALTNAMES  = comm kernel system toolhelp wprocs
 
 C_SRCS = \
 	kernel_main.c
diff --git a/dlls/kernel/wow32.spec b/dlls/kernel/wow32.spec
deleted file mode 100644
index 5150cbda69b..00000000000
--- a/dlls/kernel/wow32.spec
+++ /dev/null
@@ -1,22 +0,0 @@
-name	wow32
-type	win32
-
-# ordinal exports
-1 stdcall WOWGetDescriptor(long long) WOWGetDescriptor
-
-@ stdcall WOWCallback16(long long) WOWCallback16
-@ stdcall WOWCallback16Ex(ptr long long ptr ptr) WOWCallback16Ex
-@ stdcall WOWDirectedYield16(long) WOWDirectedYield16
-@ stdcall WOWGetVDMPointer(long long long) WOWGetVDMPointer
-@ stdcall WOWGetVDMPointerFix(long long long) WOWGetVDMPointerFix
-@ stdcall WOWGetVDMPointerUnfix(long) WOWGetVDMPointerUnfix
-@ stdcall WOWGlobalAlloc16(long long) WOWGlobalAlloc16
-@ stdcall WOWGlobalAllocLock16(long long ptr) WOWGlobalAllocLock16
-@ stdcall WOWGlobalFree16(long) WOWGlobalFree16
-@ stdcall WOWGlobalLock16(long) WOWGlobalLock16
-@ stdcall WOWGlobalLockSize16(long ptr) WOWGlobalLockSize16
-@ stdcall WOWGlobalUnlock16(long) WOWGlobalUnlock16
-@ stdcall WOWGlobalUnlockFree16(long) WOWGlobalUnlockFree16
-@ stdcall WOWHandle16(long long) WOWHandle16
-@ stdcall WOWHandle32(long long) WOWHandle32
-@ stdcall WOWYield16() WOWYield16
diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in
index 448afb7e973..6a7b972c603 100644
--- a/dlls/shell32/Makefile.in
+++ b/dlls/shell32/Makefile.in
@@ -4,7 +4,7 @@ SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = shell32
 SOVERSION = 1.0
-ALTNAMES  = shell shlwapi shfolder
+ALTNAMES  = shell
 IMPORTS   = ole32
 
 C_SRCS = \
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index dbb3f9ad42c..8138757b7d6 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -819,36 +819,10 @@ static INT		shell32_RefCount = 0;
 
 LONG		shell32_ObjCount = 0;
 HINSTANCE	shell32_hInstance = 0; 
-HINSTANCE	shlwapi_hInstance = 0; 
 HMODULE		huser32 = 0;
 HIMAGELIST	ShellSmallIconList = 0;
 HIMAGELIST	ShellBigIconList = 0;
 
-/*************************************************************************
- * SHELL32 LibMain
- *
- * NOTES
- *  calling oleinitialize here breaks sone apps.
- */
-
-BOOL WINAPI ShlwapiLibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
-{
-	TRACE("0x%x 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
-	switch (fdwReason)
-	{
-	  case DLL_PROCESS_ATTACH:
-	    shlwapi_hInstance = hinstDLL;
-	    if(!huser32) huser32 = GetModuleHandleA("USER32.DLL");
-
-	    if (!huser32)
-	    {
-	      ERR("hModule of USER32 is 0\n");
-	      return FALSE;
-	    }
-	    break;
-	}
-	return TRUE;
-}
 
 /*************************************************************************
  * SHELL32 LibMain
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index 51698ffea65..e2c080c7162 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -27,11 +27,6 @@ extern HIMAGELIST	ShellSmallIconList;
 extern HIMAGELIST	ShellBigIconList;
 extern HDPA		sic_hdpa;
 
-/*******************************************
-*  global SHLWAPI.DLL variables
-*/
-extern HINSTANCE shlwapi_hInstance;
-
 /*******************************************
 * pointer to functions dynamically loaded
 */
diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
index ade28383c10..3a05a7f0cb7 100644
--- a/dlls/shell32/shellord.c
+++ b/dlls/shell32/shellord.c
@@ -968,380 +968,6 @@ HPALETTE WINAPI SHCreateShellPalette(HDC hdc)
 	FIXME("stub\n");
 	return CreateHalftonePalette(hdc);
 }
-
-/*
- NOTES: The most functions exported by ordinal seem to be superflous.
- The reason for these functions to be there is to provide a wraper
- for unicode functions to providing these functions on systems without
- unicode functions eg. win95/win98. Since we have such functions we just
- call these.
-*/
-
-/*************************************************************************
- *      SHLWAPI_1	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_1 (
-	LPSTR lpStr,
-	LPVOID x)
-{
-	FIXME("(%p %s %p %s)\n",lpStr, debugstr_a(lpStr),x, debugstr_a(x));
-	return 0;
-}
-
-/*************************************************************************
- *      SHLWAPI_16	[SHLWAPI]
- */
-HRESULT WINAPI SHLWAPI_16 (
-	LPVOID w,
-	LPVOID x,
-	LPVOID y,
-	LPWSTR z)
-{
-	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
-	return 0xabba1252;
-}
-
-/*************************************************************************
- *      SHLWAPI_23	[SHLWAPI.23]
- *
- * NOTES
- *	converts a guid to a string
- *	returns strlen(str)
- */
-DWORD WINAPI SHLWAPI_23 (
-	REFGUID guid,	/* [in]  clsid */
-	LPSTR str,	/* [out] buffer */
-	INT cmax)	/* [in]  size of buffer */
-{
-	char xguid[40];
-
-        sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
-                 guid->Data1, guid->Data2, guid->Data3,
-                 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
-                 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
-	TRACE("(%s %p 0x%08x)stub\n", xguid, str, cmax);
-	if (strlen(xguid)>=cmax) return 0;
-	strcpy(str,xguid);
-	return strlen(xguid) + 1;
-}
-
-/*************************************************************************
- *      SHLWAPI_24	[SHLWAPI.24]
- *
- * NOTES
- *	converts a guid to a string
- *	returns strlen(str)
- */
-DWORD WINAPI SHLWAPI_24 (
-	REFGUID guid,	/* [in]  clsid */
-	LPWSTR str,	/* [out] buffer */
-	INT cmax)	/* [in]  size of buffer */
-{
-	TRACE("(%s %p 0x%08x)stub\n", debugstr_guid(guid), str, cmax);
-	return StringFromGUID2(guid, str, cmax);
-}
-
-/*************************************************************************
- *      SHLWAPI_156	[SHLWAPI]
- *
- * FIXME: function guessed
- */
-DWORD WINAPI SHLWAPI_156 (
-	LPWSTR str1,	/* "shell32.dll" */
-	LPWSTR str2)	/* "shell32.dll" */
-{
-	FIXME("(%s %s)stub\n",debugstr_w(str1),debugstr_w(str2));
-	return lstrcmpW(str1,str2);
-}
-
-/*************************************************************************
- *      SHLWAPI_169	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown)
-{
-	TRACE("(%p)\n",lpUnknown);
-#if 0
-	if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0;
-	return IUnknown_Release(lpUnknown);
-#endif
-	return 0;
-}
-
-/*************************************************************************
- *      SHLWAPI_193	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_193 ()
-{
-	HDC hdc;
-	DWORD ret;
-
-	TRACE("()\n");
-
-	hdc = GetDC(0);
-	ret = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
-	ReleaseDC(0, hdc);
-	return ret;
-}
-
-/*************************************************************************
- *      SHLWAPI_219	[SHLWAPI]
- *
- * NOTES
- *  error codes: E_POINTER, E_NOINTERFACE
- */
-HRESULT WINAPI SHLWAPI_219 (
-	LPVOID w, /* returned by LocalAlloc, 0x450 bytes, iface */
-	LPVOID x,
-	LPVOID y,
-	LPWSTR z) /* OUT: path */
-{
-	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
-	return 0xabba1252;
-}
-
-/*************************************************************************
- *      SHLWAPI_215	[SHLWAPI]
- *
- * NOTES
- *  check me!
- */
-LPWSTR WINAPI SHLWAPI_215 (
-	LPSTR lpStrSrc,
-	LPVOID lpwStrDest,
-	int len)
-{
-	WARN("(%s %p %u)\n",lpStrSrc,lpwStrDest,len);
-	return NTDLL_wcsncpy(lpwStrDest, lpStrSrc, len);
-}
-
-/*************************************************************************
- *      SHLWAPI_222	[SHLWAPI]
- *
- * NOTES
- *  securityattributes missing
- */
-HANDLE WINAPI SHLWAPI_222 (LPCLSID guid)
-{
-	char lpstrName[80];
-
-        sprintf( lpstrName, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
-                 guid->Data1, guid->Data2, guid->Data3,
-                 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
-                 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
-	FIXME("(%s) stub\n", lpstrName);
-	return CreateSemaphoreA(NULL,0, 0x7fffffff, lpstrName);
-}
-
-/*************************************************************************
- *      SHLWAPI_223	[SHLWAPI]
- *
- * NOTES
- *  get the count of the semaphore
- */
-DWORD WINAPI SHLWAPI_223 (HANDLE handle)
-{
-	DWORD oldCount;
-	
-	FIXME("(0x%08x) stub\n",handle);
-
-	ReleaseSemaphore( handle, 1, &oldCount);	/* +1 */
-	WaitForSingleObject( handle, 0 );		/* -1 */
-	return oldCount;
-}
-
-/*************************************************************************
- *      SHLWAPI_237	[SHLWAPI]
- *
- * NOTES
- *  checks if a class is registered, if not it registers it
- */
-DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass)
-{
-	WNDCLASSW WndClass;
-	
-	TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName));
-
-	if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass))
-	{
-	  return RegisterClassW(lpWndClass);
-	}
-	return TRUE;
-}
-
-/*************************************************************************
- *      SHLWAPI_241	[SHLWAPI]
- *
- */
-DWORD WINAPI SHLWAPI_241 ()
-{
-	FIXME("()stub\n");
-	return 0xabba1243;
-}
-
-/*************************************************************************
- *      SHLWAPI_266	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_266 (
-	LPVOID w,
-	LPVOID x,
-	LPVOID y,
-	LPVOID z)
-{
-	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
-	return 0xabba1248;
-}
-
-/*************************************************************************
- *      SHLWAPI_267	[SHLWAPI]
- */
-HRESULT WINAPI SHLWAPI_267 (
-	LPVOID w, /* same as 1th parameter of SHLWAPI_219 */
-	LPVOID x, /* same as 2nd parameter of SHLWAPI_219 */
-	LPVOID y,
-	LPVOID z)
-{
-	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
-	*((LPDWORD)z) = 0xabba1200;
-	return 0xabba1254;
-}
-
-/*************************************************************************
- *      SHLWAPI_268	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_268 (
-	LPVOID w,
-	LPVOID x)
-{
-	FIXME("(%p %p)\n",w,x);
-	return 0xabba1251; /* 0 = failure */
-}
-
-/*************************************************************************
- *      SHLWAPI_276	[SHLWAPI]
- *
- */
-DWORD WINAPI SHLWAPI_276 ()
-{
-	FIXME("()stub\n");
-	return 0xabba1244;
-}
-
-/*************************************************************************
- *      SHLWAPI_278	[SHLWAPI]
- *
- */
-DWORD WINAPI SHLWAPI_278 (
-	LONG wndProc,
-	HWND hWndParent,
-	DWORD dwExStyle,
-	DWORD dwStyle,
-	HMENU hMenu,
-	LONG z)
-{
-	WNDCLASSA wndclass;
-	HWND hwnd;
-	HCURSOR hCursor;
-	char * clsname = "WorkerA";
-	
-	FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n",
-	  wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z);
-
-	hCursor = LoadCursorA(0x00000000,IDC_ARROWA);
-
-	if(!GetClassInfoA(shlwapi_hInstance, clsname, &wndclass))
-	{
-	  RtlZeroMemory(&wndclass, sizeof(WNDCLASSA));
-	  wndclass.lpfnWndProc = GetProcAddress(huser32, "DefWindowProcW");
-	  wndclass.cbWndExtra = 4;
-	  wndclass.hInstance = shlwapi_hInstance;
-	  wndclass.hCursor = hCursor;
-	  wndclass.hbrBackground = COLOR_BTNSHADOW;
-	  wndclass.lpszMenuName = NULL;
-	  wndclass.lpszClassName = clsname;
-	  RegisterClassA (&wndclass);
-	}
-	hwnd = CreateWindowExA(dwExStyle, clsname, 0,dwStyle,0,0,0,0,hWndParent,
-		hMenu,shlwapi_hInstance,0);
-	SetWindowLongA(hwnd, 0, z);
-	SetWindowLongA(hwnd, GWL_WNDPROC, wndProc);
-	return hwnd;
-}
-
-/*************************************************************************
- *      SHLWAPI_342	[SHLWAPI]
- *
- */
-DWORD WINAPI SHLWAPI_342 (
-	LPVOID w,
-	LPVOID x,
-	LPVOID y,
-	LPVOID z)
-{
-	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
-	return 0xabba1249;
-}
-
-/*************************************************************************
- *      SHLWAPI_346	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_346 (
-	LPCWSTR src,
-	LPWSTR dest,
-	int len)
-{
-	FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src),dest,len);
-	lstrcpynW(dest, src, len);
-	return lstrlenW(dest)+1;
-}
-
-
-/*************************************************************************
- *      SHLWAPI_377	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_377 (LPVOID x, LPVOID y, LPVOID z)
-{
-	FIXME("(%p %p %p)stub\n", x,y,z);
-	return 0xabba1246;
-}
-
-/*************************************************************************
- *      SHLWAPI_378	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_378 (
-	LPSTR x,
-	LPVOID y, /* 0x50000000 */
-	LPVOID z) /* 4 */
-{
-	FIXME("(%s %p %p)stub\n", x,y,z);
-	return LoadLibraryA(x);
-}
-
-/*************************************************************************
- *      SHLWAPI_431	[SHLWAPI]
- */
-DWORD WINAPI SHLWAPI_431 (DWORD x)
-{
-	FIXME("(0x%08lx)stub\n", x);
-	return 0xabba1247;
-}
-
-/*************************************************************************
- *      SHLWAPI_437	[SHLWAPI]
- *
- * NOTES
- *  has to do something with switching the api between ascii and unicode
- *  observed values: 0 and 5
- *
- * accesses
- * HKLM\System\CurrentControlSet\Control\ProductOptions
- *
- */
-DWORD WINAPI SHLWAPI_437 (DWORD x)
-{
-	FIXME("(0x%08lx)stub\n", x);
-	return 0xabba1247;
-}
-
 /*************************************************************************
  *      wnsprintfA	[SHLWAPI]
  */
diff --git a/dlls/shell32/shfolder.spec b/dlls/shell32/shfolder.spec
deleted file mode 100644
index 08a7a8f1d5d..00000000000
--- a/dlls/shell32/shfolder.spec
+++ /dev/null
@@ -1,6 +0,0 @@
-name shfolder
-type win32
-import advapi32
-
-@ stdcall SHGetFolderPathA(long long long long ptr)SHGetFolderPathA
-@ stdcall SHGetFolderPathW(long long long long ptr)SHGetFolderPathW
diff --git a/dlls/shfolder/.cvsignore b/dlls/shfolder/.cvsignore
new file mode 100644
index 00000000000..0b9b6004ac8
--- /dev/null
+++ b/dlls/shfolder/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+libshfolder.so.1.0
+shfolder.spec.c
diff --git a/dlls/shfolder/Makefile.in b/dlls/shfolder/Makefile.in
new file mode 100644
index 00000000000..52cc3f8f762
--- /dev/null
+++ b/dlls/shfolder/Makefile.in
@@ -0,0 +1,12 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = shfolder
+SOVERSION = 1.0
+IMPORTS   = shell32
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
+
diff --git a/dlls/shfolder/shfolder.spec b/dlls/shfolder/shfolder.spec
new file mode 100644
index 00000000000..25b3cba7c09
--- /dev/null
+++ b/dlls/shfolder/shfolder.spec
@@ -0,0 +1,5 @@
+name shfolder
+type win32
+
+@ stdcall SHGetFolderPathA(long long long long ptr) SHGetFolderPathA
+@ stdcall SHGetFolderPathW(long long long long ptr) SHGetFolderPathW
diff --git a/dlls/shlwapi/.cvsignore b/dlls/shlwapi/.cvsignore
new file mode 100644
index 00000000000..b3d9eb561fc
--- /dev/null
+++ b/dlls/shlwapi/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+libshlwapi.so.1.0
+shlwapi.spec.c
diff --git a/dlls/shlwapi/Makefile.in b/dlls/shlwapi/Makefile.in
new file mode 100644
index 00000000000..817af6a6505
--- /dev/null
+++ b/dlls/shlwapi/Makefile.in
@@ -0,0 +1,16 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = shlwapi
+SOVERSION = 1.0
+IMPORTS   = shell32
+
+C_SRCS = \
+	ordinal.c \
+	shlwapi_main.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
+
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
new file mode 100644
index 00000000000..0493ff2ba04
--- /dev/null
+++ b/dlls/shlwapi/ordinal.c
@@ -0,0 +1,390 @@
+/*
+ * SHLWAPI ordinal functions
+ * 
+ * Copyright 1997 Marcus Meissner
+ *           1998 Jürgen Schmied
+ */
+
+#include <stdio.h>
+
+#include "windef.h"
+#include "wine/undocshell.h"
+#include "debugtools.h"
+
+DEFAULT_DEBUG_CHANNEL(shell);
+
+extern HINSTANCE shlwapi_hInstance;
+
+/*
+ NOTES: The most functions exported by ordinal seem to be superflous.
+ The reason for these functions to be there is to provide a wraper
+ for unicode functions to providing these functions on systems without
+ unicode functions eg. win95/win98. Since we have such functions we just
+ call these.
+*/
+
+/*************************************************************************
+ *      SHLWAPI_1	[SHLWAPI.1]
+ */
+DWORD WINAPI SHLWAPI_1 (
+	LPSTR lpStr,
+	LPVOID x)
+{
+	FIXME("(%p %s %p %s)\n",lpStr, debugstr_a(lpStr),x, debugstr_a(x));
+	return 0;
+}
+
+/*************************************************************************
+ *      SHLWAPI_16	[SHLWAPI.16]
+ */
+HRESULT WINAPI SHLWAPI_16 (
+	LPVOID w,
+	LPVOID x,
+	LPVOID y,
+	LPWSTR z)
+{
+	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
+	return 0xabba1252;
+}
+
+/*************************************************************************
+ *      SHLWAPI_23	[SHLWAPI.23]
+ *
+ * NOTES
+ *	converts a guid to a string
+ *	returns strlen(str)
+ */
+DWORD WINAPI SHLWAPI_23 (
+	REFGUID guid,	/* [in]  clsid */
+	LPSTR str,	/* [out] buffer */
+	INT cmax)	/* [in]  size of buffer */
+{
+	char xguid[40];
+
+        sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+                 guid->Data1, guid->Data2, guid->Data3,
+                 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
+                 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
+	TRACE("(%s %p 0x%08x)stub\n", xguid, str, cmax);
+	if (strlen(xguid)>=cmax) return 0;
+	strcpy(str,xguid);
+	return strlen(xguid) + 1;
+}
+
+/*************************************************************************
+ *      SHLWAPI_24	[SHLWAPI.24]
+ *
+ * NOTES
+ *	converts a guid to a string
+ *	returns strlen(str)
+ */
+DWORD WINAPI SHLWAPI_24 (
+	REFGUID guid,	/* [in]  clsid */
+	LPWSTR str,	/* [out] buffer */
+	INT cmax)	/* [in]  size of buffer */
+{
+	TRACE("(%s %p 0x%08x)stub\n", debugstr_guid(guid), str, cmax);
+	return StringFromGUID2(guid, str, cmax);
+}
+
+/*************************************************************************
+ *      SHLWAPI_156	[SHLWAPI.156]
+ *
+ * FIXME: function guessed
+ */
+DWORD WINAPI SHLWAPI_156 (
+	LPWSTR str1,	/* "shell32.dll" */
+	LPWSTR str2)	/* "shell32.dll" */
+{
+	FIXME("(%s %s)stub\n",debugstr_w(str1),debugstr_w(str2));
+	return lstrcmpW(str1,str2);
+}
+
+/*************************************************************************
+ *      SHLWAPI_169	[SHLWAPI.169]
+ */
+DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown)
+{
+	TRACE("(%p)\n",lpUnknown);
+#if 0
+	if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0;
+	return IUnknown_Release(lpUnknown);
+#endif
+	return 0;
+}
+
+/*************************************************************************
+ *      SHLWAPI_193	[SHLWAPI.193]
+ */
+DWORD WINAPI SHLWAPI_193 ()
+{
+	HDC hdc;
+	DWORD ret;
+
+	TRACE("()\n");
+
+	hdc = GetDC(0);
+	ret = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
+	ReleaseDC(0, hdc);
+	return ret;
+}
+
+/*************************************************************************
+ *      SHLWAPI_215	[SHLWAPI.215]
+ *
+ * NOTES
+ *  check me!
+ */
+LPWSTR WINAPI SHLWAPI_215 (
+	LPSTR lpStrSrc,
+	LPVOID lpwStrDest,
+	int len)
+{
+	WARN("(%s %p %u)\n",lpStrSrc,lpwStrDest,len);
+	return NTDLL_wcsncpy(lpwStrDest, lpStrSrc, len);
+}
+
+/*************************************************************************
+ *      SHLWAPI_219	[SHLWAPI.219]
+ *
+ * NOTES
+ *  error codes: E_POINTER, E_NOINTERFACE
+ */
+HRESULT WINAPI SHLWAPI_219 (
+	LPVOID w, /* returned by LocalAlloc, 0x450 bytes, iface */
+	LPVOID x,
+	LPVOID y,
+	LPWSTR z) /* OUT: path */
+{
+	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
+	return 0xabba1252;
+}
+
+/*************************************************************************
+ *      SHLWAPI_222	[SHLWAPI.222]
+ *
+ * NOTES
+ *  securityattributes missing
+ */
+HANDLE WINAPI SHLWAPI_222 (LPCLSID guid)
+{
+	char lpstrName[80];
+
+        sprintf( lpstrName, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+                 guid->Data1, guid->Data2, guid->Data3,
+                 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
+                 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
+	FIXME("(%s) stub\n", lpstrName);
+	return CreateSemaphoreA(NULL,0, 0x7fffffff, lpstrName);
+}
+
+/*************************************************************************
+ *      SHLWAPI_223	[SHLWAPI.223]
+ *
+ * NOTES
+ *  get the count of the semaphore
+ */
+DWORD WINAPI SHLWAPI_223 (HANDLE handle)
+{
+	DWORD oldCount;
+	
+	FIXME("(0x%08x) stub\n",handle);
+
+	ReleaseSemaphore( handle, 1, &oldCount);	/* +1 */
+	WaitForSingleObject( handle, 0 );		/* -1 */
+	return oldCount;
+}
+
+/*************************************************************************
+ *      SHLWAPI_237	[SHLWAPI.237]
+ *
+ * NOTES
+ *  checks if a class is registered, if not it registers it
+ */
+DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass)
+{
+	WNDCLASSW WndClass;
+	
+	TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName));
+
+	if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass))
+	{
+	  return RegisterClassW(lpWndClass);
+	}
+	return TRUE;
+}
+
+/*************************************************************************
+ *      SHLWAPI_241	[SHLWAPI.241]
+ *
+ */
+DWORD WINAPI SHLWAPI_241 ()
+{
+	FIXME("()stub\n");
+	return 0xabba1243;
+}
+
+/*************************************************************************
+ *      SHLWAPI_266	[SHLWAPI.266]
+ */
+DWORD WINAPI SHLWAPI_266 (
+	LPVOID w,
+	LPVOID x,
+	LPVOID y,
+	LPVOID z)
+{
+	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
+	return 0xabba1248;
+}
+
+/*************************************************************************
+ *      SHLWAPI_267	[SHLWAPI.267]
+ */
+HRESULT WINAPI SHLWAPI_267 (
+	LPVOID w, /* same as 1th parameter of SHLWAPI_219 */
+	LPVOID x, /* same as 2nd parameter of SHLWAPI_219 */
+	LPVOID y,
+	LPVOID z)
+{
+	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
+	*((LPDWORD)z) = 0xabba1200;
+	return 0xabba1254;
+}
+
+/*************************************************************************
+ *      SHLWAPI_268	[SHLWAPI.268]
+ */
+DWORD WINAPI SHLWAPI_268 (
+	LPVOID w,
+	LPVOID x)
+{
+	FIXME("(%p %p)\n",w,x);
+	return 0xabba1251; /* 0 = failure */
+}
+
+/*************************************************************************
+ *      SHLWAPI_276	[SHLWAPI.276]
+ *
+ */
+DWORD WINAPI SHLWAPI_276 ()
+{
+	FIXME("()stub\n");
+	return 0xabba1244;
+}
+
+/*************************************************************************
+ *      SHLWAPI_278	[SHLWAPI.278]
+ *
+ */
+DWORD WINAPI SHLWAPI_278 (
+	LONG wndProc,
+	HWND hWndParent,
+	DWORD dwExStyle,
+	DWORD dwStyle,
+	HMENU hMenu,
+	LONG z)
+{
+	WNDCLASSA wndclass;
+	HWND hwnd;
+	HCURSOR hCursor;
+	char * clsname = "WorkerA";
+	
+	FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n",
+	  wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z);
+
+	hCursor = LoadCursorA(0x00000000,IDC_ARROWA);
+
+	if(!GetClassInfoA(shlwapi_hInstance, clsname, &wndclass))
+	{
+	  RtlZeroMemory(&wndclass, sizeof(WNDCLASSA));
+	  wndclass.lpfnWndProc = DefWindowProcW;
+	  wndclass.cbWndExtra = 4;
+	  wndclass.hInstance = shlwapi_hInstance;
+	  wndclass.hCursor = hCursor;
+	  wndclass.hbrBackground = COLOR_BTNSHADOW;
+	  wndclass.lpszMenuName = NULL;
+	  wndclass.lpszClassName = clsname;
+	  RegisterClassA (&wndclass);
+	}
+	hwnd = CreateWindowExA(dwExStyle, clsname, 0,dwStyle,0,0,0,0,hWndParent,
+		hMenu,shlwapi_hInstance,0);
+	SetWindowLongA(hwnd, 0, z);
+	SetWindowLongA(hwnd, GWL_WNDPROC, wndProc);
+	return hwnd;
+}
+
+/*************************************************************************
+ *      SHLWAPI_342	[SHLWAPI.342]
+ *
+ */
+DWORD WINAPI SHLWAPI_342 (
+	LPVOID w,
+	LPVOID x,
+	LPVOID y,
+	LPVOID z)
+{
+	FIXME("(%p %p %p %p)stub\n",w,x,y,z);
+	return 0xabba1249;
+}
+
+/*************************************************************************
+ *      SHLWAPI_346	[SHLWAPI.346]
+ */
+DWORD WINAPI SHLWAPI_346 (
+	LPCWSTR src,
+	LPWSTR dest,
+	int len)
+{
+	FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src),dest,len);
+	lstrcpynW(dest, src, len);
+	return lstrlenW(dest)+1;
+}
+
+
+/*************************************************************************
+ *      SHLWAPI_377	[SHLWAPI.377]
+ */
+DWORD WINAPI SHLWAPI_377 (LPVOID x, LPVOID y, LPVOID z)
+{
+	FIXME("(%p %p %p)stub\n", x,y,z);
+	return 0xabba1246;
+}
+
+/*************************************************************************
+ *      SHLWAPI_378	[SHLWAPI.378]
+ */
+DWORD WINAPI SHLWAPI_378 (
+	LPSTR x,
+	LPVOID y, /* 0x50000000 */
+	LPVOID z) /* 4 */
+{
+	FIXME("(%s %p %p)stub\n", x,y,z);
+	return LoadLibraryA(x);
+}
+
+/*************************************************************************
+ *      SHLWAPI_431	[SHLWAPI.431]
+ */
+DWORD WINAPI SHLWAPI_431 (DWORD x)
+{
+	FIXME("(0x%08lx)stub\n", x);
+	return 0xabba1247;
+}
+
+/*************************************************************************
+ *      SHLWAPI_437	[SHLWAPI.437]
+ *
+ * NOTES
+ *  has to do something with switching the api between ascii and unicode
+ *  observed values: 0 and 5
+ *
+ * accesses
+ * HKLM\System\CurrentControlSet\Control\ProductOptions
+ *
+ */
+DWORD WINAPI SHLWAPI_437 (DWORD x)
+{
+	FIXME("(0x%08lx)stub\n", x);
+	return 0xabba1247;
+}
+
diff --git a/dlls/shell32/shlwapi.spec b/dlls/shlwapi/shlwapi.spec
similarity index 87%
rename from dlls/shell32/shlwapi.spec
rename to dlls/shlwapi/shlwapi.spec
index 1db384572da..1aeb598dfb0 100644
--- a/dlls/shell32/shlwapi.spec
+++ b/dlls/shlwapi/shlwapi.spec
@@ -1,8 +1,8 @@
 name shlwapi
 type win32
-init ShlwapiLibMain
+init SHLWAPI_LibMain
 
-1   stdcall SHLWAPI_1(ptr ptr)SHLWAPI_1
+1   stdcall @(ptr ptr) SHLWAPI_1
 2   stub @
 3   stub @
 4   stub @
@@ -17,15 +17,15 @@ init ShlwapiLibMain
 13  stub @
 14  stub @
 15  stub @
-16  stdcall SHLWAPI_16(long long long long)SHLWAPI_16
+16  stdcall @(long long long long) SHLWAPI_16
 17  stub @
 18  stub @
 19  stub @
 20  stub @
 21  stub @
 22  stub @
-23  stdcall SHLWAPI_23(ptr ptr long)SHLWAPI_23
-24  stdcall SHLWAPI_24(ptr ptr long)SHLWAPI_24
+23  stdcall @(ptr ptr long) SHLWAPI_23
+24  stdcall @(ptr ptr long) SHLWAPI_24
 25  stub @
 26  stub @
 27  stub @
@@ -55,9 +55,9 @@ init ShlwapiLibMain
 51  stub @
 52  stub @
 53  stub @
-54  forward SHLWAPI_54 user32.CreateICW
-55  forward SHLWAPI_55 user32.CreateWindowExW
-56  forward SHLWAPI_56 user32.DefWindowProcW
+54  forward @ user32.CreateICW
+55  forward @ user32.CreateWindowExW
+56  forward @ user32.DefWindowProcW
 57  stub @
 58  stub @
 59  stub @
@@ -68,9 +68,9 @@ init ShlwapiLibMain
 64  stub @
 65  stub @
 66  stub @
-67 forward SHLWAPI_67 user32.FindWindowW
-68 forward SHLWAPI_68 kernel32.FormatMessageW
-69 forward SHLWAPI_69 user32.GetClassInfoW
+67 forward @ user32.FindWindowW
+68 forward @ kernel32.FormatMessageW
+69 forward @ user32.GetClassInfoW
 70  stub @
 71  stub @
 72  stub @
@@ -81,10 +81,10 @@ init ShlwapiLibMain
 77  stub @
 78  stub @
 79  stub @
-80  forward SHLWAPI_80 kernel32.GetModuleFileNameW
-81  forward SHLWAPI_81 kernel32.GetSystemDirectoryW
-82  forward SHLWAPI_82 kernel32.SearchPathW
-83  forward SHLWAPI_83 kernel32.GetModuleHandleW
+80  forward @ kernel32.GetModuleFileNameW
+81  forward @ kernel32.GetSystemDirectoryW
+82  forward @ kernel32.SearchPathW
+83  forward @ kernel32.GetModuleHandleW
 84  stub @
 85  stub @
 86  stub @
@@ -95,7 +95,7 @@ init ShlwapiLibMain
 91  stub @
 92  stub @
 93  stub @
-94  forward SHLWAPI_94 user32.GetWindowLongW
+94  forward @ user32.GetWindowLongW
 95  stub @
 96  stub @
 97  stub @
@@ -103,12 +103,12 @@ init ShlwapiLibMain
 99  stub @
 100 stub @
 101 stub @
-102 forward SHLWAPI_102 user32.LoadCursorW
+102 forward @ user32.LoadCursorW
 103 stub @
 104 stub @
 105 stub @
 106 stub @
-107 forward SHLWAPI_107 user32.LoadStringW
+107 forward @ user32.LoadStringW
 108 stub @
 109 stub @
 110 stub @
@@ -121,18 +121,18 @@ init ShlwapiLibMain
 117 stub @
 118 stub @
 119 stub @
-120 forward SHLWAPI_120 advapi32.RegCreateKeyExW
+120 forward @ advapi32.RegCreateKeyExW
 121 stub @
 122 stub @
 123 stub @
 124 stub @
-125 forward SHLWAPI_125 advapi32.RegOpenKeyExW
+125 forward @ advapi32.RegOpenKeyExW
 126 stub @
 127 stub @
-128 forward SHLWAPI_128 advapi32.RegQueryValueExW
+128 forward @ advapi32.RegQueryValueExW
 129 stub @
 130 stub @
-131 forward SHLWAPI_131 user32.RegisterClassW
+131 forward @ user32.RegisterClassW
 132 stub @
 133 stub @
 134 stub @
@@ -148,7 +148,7 @@ init ShlwapiLibMain
 144 stub @
 145 stub @
 146 stub @
-147 forward SHLWAPI_147 user32.UnregisterClassW
+147 forward @ user32.UnregisterClassW
 148 stub @
 149 stub @
 150 stub @
@@ -157,7 +157,7 @@ init ShlwapiLibMain
 153 stub @
 154 stub @
 155 stub @
-156 stdcall SHLWAPI_156 (wstr wstr) SHLWAPI_156
+156 stdcall @(wstr wstr) SHLWAPI_156
 157 stub @
 158 stub @
 159 stub @
@@ -170,7 +170,7 @@ init ShlwapiLibMain
 166 stub @
 167 stub @
 168 stub @
-169 stdcall SHLWAPI_169(long)SHLWAPI_169
+169 stdcall @(long) SHLWAPI_169
 170 stub @
 171 stub @
 172 stub @
@@ -194,7 +194,7 @@ init ShlwapiLibMain
 190 stub @
 191 stub @
 192 stub @
-193 stdcall SHLWAPI_193()SHLWAPI_193
+193 stdcall @() SHLWAPI_193
 194 stub @
 195 stub @
 196 stub @
@@ -216,15 +216,15 @@ init ShlwapiLibMain
 212 stub @
 213 stub @
 214 stub @
-215 stdcall SHLWAPI_215(long long long)SHLWAPI_215
+215 stdcall @(long long long) SHLWAPI_215
 216 stub @
 217 stub @
 218 stub @
-219 stdcall SHLWAPI_219(long long long long)SHLWAPI_219
+219 stdcall @(long long long long) SHLWAPI_219
 220 stub @
 221 stub @
-222 stdcall SHLWAPI_222(long)SHLWAPI_222
-223 stdcall SHLWAPI_223(long)SHLWAPI_223
+222 stdcall @(long) SHLWAPI_222
+223 stdcall @(long) SHLWAPI_223
 224 stub @
 225 stub @
 226 stub @
@@ -238,11 +238,11 @@ init ShlwapiLibMain
 234 stub @
 235 stub @
 236 stub @
-237 stdcall SHLWAPI_237(ptr)SHLWAPI_237
+237 stdcall @(ptr) SHLWAPI_237
 238 stub @
 239 stub @
 240 stub @
-241 stdcall SHLWAPI_241()SHLWAPI_241
+241 stdcall @() SHLWAPI_241
 242 stub @
 243 stub @
 244 stub @
@@ -267,9 +267,9 @@ init ShlwapiLibMain
 263 stub @
 264 stub @
 265 stub @
-266 stdcall SHLWAPI_266(long long long long)SHLWAPI_266
-267 stdcall SHLWAPI_267(long long long long)SHLWAPI_267
-268 stdcall SHLWAPI_268(long long)SHLWAPI_268
+266 stdcall @(long long long long) SHLWAPI_266
+267 stdcall @(long long long long) SHLWAPI_267
+268 stdcall @(long long) SHLWAPI_268
 269 stub @
 270 stub @
 271 stub @
@@ -277,9 +277,9 @@ init ShlwapiLibMain
 273 stub @
 274 stub @
 275 stub @
-276 stdcall SHLWAPI_276()SHLWAPI_276
+276 stdcall @() SHLWAPI_276
 277 stub @
-278 stdcall SHLWAPI_278(long long long long long long)SHLWAPI_278
+278 stdcall @(long long long long long long) SHLWAPI_278
 279 stub @
 280 stub @
 281 stub @
@@ -310,7 +310,7 @@ init ShlwapiLibMain
 306 stub @
 307 stub @
 308 stub @
-309 forward SHLWAPI_309 kernel32.LoadLibraryW
+309 forward @ kernel32.LoadLibraryW
 310 stub @
 311 stub @
 312 stub @
@@ -343,11 +343,11 @@ init ShlwapiLibMain
 339 stub @
 340 stub @
 341 stub @
-342 stdcall SHLWAPI_342(long long long long)SHLWAPI_342
+342 stdcall @(long long long long) SHLWAPI_342
 343 stub @
 344 stub @
 345 stub @
-346 stdcall SHLWAPI_346(wstr ptr long)SHLWAPI_346
+346 stdcall @(wstr ptr long) SHLWAPI_346
 347 stub @
 348 stub @
 349 stub @
@@ -378,8 +378,8 @@ init ShlwapiLibMain
 374 stub @
 375 stub @
 376 stub @
-377 stdcall SHLWAPI_377(long long long)SHLWAPI_377
-378 stdcall SHLWAPI_378(long long long)SHLWAPI_378
+377 stdcall @(long long long) SHLWAPI_377
+378 stdcall @(long long long) SHLWAPI_378
 379 stub @
 380 stub @
 381 stub AssocQueryStringA
@@ -432,13 +432,13 @@ init ShlwapiLibMain
 428 stub @
 429 stub @
 430 stub @
-431 stdcall SHLWAPI_431(long)SHLWAPI_431
+431 stdcall @(long) SHLWAPI_431
 432 stub @
 433 stub @
 434 stub @
 435 stub @
 436 stub @
-437 stdcall SHLWAPI_437(long) SHLWAPI_437
+437 stdcall @(long) SHLWAPI_437
 438 stub @
 439 stub @
 440 stub @
diff --git a/dlls/shlwapi/shlwapi_main.c b/dlls/shlwapi/shlwapi_main.c
new file mode 100644
index 00000000000..b110a3aebae
--- /dev/null
+++ b/dlls/shlwapi/shlwapi_main.c
@@ -0,0 +1,31 @@
+/*
+ * SHLWAPI initialisation
+ *
+ *  Copyright 1998 Marcus Meissner
+ *  Copyright 1998 Juergen Schmied (jsch)
+ */
+
+#include "winbase.h"
+#include "debugtools.h"
+
+DEFAULT_DEBUG_CHANNEL(shell);
+
+HINSTANCE shlwapi_hInstance = 0; 
+
+/*************************************************************************
+ * SHLWAPI LibMain
+ *
+ * NOTES
+ *  calling oleinitialize here breaks sone apps.
+ */
+BOOL WINAPI SHLWAPI_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
+{
+	TRACE("0x%x 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
+	switch (fdwReason)
+	{
+	  case DLL_PROCESS_ATTACH:
+	    shlwapi_hInstance = hinstDLL;
+	    break;
+	}
+	return TRUE;
+}
diff --git a/dlls/winsock/.cvsignore b/dlls/winsock/.cvsignore
index 3262b93a0ca..be2ae1f8a5c 100644
--- a/dlls/winsock/.cvsignore
+++ b/dlls/winsock/.cvsignore
@@ -1,4 +1,4 @@
 *.spec.c
 *.spec.glue.s
 Makefile
-libwsock32.so.1.0
+libws2_32.so.1.0
diff --git a/dlls/winsock/Makefile.in b/dlls/winsock/Makefile.in
index d984ba90a4c..406db283a8a 100644
--- a/dlls/winsock/Makefile.in
+++ b/dlls/winsock/Makefile.in
@@ -2,9 +2,9 @@ TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-MODULE    = wsock32
+MODULE    = ws2_32
 SOVERSION = 1.0
-ALTNAMES  = winsock ws2_32
+ALTNAMES  = winsock
 
 C_SRCS = \
 	async.c \
diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c
index e8955f788ea..440d37a3cb3 100644
--- a/dlls/winsock/socket.c
+++ b/dlls/winsock/socket.c
@@ -604,17 +604,9 @@ INT16 WINAPI WSAStartup16(UINT16 wVersionRequested, LPWSADATA lpWSAData)
 }
 
 /***********************************************************************
- *      WSAStartup()			(WSOCK32.115)
+ *      WSAStartup()		(WS2_32.115)	
  */
 INT WINAPI WSAStartup(UINT wVersionRequested, LPWSADATA lpWSAData)
-{
-    return WSAStartup16( wVersionRequested, lpWSAData );
-}
-
-/***********************************************************************
- *      WS2_WSAStartup()		(WS2_32.115)	
- */
-INT WINAPI WS2_WSAStartup(UINT wVersionRequested, LPWSADATA lpWSAData)
 {
     WSADATA WINSOCK_data = { 0x0202, 0x0202,
                           "WINE Sockets 2.0",
@@ -637,7 +629,7 @@ INT WINAPI WS2_WSAStartup(UINT wVersionRequested, LPWSADATA lpWSAData)
 
     TRACE("verReq=%x\n", wVersionRequested);
 
-    if (LOBYTE(wVersionRequested) < 2)
+    if (LOBYTE(wVersionRequested) < 1)
         return WSAVERNOTSUPPORTED;
 
     if (!lpWSAData) return WSAEINVAL;
@@ -2567,65 +2559,6 @@ INT WINAPI WSAUnhookBlockingHook(void)
     return SOCKET_ERROR;
 }
 
-/*
- *      TCP/IP action codes.
- */
-
-
-#define WSCNTL_TCPIP_QUERY_INFO             0x00000000
-#define WSCNTL_TCPIP_SET_INFO               0x00000001
-#define WSCNTL_TCPIP_ICMP_ECHO              0x00000002
-#define WSCNTL_TCPIP_TEST                   0x00000003
-
-
-/***********************************************************************
- *      WsControl()
- *
- * WsControl seems to be an undocumented Win95 function. A lot of 
- * discussion about WsControl can be found on the net, e.g.
- * Subject:      Re: WSOCK32.DLL WsControl Exported Function
- * From:         "Peter Rindfuss" <rindfuss-s@medea.wz-berlin.de>
- * Date:         1997/08/17
- */
-
-DWORD WINAPI WsControl(DWORD protocoll,DWORD action,
-		      LPVOID inbuf,LPDWORD inbuflen,
-                      LPVOID outbuf,LPDWORD outbuflen) 
-{
-
-  switch (action) {
-  case WSCNTL_TCPIP_ICMP_ECHO:
-    {
-      unsigned int addr = *(unsigned int*)inbuf;
-#if 0
-      int timeout= *(unsigned int*)(inbuf+4);
-      short x1 = *(unsigned short*)(inbuf+8);
-      short sendbufsize = *(unsigned short*)(inbuf+10);
-      char x2 = *(unsigned char*)(inbuf+12);
-      char ttl = *(unsigned char*)(inbuf+13);
-      char service = *(unsigned char*)(inbuf+14);
-      char type= *(unsigned char*)(inbuf+15); /* 0x2: don't fragment*/
-#endif      
-      
-      FIXME("(ICMP_ECHO) to 0x%08x stub \n", addr);
-      break;
-    }
-  default:
-    FIXME("(%lx,%lx,%p,%p,%p,%p) stub\n",
-	  protocoll,action,inbuf,inbuflen,outbuf,outbuflen);
-  }
-  return FALSE;
-}
-
-/***********************************************************************
- *       WS_s_perror         WSOCK32.1108 
- */
-void WINAPI WS_s_perror(LPCSTR message)
-{
-    FIXME("(%s): stub\n",message);
-    return;
-}
-
 
 /* ----------------------------------- end of API stuff */
 
diff --git a/dlls/winsock/ws2_32.spec b/dlls/winsock/ws2_32.spec
index dabba6a7dc3..b1c1da3e5d5 100644
--- a/dlls/winsock/ws2_32.spec
+++ b/dlls/winsock/ws2_32.spec
@@ -115,8 +115,8 @@ init WSOCK32_LibMain
 112 stdcall WSASetLastError(long) WSASetLastError
 113 stdcall WSACancelBlockingCall() WSACancelBlockingCall
 114 stdcall WSAIsBlocking() WSAIsBlocking
-115 stdcall WSAStartup (long ptr)  WS2_WSAStartup
-116 stdcall WSACleanup ()          WSACleanup
+115 stdcall WSAStartup(long ptr) WSAStartup
+116 stdcall WSACleanup() WSACleanup
 
 #  117 ~ 150  UNKNOWN
 
diff --git a/dlls/winsock/wsock32.spec b/dlls/winsock/wsock32.spec
deleted file mode 100644
index 332046b52e3..00000000000
--- a/dlls/winsock/wsock32.spec
+++ /dev/null
@@ -1,81 +0,0 @@
-name	wsock32
-type	win32
-init	WSOCK32_LibMain
-
-001 stdcall accept(long ptr ptr) WSOCK32_accept
-002 stdcall bind(long ptr long) WSOCK32_bind
-003 stdcall closesocket(long) WSOCK32_closesocket
-004 stdcall connect(long ptr long) WSOCK32_connect
-005 stdcall getpeername(long ptr ptr) WSOCK32_getpeername
-006 stdcall getsockname(long ptr ptr) WSOCK32_getsockname
-007 stdcall getsockopt(long long long ptr ptr) WSOCK32_getsockopt
-008 stdcall htonl(long) WINSOCK_htonl
-009 stdcall htons(long) WINSOCK_htons
-010 stdcall inet_addr(str) WINSOCK_inet_addr
-011 stdcall inet_ntoa(ptr) WSOCK32_inet_ntoa
-012 stdcall ioctlsocket(long long ptr) WSOCK32_ioctlsocket
-013 stdcall listen(long long) WSOCK32_listen
-014 stdcall ntohl(long) WINSOCK_ntohl
-015 stdcall ntohs(long) WINSOCK_ntohs
-016 stdcall recv(long ptr long long) WSOCK32_recv
-017 stdcall recvfrom(long ptr long long ptr ptr) WSOCK32_recvfrom
-018 stdcall select(long ptr ptr ptr ptr) WSOCK32_select
-019 stdcall send(long ptr long long) WSOCK32_send
-020 stdcall sendto(long ptr long long ptr long) WSOCK32_sendto
-021 stdcall setsockopt(long long long ptr long) WSOCK32_setsockopt
-022 stdcall shutdown(long long) WSOCK32_shutdown
-023 stdcall socket(long long long) WSOCK32_socket
-051 stdcall gethostbyaddr(ptr long long) WSOCK32_gethostbyaddr
-052 stdcall gethostbyname(str) WSOCK32_gethostbyname
-053 stdcall getprotobyname(str) WSOCK32_getprotobyname
-054 stdcall getprotobynumber(long) WSOCK32_getprotobynumber
-055 stdcall getservbyname(str str) WSOCK32_getservbyname
-056 stdcall getservbyport(long str) WSOCK32_getservbyport
-057 stdcall gethostname(ptr long) WSOCK32_gethostname
-101 stdcall WSAAsyncSelect(long long long long) WSAAsyncSelect
-102 stdcall WSAAsyncGetHostByAddr(long long ptr long long ptr long) WSAAsyncGetHostByAddr
-103 stdcall WSAAsyncGetHostByName(long long str ptr long) WSAAsyncGetHostByName
-104 stdcall WSAAsyncGetProtoByNumber(long long long ptr long) WSAAsyncGetProtoByNumber
-105 stdcall WSAAsyncGetProtoByName(long long str ptr long) WSAAsyncGetProtoByName
-106 stdcall WSAAsyncGetServByPort(long long long str ptr long) WSAAsyncGetServByPort
-107 stdcall WSAAsyncGetServByName(long long str str ptr long) WSAAsyncGetServByName
-108 stdcall WSACancelAsyncRequest(long) WSACancelAsyncRequest
-109 stdcall WSASetBlockingHook(ptr) WSASetBlockingHook
-110 stdcall WSAUnhookBlockingHook() WSAUnhookBlockingHook
-111 stdcall WSAGetLastError() WSAGetLastError
-112 stdcall WSASetLastError(long) WSASetLastError
-113 stdcall WSACancelBlockingCall() WSACancelBlockingCall
-114 stdcall WSAIsBlocking() WSAIsBlocking
-115 stdcall WSAStartup(long ptr) WSAStartup
-116 stdcall WSACleanup() WSACleanup
-151 stdcall __WSAFDIsSet(long ptr) __WSAFDIsSet
-#500 stub WEP
-# applications *should* 'degrade gracefully if these are not present
-# ... as it is, they don't
-#1000 stub WSApSetPostRoutine
-1001 stdcall WsControl(long long ptr ptr ptr ptr) WsControl
-1100 stdcall inet_network(str) inet_network
-1101 stdcall getnetbyname(str) getnetbyname
-#1102 stub rcmd
-#1103 stub rexec
-#1104 stub rresvport
-#1105 stub sethostname
-#1106 stub dn_expand
-1107 stdcall WSARecvEx(long ptr long ptr) WSARecvEx
-1108 stdcall s_perror(str) WS_s_perror
-1109 stub GetAddressByNameA
-1110 stub GetAddressByNameW
-#1111 stub EnumProtocolsA
-#1112 stub EnumProtocolsW
-#1113 stub GetTypeByNameA
-#1114 stub GetTypeByNameW
-#1115 stub GetNameByTypeA
-#1116 stub GetNameByTypeW
-#1117 stub SetServiceA
-#1118 stub SetServiceW
-#1119 stub GetServiceA
-#1120 stub GetServiceW
-#1130 stub NPLoadNameSpaces
-#1140 stub TransmitFile
-#1141 stub AcceptEx
-#1142 stub GetAcceptExSockaddrs
diff --git a/dlls/wow32/.cvsignore b/dlls/wow32/.cvsignore
new file mode 100644
index 00000000000..4389c6d86df
--- /dev/null
+++ b/dlls/wow32/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+libwow32.so.1.0
+wow32.spec.c
diff --git a/dlls/wow32/Makefile.in b/dlls/wow32/Makefile.in
new file mode 100644
index 00000000000..f363113982b
--- /dev/null
+++ b/dlls/wow32/Makefile.in
@@ -0,0 +1,10 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = wow32
+SOVERSION = 1.0
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/dlls/wow32/wow32.spec b/dlls/wow32/wow32.spec
new file mode 100644
index 00000000000..7a89059db0a
--- /dev/null
+++ b/dlls/wow32/wow32.spec
@@ -0,0 +1,24 @@
+name	wow32
+type	win32
+
+import kernel32.dll
+
+# ordinal exports
+1 forward WOWGetDescriptor kernel32.K32WOWGetDescriptor
+
+@ forward WOWCallback16 kernel32.K32WOWCallback16
+@ forward WOWCallback16Ex kernel32.K32WOWCallback16Ex
+@ forward WOWDirectedYield16 kernel32.K32WOWDirectedYield16
+@ forward WOWGetVDMPointer kernel32.K32WOWGetVDMPointer
+@ forward WOWGetVDMPointerFix kernel32.K32WOWGetVDMPointerFix
+@ forward WOWGetVDMPointerUnfix kernel32.K32WOWGetVDMPointerUnfix
+@ forward WOWGlobalAlloc16 kernel32.K32WOWGlobalAlloc16
+@ forward WOWGlobalAllocLock16 kernel32.K32WOWGlobalAllocLock16
+@ forward WOWGlobalFree16 kernel32.K32WOWGlobalFree16
+@ forward WOWGlobalLock16 kernel32.K32WOWGlobalLock16
+@ forward WOWGlobalLockSize16 kernel32.K32WOWGlobalLockSize16
+@ forward WOWGlobalUnlock16 kernel32.K32WOWGlobalUnlock16
+@ forward WOWGlobalUnlockFree16 kernel32.K32WOWGlobalUnlockFree16
+@ forward WOWHandle16 kernel32.K32WOWHandle16
+@ forward WOWHandle32 kernel32.K32WOWHandle32
+@ forward WOWYield16 kernel32.K32WOWYield16
diff --git a/dlls/wsock32/.cvsignore b/dlls/wsock32/.cvsignore
new file mode 100644
index 00000000000..d96dc8fb591
--- /dev/null
+++ b/dlls/wsock32/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+libwsock32.so.1.0
+wsock32.spec.c
diff --git a/dlls/wsock32/Makefile.in b/dlls/wsock32/Makefile.in
new file mode 100644
index 00000000000..e2e9d12e11e
--- /dev/null
+++ b/dlls/wsock32/Makefile.in
@@ -0,0 +1,13 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = wsock32
+SOVERSION = 1.0
+IMPORTS   = ws2_32
+
+C_SRCS = socket.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/dlls/wsock32/socket.c b/dlls/wsock32/socket.c
new file mode 100644
index 00000000000..49aa58f539a
--- /dev/null
+++ b/dlls/wsock32/socket.c
@@ -0,0 +1,57 @@
+/*
+ * WSOCK32 specific functions
+ *
+ * Copyright (C) 1993,1994,1996,1997 John Brezak, Erik Bos, Alex Korobka.
+ */
+
+#include "windef.h"
+#include "debugtools.h"
+
+DEFAULT_DEBUG_CHANNEL(winsock);
+
+/* TCP/IP action codes */
+#define WSCNTL_TCPIP_QUERY_INFO             0x00000000
+#define WSCNTL_TCPIP_SET_INFO               0x00000001
+#define WSCNTL_TCPIP_ICMP_ECHO              0x00000002
+#define WSCNTL_TCPIP_TEST                   0x00000003
+
+/***********************************************************************
+ *      WsControl
+ */
+DWORD WINAPI WsControl(DWORD protocoll,DWORD action,
+		      LPVOID inbuf,LPDWORD inbuflen,
+                      LPVOID outbuf,LPDWORD outbuflen) 
+{
+
+  switch (action) {
+  case WSCNTL_TCPIP_ICMP_ECHO:
+    {
+      unsigned int addr = *(unsigned int*)inbuf;
+#if 0
+      int timeout= *(unsigned int*)(inbuf+4);
+      short x1 = *(unsigned short*)(inbuf+8);
+      short sendbufsize = *(unsigned short*)(inbuf+10);
+      char x2 = *(unsigned char*)(inbuf+12);
+      char ttl = *(unsigned char*)(inbuf+13);
+      char service = *(unsigned char*)(inbuf+14);
+      char type= *(unsigned char*)(inbuf+15); /* 0x2: don't fragment*/
+#endif      
+      
+      FIXME("(ICMP_ECHO) to 0x%08x stub \n", addr);
+      break;
+    }
+  default:
+    FIXME("(%lx,%lx,%p,%p,%p,%p) stub\n",
+	  protocoll,action,inbuf,inbuflen,outbuf,outbuflen);
+  }
+  return FALSE;
+}
+
+/***********************************************************************
+ *       WS_s_perror         (WSOCK32.1108)
+ */
+void WINAPI WS_s_perror(LPCSTR message)
+{
+    FIXME("(%s): stub\n",message);
+    return;
+}
diff --git a/dlls/wsock32/wsock32.spec b/dlls/wsock32/wsock32.spec
new file mode 100644
index 00000000000..f579d9c415f
--- /dev/null
+++ b/dlls/wsock32/wsock32.spec
@@ -0,0 +1,83 @@
+name	wsock32
+type	win32
+
+import	ws2_32.dll
+
+  1 forward accept ws2_32.accept
+  2 forward bind ws2_32.bind
+  3 forward closesocket ws2_32.closesocket
+  4 forward connect ws2_32.connect
+  5 forward getpeername ws2_32.getpeername
+  6 forward getsockname ws2_32.getsockname
+  7 forward getsockopt ws2_32.getsockopt
+  8 forward htonl ws2_32.htonl
+  9 forward htons ws2_32.htons
+ 10 forward inet_addr ws2_32.inet_addr
+ 11 forward inet_ntoa ws2_32.inet_ntoa
+ 12 forward ioctlsocket ws2_32.ioctlsocket
+ 13 forward listen ws2_32.listen
+ 14 forward ntohl ws2_32.ntohl
+ 15 forward ntohs ws2_32.ntohs
+ 16 forward recv ws2_32.recv
+ 17 forward recvfrom ws2_32.recvfrom
+ 18 forward select ws2_32.select
+ 19 forward send ws2_32.send
+ 20 forward sendto ws2_32.sendto
+ 21 forward setsockopt ws2_32.setsockopt
+ 22 forward shutdown ws2_32.shutdown
+ 23 forward socket ws2_32.socket
+ 51 forward gethostbyaddr ws2_32.gethostbyaddr
+ 52 forward gethostbyname ws2_32.gethostbyname
+ 53 forward getprotobyname ws2_32.getprotobyname
+ 54 forward getprotobynumber ws2_32.getprotobynumber
+ 55 forward getservbyname ws2_32.getservbyname
+ 56 forward getservbyport ws2_32.getservbyport
+ 57 forward gethostname ws2_32.gethostname
+101 forward WSAAsyncSelect ws2_32.WSAAsyncSelect
+102 forward WSAAsyncGetHostByAddr ws2_32.WSAAsyncGetHostByAddr
+103 forward WSAAsyncGetHostByName ws2_32.WSAAsyncGetHostByName
+104 forward WSAAsyncGetProtoByNumber ws2_32.WSAAsyncGetProtoByNumber
+105 forward WSAAsyncGetProtoByName ws2_32.WSAAsyncGetProtoByName
+106 forward WSAAsyncGetServByPort ws2_32.WSAAsyncGetServByPort
+107 forward WSAAsyncGetServByName ws2_32.WSAAsyncGetServByName
+108 forward WSACancelAsyncRequest ws2_32.WSACancelAsyncRequest
+109 forward WSASetBlockingHook ws2_32.WSASetBlockingHook
+110 forward WSAUnhookBlockingHook ws2_32.WSAUnhookBlockingHook
+111 forward WSAGetLastError ws2_32.WSAGetLastError
+112 forward WSASetLastError ws2_32.WSASetLastError
+113 forward WSACancelBlockingCall ws2_32.WSACancelBlockingCall
+114 forward WSAIsBlocking ws2_32.WSAIsBlocking
+115 forward WSAStartup ws2_32.WSAStartup
+116 forward WSACleanup ws2_32.WSACleanup
+151 forward __WSAFDIsSet ws2_32.__WSAFDIsSet
+500 forward WEP ws2_32.WEP
+
+# applications *should* 'degrade gracefully if these are not present
+# ... as it is, they don't
+#1000 stub WSApSetPostRoutine
+1001 stdcall WsControl(long long ptr ptr ptr ptr) WsControl
+1100 stdcall inet_network(str) inet_network
+1101 stdcall getnetbyname(str) getnetbyname
+#1102 stub rcmd
+#1103 stub rexec
+#1104 stub rresvport
+#1105 stub sethostname
+#1106 stub dn_expand
+1107 stdcall WSARecvEx(long ptr long ptr) WSARecvEx
+1108 stdcall s_perror(str) WS_s_perror
+1109 stub GetAddressByNameA
+1110 stub GetAddressByNameW
+#1111 stub EnumProtocolsA
+#1112 stub EnumProtocolsW
+#1113 stub GetTypeByNameA
+#1114 stub GetTypeByNameW
+#1115 stub GetNameByTypeA
+#1116 stub GetNameByTypeW
+#1117 stub SetServiceA
+#1118 stub SetServiceW
+#1119 stub GetServiceA
+#1120 stub GetServiceW
+#1130 stub NPLoadNameSpaces
+#1140 stub TransmitFile
+#1141 stub AcceptEx
+#1142 stub GetAcceptExSockaddrs
-- 
GitLab