Hugh McMaster : reg: Only print the name of the registry key if it contains values or we are recursing.
Alexandre Julliard
julliard at winehq.org
Wed Apr 28 16:18:47 CDT 2021
Module: wine
Branch: master
Commit: ec0a799ea8884479d7b56b81fb9fdd106f1a751b
URL: https://source.winehq.org/git/wine.git/?a=commit;h=ec0a799ea8884479d7b56b81fb9fdd106f1a751b
Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date: Wed Apr 28 19:19:30 2021 +1000
reg: Only print the name of the registry key if it contains values or we are recursing.
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/reg/query.c | 14 ++++++++++----
programs/reg/tests/query.c | 2 +-
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/programs/reg/query.c b/programs/reg/query.c
index efcd16f8ad5..4af6c7f5449 100644
--- a/programs/reg/query.c
+++ b/programs/reg/query.c
@@ -210,9 +210,10 @@ static int query_value(HKEY hkey, WCHAR *value_name, WCHAR *path, BOOL recurse)
return 0;
}
-static int query_all(HKEY hkey, WCHAR *path, BOOL recurse)
+static int query_all(HKEY hkey, WCHAR *path, BOOL recurse, BOOL recursing)
{
LONG rc;
+ DWORD num_values;
DWORD max_value_len = 256, value_len;
DWORD max_data_bytes = 2048, data_size;
DWORD subkey_len;
@@ -221,7 +222,12 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse)
BYTE *data;
HKEY subkey;
- output_string(L"%1\n", path);
+ rc = RegQueryInfoKeyW(hkey, NULL, NULL, NULL, NULL, NULL, NULL,
+ &num_values, NULL, NULL, NULL, NULL);
+ if (rc) return 1;
+
+ if (num_values || recursing)
+ output_string(L"%1\n", path);
value_name = malloc(max_value_len * sizeof(WCHAR));
data = malloc(max_data_bytes);
@@ -275,7 +281,7 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse)
subkey_path = build_subkey_path(path, path_len, subkey_name, subkey_len);
if (!RegOpenKeyExW(hkey, subkey_name, 0, KEY_READ, &subkey))
{
- query_all(subkey, subkey_path, recurse);
+ query_all(subkey, subkey_path, recurse, TRUE);
RegCloseKey(subkey);
}
free(subkey_path);
@@ -311,7 +317,7 @@ static int run_query(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name,
output_message(STRING_MATCHES_FOUND, num_values_found);
}
else
- ret = query_all(hkey, key_name, recurse);
+ ret = query_all(hkey, key_name, recurse, FALSE);
RegCloseKey(hkey);
diff --git a/programs/reg/tests/query.c b/programs/reg/tests/query.c
index a8720da8da1..4ccbab58cb8 100644
--- a/programs/reg/tests/query.c
+++ b/programs/reg/tests/query.c
@@ -282,7 +282,7 @@ static void test_query(void)
read_reg_output("reg query HKCU\\" KEY_BASE, buf, sizeof(buf), &r);
ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
- compare_query(buf, test8a, FALSE, TODO_REG_COMPARE);
+ compare_query(buf, test8a, FALSE, 0);
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);
More information about the wine-cvs
mailing list