[PATCH 20/27] [Kernel32]: ActCtx: now parsing the binding redirect element

Eric Pouech eric.pouech at wanadoo.fr
Mon May 7 14:51:52 CDT 2007


---

 dlls/kernel32/actctx.c |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/dlls/kernel32/actctx.c b/dlls/kernel32/actctx.c
index 7ca5425..cb1845f 100644
--- a/dlls/kernel32/actctx.c
+++ b/dlls/kernel32/actctx.c
@@ -403,6 +403,7 @@ done:
 
 #define ASSEMBLY_ELEM                   "assembly"
 #define ASSEMBLYIDENTITY_ELEM           "assemblyIdentity"
+#define BINDINGREDIRECT_ELEM            "bindingRedirect"
 #define CLRCLASS_ELEM                   "clrClass"
 #define CLRSURROGATE_ELEM               "clrSurrogate"
 #define COMCLASS_ELEM                   "comClass"
@@ -426,8 +427,10 @@ done:
 #define IID_ATTR                        "iid"
 #define LANGUAGE_ATTR                   "language"
 #define LOADFROM_ATTR                   "loadFrom"
+#define NEWVERSION_ATTR                 "newVersion"
 #define MANIFESTVERSION_ATTR            "manifestVersion"
 #define NAME_ATTR                       "name"
+#define OLDVERSION_ATTR                 "oldVersion"
 #define PROCESSORARCHITECTURE_ATTR      "processorArchitecture"
 #define PUBLICKEYTOKEN_ATTR             "publicKeyToken"
 #define SIZE_ATTR                       "size"
@@ -786,6 +789,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;
@@ -1015,6 +1045,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-patches mailing list