Currently, all the Wine msxml versions point to msxml3. So if there is a native override for msxml3, all the other versions will cease to work, since they expect our msxml3. This change moves the actual implementation to winexml.dll, so that all versions will function even if msxml3 is native.
Suggestions welcome. I wasn't quite sure what should end up where, so I took the approach of only moving the absolutely necessary components to winexml.
From: Tim Clem tclem@codeweavers.com
Currently, all the Wine msxml versions point to msxml3. So if there is a native override for msxml3, all the other versions will cease to work, since they expect our msxml3. This change moves the actual implementation to winexml.dll, so that all versions will function even if msxml3 is native. --- configure | 2 + configure.ac | 1 + dlls/msxml/msxml.spec | 2 +- dlls/msxml2/msxml2.spec | 2 +- dlls/msxml3/Makefile.in | 49 ++---------------------- dlls/msxml3/msxml3.spec | 2 +- dlls/msxml4/msxml4.spec | 2 +- dlls/msxml6/msxml6.spec | 2 +- dlls/winexml/Makefile.in | 45 ++++++++++++++++++++++ dlls/{msxml3 => winexml}/attribute.c | 0 dlls/{msxml3 => winexml}/bsc.c | 0 dlls/{msxml3 => winexml}/cdata.c | 0 dlls/{msxml3 => winexml}/comment.c | 0 dlls/{msxml3 => winexml}/datatypes.xsd | 0 dlls/{msxml3 => winexml}/dispex.c | 0 dlls/{msxml3 => winexml}/docfrag.c | 0 dlls/{msxml3 => winexml}/doctype.c | 0 dlls/{msxml3 => winexml}/domdoc.c | 0 dlls/{msxml3 => winexml}/domimpl.c | 0 dlls/{msxml3 => winexml}/element.c | 0 dlls/{msxml3 => winexml}/entityref.c | 0 dlls/{msxml3 => winexml}/factory.c | 0 dlls/{msxml3 => winexml}/httprequest.c | 0 dlls/{msxml3 => winexml}/main.c | 0 dlls/{msxml3 => winexml}/msxml_dispex.h | 0 dlls/{msxml3 => winexml}/msxml_private.h | 0 dlls/{msxml3 => winexml}/mxnamespace.c | 0 dlls/{msxml3 => winexml}/mxwriter.c | 0 dlls/{msxml3 => winexml}/node.c | 0 dlls/{msxml3 => winexml}/nodelist.c | 0 dlls/{msxml3 => winexml}/nodemap.c | 0 dlls/{msxml3 => winexml}/parseerror.c | 0 dlls/{msxml3 => winexml}/pi.c | 0 dlls/{msxml3 => winexml}/saxreader.c | 0 dlls/{msxml3 => winexml}/schema.c | 0 dlls/{msxml3 => winexml}/schemas.rc | 0 dlls/{msxml3 => winexml}/selection.c | 0 dlls/{msxml3 => winexml}/stylesheet.c | 0 dlls/{msxml3 => winexml}/text.c | 0 dlls/{msxml3 => winexml}/uuid.c | 0 dlls/winexml/winexml.spec | 4 ++ dlls/{msxml3 => winexml}/xdr.c | 0 dlls/{msxml3 => winexml}/xmldoc.c | 0 dlls/{msxml3 => winexml}/xmlelem.c | 0 dlls/{msxml3 => winexml}/xmlparser.c | 0 dlls/{msxml3 => winexml}/xmlparser.idl | 0 dlls/{msxml3 => winexml}/xmlview.c | 0 dlls/{msxml3 => winexml}/xslpattern.h | 0 dlls/{msxml3 => winexml}/xslpattern.l | 0 dlls/{msxml3 => winexml}/xslpattern.y | 0 50 files changed, 60 insertions(+), 51 deletions(-) create mode 100644 dlls/winexml/Makefile.in rename dlls/{msxml3 => winexml}/attribute.c (100%) rename dlls/{msxml3 => winexml}/bsc.c (100%) rename dlls/{msxml3 => winexml}/cdata.c (100%) rename dlls/{msxml3 => winexml}/comment.c (100%) rename dlls/{msxml3 => winexml}/datatypes.xsd (100%) rename dlls/{msxml3 => winexml}/dispex.c (100%) rename dlls/{msxml3 => winexml}/docfrag.c (100%) rename dlls/{msxml3 => winexml}/doctype.c (100%) rename dlls/{msxml3 => winexml}/domdoc.c (100%) rename dlls/{msxml3 => winexml}/domimpl.c (100%) rename dlls/{msxml3 => winexml}/element.c (100%) rename dlls/{msxml3 => winexml}/entityref.c (100%) rename dlls/{msxml3 => winexml}/factory.c (100%) rename dlls/{msxml3 => winexml}/httprequest.c (100%) rename dlls/{msxml3 => winexml}/main.c (100%) rename dlls/{msxml3 => winexml}/msxml_dispex.h (100%) rename dlls/{msxml3 => winexml}/msxml_private.h (100%) rename dlls/{msxml3 => winexml}/mxnamespace.c (100%) rename dlls/{msxml3 => winexml}/mxwriter.c (100%) rename dlls/{msxml3 => winexml}/node.c (100%) rename dlls/{msxml3 => winexml}/nodelist.c (100%) rename dlls/{msxml3 => winexml}/nodemap.c (100%) rename dlls/{msxml3 => winexml}/parseerror.c (100%) rename dlls/{msxml3 => winexml}/pi.c (100%) rename dlls/{msxml3 => winexml}/saxreader.c (100%) rename dlls/{msxml3 => winexml}/schema.c (100%) rename dlls/{msxml3 => winexml}/schemas.rc (100%) rename dlls/{msxml3 => winexml}/selection.c (100%) rename dlls/{msxml3 => winexml}/stylesheet.c (100%) rename dlls/{msxml3 => winexml}/text.c (100%) rename dlls/{msxml3 => winexml}/uuid.c (100%) create mode 100644 dlls/winexml/winexml.spec rename dlls/{msxml3 => winexml}/xdr.c (100%) rename dlls/{msxml3 => winexml}/xmldoc.c (100%) rename dlls/{msxml3 => winexml}/xmlelem.c (100%) rename dlls/{msxml3 => winexml}/xmlparser.c (100%) rename dlls/{msxml3 => winexml}/xmlparser.idl (100%) rename dlls/{msxml3 => winexml}/xmlview.c (100%) rename dlls/{msxml3 => winexml}/xslpattern.h (100%) rename dlls/{msxml3 => winexml}/xslpattern.l (100%) rename dlls/{msxml3 => winexml}/xslpattern.y (100%)
diff --git a/configure b/configure index 86d4e00fa0f..bf01d577728 100755 --- a/configure +++ b/configure @@ -1483,6 +1483,7 @@ enable_winevulkan enable_winewayland_drv enable_winex11_drv enable_winexinput_sys +enable_winexml enable_wing32 enable_winhttp enable_wininet @@ -21922,6 +21923,7 @@ wine_fn_config_makefile dlls/winevulkan enable_winevulkan wine_fn_config_makefile dlls/winewayland.drv enable_winewayland_drv wine_fn_config_makefile dlls/winex11.drv enable_winex11_drv wine_fn_config_makefile dlls/winexinput.sys enable_winexinput_sys +wine_fn_config_makefile dlls/winexml enable_winexml wine_fn_config_makefile dlls/wing.dll16 enable_win16 wine_fn_config_makefile dlls/wing32 enable_wing32 wine_fn_config_makefile dlls/winhttp enable_winhttp diff --git a/configure.ac b/configure.ac index 4bb1efb3b7b..d7e641b2cff 100644 --- a/configure.ac +++ b/configure.ac @@ -3161,6 +3161,7 @@ WINE_CONFIG_MAKEFILE(dlls/winevulkan) WINE_CONFIG_MAKEFILE(dlls/winewayland.drv) WINE_CONFIG_MAKEFILE(dlls/winex11.drv) WINE_CONFIG_MAKEFILE(dlls/winexinput.sys) +WINE_CONFIG_MAKEFILE(dlls/winexml) WINE_CONFIG_MAKEFILE(dlls/wing.dll16,enable_win16) WINE_CONFIG_MAKEFILE(dlls/wing32) WINE_CONFIG_MAKEFILE(dlls/winhttp) diff --git a/dlls/msxml/msxml.spec b/dlls/msxml/msxml.spec index 5fd4c2841f9..715c02706ec 100644 --- a/dlls/msxml/msxml.spec +++ b/dlls/msxml/msxml.spec @@ -1,4 +1,4 @@ @ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) msxml3.DllGetClassObject +@ stdcall -private DllGetClassObject(ptr ptr ptr) winexml.DllGetClassObject @ stdcall -private DllRegisterServer() @ stdcall -private DllUnregisterServer() diff --git a/dlls/msxml2/msxml2.spec b/dlls/msxml2/msxml2.spec index 5fd4c2841f9..715c02706ec 100644 --- a/dlls/msxml2/msxml2.spec +++ b/dlls/msxml2/msxml2.spec @@ -1,4 +1,4 @@ @ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) msxml3.DllGetClassObject +@ stdcall -private DllGetClassObject(ptr ptr ptr) winexml.DllGetClassObject @ stdcall -private DllRegisterServer() @ stdcall -private DllUnregisterServer() diff --git a/dlls/msxml3/Makefile.in b/dlls/msxml3/Makefile.in index 2bf789732da..ed9aee5946c 100644 --- a/dlls/msxml3/Makefile.in +++ b/dlls/msxml3/Makefile.in @@ -1,49 +1,6 @@ MODULE = msxml3.dll -IMPORTS = $(XSLT_PE_LIBS) $(XML2_PE_LIBS) uuid urlmon shlwapi oleaut32 ole32 user32 advapi32 -EXTRAINCL = $(XSLT_PE_CFLAGS) $(XML2_PE_CFLAGS) +IMPORTS = ole32 advapi32
-C_SRCS = \ - attribute.c \ - bsc.c \ - cdata.c \ - comment.c \ - dispex.c \ - docfrag.c \ - doctype.c \ - domdoc.c \ - domimpl.c \ - element.c \ - entityref.c \ - factory.c \ - httprequest.c \ - main.c \ - mxnamespace.c \ - mxwriter.c \ - node.c \ - nodelist.c \ - nodemap.c \ - parseerror.c \ - pi.c \ - saxreader.c \ - schema.c \ - selection.c \ - stylesheet.c \ - text.c \ - uuid.c \ - xdr.c \ - xmldoc.c \ - xmlelem.c \ - xmlparser.c \ - xmlview.c +RC_SRCS = version.rc
-LEX_SRCS = xslpattern.l - -BISON_SRCS = xslpattern.y - -RC_SRCS = \ - schemas.rc \ - version.rc - -IDL_SRCS = \ - msxml3_v1.idl \ - xmlparser.idl +IDL_SRCS = msxml3_v1.idl diff --git a/dlls/msxml3/msxml3.spec b/dlls/msxml3/msxml3.spec index 15b763e7928..b57207ba16e 100644 --- a/dlls/msxml3/msxml3.spec +++ b/dlls/msxml3/msxml3.spec @@ -7,6 +7,6 @@ 12 stub @
@ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllGetClassObject(ptr ptr ptr) winexml.DllGetClassObject @ stdcall -private DllRegisterServer() @ stdcall -private DllUnregisterServer() diff --git a/dlls/msxml4/msxml4.spec b/dlls/msxml4/msxml4.spec index 5fd4c2841f9..715c02706ec 100644 --- a/dlls/msxml4/msxml4.spec +++ b/dlls/msxml4/msxml4.spec @@ -1,4 +1,4 @@ @ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) msxml3.DllGetClassObject +@ stdcall -private DllGetClassObject(ptr ptr ptr) winexml.DllGetClassObject @ stdcall -private DllRegisterServer() @ stdcall -private DllUnregisterServer() diff --git a/dlls/msxml6/msxml6.spec b/dlls/msxml6/msxml6.spec index 5fd4c2841f9..715c02706ec 100644 --- a/dlls/msxml6/msxml6.spec +++ b/dlls/msxml6/msxml6.spec @@ -1,4 +1,4 @@ @ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) msxml3.DllGetClassObject +@ stdcall -private DllGetClassObject(ptr ptr ptr) winexml.DllGetClassObject @ stdcall -private DllRegisterServer() @ stdcall -private DllUnregisterServer() diff --git a/dlls/winexml/Makefile.in b/dlls/winexml/Makefile.in new file mode 100644 index 00000000000..5cfb78ec598 --- /dev/null +++ b/dlls/winexml/Makefile.in @@ -0,0 +1,45 @@ +MODULE = winexml.dll +IMPORTS = $(XSLT_PE_LIBS) $(XML2_PE_LIBS) uuid urlmon shlwapi oleaut32 ole32 user32 advapi32 +EXTRAINCL = $(XSLT_PE_CFLAGS) $(XML2_PE_CFLAGS) + +C_SRCS = \ + attribute.c \ + bsc.c \ + cdata.c \ + comment.c \ + dispex.c \ + docfrag.c \ + doctype.c \ + domdoc.c \ + domimpl.c \ + element.c \ + entityref.c \ + factory.c \ + httprequest.c \ + main.c \ + mxnamespace.c \ + mxwriter.c \ + node.c \ + nodelist.c \ + nodemap.c \ + parseerror.c \ + pi.c \ + saxreader.c \ + schema.c \ + selection.c \ + stylesheet.c \ + text.c \ + uuid.c \ + xdr.c \ + xmldoc.c \ + xmlelem.c \ + xmlparser.c \ + xmlview.c + +LEX_SRCS = xslpattern.l + +BISON_SRCS = xslpattern.y + +RC_SRCS = schemas.rc + +IDL_SRCS = xmlparser.idl diff --git a/dlls/msxml3/attribute.c b/dlls/winexml/attribute.c similarity index 100% rename from dlls/msxml3/attribute.c rename to dlls/winexml/attribute.c diff --git a/dlls/msxml3/bsc.c b/dlls/winexml/bsc.c similarity index 100% rename from dlls/msxml3/bsc.c rename to dlls/winexml/bsc.c diff --git a/dlls/msxml3/cdata.c b/dlls/winexml/cdata.c similarity index 100% rename from dlls/msxml3/cdata.c rename to dlls/winexml/cdata.c diff --git a/dlls/msxml3/comment.c b/dlls/winexml/comment.c similarity index 100% rename from dlls/msxml3/comment.c rename to dlls/winexml/comment.c diff --git a/dlls/msxml3/datatypes.xsd b/dlls/winexml/datatypes.xsd similarity index 100% rename from dlls/msxml3/datatypes.xsd rename to dlls/winexml/datatypes.xsd diff --git a/dlls/msxml3/dispex.c b/dlls/winexml/dispex.c similarity index 100% rename from dlls/msxml3/dispex.c rename to dlls/winexml/dispex.c diff --git a/dlls/msxml3/docfrag.c b/dlls/winexml/docfrag.c similarity index 100% rename from dlls/msxml3/docfrag.c rename to dlls/winexml/docfrag.c diff --git a/dlls/msxml3/doctype.c b/dlls/winexml/doctype.c similarity index 100% rename from dlls/msxml3/doctype.c rename to dlls/winexml/doctype.c diff --git a/dlls/msxml3/domdoc.c b/dlls/winexml/domdoc.c similarity index 100% rename from dlls/msxml3/domdoc.c rename to dlls/winexml/domdoc.c diff --git a/dlls/msxml3/domimpl.c b/dlls/winexml/domimpl.c similarity index 100% rename from dlls/msxml3/domimpl.c rename to dlls/winexml/domimpl.c diff --git a/dlls/msxml3/element.c b/dlls/winexml/element.c similarity index 100% rename from dlls/msxml3/element.c rename to dlls/winexml/element.c diff --git a/dlls/msxml3/entityref.c b/dlls/winexml/entityref.c similarity index 100% rename from dlls/msxml3/entityref.c rename to dlls/winexml/entityref.c diff --git a/dlls/msxml3/factory.c b/dlls/winexml/factory.c similarity index 100% rename from dlls/msxml3/factory.c rename to dlls/winexml/factory.c diff --git a/dlls/msxml3/httprequest.c b/dlls/winexml/httprequest.c similarity index 100% rename from dlls/msxml3/httprequest.c rename to dlls/winexml/httprequest.c diff --git a/dlls/msxml3/main.c b/dlls/winexml/main.c similarity index 100% rename from dlls/msxml3/main.c rename to dlls/winexml/main.c diff --git a/dlls/msxml3/msxml_dispex.h b/dlls/winexml/msxml_dispex.h similarity index 100% rename from dlls/msxml3/msxml_dispex.h rename to dlls/winexml/msxml_dispex.h diff --git a/dlls/msxml3/msxml_private.h b/dlls/winexml/msxml_private.h similarity index 100% rename from dlls/msxml3/msxml_private.h rename to dlls/winexml/msxml_private.h diff --git a/dlls/msxml3/mxnamespace.c b/dlls/winexml/mxnamespace.c similarity index 100% rename from dlls/msxml3/mxnamespace.c rename to dlls/winexml/mxnamespace.c diff --git a/dlls/msxml3/mxwriter.c b/dlls/winexml/mxwriter.c similarity index 100% rename from dlls/msxml3/mxwriter.c rename to dlls/winexml/mxwriter.c diff --git a/dlls/msxml3/node.c b/dlls/winexml/node.c similarity index 100% rename from dlls/msxml3/node.c rename to dlls/winexml/node.c diff --git a/dlls/msxml3/nodelist.c b/dlls/winexml/nodelist.c similarity index 100% rename from dlls/msxml3/nodelist.c rename to dlls/winexml/nodelist.c diff --git a/dlls/msxml3/nodemap.c b/dlls/winexml/nodemap.c similarity index 100% rename from dlls/msxml3/nodemap.c rename to dlls/winexml/nodemap.c diff --git a/dlls/msxml3/parseerror.c b/dlls/winexml/parseerror.c similarity index 100% rename from dlls/msxml3/parseerror.c rename to dlls/winexml/parseerror.c diff --git a/dlls/msxml3/pi.c b/dlls/winexml/pi.c similarity index 100% rename from dlls/msxml3/pi.c rename to dlls/winexml/pi.c diff --git a/dlls/msxml3/saxreader.c b/dlls/winexml/saxreader.c similarity index 100% rename from dlls/msxml3/saxreader.c rename to dlls/winexml/saxreader.c diff --git a/dlls/msxml3/schema.c b/dlls/winexml/schema.c similarity index 100% rename from dlls/msxml3/schema.c rename to dlls/winexml/schema.c diff --git a/dlls/msxml3/schemas.rc b/dlls/winexml/schemas.rc similarity index 100% rename from dlls/msxml3/schemas.rc rename to dlls/winexml/schemas.rc diff --git a/dlls/msxml3/selection.c b/dlls/winexml/selection.c similarity index 100% rename from dlls/msxml3/selection.c rename to dlls/winexml/selection.c diff --git a/dlls/msxml3/stylesheet.c b/dlls/winexml/stylesheet.c similarity index 100% rename from dlls/msxml3/stylesheet.c rename to dlls/winexml/stylesheet.c diff --git a/dlls/msxml3/text.c b/dlls/winexml/text.c similarity index 100% rename from dlls/msxml3/text.c rename to dlls/winexml/text.c diff --git a/dlls/msxml3/uuid.c b/dlls/winexml/uuid.c similarity index 100% rename from dlls/msxml3/uuid.c rename to dlls/winexml/uuid.c diff --git a/dlls/winexml/winexml.spec b/dlls/winexml/winexml.spec new file mode 100644 index 00000000000..b16365d0c9f --- /dev/null +++ b/dlls/winexml/winexml.spec @@ -0,0 +1,4 @@ +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() diff --git a/dlls/msxml3/xdr.c b/dlls/winexml/xdr.c similarity index 100% rename from dlls/msxml3/xdr.c rename to dlls/winexml/xdr.c diff --git a/dlls/msxml3/xmldoc.c b/dlls/winexml/xmldoc.c similarity index 100% rename from dlls/msxml3/xmldoc.c rename to dlls/winexml/xmldoc.c diff --git a/dlls/msxml3/xmlelem.c b/dlls/winexml/xmlelem.c similarity index 100% rename from dlls/msxml3/xmlelem.c rename to dlls/winexml/xmlelem.c diff --git a/dlls/msxml3/xmlparser.c b/dlls/winexml/xmlparser.c similarity index 100% rename from dlls/msxml3/xmlparser.c rename to dlls/winexml/xmlparser.c diff --git a/dlls/msxml3/xmlparser.idl b/dlls/winexml/xmlparser.idl similarity index 100% rename from dlls/msxml3/xmlparser.idl rename to dlls/winexml/xmlparser.idl diff --git a/dlls/msxml3/xmlview.c b/dlls/winexml/xmlview.c similarity index 100% rename from dlls/msxml3/xmlview.c rename to dlls/winexml/xmlview.c diff --git a/dlls/msxml3/xslpattern.h b/dlls/winexml/xslpattern.h similarity index 100% rename from dlls/msxml3/xslpattern.h rename to dlls/winexml/xslpattern.h diff --git a/dlls/msxml3/xslpattern.l b/dlls/winexml/xslpattern.l similarity index 100% rename from dlls/msxml3/xslpattern.l rename to dlls/winexml/xslpattern.l diff --git a/dlls/msxml3/xslpattern.y b/dlls/winexml/xslpattern.y similarity index 100% rename from dlls/msxml3/xslpattern.y rename to dlls/winexml/xslpattern.y
From: Tim Clem tclem@codeweavers.com
--- MAINTAINERS | 1 + 1 file changed, 1 insertion(+)
diff --git a/MAINTAINERS b/MAINTAINERS index 7e2645d8b5d..84d809bfa58 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -410,6 +410,7 @@ F: dlls/winex11.drv/ XML parsing M: Nikolay Sivov nsivov@codeweavers.com F: dlls/msxml*/ +F: dlls/winexml/ F: dlls/xmllite/
THE REST