kernel32: Make system.drv into a stand-alone 16-bit module.
diff --git a/.gitignore b/.gitignore
index f439b35..45362c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -119,7 +119,6 @@
dlls/shdocvw/shdocvw_v1.tlb
dlls/stdole2.tlb/std_ole_v2.tlb
dlls/stdole32.tlb/std_ole_v1.tlb
-dlls/system.drv16
dlls/toolhelp.dll16
dlls/user.exe16
dlls/ver.dll16
diff --git a/configure b/configure
index 2c8e4e5..b2cbd87 100755
--- a/configure
+++ b/configure
@@ -16658,6 +16658,14 @@
ac_config_files="$ac_config_files dlls/sxs/Makefile"
ALL_MAKEFILES="$ALL_MAKEFILES \\
+ dlls/system.drv16/Makefile"
+test "x$enable_win16" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\
+ system.drv16"
+ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
+dlls/system.drv16/Makefile: dlls/system.drv16/Makefile.in dlls/Makedll.rules"
+ac_config_files="$ac_config_files dlls/system.drv16/Makefile"
+
+ALL_MAKEFILES="$ALL_MAKEFILES \\
dlls/t2embed/Makefile"
test "x$enable_t2embed" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\
t2embed"
@@ -19045,6 +19053,7 @@
"dlls/strmiids/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/strmiids/Makefile" ;;
"dlls/svrapi/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/svrapi/Makefile" ;;
"dlls/sxs/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/sxs/Makefile" ;;
+ "dlls/system.drv16/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/system.drv16/Makefile" ;;
"dlls/t2embed/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/t2embed/Makefile" ;;
"dlls/tapi32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/tapi32/Makefile" ;;
"dlls/traffic/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/traffic/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index b773573..5fb8e9b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2443,6 +2443,7 @@
WINE_CONFIG_MAKEFILE([dlls/strmiids/Makefile],[dlls/Makeimplib.rules],[dlls],[ALL_IMPLIB_DIRS])
WINE_CONFIG_MAKEFILE([dlls/svrapi/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/sxs/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
+WINE_CONFIG_MAKEFILE([dlls/system.drv16/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS],[enable_win16])
WINE_CONFIG_MAKEFILE([dlls/t2embed/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/tapi32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/traffic/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index de007a7..78be337 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -23,7 +23,6 @@
krnl386.exe16 \
mmsystem.dll16 \
setupx.dll16 \
- system.drv16 \
toolhelp.dll16 \
user.exe16 \
ver.dll16 \
@@ -45,7 +44,7 @@
gdi.exe16:
echo "gdi32.dll" >$@
-krnl386.exe16 system.drv16 toolhelp.dll16:
+krnl386.exe16 toolhelp.dll16:
echo "kernel32.dll" >$@
setupx.dll16:
diff --git a/dlls/kernel32/Makefile.in b/dlls/kernel32/Makefile.in
index 299f324..a64b699 100644
--- a/dlls/kernel32/Makefile.in
+++ b/dlls/kernel32/Makefile.in
@@ -11,7 +11,6 @@
SPEC_SRCS16 = \
krnl386.exe.spec \
- system.drv.spec \
toolhelp.spec
C_SRCS = \
@@ -55,7 +54,6 @@
string.c \
sync.c \
syslevel.c \
- system.c \
tape.c \
task.c \
thread.c \
diff --git a/dlls/system.drv16/Makefile.in b/dlls/system.drv16/Makefile.in
new file mode 100644
index 0000000..2fa90cf
--- /dev/null
+++ b/dlls/system.drv16/Makefile.in
@@ -0,0 +1,13 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = system.drv16
+IMPORTS = kernel32
+EXTRADLLFLAGS = -Wb,--subsystem,win16
+
+C_SRCS = system.c
+
+@MAKE_DLL_RULES@
+
+@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/kernel32/system.c b/dlls/system.drv16/system.c
similarity index 95%
rename from dlls/kernel32/system.c
rename to dlls/system.drv16/system.c
index 9395d83..46ab04e 100644
--- a/dlls/kernel32/system.c
+++ b/dlls/system.drv16/system.c
@@ -122,6 +122,7 @@
DWORD WINAPI InquireSystem16( WORD code, WORD arg )
{
WORD drivetype;
+ WCHAR root[3];
switch(code)
{
@@ -129,7 +130,12 @@
return SYS_TIMER_RATE;
case 1: /* Get drive type */
- drivetype = GetDriveType16( arg );
+ root[0] = 'A' + arg;
+ root[1] = ':';
+ root[2] = 0;
+ drivetype = GetDriveTypeW( root );
+ if (drivetype == DRIVE_CDROM) drivetype = DRIVE_REMOTE;
+ else if (drivetype == DRIVE_NO_ROOT_DIR) drivetype = DRIVE_UNKNOWN;
return MAKELONG( drivetype, drivetype );
case 2: /* Enable one-drive logic */
diff --git a/dlls/kernel32/system.drv.spec b/dlls/system.drv16/system.drv16.spec
similarity index 100%
rename from dlls/kernel32/system.drv.spec
rename to dlls/system.drv16/system.drv16.spec