Hugh McMaster : reg: Print the full key path without a trailing backslash.

Alexandre Julliard julliard at winehq.org
Wed Apr 21 15:57:54 CDT 2021


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

Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date:   Wed Apr 21 23:24:48 2021 +1000

reg: Print the full key path without a trailing backslash.

Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/reg/reg.c         | 14 +++++++++++---
 programs/reg/tests/query.c |  2 +-
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/programs/reg/reg.c b/programs/reg/reg.c
index 69107d54b92..8ffbc5054d9 100644
--- a/programs/reg/reg.c
+++ b/programs/reg/reg.c
@@ -205,10 +205,10 @@ WCHAR *build_subkey_path(WCHAR *path, DWORD path_len, WCHAR *subkey_name, DWORD
 
 WCHAR *get_long_key(HKEY root, WCHAR *path)
 {
-    DWORD i, array_size = ARRAY_SIZE(root_rels), len;
+    int i, len, path_len;
     WCHAR *long_key;
 
-    for (i = 0; i < array_size; i++)
+    for (i = 0; i < ARRAY_SIZE(root_rels); i++)
     {
         if (root == root_rels[i].key)
             break;
@@ -223,7 +223,15 @@ WCHAR *get_long_key(HKEY root, WCHAR *path)
         return long_key;
     }
 
-    len += lstrlenW(path) + 1; /* add one for the backslash */
+    path_len = lstrlenW(path);
+
+    if (path[path_len - 1] == '\\')
+    {
+        path[path_len - 1] = 0;
+        path_len--;
+    }
+
+    len += path_len + 1; /* add one for the concatenating backslash */
     long_key = malloc((len + 1) * sizeof(WCHAR));
     swprintf(long_key, len + 1, L"%s\\%s", root_rels[i].long_name, path);
     return long_key;
diff --git a/programs/reg/tests/query.c b/programs/reg/tests/query.c
index 5c97554648e..34196c77aa4 100644
--- a/programs/reg/tests/query.c
+++ b/programs/reg/tests/query.c
@@ -251,7 +251,7 @@ static void test_query(void)
 
     read_reg_output("reg query HKCU\\" KEY_BASE "\\ /s", buf, sizeof(buf), &r);
     ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    compare_query(buf, test6, FALSE, TODO_REG_COMPARE);
+    compare_query(buf, test6, FALSE, 0);
 
     read_reg_output("reg query HKCU\\" KEY_BASE " /v Wine /s", buf, sizeof(buf), &r);
     ok(r == REG_EXIT_SUCCESS || r == REG_EXIT_FAILURE /* WinXP */,




More information about the wine-cvs mailing list