Eric Pouech : ntdll:
Added parsing of the binding redirect element in manifests.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Jul 20 06:02:13 CDT 2007
Module: wine
Branch: master
Commit: e6b3ca09c4d9b09b8ebd6dfde4f3ca761a5499b8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e6b3ca09c4d9b09b8ebd6dfde4f3ca761a5499b8
Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date: Thu Jul 19 18:03:47 2007 +0200
ntdll: Added parsing of the binding redirect element in manifests.
---
dlls/ntdll/actctx.c | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index 942713b..58b09b2 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -185,6 +185,7 @@ struct actctx_loader
#define ASSEMBLY_ELEM "assembly"
#define ASSEMBLYIDENTITY_ELEM "assemblyIdentity"
+#define BINDINGREDIRECT_ELEM "bindingRedirect"
#define CLRCLASS_ELEM "clrClass"
#define CLRSURROGATE_ELEM "clrSurrogate"
#define COMCLASS_ELEM "comClass"
@@ -209,6 +210,8 @@ struct actctx_loader
#define LANGUAGE_ATTR "language"
#define MANIFESTVERSION_ATTR "manifestVersion"
#define NAME_ATTR "name"
+#define NEWVERSION_ATTR "newVersion"
+#define OLDVERSION_ATTR "oldVersion"
#define PROCESSORARCHITECTURE_ATTR "processorArchitecture"
#define PUBLICKEYTOKEN_ATTR "publicKeyToken"
#define TLBID_ATTR "tlbid"
@@ -818,6 +821,33 @@ static BOOL parse_window_class_elem(xmlbuf_t* xmlbuf, struct dll_redirect* dll)
return ret;
}
+static BOOL parse_binding_redirect_elem(xmlbuf_t* xmlbuf)
+{
+ xmlstr_t attr_name, attr_value;
+ BOOL end = FALSE, error;
+
+ while (next_xml_attr(xmlbuf, &attr_name, &attr_value, &error, &end))
+ {
+ if (xmlstr_cmp(&attr_name, OLDVERSION_ATTR))
+ {
+ FIXME("Not stored yet oldVersion=%s\n", debugstr_xmlstr(&attr_value));
+ }
+ else if (xmlstr_cmp(&attr_name, NEWVERSION_ATTR))
+ {
+ FIXME("Not stored yet newVersion=%s\n", debugstr_xmlstr(&attr_value));
+ }
+ else
+ {
+ WARN("wrong attr %s=%s\n", debugstr_xmlstr(&attr_name),
+ debugstr_xmlstr(&attr_value));
+ return FALSE;
+ }
+ }
+
+ if (error || end) return end;
+ return parse_expect_elem(xmlbuf, ELEM_END(BINDINGREDIRECT_ELEM)) && parse_end_element(xmlbuf);
+}
+
static BOOL parse_description_elem(xmlbuf_t* xmlbuf)
{
xmlstr_t elem, content;
@@ -966,6 +996,10 @@ static BOOL parse_dependent_assembly_elem(xmlbuf_t* xmlbuf,
ret = parse_end_element(xmlbuf);
break;
}
+ else if (xmlstr_cmp(&elem, BINDINGREDIRECT_ELEM))
+ {
+ ret = parse_binding_redirect_elem(xmlbuf);
+ }
else
{
WARN("wrong elem %s\n", debugstr_xmlstr(&elem));
More information about the wine-cvs
mailing list