[PATCH 21/27] [Kernel32]: Actctx: Added asmv2:hash parsing
implementation.
Eric Pouech
eric.pouech at wanadoo.fr
Mon May 7 14:51:59 CDT 2007
From: Jacek Caban <jacek at codeweavers.com>
---
dlls/kernel32/actctx.c | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/actctx.c b/dlls/kernel32/actctx.c
index cb1845f..088529e 100644
--- a/dlls/kernel32/actctx.c
+++ b/dlls/kernel32/actctx.c
@@ -412,6 +412,7 @@ done:
#define DEPENDENTASSEMBLY_ELEM "dependentAssembly"
#define DESCRIPTION_ELEM "description"
#define FILE_ELEM "file"
+#define HASH_ELEM "asmv2:hash"
#define NOINHERIT_ELEM "noInherit"
#define NOINHERITABLE_ELEM "noInheritable"
#define TYPELIB_ELEM "typelib"
@@ -598,6 +599,25 @@ static BOOL parse_end_element(xmlbuf_t *xmlbuf)
return parse_expect_no_attr(xmlbuf, &end) && !end;
}
+static BOOL parse_unknown_elem(xmlbuf_t *xmlbuf, const char *name)
+{
+ xmlstr_t attr_name, attr_value, elem;
+ BOOL end = FALSE, error, ret = TRUE;
+
+ while(next_xml_attr(xmlbuf, &attr_name, &attr_value, &error, &end));
+ if(error || end) return end;
+
+ while(ret && (ret = next_xml_elem(xmlbuf, &elem)))
+ {
+ if(*elem.ptr == '/' && !strncmp(elem.ptr+1, name, elem.len-1))
+ break;
+ else
+ ret = parse_unknown_elem(xmlbuf, elem.ptr);
+ }
+
+ return ret && parse_end_element(xmlbuf);
+}
+
static BOOL parse_assembly_identity_elem(xmlbuf_t* xmlbuf, struct actctx* actctx,
struct assembly_identity* ai)
{
@@ -1002,6 +1022,11 @@ static BOOL parse_file_elem(xmlbuf_t* xmlbuf, struct assembly* assembly)
{
ret = parse_cominterface_proxy_stub_elem(xmlbuf, dll);;
}
+ else if (xmlstr_cmp(&elem, HASH_ELEM))
+ {
+ WARN(HASH_ELEM " (undocumented) not supported\n");
+ ret = parse_unknown_elem(xmlbuf, HASH_ELEM);
+ }
else if (xmlstr_cmp(&elem, TYPELIB_ELEM))
{
ret = parse_typelib_elem(xmlbuf, dll);
More information about the wine-patches
mailing list