X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fsdk%2Ftools%2Fxml2sdb%2Fxml2sdb.cpp;h=d9ecc0adf2a562f9943ed62cb74325a0f096f3db;hp=59d8724bc02b3140d893be5289ec9a293147683d;hb=24376e47c4462f39d63722c4d9c3198058926416;hpb=22331e8f4bfddb56b8dee657380fa884256f8fef diff --git a/reactos/sdk/tools/xml2sdb/xml2sdb.cpp b/reactos/sdk/tools/xml2sdb/xml2sdb.cpp index 59d8724bc02..d9ecc0adf2a 100644 --- a/reactos/sdk/tools/xml2sdb/xml2sdb.cpp +++ b/reactos/sdk/tools/xml2sdb/xml2sdb.cpp @@ -1,9 +1,9 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS xml to sdb converter - * FILE: sdk/tools/xml2sdb/xml2sdb.cpp - * PURPOSE: Conversion functions from xml -> db - * PROGRAMMERS: Mark Jansen + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS xml to sdb converter + * FILE: sdk/tools/xml2sdb/xml2sdb.cpp + * PURPOSE: Conversion functions from xml -> db + * PROGRAMMERS: Mark Jansen (mark.jansen@reactos.org) * */ @@ -16,7 +16,7 @@ using tinyxml2::XMLText; static const GUID GUID_NULL = { 0 }; -static const char szCompilerVersion[] = "1.5.0.0"; +static const char szCompilerVersion[] = "1.6.0.0"; #if !defined(C_ASSERT) #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] @@ -241,19 +241,10 @@ bool ReadBinaryNode(XMLHandle dbNode, const char* nodeName, std::vector& d bool InExclude::fromXml(XMLHandle dbNode) { Module = ReadStringNode(dbNode, "MODULE"); + // Special module names: '$' and '*' if (!Module.empty()) { - Include = dbNode.FirstChildElement("INCLUDE").ToNode() != NULL; - if (!Include) - { - tinyxml2::XMLElement* elem = dbNode.ToElement(); - if (elem) - { - Include |= (elem->Attribute("INCLUDE") != NULL); - } - } - // $ = ?? - // * + Include = ToNodeName(dbNode) == "INCLUDE"; return true; } return false; @@ -303,7 +294,8 @@ bool ShimRef::fromXml(XMLHandle dbNode) { Name = ReadStringNode(dbNode, "NAME"); CommandLine = ReadStringNode(dbNode, "COMMAND_LINE"); - ReadGeneric(dbNode, InExcludes, "INEXCLUDE"); + ReadGeneric(dbNode, InExcludes, "INCLUDE"); + ReadGeneric(dbNode, InExcludes, "EXCLUDE"); return !Name.empty(); } @@ -331,7 +323,8 @@ bool Shim::fromXml(XMLHandle dbNode) ReadGuidNode(dbNode, "FIX_ID", FixID); // GENERAL ? // DESCRIPTION_RC_ID - ReadGeneric(dbNode, InExcludes, "INEXCLUDE"); + ReadGeneric(dbNode, InExcludes, "INCLUDE"); + ReadGeneric(dbNode, InExcludes, "EXCLUDE"); return !Name.empty() && !DllFile.empty(); } @@ -527,6 +520,12 @@ bool Database::fromXml(XMLHandle dbNode) { SHIM_ERR("Unhanled FLAG type\n"); } + else if (NodeName == "INCLUDE" || NodeName == "EXCLUDE") + { + InExclude inex; + if (inex.fromXml(libChild)) + Library.InExcludes.push_back(inex); + } libChild = libChild.NextSibling(); } @@ -560,6 +559,8 @@ bool Database::toSdb(LPCWSTR path) } WriteBinary(pdb, TAG_DATABASE_ID, ID); TAGID tidLibrary = BeginWriteListTag(pdb, TAG_LIBRARY); + if (!WriteGeneric(pdb, Library.InExcludes, *this)) + return false; if (!WriteGeneric(pdb, Library.Shims, *this)) return false; EndWriteListTag(pdb, tidLibrary);