Alexandre Julliard : kernelbase: Use wide character string literals in registry.c.

Alexandre Julliard julliard at winehq.org
Tue Mar 10 16:24:57 CDT 2020


Module: wine
Branch: master
Commit: b8fe91248dc01c0569277f150444f1e69091904d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b8fe91248dc01c0569277f150444f1e69091904d

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Mar  9 19:57:03 2020 +0100

kernelbase: Use wide character string literals in registry.c.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernelbase/registry.c | 84 +++++++++++-----------------------------------
 1 file changed, 19 insertions(+), 65 deletions(-)

diff --git a/dlls/kernelbase/registry.c b/dlls/kernelbase/registry.c
index 137c0efb88..4f2234b1ef 100644
--- a/dlls/kernelbase/registry.c
+++ b/dlls/kernelbase/registry.c
@@ -50,40 +50,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(reg);
 #define HKEY_SPECIAL_ROOT_FIRST   HKEY_CLASSES_ROOT
 #define HKEY_SPECIAL_ROOT_LAST    HKEY_DYN_DATA
 
-static const WCHAR name_CLASSES_ROOT[] =
-    {'\\','R','e','g','i','s','t','r','y','\\',
-     'M','a','c','h','i','n','e','\\',
-     'S','o','f','t','w','a','r','e','\\',
-     'C','l','a','s','s','e','s',0};
-static const WCHAR name_LOCAL_MACHINE[] =
-    {'\\','R','e','g','i','s','t','r','y','\\',
-     'M','a','c','h','i','n','e',0};
-static const WCHAR name_USERS[] =
-    {'\\','R','e','g','i','s','t','r','y','\\',
-     'U','s','e','r',0};
-static const WCHAR name_PERFORMANCE_DATA[] =
-    {'\\','R','e','g','i','s','t','r','y','\\',
-     'P','e','r','f','D','a','t','a',0};
-static const WCHAR name_CURRENT_CONFIG[] =
-    {'\\','R','e','g','i','s','t','r','y','\\',
-     'M','a','c','h','i','n','e','\\',
-     'S','y','s','t','e','m','\\',
-     'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
-     'H','a','r','d','w','a','r','e',' ','P','r','o','f','i','l','e','s','\\',
-     'C','u','r','r','e','n','t',0};
-static const WCHAR name_DYN_DATA[] =
-    {'\\','R','e','g','i','s','t','r','y','\\',
-     'D','y','n','D','a','t','a',0};
-
 static const WCHAR * const root_key_names[] =
 {
-    name_CLASSES_ROOT,
+    L"\\Registry\\Machine\\Software\\Classes",
     NULL,         /* HKEY_CURRENT_USER is determined dynamically */
-    name_LOCAL_MACHINE,
-    name_USERS,
-    name_PERFORMANCE_DATA,
-    name_CURRENT_CONFIG,
-    name_DYN_DATA
+    L"\\Registry\\Machine",
+    L"\\Registry\\User",
+    L"\\Registry\\PerfData",
+    L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current",
+    L"\\Registry\\DynData"
 };
 
 static HKEY special_root_keys[ARRAY_SIZE(root_key_names)];
@@ -125,16 +100,12 @@ static inline BOOL is_version_nt(void)
 
 static BOOL is_wow6432node( const UNICODE_STRING *name )
 {
-    static const WCHAR wow6432nodeW[] = {'W','o','w','6','4','3','2','N','o','d','e'};
-
-    return (name->Length == sizeof(wow6432nodeW) &&
-            !wcsnicmp( name->Buffer, wow6432nodeW, ARRAY_SIZE( wow6432nodeW )));
+    return (name->Length == 11 * sizeof(WCHAR) && !wcsnicmp( name->Buffer, L"Wow6432Node", 11 ));
 }
 
 /* open the Wow6432Node subkey of the specified key */
 static HANDLE open_wow6432node( HANDLE key )
 {
-    static const WCHAR wow6432nodeW[] = {'W','o','w','6','4','3','2','N','o','d','e',0};
     OBJECT_ATTRIBUTES attr;
     UNICODE_STRING nameW;
     HANDLE ret;
@@ -145,7 +116,7 @@ static HANDLE open_wow6432node( HANDLE key )
     attr.Attributes = 0;
     attr.SecurityDescriptor = NULL;
     attr.SecurityQualityOfService = NULL;
-    RtlInitUnicodeString( &nameW, wow6432nodeW );
+    RtlInitUnicodeString( &nameW, L"Wow6432Node" );
     if (NtOpenKeyEx( &ret, MAXIMUM_ALLOWED, &attr, 0 )) ret = 0;
     return ret;
 }
