lstrcpyW((LPWSTR)out_data,data);
break;
}
+ case REG_DWORD:
+ {
+ LPWSTR rest;
+ DWORD val;
+ val = strtolW(data, &rest, 0);
+ if (rest == data) {
+ static const WCHAR nonnumber[] = {'E','r','r','o','r',':',' ','/','d',' ','r','e','q','u','i','r','e','s',' ','n','u','m','b','e','r','.','\n',0};
+ reg_printfW(nonnumber);
+ break;
+ }
+ *reg_count = sizeof(DWORD);
+ out_data = HeapAlloc(GetProcessHeap(),0,*reg_count);
+ ((LPDWORD)out_data)[0] = val;
+ break;
+ }
default:
{
static const WCHAR unhandled[] = {'U','n','h','a','n','d','l','e','d',' ','T','y','p','e',' ','0','x','%','x',' ',' ','d','a','t','a',' ','%','s','\n',0};
/* FIXME: Prompt for delete */
}
- if (!value_name)
+ /* Delete subtree only if no /v* option is given */
+ if (!value_name && !value_empty && !value_all)
{
if (RegDeleteTreeW(root,p)!=ERROR_SUCCESS)
{
DWORD count;
LONG rc;
- if (value_name)
- {
- RegCloseKey(subkey);
- reg_message(STRING_INVALID_CMDLINE);
- return 1;
- }
-
rc = RegQueryInfoKeyW(subkey, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
&maxValue, NULL, NULL, NULL);
if (rc != ERROR_SUCCESS)
while (1)
{
count = maxValue;
- rc = RegEnumValueW(subkey, 0, value_name, &count, NULL, NULL, NULL, NULL);
+ rc = RegEnumValueW(subkey, 0, szValue, &count, NULL, NULL, NULL, NULL);
if (rc == ERROR_SUCCESS)
{
- rc = RegDeleteValueW(subkey,value_name);
+ rc = RegDeleteValueW(subkey, szValue);
if (rc != ERROR_SUCCESS)
break;
}