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