[PATCH 2/2] ntdll: Use wide-char string literals in actctx.c.
Michael Stefaniuc
mstefani at winehq.org
Thu Dec 3 17:36:30 CST 2020
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/ntdll/actctx.c | 532 ++++++++++++++++----------------------------
1 file changed, 194 insertions(+), 338 deletions(-)
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index faccd21d4b1..5db464a383e 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -565,125 +565,25 @@ struct actctx_loader
static const xmlstr_t empty_xmlstr;
#ifdef __i386__
-static const WCHAR current_archW[] = {'x','8','6',0};
+static const WCHAR current_archW[] = L"x86";
#elif defined __x86_64__
-static const WCHAR current_archW[] = {'a','m','d','6','4',0};
+static const WCHAR current_archW[] = L"amd64";
#elif defined __arm__
-static const WCHAR current_archW[] = {'a','r','m',0};
+static const WCHAR current_archW[] = L"arm";
#elif defined __aarch64__
-static const WCHAR current_archW[] = {'a','r','m','6','4',0};
+static const WCHAR current_archW[] = L"arm64";
#else
-static const WCHAR current_archW[] = {'n','o','n','e',0};
+static const WCHAR current_archW[] = L"none";
#endif
-static const WCHAR asmv1W[] = {'u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','a','s','m','.','v','1',0};
-static const WCHAR asmv2W[] = {'u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','a','s','m','.','v','2',0};
-static const WCHAR asmv3W[] = {'u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','a','s','m','.','v','3',0};
-static const WCHAR assemblyW[] = {'a','s','s','e','m','b','l','y',0};
-static const WCHAR assemblyIdentityW[] = {'a','s','s','e','m','b','l','y','I','d','e','n','t','i','t','y',0};
-static const WCHAR bindingRedirectW[] = {'b','i','n','d','i','n','g','R','e','d','i','r','e','c','t',0};
-static const WCHAR clrClassW[] = {'c','l','r','C','l','a','s','s',0};
-static const WCHAR clrSurrogateW[] = {'c','l','r','S','u','r','r','o','g','a','t','e',0};
-static const WCHAR comClassW[] = {'c','o','m','C','l','a','s','s',0};
-static const WCHAR comInterfaceExternalProxyStubW[] = {'c','o','m','I','n','t','e','r','f','a','c','e','E','x','t','e','r','n','a','l','P','r','o','x','y','S','t','u','b',0};
-static const WCHAR comInterfaceProxyStubW[] = {'c','o','m','I','n','t','e','r','f','a','c','e','P','r','o','x','y','S','t','u','b',0};
-static const WCHAR dependencyW[] = {'d','e','p','e','n','d','e','n','c','y',0};
-static const WCHAR dependentAssemblyW[] = {'d','e','p','e','n','d','e','n','t','A','s','s','e','m','b','l','y',0};
-static const WCHAR descriptionW[] = {'d','e','s','c','r','i','p','t','i','o','n',0};
-static const WCHAR fileW[] = {'f','i','l','e',0};
-static const WCHAR hashW[] = {'h','a','s','h',0};
-static const WCHAR noInheritW[] = {'n','o','I','n','h','e','r','i','t',0};
-static const WCHAR noInheritableW[] = {'n','o','I','n','h','e','r','i','t','a','b','l','e',0};
-static const WCHAR typelibW[] = {'t','y','p','e','l','i','b',0};
-static const WCHAR windowClassW[] = {'w','i','n','d','o','w','C','l','a','s','s',0};
-
-static const WCHAR clsidW[] = {'c','l','s','i','d',0};
-static const WCHAR hashalgW[] = {'h','a','s','h','a','l','g',0};
-static const WCHAR helpdirW[] = {'h','e','l','p','d','i','r',0};
-static const WCHAR iidW[] = {'i','i','d',0};
-static const WCHAR languageW[] = {'l','a','n','g','u','a','g','e',0};
-static const WCHAR manifestVersionW[] = {'m','a','n','i','f','e','s','t','V','e','r','s','i','o','n',0};
-static const WCHAR nameW[] = {'n','a','m','e',0};
-static const WCHAR neutralW[] = {'n','e','u','t','r','a','l',0};
-static const WCHAR newVersionW[] = {'n','e','w','V','e','r','s','i','o','n',0};
-static const WCHAR oldVersionW[] = {'o','l','d','V','e','r','s','i','o','n',0};
-static const WCHAR optionalW[] = {'o','p','t','i','o','n','a','l',0};
-static const WCHAR processorArchitectureW[] = {'p','r','o','c','e','s','s','o','r','A','r','c','h','i','t','e','c','t','u','r','e',0};
-static const WCHAR progidW[] = {'p','r','o','g','i','d',0};
-static const WCHAR publicKeyTokenW[] = {'p','u','b','l','i','c','K','e','y','T','o','k','e','n',0};
-static const WCHAR threadingmodelW[] = {'t','h','r','e','a','d','i','n','g','M','o','d','e','l',0};
-static const WCHAR tlbidW[] = {'t','l','b','i','d',0};
-static const WCHAR typeW[] = {'t','y','p','e',0};
-static const WCHAR versionW[] = {'v','e','r','s','i','o','n',0};
-static const WCHAR xmlnsW[] = {'x','m','l','n','s',0};
-static const WCHAR versionedW[] = {'v','e','r','s','i','o','n','e','d',0};
-static const WCHAR yesW[] = {'y','e','s',0};
-static const WCHAR noW[] = {'n','o',0};
-static const WCHAR restrictedW[] = {'R','E','S','T','R','I','C','T','E','D',0};
-static const WCHAR controlW[] = {'C','O','N','T','R','O','L',0};
-static const WCHAR hiddenW[] = {'H','I','D','D','E','N',0};
-static const WCHAR hasdiskimageW[] = {'H','A','S','D','I','S','K','I','M','A','G','E',0};
-static const WCHAR flagsW[] = {'f','l','a','g','s',0};
-static const WCHAR miscstatusW[] = {'m','i','s','c','S','t','a','t','u','s',0};
-static const WCHAR miscstatusiconW[] = {'m','i','s','c','S','t','a','t','u','s','I','c','o','n',0};
-static const WCHAR miscstatuscontentW[] = {'m','i','s','c','S','t','a','t','u','s','C','o','n','t','e','n','t',0};
-static const WCHAR miscstatusthumbnailW[] = {'m','i','s','c','S','t','a','t','u','s','T','h','u','m','b','n','a','i','l',0};
-static const WCHAR miscstatusdocprintW[] = {'m','i','s','c','S','t','a','t','u','s','D','o','c','P','r','i','n','t',0};
-static const WCHAR baseInterfaceW[] = {'b','a','s','e','I','n','t','e','r','f','a','c','e',0};
-static const WCHAR nummethodsW[] = {'n','u','m','M','e','t','h','o','d','s',0};
-static const WCHAR proxyStubClsid32W[] = {'p','r','o','x','y','S','t','u','b','C','l','s','i','d','3','2',0};
-static const WCHAR runtimeVersionW[] = {'r','u','n','t','i','m','e','V','e','r','s','i','o','n',0};
-static const WCHAR mscoreeW[] = {'M','S','C','O','R','E','E','.','D','L','L',0};
-static const WCHAR mscoree2W[] = {'m','s','c','o','r','e','e','.','d','l','l',0};
-
-static const WCHAR activatewhenvisibleW[] = {'a','c','t','i','v','a','t','e','w','h','e','n','v','i','s','i','b','l','e',0};
-static const WCHAR actslikebuttonW[] = {'a','c','t','s','l','i','k','e','b','u','t','t','o','n',0};
-static const WCHAR actslikelabelW[] = {'a','c','t','s','l','i','k','e','l','a','b','e','l',0};
-static const WCHAR alignableW[] = {'a','l','i','g','n','a','b','l','e',0};
-static const WCHAR alwaysrunW[] = {'a','l','w','a','y','s','r','u','n',0};
-static const WCHAR canlinkbyole1W[] = {'c','a','n','l','i','n','k','b','y','o','l','e','1',0};
-static const WCHAR cantlinkinsideW[] = {'c','a','n','t','l','i','n','k','i','n','s','i','d','e',0};
-static const WCHAR ignoreactivatewhenvisibleW[] = {'i','g','n','o','r','e','a','c','t','i','v','a','t','e','w','h','e','n','v','i','s','i','b','l','e',0};
-static const WCHAR imemodeW[] = {'i','m','e','m','o','d','e',0};
-static const WCHAR insertnotreplaceW[] = {'i','n','s','e','r','t','n','o','t','r','e','p','l','a','c','e',0};
-static const WCHAR insideoutW[] = {'i','n','s','i','d','e','o','u','t',0};
-static const WCHAR invisibleatruntimeW[] = {'i','n','v','i','s','i','b','l','e','a','t','r','u','n','t','i','m','e',0};
-static const WCHAR islinkobjectW[] = {'i','s','l','i','n','k','o','b','j','e','c','t',0};
-static const WCHAR nouiactivateW[] = {'n','o','u','i','a','c','t','i','v','a','t','e',0};
-static const WCHAR onlyiconicW[] = {'o','n','l','y','i','c','o','n','i','c',0};
-static const WCHAR recomposeonresizeW[] = {'r','e','c','o','m','p','o','s','e','o','n','r','e','s','i','z','e',0};
-static const WCHAR renderingisdeviceindependentW[] = {'r','e','n','d','e','r','i','n','g','i','s','d','e','v','i','c','e','i','n','d','e','p','e','n','d','e','n','t',0};
-static const WCHAR setclientsitefirstW[] = {'s','e','t','c','l','i','e','n','t','s','i','t','e','f','i','r','s','t',0};
-static const WCHAR simpleframeW[] = {'s','i','m','p','l','e','f','r','a','m','e',0};
-static const WCHAR staticW[] = {'s','t','a','t','i','c',0};
-static const WCHAR supportsmultilevelundoW[] = {'s','u','p','p','o','r','t','s','m','u','l','t','i','l','e','v','e','l','u','n','d','o',0};
-static const WCHAR wantstomenumergeW[] = {'w','a','n','t','s','t','o','m','e','n','u','m','e','r','g','e',0};
-
-static const WCHAR compatibilityW[] = {'c','o','m','p','a','t','i','b','i','l','i','t','y',0};
-static const WCHAR compatibilityNSW[] = {'u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','c','o','m','p','a','t','i','b','i','l','i','t','y','.','v','1',0};
-static const WCHAR applicationW[] = {'a','p','p','l','i','c','a','t','i','o','n',0};
-static const WCHAR supportedOSW[] = {'s','u','p','p','o','r','t','e','d','O','S',0};
-static const WCHAR IdW[] = {'I','d',0};
-static const WCHAR requestedExecutionLevelW[] = {'r','e','q','u','e','s','t','e','d','E','x','e','c','u','t','i','o','n','L','e','v','e','l',0};
-static const WCHAR requestedPrivilegesW[] = {'r','e','q','u','e','s','t','e','d','P','r','i','v','i','l','e','g','e','s',0};
-static const WCHAR securityW[] = {'s','e','c','u','r','i','t','y',0};
-static const WCHAR trustInfoW[] = {'t','r','u','s','t','I','n','f','o',0};
-static const WCHAR windowsSettingsW[] = {'w','i','n','d','o','w','s','S','e','t','t','i','n','g','s',0};
-static const WCHAR autoElevateW[] = {'a','u','t','o','E','l','e','v','a','t','e',0};
-static const WCHAR disableThemingW[] = {'d','i','s','a','b','l','e','T','h','e','m','i','n','g',0};
-static const WCHAR disableWindowFilteringW[] = {'d','i','s','a','b','l','e','W','i','n','d','o','w','F','i','l','t','e','r','i','n','g',0};
-static const WCHAR windowsSettings2005NSW[] = {'h','t','t','p',':','/','/','s','c','h','e','m','a','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','S','M','I','/','2','0','0','5','/','W','i','n','d','o','w','s','S','e','t','t','i','n','g','s',0};
-static const WCHAR windowsSettings2011NSW[] = {'h','t','t','p',':','/','/','s','c','h','e','m','a','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','S','M','I','/','2','0','1','1','/','W','i','n','d','o','w','s','S','e','t','t','i','n','g','s',0};
-static const WCHAR windowsSettings2016NSW[] = {'h','t','t','p',':','/','/','s','c','h','e','m','a','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','S','M','I','/','2','0','1','6','/','W','i','n','d','o','w','s','S','e','t','t','i','n','g','s',0};
-static const WCHAR windowsSettings2017NSW[] = {'h','t','t','p',':','/','/','s','c','h','e','m','a','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','S','M','I','/','2','0','1','7','/','W','i','n','d','o','w','s','S','e','t','t','i','n','g','s',0};
-static const WCHAR dpiAwareW[] = {'d','p','i','A','w','a','r','e',0};
-static const WCHAR dpiAwarenessW[] = {'d','p','i','A','w','a','r','e','n','e','s','s',0};
-static const WCHAR gdiScalingW[] = {'g','d','i','S','c','a','l','i','n','g',0};
-static const WCHAR highResolutionScrollingAwareW[] = {'h','i','g','h','R','e','s','o','l','u','t','i','o','n','S','c','r','o','l','l','i','n','g','A','w','a','r','e',0};
-static const WCHAR longPathAwareW[] = {'l','o','n','g','P','a','t','h','A','w','a','r','e',0};
-static const WCHAR magicFutureSettingW[] = {'m','a','g','i','c','F','u','t','u','r','e','S','e','t','t','i','n','g',0};
-static const WCHAR printerDriverIsolationW[] = {'p','r','i','n','t','e','r','D','r','i','v','e','r','I','s','o','l','a','t','i','o','n',0};
-static const WCHAR ultraHighResolutionScrollingAwareW[] = {'u','l','t','r','a','H','i','g','h','R','e','s','o','l','u','t','i','o','n','S','c','r','o','l','l','i','n','g','A','w','a','r','e',0};
+static const WCHAR asmv1W[] = L"urn:schemas-microsoft-com:asm.v1";
+static const WCHAR asmv2W[] = L"urn:schemas-microsoft-com:asm.v2";
+static const WCHAR asmv3W[] = L"urn:schemas-microsoft-com:asm.v3";
+static const WCHAR compatibilityNSW[] = L"urn:schemas-microsoft-com:compatibility.v1";
+static const WCHAR windowsSettings2005NSW[] = L"http://schemas.microsoft.com/SMI/2005/WindowsSettings";
+static const WCHAR windowsSettings2011NSW[] = L"http://schemas.microsoft.com/SMI/2011/WindowsSettings";
+static const WCHAR windowsSettings2016NSW[] = L"http://schemas.microsoft.com/SMI/2016/WindowsSettings";
+static const WCHAR windowsSettings2017NSW[] = L"http://schemas.microsoft.com/SMI/2017/WindowsSettings";
struct olemisc_entry
{
@@ -693,35 +593,30 @@ struct olemisc_entry
static const struct olemisc_entry olemisc_values[] =
{
- { activatewhenvisibleW, OLEMISC_ACTIVATEWHENVISIBLE },
- { actslikebuttonW, OLEMISC_ACTSLIKEBUTTON },
- { actslikelabelW, OLEMISC_ACTSLIKELABEL },
- { alignableW, OLEMISC_ALIGNABLE },
- { alwaysrunW, OLEMISC_ALWAYSRUN },
- { canlinkbyole1W, OLEMISC_CANLINKBYOLE1 },
- { cantlinkinsideW, OLEMISC_CANTLINKINSIDE },
- { ignoreactivatewhenvisibleW, OLEMISC_IGNOREACTIVATEWHENVISIBLE },
- { imemodeW, OLEMISC_IMEMODE },
- { insertnotreplaceW, OLEMISC_INSERTNOTREPLACE },
- { insideoutW, OLEMISC_INSIDEOUT },
- { invisibleatruntimeW, OLEMISC_INVISIBLEATRUNTIME },
- { islinkobjectW, OLEMISC_ISLINKOBJECT },
- { nouiactivateW, OLEMISC_NOUIACTIVATE },
- { onlyiconicW, OLEMISC_ONLYICONIC },
- { recomposeonresizeW, OLEMISC_RECOMPOSEONRESIZE },
- { renderingisdeviceindependentW, OLEMISC_RENDERINGISDEVICEINDEPENDENT },
- { setclientsitefirstW, OLEMISC_SETCLIENTSITEFIRST },
- { simpleframeW, OLEMISC_SIMPLEFRAME },
- { staticW, OLEMISC_STATIC },
- { supportsmultilevelundoW, OLEMISC_SUPPORTSMULTILEVELUNDO },
- { wantstomenumergeW, OLEMISC_WANTSTOMENUMERGE }
+ { L"activatewhenvisible", OLEMISC_ACTIVATEWHENVISIBLE },
+ { L"actslikebutton", OLEMISC_ACTSLIKEBUTTON },
+ { L"actslikelabel", OLEMISC_ACTSLIKELABEL },
+ { L"alignable", OLEMISC_ALIGNABLE },
+ { L"alwaysrun", OLEMISC_ALWAYSRUN },
+ { L"canlinkbyole1", OLEMISC_CANLINKBYOLE1 },
+ { L"cantlinkinside", OLEMISC_CANTLINKINSIDE },
+ { L"ignoreactivatewhenvisible", OLEMISC_IGNOREACTIVATEWHENVISIBLE },
+ { L"imemode", OLEMISC_IMEMODE },
+ { L"insertnotreplace", OLEMISC_INSERTNOTREPLACE },
+ { L"insideout", OLEMISC_INSIDEOUT },
+ { L"invisibleatruntime", OLEMISC_INVISIBLEATRUNTIME },
+ { L"islinkobject", OLEMISC_ISLINKOBJECT },
+ { L"nouiactivate", OLEMISC_NOUIACTIVATE },
+ { L"onlyiconic", OLEMISC_ONLYICONIC },
+ { L"recomposeonresize", OLEMISC_RECOMPOSEONRESIZE },
+ { L"renderingisdeviceindependent", OLEMISC_RENDERINGISDEVICEINDEPENDENT },
+ { L"setclientsitefirst", OLEMISC_SETCLIENTSITEFIRST },
+ { L"simpleframe", OLEMISC_SIMPLEFRAME },
+ { L"static", OLEMISC_STATIC },
+ { L"supportsmultilevelundo", OLEMISC_SUPPORTSMULTILEVELUNDO },
+ { L"wantstomenumerge", OLEMISC_WANTSTOMENUMERGE }
};
-static const WCHAR xmlW[] = {'?','x','m','l',0};
-static const WCHAR dotManifestW[] = {'.','m','a','n','i','f','e','s','t',0};
-static const WCHAR version_formatW[] = {'%','u','.','%','u','.','%','u','.','%','u',0};
-static const WCHAR wildcardW[] = {'*',0};
-
static ACTIVATION_CONTEXT system_actctx = { ACTCTX_MAGIC, 1 };
static ACTIVATION_CONTEXT *process_actctx = &system_actctx;
@@ -1008,7 +903,7 @@ static BOOL is_matching_identity( const struct assembly_identity *id1,
if (id1->language && id2->language && !is_matching_string( id1->language, id2->language ))
{
- if (wcscmp( wildcardW, id1->language ) && wcscmp( wildcardW, id2->language ))
+ if (wcscmp( L"*", id1->language ) && wcscmp( L"*", id2->language ))
return FALSE;
}
if (id1->version.major != id2->version.major) return FALSE;
@@ -1078,14 +973,11 @@ static void free_depend_manifests(struct actctx_loader* acl)
static WCHAR *build_assembly_dir(struct assembly_identity* ai)
{
- static const WCHAR undW[] = {'_',0};
- static const WCHAR noneW[] = {'n','o','n','e',0};
- static const WCHAR mskeyW[] = {'d','e','a','d','b','e','e','f',0};
-
- const WCHAR *arch = ai->arch ? ai->arch : noneW;
- const WCHAR *key = ai->public_key ? ai->public_key : noneW;
- const WCHAR *lang = ai->language ? ai->language : noneW;
- const WCHAR *name = ai->name ? ai->name : noneW;
+ static const WCHAR mskeyW[] = L"deadbeef";
+ const WCHAR *arch = ai->arch ? ai->arch : L"none";
+ const WCHAR *key = ai->public_key ? ai->public_key : L"none";
+ const WCHAR *lang = ai->language ? ai->language : L"none";
+ const WCHAR *name = ai->name ? ai->name : L"none";
SIZE_T size = (wcslen(arch) + 1 + wcslen(name) + 1 + wcslen(key) + 24 + 1 +
wcslen(lang) + 1) * sizeof(WCHAR) + sizeof(mskeyW);
WCHAR *ret;
@@ -1093,16 +985,16 @@ static WCHAR *build_assembly_dir(struct assembly_identity* ai)
if (!(ret = RtlAllocateHeap( GetProcessHeap(), 0, size ))) return NULL;
wcscpy( ret, arch );
- wcscat( ret, undW );
+ wcscat( ret, L"_" );
wcscat( ret, name );
- wcscat( ret, undW );
+ wcscat( ret, L"_" );
wcscat( ret, key );
- wcscat( ret, undW );
- swprintf( ret + wcslen(ret), size - wcslen(ret), version_formatW,
+ wcscat( ret, L"_" );
+ swprintf( ret + wcslen(ret), size - wcslen(ret), L"%u.%u.%u.%u",
ai->version.major, ai->version.minor, ai->version.build, ai->version.revision );
- wcscat( ret, undW );
+ wcscat( ret, L"_" );
wcscat( ret, lang );
- wcscat( ret, undW );
+ wcscat( ret, L"_" );
wcscat( ret, mskeyW );
return ret;
}
@@ -1123,35 +1015,26 @@ static inline void append_string( WCHAR *buffer, const WCHAR *prefix, const WCHA
static WCHAR *build_assembly_id( const struct assembly_identity *ai )
{
- static const WCHAR archW[] =
- {',','p','r','o','c','e','s','s','o','r','A','r','c','h','i','t','e','c','t','u','r','e','=',0};
- static const WCHAR public_keyW[] =
- {',','p','u','b','l','i','c','K','e','y','T','o','k','e','n','=',0};
- static const WCHAR typeW[] =
- {',','t','y','p','e','=',0};
- static const WCHAR versionW[] =
- {',','v','e','r','s','i','o','n','=',0};
-
WCHAR version[64], *ret;
SIZE_T size = 0;
- swprintf( version, ARRAY_SIZE(version), version_formatW,
+ swprintf( version, ARRAY_SIZE(version), L"%u.%u.%u.%u",
ai->version.major, ai->version.minor, ai->version.build, ai->version.revision );
if (ai->name) size += wcslen(ai->name) * sizeof(WCHAR);
- if (ai->arch) size += wcslen(archW) + wcslen(ai->arch) + 2;
- if (ai->public_key) size += wcslen(public_keyW) + wcslen(ai->public_key) + 2;
- if (ai->type) size += wcslen(typeW) + wcslen(ai->type) + 2;
- size += wcslen(versionW) + wcslen(version) + 2;
+ if (ai->arch) size += wcslen(L",processorArchitecture=") + wcslen(ai->arch) + 2;
+ if (ai->public_key) size += wcslen(L",publicKeyToken=") + wcslen(ai->public_key) + 2;
+ if (ai->type) size += wcslen(L",type=") + wcslen(ai->type) + 2;
+ size += wcslen(L",version=") + wcslen(version) + 2;
if (!(ret = RtlAllocateHeap( GetProcessHeap(), 0, (size + 1) * sizeof(WCHAR) )))
return NULL;
if (ai->name) wcscpy( ret, ai->name );
else *ret = 0;
- append_string( ret, archW, ai->arch );
- append_string( ret, public_keyW, ai->public_key );
- append_string( ret, typeW, ai->type );
- append_string( ret, versionW, version );
+ append_string( ret, L",processorArchitecture=", ai->arch );
+ append_string( ret, L",publicKeyToken=", ai->public_key );
+ append_string( ret, L",type=", ai->type );
+ append_string( ret, L",version=", version );
return ret;
}
@@ -1222,15 +1105,15 @@ static BOOL set_error( xmlbuf_t *xmlbuf )
static BOOL is_xmlns_attr( const struct xml_attr *attr )
{
- const int len = wcslen( xmlnsW );
+ const int len = wcslen( L"xmlns" );
if (attr->name.len < len) return FALSE;
- if (wcsncmp( attr->name.ptr, xmlnsW, len )) return FALSE;
+ if (wcsncmp( attr->name.ptr, L"xmlns", len )) return FALSE;
return (attr->name.len == len || attr->name.ptr[len] == ':');
}
static void push_xmlns( xmlbuf_t *xmlbuf, const struct xml_attr *attr )
{
- const int len = wcslen( xmlnsW );
+ const int len = wcslen( L"xmlns" );
struct xml_attr *ns;
if (xmlbuf->ns_pos == MAX_NAMESPACES - 1)
@@ -1527,27 +1410,27 @@ static void parse_assembly_identity_elem(xmlbuf_t *xmlbuf, ACTIVATION_CONTEXT *a
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, nameW))
+ if (xml_attr_cmp(&attr, L"name"))
{
if (!(ai->name = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, typeW))
+ else if (xml_attr_cmp(&attr, L"type"))
{
if (!(ai->type = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, versionW))
+ else if (xml_attr_cmp(&attr, L"version"))
{
if (!parse_version(&attr.value, &ai->version)) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, processorArchitectureW))
+ else if (xml_attr_cmp(&attr, L"processorArchitecture"))
{
if (!(ai->arch = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, publicKeyTokenW))
+ else if (xml_attr_cmp(&attr, L"publicKeyToken"))
{
if (!(ai->public_key = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, languageW))
+ else if (xml_attr_cmp(&attr, L"language"))
{
if (!(ai->language = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
@@ -1565,19 +1448,14 @@ static void parse_assembly_identity_elem(xmlbuf_t *xmlbuf, ACTIVATION_CONTEXT *a
static enum comclass_threadingmodel parse_com_class_threadingmodel(xmlstr_t *value)
{
- static const WCHAR apartW[] = {'A','p','a','r','t','m','e','n','t',0};
- static const WCHAR neutralW[] = {'N','e','u','t','r','a','l',0};
- static const WCHAR freeW[] = {'F','r','e','e',0};
- static const WCHAR bothW[] = {'B','o','t','h',0};
-
if (value->len == 0) return ThreadingModel_No;
- if (xmlstr_cmp(value, apartW))
+ if (xmlstr_cmp(value, L"Apartment"))
return ThreadingModel_Apartment;
- else if (xmlstr_cmp(value, freeW))
+ else if (xmlstr_cmp(value, L"Free"))
return ThreadingModel_Free;
- else if (xmlstr_cmp(value, bothW))
+ else if (xmlstr_cmp(value, L"Both"))
return ThreadingModel_Both;
- else if (xmlstr_cmp(value, neutralW))
+ else if (xmlstr_cmp(value, L"Neutral"))
return ThreadingModel_Neutral;
else
return ThreadingModel_No;
@@ -1686,43 +1564,43 @@ static void parse_com_class_elem( xmlbuf_t *xmlbuf, struct dll_redirect *dll, st
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, clsidW))
+ if (xml_attr_cmp(&attr, L"clsid"))
{
if (!(entity->u.comclass.clsid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, progidW))
+ else if (xml_attr_cmp(&attr, L"progid"))
{
if (!(entity->u.comclass.progid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, tlbidW))
+ else if (xml_attr_cmp(&attr, L"tlbid"))
{
if (!(entity->u.comclass.tlbid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, threadingmodelW))
+ else if (xml_attr_cmp(&attr, L"threadingModel"))
{
entity->u.comclass.model = parse_com_class_threadingmodel(&attr.value);
}
- else if (xml_attr_cmp(&attr, miscstatusW))
+ else if (xml_attr_cmp(&attr, L"miscStatus"))
{
entity->u.comclass.miscstatus = parse_com_class_misc(&attr.value);
}
- else if (xml_attr_cmp(&attr, miscstatuscontentW))
+ else if (xml_attr_cmp(&attr, L"miscStatusContent"))
{
entity->u.comclass.miscstatuscontent = parse_com_class_misc(&attr.value);
}
- else if (xml_attr_cmp(&attr, miscstatusthumbnailW))
+ else if (xml_attr_cmp(&attr, L"miscStatusThumbnail"))
{
entity->u.comclass.miscstatusthumbnail = parse_com_class_misc(&attr.value);
}
- else if (xml_attr_cmp(&attr, miscstatusiconW))
+ else if (xml_attr_cmp(&attr, L"miscStatusIcon"))
{
entity->u.comclass.miscstatusicon = parse_com_class_misc(&attr.value);
}
- else if (xml_attr_cmp(&attr, miscstatusdocprintW))
+ else if (xml_attr_cmp(&attr, L"miscStatusDocPrint"))
{
entity->u.comclass.miscstatusdocprint = parse_com_class_misc(&attr.value);
}
- else if (xml_attr_cmp(&attr, descriptionW))
+ else if (xml_attr_cmp(&attr, L"description"))
{
/* not stored */
}
@@ -1740,7 +1618,7 @@ static void parse_com_class_elem( xmlbuf_t *xmlbuf, struct dll_redirect *dll, st
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, progidW, asmv1W))
+ if (xml_elem_cmp(&elem, L"progid", asmv1W))
{
parse_com_class_progid(xmlbuf, entity, &elem);
}
@@ -1818,34 +1696,34 @@ static void parse_cominterface_proxy_stub_elem( xmlbuf_t *xmlbuf, struct dll_red
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, iidW))
+ if (xml_attr_cmp(&attr, L"iid"))
{
if (!(entity->u.ifaceps.iid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, nameW))
+ else if (xml_attr_cmp(&attr, L"name"))
{
if (!(entity->u.ifaceps.name = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, baseInterfaceW))
+ else if (xml_attr_cmp(&attr, L"baseInterface"))
{
if (!(entity->u.ifaceps.base = xmlstrdupW(&attr.value))) set_error( xmlbuf );
entity->u.ifaceps.mask |= BaseIface;
}
- else if (xml_attr_cmp(&attr, nummethodsW))
+ else if (xml_attr_cmp(&attr, L"numMethods"))
{
if (!(parse_nummethods(&attr.value, entity))) set_error( xmlbuf );
entity->u.ifaceps.mask |= NumMethods;
}
- else if (xml_attr_cmp(&attr, tlbidW))
+ else if (xml_attr_cmp(&attr, L"tlbid"))
{
if (!(entity->u.ifaceps.tlib = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, proxyStubClsid32W))
+ else if (xml_attr_cmp(&attr, L"proxyStubClsid32"))
{
if (!(psclsid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
/* not used */
- else if (xml_attr_cmp(&attr, threadingmodelW))
+ else if (xml_attr_cmp(&attr, L"threadingModel"))
{
}
else if (!is_xmlns_attr( &attr ))
@@ -1876,13 +1754,13 @@ static BOOL parse_typelib_flags(const xmlstr_t *value, struct entity *entity)
start = str;
while (*str != ',' && (i++ < value->len)) str++;
- if (!wcsnicmp(start, restrictedW, str-start))
+ if (!wcsnicmp(start, L"RESTRICTED", str-start))
*flags |= LIBFLAG_FRESTRICTED;
- else if (!wcsnicmp(start, controlW, str-start))
+ else if (!wcsnicmp(start, L"CONTROL", str-start))
*flags |= LIBFLAG_FCONTROL;
- else if (!wcsnicmp(start, hiddenW, str-start))
+ else if (!wcsnicmp(start, L"HIDDEN", str-start))
*flags |= LIBFLAG_FHIDDEN;
- else if (!wcsnicmp(start, hasdiskimageW, str-start))
+ else if (!wcsnicmp(start, L"HASDISKIMAGE", str-start))
*flags |= LIBFLAG_FHASDISKIMAGE;
else
{
@@ -1943,19 +1821,19 @@ static void parse_typelib_elem( xmlbuf_t *xmlbuf, struct dll_redirect *dll,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, tlbidW))
+ if (xml_attr_cmp(&attr, L"tlbid"))
{
if (!(entity->u.typelib.tlbid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, versionW))
+ else if (xml_attr_cmp(&attr, L"version"))
{
if (!parse_typelib_version(&attr.value, entity)) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, helpdirW))
+ else if (xml_attr_cmp(&attr, L"helpdir"))
{
if (!(entity->u.typelib.helpdir = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, flagsW))
+ else if (xml_attr_cmp(&attr, L"flags"))
{
if (!parse_typelib_flags(&attr.value, entity)) set_error( xmlbuf );
}
@@ -1976,12 +1854,11 @@ static inline int aligned_string_len(int len)
static int get_assembly_version(struct assembly *assembly, WCHAR *ret)
{
- static const WCHAR fmtW[] = {'%','u','.','%','u','.','%','u','.','%','u',0};
struct assembly_version *ver = &assembly->id.version;
WCHAR buff[25];
if (!ret) ret = buff;
- return swprintf(ret, ARRAY_SIZE(buff), fmtW, ver->major, ver->minor, ver->build, ver->revision);
+ return swprintf(ret, ARRAY_SIZE(buff), L"%u.%u.%u.%u", ver->major, ver->minor, ver->build, ver->revision);
}
static void parse_window_class_elem( xmlbuf_t *xmlbuf, struct dll_redirect *dll,
@@ -2001,11 +1878,11 @@ static void parse_window_class_elem( xmlbuf_t *xmlbuf, struct dll_redirect *dll,
entity->u.class.versioned = TRUE;
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, versionedW))
+ if (xml_attr_cmp(&attr, L"versioned"))
{
- if (xmlstr_cmpi(&attr.value, noW))
+ if (xmlstr_cmpi(&attr.value, L"no"))
entity->u.class.versioned = FALSE;
- else if (!xmlstr_cmpi(&attr.value, yesW))
+ else if (!xmlstr_cmpi(&attr.value, L"yes"))
set_error( xmlbuf );
}
else if (!is_xmlns_attr( &attr ))
@@ -2035,11 +1912,11 @@ static void parse_binding_redirect_elem( xmlbuf_t *xmlbuf, const struct xml_elem
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, oldVersionW))
+ if (xml_attr_cmp(&attr, L"oldVersion"))
{
FIXME("Not stored yet %s\n", debugstr_xml_attr(&attr));
}
- else if (xml_attr_cmp(&attr, newVersionW))
+ else if (xml_attr_cmp(&attr, L"newVersion"))
{
FIXME("Not stored yet %s\n", debugstr_xml_attr(&attr));
}
@@ -2093,29 +1970,29 @@ static void parse_com_interface_external_proxy_stub_elem(xmlbuf_t *xmlbuf,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, iidW))
+ if (xml_attr_cmp(&attr, L"iid"))
{
if (!(entity->u.ifaceps.iid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, nameW))
+ else if (xml_attr_cmp(&attr, L"name"))
{
if (!(entity->u.ifaceps.name = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, baseInterfaceW))
+ else if (xml_attr_cmp(&attr, L"baseInterface"))
{
if (!(entity->u.ifaceps.base = xmlstrdupW(&attr.value))) set_error( xmlbuf );
entity->u.ifaceps.mask |= BaseIface;
}
- else if (xml_attr_cmp(&attr, nummethodsW))
+ else if (xml_attr_cmp(&attr, L"numMethods"))
{
if (!(parse_nummethods(&attr.value, entity))) set_error( xmlbuf );
entity->u.ifaceps.mask |= NumMethods;
}
- else if (xml_attr_cmp(&attr, proxyStubClsid32W))
+ else if (xml_attr_cmp(&attr, L"proxyStubClsid32"))
{
if (!(entity->u.ifaceps.ps32 = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, tlbidW))
+ else if (xml_attr_cmp(&attr, L"tlbid"))
{
if (!(entity->u.ifaceps.tlib = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
@@ -2146,27 +2023,27 @@ static void parse_clr_class_elem( xmlbuf_t* xmlbuf, struct assembly* assembly,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, nameW))
+ if (xml_attr_cmp(&attr, L"name"))
{
if (!(entity->u.comclass.name = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, clsidW))
+ else if (xml_attr_cmp(&attr, L"clsid"))
{
if (!(entity->u.comclass.clsid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, progidW))
+ else if (xml_attr_cmp(&attr, L"progid"))
{
if (!(entity->u.comclass.progid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, tlbidW))
+ else if (xml_attr_cmp(&attr, L"tlbid"))
{
if (!(entity->u.comclass.tlbid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, threadingmodelW))
+ else if (xml_attr_cmp(&attr, L"threadingModel"))
{
entity->u.comclass.model = parse_com_class_threadingmodel(&attr.value);
}
- else if (xml_attr_cmp(&attr, runtimeVersionW))
+ else if (xml_attr_cmp(&attr, L"runtimeVersion"))
{
if (!(entity->u.comclass.version = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
@@ -2183,7 +2060,7 @@ static void parse_clr_class_elem( xmlbuf_t* xmlbuf, struct assembly* assembly,
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, progidW, asmv1W))
+ if (xml_elem_cmp(&elem, L"progid", asmv1W))
{
parse_com_class_progid(xmlbuf, entity, &elem);
}
@@ -2213,15 +2090,15 @@ static void parse_clr_surrogate_elem( xmlbuf_t *xmlbuf, struct assembly *assembl
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, nameW))
+ if (xml_attr_cmp(&attr, L"name"))
{
if (!(entity->u.clrsurrogate.name = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, clsidW))
+ else if (xml_attr_cmp(&attr, L"clsid"))
{
if (!(entity->u.clrsurrogate.clsid = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, runtimeVersionW))
+ else if (xml_attr_cmp(&attr, L"runtimeVersion"))
{
if (!(entity->u.clrsurrogate.version = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
@@ -2248,11 +2125,8 @@ static void parse_dependent_assembly_elem( xmlbuf_t *xmlbuf, struct actctx_loade
while (next_xml_attr(xmlbuf, &attr, &end))
{
- static const WCHAR allowDelayedBindingW[] = {'a','l','l','o','w','D','e','l','a','y','e','d','B','i','n','d','i','n','g',0};
- static const WCHAR trueW[] = {'t','r','u','e',0};
-
- if (xml_attr_cmp(&attr, allowDelayedBindingW))
- ai.delayed = xmlstr_cmp(&attr.value, trueW);
+ if (xml_attr_cmp(&attr, L"allowDelayedBinding"))
+ ai.delayed = xmlstr_cmp(&attr.value, L"true");
else if (!is_xmlns_attr( &attr ))
WARN("unknown attr %s\n", debugstr_xml_attr(&attr));
}
@@ -2261,11 +2135,11 @@ static void parse_dependent_assembly_elem( xmlbuf_t *xmlbuf, struct actctx_loade
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, assemblyIdentityW, asmv1W))
+ if (xml_elem_cmp(&elem, L"assemblyIdentity", asmv1W))
{
parse_assembly_identity_elem(xmlbuf, acl->actctx, &ai, &elem);
/* store the newly found identity for later loading */
- if (ai.arch && !wcscmp(ai.arch, wildcardW))
+ if (ai.arch && !wcscmp(ai.arch, L"*"))
{
RtlFreeHeap( GetProcessHeap(), 0, ai.arch );
ai.arch = strdupW( current_archW );
@@ -2274,7 +2148,7 @@ static void parse_dependent_assembly_elem( xmlbuf_t *xmlbuf, struct actctx_loade
debugstr_w(ai.name), debugstr_version(&ai.version), debugstr_w(ai.arch) );
if (!add_dependent_assembly_id(acl, &ai)) set_error( xmlbuf );
}
- else if (xml_elem_cmp(&elem, bindingRedirectW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"bindingRedirect", asmv1W))
{
parse_binding_redirect_elem(xmlbuf, &elem);
}
@@ -2296,9 +2170,9 @@ static void parse_dependency_elem( xmlbuf_t *xmlbuf, struct actctx_loader *acl,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, optionalW))
+ if (xml_attr_cmp(&attr, L"optional"))
{
- optional = xmlstr_cmpi( &attr.value, yesW );
+ optional = xmlstr_cmpi( &attr.value, L"yes" );
TRACE("optional=%s\n", debugstr_xmlstr(&attr.value));
}
else if (!is_xmlns_attr( &attr ))
@@ -2311,7 +2185,7 @@ static void parse_dependency_elem( xmlbuf_t *xmlbuf, struct actctx_loader *acl,
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, dependentAssemblyW, asmv1W))
+ if (xml_elem_cmp(&elem, L"dependentAssembly", asmv1W))
{
parse_dependent_assembly_elem(xmlbuf, acl, &elem, optional);
}
@@ -2355,19 +2229,18 @@ static void parse_file_elem( xmlbuf_t* xmlbuf, struct assembly* assembly,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, nameW))
+ if (xml_attr_cmp(&attr, L"name"))
{
if (!(dll->name = xmlstrdupW(&attr.value))) set_error( xmlbuf );
TRACE("name=%s\n", debugstr_xmlstr(&attr.value));
}
- else if (xml_attr_cmp(&attr, hashW))
+ else if (xml_attr_cmp(&attr, L"hash"))
{
if (!(dll->hash = xmlstrdupW(&attr.value))) set_error( xmlbuf );
}
- else if (xml_attr_cmp(&attr, hashalgW))
+ else if (xml_attr_cmp(&attr, L"hashalg"))
{
- static const WCHAR sha1W[] = {'S','H','A','1',0};
- if (!xmlstr_cmpi(&attr.value, sha1W))
+ if (!xmlstr_cmpi(&attr.value, L"SHA1"))
FIXME("hashalg should be SHA1, got %s\n", debugstr_xmlstr(&attr.value));
}
else if (!is_xmlns_attr( &attr ))
@@ -2384,24 +2257,24 @@ static void parse_file_elem( xmlbuf_t* xmlbuf, struct assembly* assembly,
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, comClassW, asmv1W))
+ if (xml_elem_cmp(&elem, L"comClass", asmv1W))
{
parse_com_class_elem(xmlbuf, dll, acl, &elem);
}
- else if (xml_elem_cmp(&elem, comInterfaceProxyStubW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"comInterfaceProxyStub", asmv1W))
{
parse_cominterface_proxy_stub_elem(xmlbuf, dll, acl, &elem);
}
- else if (xml_elem_cmp(&elem, hashW, asmv2W))
+ else if (xml_elem_cmp(&elem, L"hash", asmv2W))
{
WARN("asmv2:hash (undocumented) not supported\n");
parse_unknown_elem(xmlbuf, &elem);
}
- else if (xml_elem_cmp(&elem, typelibW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"typelib", asmv1W))
{
parse_typelib_elem(xmlbuf, dll, acl, &elem);
}
- else if (xml_elem_cmp(&elem, windowClassW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"windowClass", asmv1W))
{
parse_window_class_elem(xmlbuf, dll, acl, &elem);
}
@@ -2421,7 +2294,7 @@ static void parse_supportedos_elem( xmlbuf_t *xmlbuf, struct assembly *assembly,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, IdW))
+ if (xml_attr_cmp(&attr, L"Id"))
{
COMPATIBILITY_CONTEXT_ELEMENT *compat;
UNICODE_STRING str;
@@ -2460,7 +2333,7 @@ static void parse_compatibility_application_elem(xmlbuf_t *xmlbuf, struct assemb
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, supportedOSW, compatibilityNSW))
+ if (xml_elem_cmp(&elem, L"supportedOS", compatibilityNSW))
{
parse_supportedos_elem(xmlbuf, assembly, acl, &elem);
}
@@ -2479,7 +2352,7 @@ static void parse_compatibility_elem(xmlbuf_t *xmlbuf, struct assembly *assembly
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, applicationW, compatibilityNSW))
+ if (xml_elem_cmp(&elem, L"application", compatibilityNSW))
{
parse_compatibility_application_elem(xmlbuf, assembly, acl, &elem);
}
@@ -2534,17 +2407,17 @@ static void parse_windows_settings_elem( xmlbuf_t *xmlbuf, struct assembly *asse
while (next_xml_elem( xmlbuf, &elem, parent ))
{
- if (xml_elem_cmp( &elem, autoElevateW, windowsSettings2005NSW ) ||
- xml_elem_cmp( &elem, disableThemingW, windowsSettings2005NSW ) ||
- xml_elem_cmp( &elem, disableWindowFilteringW, windowsSettings2011NSW ) ||
- xml_elem_cmp( &elem, dpiAwareW, windowsSettings2005NSW ) ||
- xml_elem_cmp( &elem, dpiAwarenessW, windowsSettings2016NSW ) ||
- xml_elem_cmp( &elem, gdiScalingW, windowsSettings2017NSW ) ||
- xml_elem_cmp( &elem, highResolutionScrollingAwareW, windowsSettings2017NSW ) ||
- xml_elem_cmp( &elem, longPathAwareW, windowsSettings2016NSW ) ||
- xml_elem_cmp( &elem, magicFutureSettingW, windowsSettings2017NSW ) ||
- xml_elem_cmp( &elem, printerDriverIsolationW, windowsSettings2011NSW ) ||
- xml_elem_cmp( &elem, ultraHighResolutionScrollingAwareW, windowsSettings2017NSW ))
+ if (xml_elem_cmp( &elem, L"autoElevate", windowsSettings2005NSW ) ||
+ xml_elem_cmp( &elem, L"disableTheming", windowsSettings2005NSW ) ||
+ xml_elem_cmp( &elem, L"disableWindowFiltering", windowsSettings2011NSW ) ||
+ xml_elem_cmp( &elem, L"dpiAware", windowsSettings2005NSW ) ||
+ xml_elem_cmp( &elem, L"dpiAwareness", windowsSettings2016NSW ) ||
+ xml_elem_cmp( &elem, L"gdiScaling", windowsSettings2017NSW ) ||
+ xml_elem_cmp( &elem, L"highResolutionScrollingAware", windowsSettings2017NSW ) ||
+ xml_elem_cmp( &elem, L"longPathAware", windowsSettings2016NSW ) ||
+ xml_elem_cmp( &elem, L"magicFutureSetting", windowsSettings2017NSW ) ||
+ xml_elem_cmp( &elem, L"printerDriverIsolation", windowsSettings2011NSW ) ||
+ xml_elem_cmp( &elem, L"ultraHighResolutionScrollingAware", windowsSettings2017NSW ))
{
parse_settings_elem( xmlbuf, assembly, acl, &elem );
}
@@ -2563,7 +2436,7 @@ static void parse_application_elem( xmlbuf_t *xmlbuf, struct assembly *assembly,
while (next_xml_elem( xmlbuf, &elem, parent ))
{
- if (xml_elem_cmp( &elem, windowsSettingsW, asmv3W ))
+ if (xml_elem_cmp( &elem, L"windowsSettings", asmv3W ))
{
parse_windows_settings_elem( xmlbuf, assembly, acl, &elem );
}
@@ -2578,14 +2451,6 @@ static void parse_application_elem( xmlbuf_t *xmlbuf, struct assembly *assembly,
static void parse_requested_execution_level_elem( xmlbuf_t *xmlbuf, struct assembly *assembly,
struct actctx_loader *acl, const struct xml_elem *parent )
{
- static const WCHAR levelW[] = {'l','e','v','e','l',0};
- static const WCHAR asInvokerW[] = {'a','s','I','n','v','o','k','e','r',0};
- static const WCHAR requireAdministratorW[] = {'r','e','q','u','i','r','e','A','d','m','i','n','i','s','t','r','a','t','o','r',0};
- static const WCHAR highestAvailableW[] = {'h','i','g','h','e','s','t','A','v','a','i','l','a','b','l','e',0};
- static const WCHAR uiAccessW[] = {'u','i','A','c','c','e','s','s',0};
- static const WCHAR falseW[] = {'f','a','l','s','e',0};
- static const WCHAR trueW[] = {'t','r','u','e',0};
-
struct xml_elem elem;
struct xml_attr attr;
BOOL end = FALSE;
@@ -2595,22 +2460,22 @@ static void parse_requested_execution_level_elem( xmlbuf_t *xmlbuf, struct assem
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, levelW))
+ if (xml_attr_cmp(&attr, L"level"))
{
- if (xmlstr_cmpi(&attr.value, asInvokerW))
+ if (xmlstr_cmpi(&attr.value, L"asInvoker"))
assembly->run_level = ACTCTX_RUN_LEVEL_AS_INVOKER;
- else if (xmlstr_cmpi(&attr.value, highestAvailableW))
+ else if (xmlstr_cmpi(&attr.value, L"highestAvailable"))
assembly->run_level = ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE;
- else if (xmlstr_cmpi(&attr.value, requireAdministratorW))
+ else if (xmlstr_cmpi(&attr.value, L"requireAdministrator"))
assembly->run_level = ACTCTX_RUN_LEVEL_REQUIRE_ADMIN;
else
FIXME("unknown execution level: %s\n", debugstr_xmlstr(&attr.value));
}
- else if (xml_attr_cmp(&attr, uiAccessW))
+ else if (xml_attr_cmp(&attr, L"uiAccess"))
{
- if (xmlstr_cmpi(&attr.value, falseW))
+ if (xmlstr_cmpi(&attr.value, L"false"))
assembly->ui_access = FALSE;
- else if (xmlstr_cmpi(&attr.value, trueW))
+ else if (xmlstr_cmpi(&attr.value, L"true"))
assembly->ui_access = TRUE;
else
FIXME("unknown uiAccess value: %s\n", debugstr_xmlstr(&attr.value));
@@ -2635,7 +2500,7 @@ static void parse_requested_privileges_elem( xmlbuf_t *xmlbuf, struct assembly *
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, requestedExecutionLevelW, asmv1W))
+ if (xml_elem_cmp(&elem, L"requestedExecutionLevel", asmv1W))
{
parse_requested_execution_level_elem(xmlbuf, assembly, acl, &elem);
}
@@ -2654,7 +2519,7 @@ static void parse_security_elem( xmlbuf_t *xmlbuf, struct assembly *assembly,
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, requestedPrivilegesW, asmv1W))
+ if (xml_elem_cmp(&elem, L"requestedPrivileges", asmv1W))
{
parse_requested_privileges_elem(xmlbuf, assembly, acl, &elem);
}
@@ -2673,7 +2538,7 @@ static void parse_trust_info_elem( xmlbuf_t *xmlbuf, struct assembly *assembly,
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (xml_elem_cmp(&elem, securityW, asmv1W))
+ if (xml_elem_cmp(&elem, L"security", asmv1W))
{
parse_security_elem(xmlbuf, assembly, acl, &elem);
}
@@ -2697,10 +2562,9 @@ static void parse_assembly_elem( xmlbuf_t *xmlbuf, struct assembly* assembly,
while (next_xml_attr(xmlbuf, &attr, &end))
{
- if (xml_attr_cmp(&attr, manifestVersionW))
+ if (xml_attr_cmp(&attr, L"manifestVersion"))
{
- static const WCHAR v10W[] = {'1','.','0',0};
- if (!xmlstr_cmp(&attr.value, v10W))
+ if (!xmlstr_cmp(&attr.value, L"1.0"))
{
FIXME("wrong version %s\n", debugstr_xmlstr(&attr.value));
break;
@@ -2721,44 +2585,44 @@ static void parse_assembly_elem( xmlbuf_t *xmlbuf, struct assembly* assembly,
while (next_xml_elem(xmlbuf, &elem, parent))
{
- if (assembly->type == APPLICATION_MANIFEST && xml_elem_cmp(&elem, noInheritW, asmv1W))
+ if (assembly->type == APPLICATION_MANIFEST && xml_elem_cmp(&elem, L"noInherit", asmv1W))
{
parse_noinherit_elem(xmlbuf, &elem);
assembly->no_inherit = TRUE;
}
- else if (xml_elem_cmp(&elem, noInheritableW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"noInheritable", asmv1W))
{
parse_noinheritable_elem(xmlbuf, &elem);
}
- else if (xml_elem_cmp(&elem, descriptionW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"description", asmv1W))
{
parse_description_elem(xmlbuf, &elem);
}
- else if (xml_elem_cmp(&elem, comInterfaceExternalProxyStubW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"comInterfaceExternalProxyStub", asmv1W))
{
parse_com_interface_external_proxy_stub_elem(xmlbuf, assembly, acl, &elem);
}
- else if (xml_elem_cmp(&elem, dependencyW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"dependency", asmv1W))
{
parse_dependency_elem(xmlbuf, acl, &elem);
}
- else if (xml_elem_cmp(&elem, fileW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"file", asmv1W))
{
parse_file_elem(xmlbuf, assembly, acl, &elem);
}
- else if (xml_elem_cmp(&elem, clrClassW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"clrClass", asmv1W))
{
parse_clr_class_elem(xmlbuf, assembly, acl, &elem);
}
- else if (xml_elem_cmp(&elem, clrSurrogateW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"clrSurrogate", asmv1W))
{
parse_clr_surrogate_elem(xmlbuf, assembly, acl, &elem);
}
- else if (xml_elem_cmp(&elem, trustInfoW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"trustInfo", asmv1W))
{
parse_trust_info_elem(xmlbuf, assembly, acl, &elem);
}
- else if (xml_elem_cmp(&elem, assemblyIdentityW, asmv1W))
+ else if (xml_elem_cmp(&elem, L"assemblyIdentity", asmv1W))
{
parse_assembly_identity_elem(xmlbuf, acl->actctx, &assembly->id, &elem);
@@ -2787,11 +2651,11 @@ static void parse_assembly_elem( xmlbuf_t *xmlbuf, struct assembly* assembly,
}
}
}
- else if (xml_elem_cmp(&elem, compatibilityW, compatibilityNSW))
+ else if (xml_elem_cmp(&elem, L"compatibility", compatibilityNSW))
{
parse_compatibility_elem(xmlbuf, assembly, acl, &elem);
}
- else if (xml_elem_cmp(&elem, applicationW, asmv3W))
+ else if (xml_elem_cmp(&elem, L"application", asmv3W))
{
parse_application_elem(xmlbuf, assembly, acl, &elem);
}
@@ -2820,11 +2684,11 @@ static NTSTATUS parse_manifest_buffer( struct actctx_loader* acl, struct assembl
if (!next_xml_elem(xmlbuf, &elem, &parent)) return STATUS_SXS_CANT_GEN_ACTCTX;
- if (xmlstr_cmp(&elem.name, xmlW) &&
+ if (xmlstr_cmp(&elem.name, L"?xml") &&
(!parse_xml_header(xmlbuf) || !next_xml_elem(xmlbuf, &elem, &parent)))
return STATUS_SXS_CANT_GEN_ACTCTX;
- if (!xml_elem_cmp(&elem, assemblyW, asmv1W))
+ if (!xml_elem_cmp(&elem, L"assembly", asmv1W))
{
FIXME("root element is %s, not <assembly>\n", debugstr_xml_elem(&elem));
return STATUS_SXS_CANT_GEN_ACTCTX;
@@ -3080,7 +2944,6 @@ static NTSTATUS get_manifest_in_manifest_file( struct actctx_loader* acl, struct
static NTSTATUS get_manifest_in_associated_manifest( struct actctx_loader* acl, struct assembly_identity* ai,
LPCWSTR filename, LPCWSTR directory, HMODULE module, LPCWSTR resname )
{
- static const WCHAR fmtW[] = { '.','%','l','u',0 };
WCHAR *buffer;
NTSTATUS status;
UNICODE_STRING nameW;
@@ -3095,10 +2958,10 @@ static NTSTATUS get_manifest_in_associated_manifest( struct actctx_loader* acl,
{
UNICODE_STRING name;
- if (!(status = get_module_filename( module, &name, sizeof(dotManifestW) + 10*sizeof(WCHAR) )))
+ if (!(status = get_module_filename( module, &name, sizeof(L".manifest") + 10*sizeof(WCHAR) )))
{
- if (resid != 1) swprintf( name.Buffer + wcslen(name.Buffer), 10, fmtW, resid );
- wcscat( name.Buffer, dotManifestW );
+ if (resid != 1) swprintf( name.Buffer + wcslen(name.Buffer), 10, L".%lu", resid );
+ wcscat( name.Buffer, L".manifest" );
if (!RtlDosPathNameToNtPathName_U( name.Buffer, &nameW, NULL, NULL ))
status = STATUS_RESOURCE_DATA_NOT_FOUND;
RtlFreeUnicodeString( &name );
@@ -3108,11 +2971,11 @@ static NTSTATUS get_manifest_in_associated_manifest( struct actctx_loader* acl,
else
{
if (!(buffer = RtlAllocateHeap( GetProcessHeap(), 0,
- (wcslen(filename) + 10) * sizeof(WCHAR) + sizeof(dotManifestW) )))
+ (wcslen(filename) + 10) * sizeof(WCHAR) + sizeof(L".manifest") )))
return STATUS_NO_MEMORY;
wcscpy( buffer, filename );
- if (resid != 1) swprintf( buffer + wcslen(buffer), 10, fmtW, resid );
- wcscat( buffer, dotManifestW );
+ if (resid != 1) swprintf( buffer + wcslen(buffer), 10, L".%lu", resid );
+ wcscat( buffer, L".manifest" );
RtlInitUnicodeString( &nameW, buffer );
}
@@ -3128,9 +2991,7 @@ static NTSTATUS get_manifest_in_associated_manifest( struct actctx_loader* acl,
static WCHAR *lookup_manifest_file( HANDLE dir, struct assembly_identity *ai )
{
- static const WCHAR lookup_fmtW[] =
- {'%','s','_','%','s','_','%','s','_','%','u','.','%','u','.','*','.','*','_',
- '%','s','_','*','.','m','a','n','i','f','e','s','t',0};
+ static const WCHAR lookup_fmtW[] = L"%s_%s_%s_%u.%u.*.*_%s_*.manifest";
static const WCHAR wine_trailerW[] = {'d','e','a','d','b','e','e','f','.','m','a','n','i','f','e','s','t'};
WCHAR *lookup, *ret = NULL;
@@ -3140,7 +3001,7 @@ static WCHAR *lookup_manifest_file( HANDLE dir, struct assembly_identity *ai )
unsigned int data_pos = 0, data_len, len;
char buffer[8192];
- if (!lang || !wcsicmp( lang, neutralW )) lang = wildcardW;
+ if (!lang || !wcsicmp( lang, L"neutral" )) lang = L"*";
len = wcslen(ai->arch) + wcslen(ai->name) + wcslen(ai->public_key) + wcslen(lang) + 20 + ARRAY_SIZE(lookup_fmtW);
if (!(lookup = RtlAllocateHeap( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return NULL;
@@ -3217,17 +3078,14 @@ static NTSTATUS lookup_winsxs(struct actctx_loader* acl, struct assembly_identit
WCHAR *path, *file = NULL;
HANDLE handle;
- static const WCHAR manifest_dirW[] =
- {'\\','w','i','n','s','x','s','\\','m','a','n','i','f','e','s','t','s',0};
-
if (!ai->arch || !ai->name || !ai->public_key) return STATUS_NO_SUCH_FILE;
- if (!(path = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(manifest_dirW) +
+ if (!(path = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(L"\\winsxs\\manifests") +
wcslen(windows_dir) * sizeof(WCHAR) )))
return STATUS_NO_MEMORY;
wcscpy( path, windows_dir );
- wcscat( path, manifest_dirW );
+ wcscat( path, L"\\winsxs\\manifests" );
if (!RtlDosPathNameToNtPathName_U( path, &path_us, NULL, NULL ))
{
@@ -3285,7 +3143,6 @@ static NTSTATUS lookup_winsxs(struct actctx_loader* acl, struct assembly_identit
static NTSTATUS lookup_assembly(struct actctx_loader* acl,
struct assembly_identity* ai)
{
- static const WCHAR dotDllW[] = {'.','d','l','l',0};
unsigned int i;
WCHAR *buffer, *p, *directory;
NTSTATUS status;
@@ -3305,7 +3162,7 @@ static NTSTATUS lookup_assembly(struct actctx_loader* acl,
nameW.Buffer = NULL;
if (!(buffer = RtlAllocateHeap( GetProcessHeap(), 0,
- (len + 2 * wcslen(ai->name) + 2) * sizeof(WCHAR) + sizeof(dotManifestW) )))
+ (len + 2 * wcslen(ai->name) + 2) * sizeof(WCHAR) + sizeof(L".manifest") )))
return STATUS_NO_MEMORY;
if (!(directory = build_assembly_dir( ai )))
@@ -3336,7 +3193,7 @@ static NTSTATUS lookup_assembly(struct actctx_loader* acl,
wcscpy( p, ai->name );
p += wcslen(p);
- wcscpy( p, dotDllW );
+ wcscpy( p, L".dll" );
if (RtlDosPathNameToNtPathName_U( buffer, &nameW, NULL, NULL ))
{
status = open_nt_file( &file, &nameW );
@@ -3351,7 +3208,7 @@ static NTSTATUS lookup_assembly(struct actctx_loader* acl,
RtlFreeUnicodeString( &nameW );
}
- wcscpy( p, dotManifestW );
+ wcscpy( p, L".manifest" );
if (RtlDosPathNameToNtPathName_U( buffer, &nameW, NULL, NULL ))
{
status = open_nt_file( &file, &nameW );
@@ -3684,7 +3541,6 @@ static NTSTATUS build_wndclass_section(ACTIVATION_CONTEXT* actctx, struct strsec
struct entity *entity = &dll->entities.base[k];
if (entity->kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
{
- static const WCHAR exclW[] = {'!',0};
ULONG versioned_len, module_len;
UNICODE_STRING str;
WCHAR *ptrW;
@@ -3733,7 +3589,7 @@ static NTSTATUS build_wndclass_section(ACTIVATION_CONTEXT* actctx, struct strsec
if (entity->u.class.versioned)
{
get_assembly_version(assembly, ptrW);
- wcscat(ptrW, exclW);
+ wcscat(ptrW, L"!");
wcscat(ptrW, entity->u.class.name);
}
else
@@ -4037,7 +3893,7 @@ static void get_comserver_datalen(const struct entity_array *entities, const str
*len += aligned_string_len(str_len*sizeof(WCHAR));
/* module name is forced to mscoree.dll, and stored two times with different case */
- *module_len += sizeof(mscoreeW) + sizeof(mscoree2W);
+ *module_len += sizeof(L"MSCOREE.DLL") + sizeof(L"mscoree.dll");
}
else
{
@@ -4076,7 +3932,7 @@ static void add_comserver_record(const struct guidsection_header *section, const
else
progid_len = 0;
- module_len = dll ? wcslen(dll->name)*sizeof(WCHAR) : wcslen(mscoreeW)*sizeof(WCHAR);
+ module_len = dll ? wcslen(dll->name)*sizeof(WCHAR) : wcslen(L"MSCOREE.DLL")*sizeof(WCHAR);
/* setup new index entry */
RtlInitUnicodeString(&str, entity->u.comclass.clsid);
@@ -4142,7 +3998,7 @@ static void add_comserver_record(const struct guidsection_header *section, const
clrdata->size = sizeof(*clrdata);
clrdata->res[0] = 0;
clrdata->res[1] = 2; /* FIXME: unknown field */
- clrdata->module_len = wcslen(mscoreeW)*sizeof(WCHAR);
+ clrdata->module_len = wcslen(L"MSCOREE.DLL")*sizeof(WCHAR);
clrdata->module_offset = *module_offset + data->name_len + sizeof(WCHAR);
clrdata->name_len = wcslen(entity->u.comclass.name)*sizeof(WCHAR);
clrdata->name_offset = clrdata->size;
@@ -4155,11 +4011,11 @@ static void add_comserver_record(const struct guidsection_header *section, const
/* module name */
ptrW = (WCHAR*)((BYTE*)section + clrdata->module_offset);
- memcpy(ptrW, mscoree2W, clrdata->module_len);
+ memcpy(ptrW, L"mscoree.dll", clrdata->module_len);
ptrW[clrdata->module_len/sizeof(WCHAR)] = 0;
ptrW = (WCHAR*)((BYTE*)section + data->name_offset);
- memcpy(ptrW, mscoreeW, data->name_len);
+ memcpy(ptrW, L"MSCOREE.DLL", data->name_len);
ptrW[data->name_len/sizeof(WCHAR)] = 0;
/* class name */
--
2.26.2
More information about the wine-devel
mailing list