Commit ec0a799e authored by Hugh McMaster's avatar Hugh McMaster Committed by Alexandre Julliard

reg: Only print the name of the registry key if it contains values or we are recursing.

parent f3281626
...@@ -210,9 +210,10 @@ static int query_value(HKEY hkey, WCHAR *value_name, WCHAR *path, BOOL recurse) ...@@ -210,9 +210,10 @@ static int query_value(HKEY hkey, WCHAR *value_name, WCHAR *path, BOOL recurse)
return 0; 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; LONG rc;
DWORD num_values;
DWORD max_value_len = 256, value_len; DWORD max_value_len = 256, value_len;
DWORD max_data_bytes = 2048, data_size; DWORD max_data_bytes = 2048, data_size;
DWORD subkey_len; DWORD subkey_len;
...@@ -221,7 +222,12 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse) ...@@ -221,7 +222,12 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse)
BYTE *data; BYTE *data;
HKEY subkey; 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)); value_name = malloc(max_value_len * sizeof(WCHAR));
data = malloc(max_data_bytes); data = malloc(max_data_bytes);
...@@ -275,7 +281,7 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse) ...@@ -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); subkey_path = build_subkey_path(path, path_len, subkey_name, subkey_len);
if (!RegOpenKeyExW(hkey, subkey_name, 0, KEY_READ, &subkey)) if (!RegOpenKeyExW(hkey, subkey_name, 0, KEY_READ, &subkey))
{ {
query_all(subkey, subkey_path, recurse); query_all(subkey, subkey_path, recurse, TRUE);
RegCloseKey(subkey); RegCloseKey(subkey);
} }
free(subkey_path); free(subkey_path);
...@@ -311,7 +317,7 @@ static int run_query(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name, ...@@ -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); output_message(STRING_MATCHES_FOUND, num_values_found);
} }
else else
ret = query_all(hkey, key_name, recurse); ret = query_all(hkey, key_name, recurse, FALSE);
RegCloseKey(hkey); RegCloseKey(hkey);
......
...@@ -282,7 +282,7 @@ static void test_query(void) ...@@ -282,7 +282,7 @@ static void test_query(void)
read_reg_output("reg query HKCU\\" KEY_BASE, buf, sizeof(buf), &r); 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); 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); 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); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment