On 8/1/2013 17:44, Hugh McMaster wrote:
This patch builds significantly on the query function stub in programs/reg.exe.
The patch includes recursion for subkeys.
Some examples of usage:
wine reg.exe query "HKCU"
wine reg.exe query "HKCU\Console"
wine reg.exe query "HKCU\Console" /v "ScreenSize"
wine reg.exe query "HKCU\Software" /s
---
programs/reg/reg.c | 232 +++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 221 insertions(+), 11 deletions(-)
+static LPVOID WINAPI mem_alloc(size_t size)
+{
+ return HeapAlloc(GetProcessHeap(), 0, size);
+}
+
+static void WINAPI mem_free(LPVOID mem)
+{
+ HeapFree(GetProcessHeap(), 0, mem);
+}
Why WINAPI? It's better to follow naming from existing module, there's
plenty of them with similar helpers.
+ case REG_SZ:
+ case REG_MULTI_SZ:
+ case REG_EXPAND_SZ:
No tabs please.
+static void reg_output_subkey(LPWSTR key_name, LPWSTR subkeyName)
+{
+ reg_printfW(formatSW, key_name);
+
+ if (subkeyName > 0)
+ {
+ reg_printfW(formatSW, slashW);
+ reg_printfW(formatSW, subkeyName);
+ reg_printfW(formatSW, newlineW);
+ }
+}
Comparison looks a bit odd. Also why do you need to break it down to
three printf calls instead of one?
+ p = strchrW(key_name,'\\');
+ if (!p)
+ {
+ p = 0;
+ }
+ else p++;
I'm not sure what this is supposed to do.
+ case REG_BINARY:
+ case REG_NONE:
+ pValue = value;
+ for (i=0; i<valueSize; i++, pValue++)
+ reg_printfW(formatXW, *pValue);
+ break;
There's no need for separate variable here nor for incrementing pointer.