libwine: New naming scheme for 16-bit builtin dlls. Stop using symlinks for 16-bit dlls to make sure they don't get loaded by mistake when looking for a 32-bit dll.
diff --git a/dlls/.gitignore b/dlls/.gitignore index 6dc513a..731064a 100644 --- a/dlls/.gitignore +++ b/dlls/.gitignore
@@ -2,6 +2,19 @@ Makefile Makeimplib.rules Maketest.rules +avifile.dll16 +comm.drv16 +commdlg.dll16 +compobj.dll16 +ctl3d.dll16 +ctl3dv2.dll16 +ddeml.dll16 +dispdib.dll16 +display.drv16 +gdi.exe16 +imm.dll16 +keyboard.drv16 +krnl386.exe16 libcomdlg32.def libgdi32.def libkernel32.def @@ -9,7 +22,42 @@ libmsacm32.def libmsvfw32.def libuser32.def -libw32skrnl.def libwinnls32.def libwnaspi32.def libws2_32.def +lzexpand.dll16 +mmsystem.dll16 +mouse.drv16 +msacm.dll16 +msvideo.dll16 +ole2.dll16 +ole2conv.dll16 +ole2disp.dll16 +ole2nls.dll16 +ole2prox.dll16 +ole2thk.dll16 +olecli.dll16 +olesvr.dll16 +rasapi16.dll16 +setupx.dll16 +shell.dll16 +sound.drv16 +storage.dll16 +stress.dll16 +system.drv16 +toolhelp.dll16 +twain.dll16 +typelib.dll16 +user.exe16 +ver.dll16 +w32sys.dll16 +win32s16.dll16 +win87em.dll16 +winaspi.dll16 +windebug.dll16 +wineps16.drv16 +wing.dll16 +winnls.dll16 +winsock.dll16 +wintab.dll16 +wprocs.dll16
diff --git a/dlls/Makedll.rules.in b/dlls/Makedll.rules.in index 43bf332..f4ece64 100644 --- a/dlls/Makedll.rules.in +++ b/dlls/Makedll.rules.in
@@ -99,9 +99,9 @@ # Rules for installation -EXE_SPECS16 = $(SPEC_SRCS16:.exe.spec=.exe) -DRV_SPECS16 = $(EXE_SPECS16:.drv.spec=.drv) -ALL_SPECS16 = $(DRV_SPECS16:.spec=.dll) +EXE_SPECS16 = $(SPEC_SRCS16:.exe.spec=.exe16) +DRV_SPECS16 = $(EXE_SPECS16:.drv.spec=.drv16) +ALL_SPECS16 = $(DRV_SPECS16:.spec=.dll16) WIN16_INSTALL = $(ALL_SPECS16:%=_install_/%) @@ -109,7 +109,7 @@ .PHONY: $(ALL_SPECS16:%=_install_/%) $(IMPORTLIB:%=_install_/%) $(IMPLIB_OBJS:%=_install_static_implib_/%) $(ALL_SPECS16:%=_install_/%): install_lib - cd $(DESTDIR)$(dlldir) && $(RM) `basename $@`$(DLLEXT) && $(LN_S) $(MODULE)$(DLLEXT) `basename $@`$(DLLEXT) + echo "$(MODULE)" > $(DESTDIR)$(dlldir)/`basename $@` install_lib: $(MODULE)$(DLLEXT) $(MKINSTALLDIRS) $(DESTDIR)$(dlldir) @@ -132,7 +132,7 @@ install install-dev:: $(IMPORTLIB:%=_install_/%) $(IMPLIB_OBJS:%=_install_static_implib_/%) uninstall:: - -cd $(DESTDIR)$(dlldir) && $(RM) $(MODULE)$(DLLEXT) $(IMPORTLIB) $(STATICIMPLIB) $(ALL_SPECS16:%=%$(DLLEXT)) + -cd $(DESTDIR)$(dlldir) && $(RM) $(MODULE)$(DLLEXT) $(IMPORTLIB) $(STATICIMPLIB) $(ALL_SPECS16) # Misc. rules
diff --git a/dlls/Makefile.in b/dlls/Makefile.in index 8420106..048b1a6 100644 --- a/dlls/Makefile.in +++ b/dlls/Makefile.in
@@ -208,55 +208,55 @@ # Symbolic links WIN16_FILES = \ - avifile.dll.so \ - comm.drv.so \ - commdlg.dll.so \ - compobj.dll.so \ - ctl3d.dll.so \ - ctl3dv2.dll.so \ - ddeml.dll.so \ - dispdib.dll.so \ - display.drv.so \ - gdi.exe.so \ - imm.dll.so \ - keyboard.drv.so \ - krnl386.exe.so \ - lzexpand.dll.so \ - mmsystem.dll.so \ - mouse.drv.so \ - msacm.dll.so \ - msvideo.dll.so \ - ole2.dll.so \ - ole2conv.dll.so \ - ole2disp.dll.so \ - ole2nls.dll.so \ - ole2prox.dll.so \ - ole2thk.dll.so \ - olecli.dll.so \ - olesvr.dll.so \ - rasapi16.dll.so \ - setupx.dll.so \ - shell.dll.so \ - sound.drv.so \ - storage.dll.so \ - stress.dll.so \ - system.drv.so \ - toolhelp.dll.so \ - twain.dll.so \ - typelib.dll.so \ - user.exe.so \ - ver.dll.so \ - w32sys.dll.so \ - win32s16.dll.so \ - win87em.dll.so \ - winaspi.dll.so \ - windebug.dll.so \ - wineps16.drv.so \ - wing.dll.so \ - winnls.dll.so \ - winsock.dll.so \ - wintab.dll.so \ - wprocs.dll.so + avifile.dll16 \ + comm.drv16 \ + commdlg.dll16 \ + compobj.dll16 \ + ctl3d.dll16 \ + ctl3dv2.dll16 \ + ddeml.dll16 \ + dispdib.dll16 \ + display.drv16 \ + gdi.exe16 \ + imm.dll16 \ + keyboard.drv16 \ + krnl386.exe16 \ + lzexpand.dll16 \ + mmsystem.dll16 \ + mouse.drv16 \ + msacm.dll16 \ + msvideo.dll16 \ + ole2.dll16 \ + ole2conv.dll16 \ + ole2disp.dll16 \ + ole2nls.dll16 \ + ole2prox.dll16 \ + ole2thk.dll16 \ + olecli.dll16 \ + olesvr.dll16 \ + rasapi16.dll16 \ + setupx.dll16 \ + shell.dll16 \ + sound.drv16 \ + storage.dll16 \ + stress.dll16 \ + system.drv16 \ + toolhelp.dll16 \ + twain.dll16 \ + typelib.dll16 \ + user.exe16 \ + ver.dll16 \ + w32sys.dll16 \ + win32s16.dll16 \ + win87em.dll16 \ + winaspi.dll16 \ + windebug.dll16 \ + wineps16.drv16 \ + wing.dll16 \ + winnls.dll16 \ + winsock.dll16 \ + wintab.dll16 \ + wprocs.dll16 SYMLINKS_SO = \ $(EXTRADIRS:%=%.dll.so) \ @@ -466,8 +466,8 @@ avifil32.dll.so: avifil32/avifil32.dll.so $(RM) $@ && $(LN_S) avifil32/avifil32.dll.so $@ -avifile.dll.so : avifil32.dll.so - $(RM) $@ && $(LN_S) avifil32.dll.so $@ +avifile.dll16 : avifil32.dll.so + echo "avifil32.dll" >$@ cabinet.dll.so: cabinet/cabinet.dll.so $(RM) $@ && $(LN_S) cabinet/cabinet.dll.so $@ @@ -490,8 +490,8 @@ comdlg32.dll.so: commdlg/comdlg32.dll.so $(RM) $@ && $(LN_S) commdlg/comdlg32.dll.so $@ -commdlg.dll.so : comdlg32.dll.so - $(RM) $@ && $(LN_S) comdlg32.dll.so $@ +commdlg.dll16 : comdlg32.dll.so + echo "comdlg32.dll" >$@ crtdll.dll.so: crtdll/crtdll.dll.so $(RM) $@ && $(LN_S) crtdll/crtdll.dll.so $@ @@ -505,8 +505,8 @@ ctl3d32.dll.so: ctl3d32/ctl3d32.dll.so $(RM) $@ && $(LN_S) ctl3d32/ctl3d32.dll.so $@ -ctl3d.dll.so ctl3dv2.dll.so : ctl3d32.dll.so - $(RM) $@ && $(LN_S) ctl3d32.dll.so $@ +ctl3d.dll16 ctl3dv2.dll16 : ctl3d32.dll.so + echo "ctl3d32.dll" >$@ d3d8.dll.so: d3d8/d3d8.dll.so $(RM) $@ && $(LN_S) d3d8/d3d8.dll.so $@ @@ -595,8 +595,8 @@ gdi32.dll.so: gdi/gdi32.dll.so $(RM) $@ && $(LN_S) gdi/gdi32.dll.so $@ -dispdib.dll.so gdi.exe.so wing.dll.so : gdi32.dll.so - $(RM) $@ && $(LN_S) gdi32.dll.so $@ +dispdib.dll16 gdi.exe16 wing.dll16 : gdi32.dll.so + echo "gdi32.dll" >$@ glu32.dll.so: glu32/glu32.dll.so $(RM) $@ && $(LN_S) glu32/glu32.dll.so $@ @@ -625,8 +625,8 @@ imm32.dll.so: imm32/imm32.dll.so $(RM) $@ && $(LN_S) imm32/imm32.dll.so $@ -imm.dll.so : imm32.dll.so - $(RM) $@ && $(LN_S) imm32.dll.so $@ +imm.dll16 : imm32.dll.so + echo "imm32.dll" >$@ iphlpapi.dll.so: iphlpapi/iphlpapi.dll.so $(RM) $@ && $(LN_S) iphlpapi/iphlpapi.dll.so $@ @@ -640,16 +640,16 @@ kernel32.dll.so: kernel/kernel32.dll.so $(RM) $@ && $(LN_S) kernel/kernel32.dll.so $@ -comm.drv.so krnl386.exe.so stress.dll.so \ - system.drv.so toolhelp.dll.so win87em.dll.so \ - windebug.dll.so : kernel32.dll.so - $(RM) $@ && $(LN_S) kernel32.dll.so $@ +comm.drv16 krnl386.exe16 stress.dll16 \ + system.drv16 toolhelp.dll16 win87em.dll16 \ + windebug.dll16 : kernel32.dll.so + echo "kernel32.dll" >$@ lz32.dll.so: lzexpand/lz32.dll.so $(RM) $@ && $(LN_S) lzexpand/lz32.dll.so $@ -lzexpand.dll.so : lz32.dll.so - $(RM) $@ && $(LN_S) lz32.dll.so $@ +lzexpand.dll16 : lz32.dll.so + echo "lz32.dll" >$@ mapi32.dll.so: mapi32/mapi32.dll.so $(RM) $@ && $(LN_S) mapi32/mapi32.dll.so $@ @@ -687,8 +687,8 @@ msacm32.dll.so: msacm/msacm32.dll.so $(RM) $@ && $(LN_S) msacm/msacm32.dll.so $@ -msacm.dll.so : msacm32.dll.so - $(RM) $@ && $(LN_S) msacm32.dll.so $@ +msacm.dll16 : msacm32.dll.so + echo "msacm32.dll" >$@ msadp32.acm.so: msacm/msadp32/msadp32.acm.so $(RM) $@ && $(LN_S) msacm/msadp32/msadp32.acm.so $@ @@ -735,8 +735,8 @@ msvfw32.dll.so: msvideo/msvfw32.dll.so $(RM) $@ && $(LN_S) msvideo/msvfw32.dll.so $@ -msvideo.dll.so : msvfw32.dll.so - $(RM) $@ && $(LN_S) msvfw32.dll.so $@ +msvideo.dll16 : msvfw32.dll.so + echo "msvfw32.dll" >$@ msvidc32.dll.so: msvidc32/msvidc32.dll.so $(RM) $@ && $(LN_S) msvidc32/msvidc32.dll.so $@ @@ -768,10 +768,10 @@ ole32.dll.so: ole32/ole32.dll.so $(RM) $@ && $(LN_S) ole32/ole32.dll.so $@ -compobj.dll.so ole2.dll.so ole2conv.dll.so \ - ole2nls.dll.so ole2prox.dll.so ole2thk.dll.so \ - storage.dll.so : ole32.dll.so - $(RM) $@ && $(LN_S) ole32.dll.so $@ +compobj.dll16 ole2.dll16 ole2conv.dll16 \ + ole2nls.dll16 ole2prox.dll16 ole2thk.dll16 \ + storage.dll16 : ole32.dll.so + echo "ole32.dll" >$@ oleacc.dll.so: oleacc/oleacc.dll.so $(RM) $@ && $(LN_S) oleacc/oleacc.dll.so $@ @@ -779,14 +779,14 @@ oleaut32.dll.so: oleaut32/oleaut32.dll.so $(RM) $@ && $(LN_S) oleaut32/oleaut32.dll.so $@ -ole2disp.dll.so typelib.dll.so : oleaut32.dll.so - $(RM) $@ && $(LN_S) oleaut32.dll.so $@ +ole2disp.dll16 typelib.dll16 : oleaut32.dll.so + echo "oleaut32.dll" >$@ olecli32.dll.so: olecli32/olecli32.dll.so $(RM) $@ && $(LN_S) olecli32/olecli32.dll.so $@ -olecli.dll.so : olecli32.dll.so - $(RM) $@ && $(LN_S) olecli32.dll.so $@ +olecli.dll16 : olecli32.dll.so + echo "olecli32.dll" >$@ oledlg.dll.so: oledlg/oledlg.dll.so $(RM) $@ && $(LN_S) oledlg/oledlg.dll.so $@ @@ -797,8 +797,8 @@ olesvr32.dll.so: olesvr32/olesvr32.dll.so $(RM) $@ && $(LN_S) olesvr32/olesvr32.dll.so $@ -olesvr.dll.so : olesvr32.dll.so - $(RM) $@ && $(LN_S) olesvr32.dll.so $@ +olesvr.dll16 : olesvr32.dll.so + echo "olesvr32.dll" >$@ opengl32.dll.so: opengl32/opengl32.dll.so $(RM) $@ && $(LN_S) opengl32/opengl32.dll.so $@ @@ -818,8 +818,8 @@ rasapi32.dll.so: rasapi32/rasapi32.dll.so $(RM) $@ && $(LN_S) rasapi32/rasapi32.dll.so $@ -rasapi16.dll.so : rasapi32.dll.so - $(RM) $@ && $(LN_S) rasapi32.dll.so $@ +rasapi16.dll16 : rasapi32.dll.so + echo "rasapi32.dll" >$@ riched20.dll.so: riched20/riched20.dll.so $(RM) $@ && $(LN_S) riched20/riched20.dll.so $@ @@ -851,8 +851,8 @@ setupapi.dll.so: setupapi/setupapi.dll.so $(RM) $@ && $(LN_S) setupapi/setupapi.dll.so $@ -setupx.dll.so : setupapi.dll.so - $(RM) $@ && $(LN_S) setupapi.dll.so $@ +setupx.dll16 : setupapi.dll.so + echo "setupapi.dll" >$@ sfc.dll.so: sfc/sfc.dll.so $(RM) $@ && $(LN_S) sfc/sfc.dll.so $@ @@ -863,8 +863,8 @@ shell32.dll.so: shell32/shell32.dll.so $(RM) $@ && $(LN_S) shell32/shell32.dll.so $@ -shell.dll.so : shell32.dll.so - $(RM) $@ && $(LN_S) shell32.dll.so $@ +shell.dll16 : shell32.dll.so + echo "shell32.dll" >$@ shfolder.dll.so: shfolder/shfolder.dll.so $(RM) $@ && $(LN_S) shfolder/shfolder.dll.so $@ @@ -890,8 +890,8 @@ twain_32.dll.so: twain/twain_32.dll.so $(RM) $@ && $(LN_S) twain/twain_32.dll.so $@ -twain.dll.so : twain_32.dll.so - $(RM) $@ && $(LN_S) twain_32.dll.so $@ +twain.dll16 : twain_32.dll.so + echo "twain_32.dll" >$@ unicows.dll.so: unicows/unicows.dll.so $(RM) $@ && $(LN_S) unicows/unicows.dll.so $@ @@ -905,9 +905,9 @@ user32.dll.so: user/user32.dll.so $(RM) $@ && $(LN_S) user/user32.dll.so $@ -ddeml.dll.so display.drv.so keyboard.drv.so \ - mouse.drv.so user.exe.so : user32.dll.so - $(RM) $@ && $(LN_S) user32.dll.so $@ +ddeml.dll16 display.drv16 keyboard.drv16 \ + mouse.drv16 user.exe16 : user32.dll.so + echo "user32.dll" >$@ usp10.dll.so: usp10/usp10.dll.so $(RM) $@ && $(LN_S) usp10/usp10.dll.so $@ @@ -924,8 +924,8 @@ version.dll.so: version/version.dll.so $(RM) $@ && $(LN_S) version/version.dll.so $@ -ver.dll.so : version.dll.so - $(RM) $@ && $(LN_S) version.dll.so $@ +ver.dll16 : version.dll.so + echo "version.dll" >$@ vmm.vxd.so: vmm.vxd/vmm.vxd.so $(RM) $@ && $(LN_S) vmm.vxd/vmm.vxd.so $@ @@ -945,8 +945,8 @@ w32skrnl.dll.so: win32s/w32skrnl.dll.so $(RM) $@ && $(LN_S) win32s/w32skrnl.dll.so $@ -w32sys.dll.so win32s16.dll.so : w32skrnl.dll.so - $(RM) $@ && $(LN_S) w32skrnl.dll.so $@ +w32sys.dll16 win32s16.dll16 : w32skrnl.dll.so + echo "w32skrnl.dll" >$@ winealsa.drv.so: winmm/winealsa/winealsa.drv.so $(RM) $@ && $(LN_S) winmm/winealsa/winealsa.drv.so $@ @@ -963,8 +963,8 @@ winedos.dll.so: winedos/winedos.dll.so $(RM) $@ && $(LN_S) winedos/winedos.dll.so $@ -wprocs.dll.so : winedos.dll.so - $(RM) $@ && $(LN_S) winedos.dll.so $@ +wprocs.dll16 : winedos.dll.so + echo "winedos.dll" >$@ wineesd.drv.so: winmm/wineesd/wineesd.drv.so $(RM) $@ && $(LN_S) winmm/wineesd/wineesd.drv.so $@ @@ -984,8 +984,8 @@ wineps.drv.so: wineps/wineps.drv.so $(RM) $@ && $(LN_S) wineps/wineps.drv.so $@ -wineps16.drv.so : wineps.drv.so - $(RM) $@ && $(LN_S) wineps.drv.so $@ +wineps16.drv16 : wineps.drv.so + echo "wineps.drv" >$@ winex11.drv.so: x11drv/winex11.drv.so $(RM) $@ && $(LN_S) x11drv/winex11.drv.so $@ @@ -996,14 +996,14 @@ winmm.dll.so: winmm/winmm.dll.so $(RM) $@ && $(LN_S) winmm/winmm.dll.so $@ -mmsystem.dll.so sound.drv.so : winmm.dll.so - $(RM) $@ && $(LN_S) winmm.dll.so $@ +mmsystem.dll16 sound.drv16 : winmm.dll.so + echo "winmm.dll" >$@ winnls32.dll.so: winnls/winnls32.dll.so $(RM) $@ && $(LN_S) winnls/winnls32.dll.so $@ -winnls.dll.so : winnls32.dll.so - $(RM) $@ && $(LN_S) winnls32.dll.so $@ +winnls.dll16 : winnls32.dll.so + echo "winnls32.dll" >$@ winspool.drv.so: winspool/winspool.drv.so $(RM) $@ && $(LN_S) winspool/winspool.drv.so $@ @@ -1011,8 +1011,8 @@ wintab32.dll.so: wintab32/wintab32.dll.so $(RM) $@ && $(LN_S) wintab32/wintab32.dll.so $@ -wintab.dll.so : wintab32.dll.so - $(RM) $@ && $(LN_S) wintab32.dll.so $@ +wintab.dll16 : wintab32.dll.so + echo "wintab32.dll" >$@ wintrust.dll.so: wintrust/wintrust.dll.so $(RM) $@ && $(LN_S) wintrust/wintrust.dll.so $@ @@ -1023,8 +1023,8 @@ wnaspi32.dll.so: winaspi/wnaspi32.dll.so $(RM) $@ && $(LN_S) winaspi/wnaspi32.dll.so $@ -winaspi.dll.so : wnaspi32.dll.so - $(RM) $@ && $(LN_S) wnaspi32.dll.so $@ +winaspi.dll16 : wnaspi32.dll.so + echo "wnaspi32.dll" >$@ wow32.dll.so: wow32/wow32.dll.so $(RM) $@ && $(LN_S) wow32/wow32.dll.so $@ @@ -1032,8 +1032,8 @@ ws2_32.dll.so: winsock/ws2_32.dll.so $(RM) $@ && $(LN_S) winsock/ws2_32.dll.so $@ -winsock.dll.so : ws2_32.dll.so - $(RM) $@ && $(LN_S) ws2_32.dll.so $@ +winsock.dll16 : ws2_32.dll.so + echo "ws2_32.dll" >$@ wsock32.dll.so: wsock32/wsock32.dll.so $(RM) $@ && $(LN_S) wsock32/wsock32.dll.so $@
diff --git a/dlls/make_dlls b/dlls/make_dlls index 0ba57ef..0f2bc5b 100755 --- a/dlls/make_dlls +++ b/dlls/make_dlls
@@ -170,7 +170,7 @@ next unless defined $altnames{$mod}; foreach my $i (sort @{$altnames{$mod}}) { - $targets16{sprintf("%s.so",$i)} = 1; + $targets16{$i . "16"} = $mod; } } foreach my $mod (sort keys %staticlib_dirs) { $targets{$mod} = 1; } @@ -230,10 +230,10 @@ foreach my $i (sort @{$altnames{$mod}}) { if ($count++ == 3) { printf NEWMAKE "\\\n "; $count = 1; } - printf NEWMAKE "%s.so ", $i; + printf NEWMAKE "%s16 ", $i; } printf NEWMAKE ": %s.so\n", $mod; - printf NEWMAKE "\t\$(RM) \$@ && \$(LN_S) %s.so \$@\n\n", $mod; + printf NEWMAKE "\techo \"%s\" >\$\@\n\n", $mod; } } foreach my $mod (sort keys %staticlib_dirs)
diff --git a/libs/wine/loader.c b/libs/wine/loader.c index e58ab7c..9b1eaf2 100644 --- a/libs/wine/loader.c +++ b/libs/wine/loader.c
@@ -518,6 +518,25 @@ struct dll_path_context context; *exists = 0; + + for (path = first_dll_path( name, "16", &context ); path; path = next_dll_path( &context )) + { + int fd = open( path, O_RDONLY ); + if (fd != -1) + { + int res = read( fd, buffer, size - 1 ); + while (res > 0 && (buffer[res-1] == '\n' || buffer[res-1] == '\r')) res--; + buffer[res] = 0; + close( fd ); + *exists = 1; + ret = 0; + break; + } + } + free_dll_path( &context ); + if (ret != -1) return ret; + + /* try old method too for backwards compatibility; will be removed later on */ for (path = first_dll_path( name, ".so", &context ); path; path = next_dll_path( &context )) { int res = readlink( path, buffer, size );