@@ -162,15 +133,12 @@ static NTSTATUS create_key( HKEY *retkey, ACCESS_MASK access, OBJECT_ATTRIBUTES
 
     if (status == STATUS_OBJECT_NAME_NOT_FOUND)
     {
-        static const WCHAR registry_root[] = {'\\','R','e','g','i','s','t','r','y','\\'};
         WCHAR *buffer = attr->ObjectName->Buffer;
         DWORD attrs, pos = 0, i = 0, len = attr->ObjectName->Length / sizeof(WCHAR);
         UNICODE_STRING str;
 
         /* don't try to create registry root */
-        if (!attr->RootDirectory && len > ARRAY_SIZE( registry_root ) &&
-            !wcsnicmp( buffer, registry_root, ARRAY_SIZE( registry_root )))
-            i += ARRAY_SIZE( registry_root );
+        if (!attr->RootDirectory && len > 10 && !wcsnicmp( buffer, L"\\Registry\\", 10 )) i += 10;
 
         while (i < len && buffer[i] != '\\') i++;
         if (i == len && !force_wow32) return status;
@@ -1221,11 +1189,6 @@ static void *get_provider_entry(HKEY perf, HMODULE perflib, const char *name)
 
 static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *provider)
 {
-    static const WCHAR object_listW[] = { 'O','b','j','e','c','t',' ','L','i','s','t',0 };
-    static const WCHAR performanceW[] = { 'P','e','r','f','o','r','m','a','n','c','e',0 };
-    static const WCHAR libraryW[] = { 'L','i','b','r','a','r','y',0 };
-    static const WCHAR linkageW[] = { 'L','i','n','k','a','g','e',0 };
-    static const WCHAR exportW[] = { 'E','x','p','o','r','t',0 };
     WCHAR buf[MAX_PATH], buf2[MAX_PATH];
     DWORD err, type, len;
     HKEY service, perf;
@@ -1235,11 +1198,11 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr
         return FALSE;
 
     provider->linkage[0] = 0;
-    err = RegOpenKeyExW(service, linkageW, 0, KEY_READ, &perf);
+    err = RegOpenKeyExW(service, L"Linkage", 0, KEY_READ, &perf);
     if (err == ERROR_SUCCESS)
     {
         len = sizeof(buf) - sizeof(WCHAR);
-        err = RegQueryValueExW(perf, exportW, NULL, &type, (BYTE *)buf, &len);
+        err = RegQueryValueExW(perf, L"Export", NULL, &type, (BYTE *)buf, &len);
         if (err == ERROR_SUCCESS && (type == REG_SZ || type == REG_MULTI_SZ))
         {
             memcpy(provider->linkage, buf, len);
@@ -1249,14 +1212,14 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr
         RegCloseKey(perf);
     }
 
-    err = RegOpenKeyExW(service, performanceW, 0, KEY_READ, &perf);
+    err = RegOpenKeyExW(service, L"Performance", 0, KEY_READ, &perf);
     RegCloseKey(service);
     if (err != ERROR_SUCCESS)
         return FALSE;
 
     provider->objects[0] = 0;
     len = sizeof(buf) - sizeof(WCHAR);
-    err = RegQueryValueExW(perf, object_listW, NULL, &type, (BYTE *)buf, &len);
+    err = RegQueryValueExW(perf, L"Object List", NULL, &type, (BYTE *)buf, &len);
     if (err == ERROR_SUCCESS && (type == REG_SZ || type == REG_MULTI_SZ))
     {
         memcpy(provider->objects, buf, len);
@@ -1265,7 +1228,7 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr
     }
 
     len = sizeof(buf) - sizeof(WCHAR);
-    err = RegQueryValueExW(perf, libraryW, NULL, &type, (BYTE *)buf, &len);
+    err = RegQueryValueExW(perf, L"Library", NULL, &type, (BYTE *)buf, &len);
     if (err != ERROR_SUCCESS || !(type == REG_SZ || type == REG_EXPAND_SZ))
         goto error;
 
@@ -1305,12 +1268,11 @@ error:
 
 static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, void **data, DWORD *size, DWORD *obj_count)
 {
-    static const WCHAR globalW[] = { 'G','l','o','b','a','l',0 };
     WCHAR *linkage = provider->linkage[0] ? provider->linkage : NULL;
     DWORD err;
 
     if (!query || !query[0])
-        query = globalW;
+        query = L"Global";
 
     err = provider->pOpen(linkage);
     if (err != ERROR_SUCCESS)
@@ -1335,9 +1297,6 @@ static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, vo
 
 static DWORD query_perf_data(const WCHAR *query, DWORD *type, void *data, DWORD *ret_size)
 {
-    static const WCHAR SZ_SERVICES_KEY[] = { 'S','y','s','t','e','m','\\',
-        'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
-        'S','e','r','v','i','c','e','s',0 };
     DWORD err, i, data_size;
     HKEY root;
     PERF_DATA_BLOCK *pdb;
@@ -1396,7 +1355,7 @@ static DWORD query_perf_data(const WCHAR *query, DWORD *type, void *data, DWORD
     data_size -= pdb->HeaderLength;
     data = (char *)data + pdb->HeaderLength;
 
-    err = RegOpenKeyExW(HKEY_LOCAL_MACHINE, SZ_SERVICES_KEY, 0, KEY_READ, &root);
+    err = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"System\\CurrentControlSet\\Services", 0, KEY_READ, &root);
     if (err != ERROR_SUCCESS)
         return err;
 
@@ -2859,7 +2818,6 @@ LSTATUS WINAPI RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszBuffer, DW
  */
 LSTATUS WINAPI RegDeleteTreeW( HKEY hkey, const WCHAR *subkey )
 {
-    static const WCHAR emptyW[] = {0};
     DWORD name_size, max_name, max_subkey;
     WCHAR *name_buf = NULL;
     LONG ret;
@@ -2898,7 +2856,7 @@ LSTATUS WINAPI RegDeleteTreeW( HKEY hkey, const WCHAR *subkey )
     /* Delete the key itself */
     if (subkey && *subkey)
     {
-        ret = RegDeleteKeyExW( hkey, emptyW, 0, 0 );
+        ret = RegDeleteKeyExW( hkey, L"", 0, 0 );
         goto cleanup;
     }
 
@@ -3916,10 +3874,6 @@ BOOL WINAPI SHRegGetBoolUSValueA(const char *subkey, const char *value, BOOL ign
 
 BOOL WINAPI SHRegGetBoolUSValueW(const WCHAR *subkey, const WCHAR *value, BOOL ignore_hkcu, BOOL default_value)
 {
-    static const WCHAR yesW[]= {'Y','E','S',0};
-    static const WCHAR trueW[] = {'T','R','U','E',0};
-    static const WCHAR noW[] = {'N','O',0};
-    static const WCHAR falseW[] = {'F','A','L','S','E',0};
     BOOL ret = default_value;
     DWORD type, datalen;
     WCHAR data[10];
@@ -3933,9 +3887,9 @@ BOOL WINAPI SHRegGetBoolUSValueW(const WCHAR *subkey, const WCHAR *value, BOOL i
         {
             case REG_SZ:
                 data[9] = '\0';
-                if (!lstrcmpiW(data, yesW) || !lstrcmpiW(data, trueW))
+                if (!lstrcmpiW(data, L"yes") || !lstrcmpiW(data, L"true"))
                     ret = TRUE;
-                else if (!lstrcmpiW(data, noW) || !lstrcmpiW(data, falseW))
+                else if (!lstrcmpiW(data, L"no") || !lstrcmpiW(data, L"false"))
                     ret = FALSE;
                 break;
             case REG_DWORD:




More information about the wine-cvs mailing list