[REG] Sync with Wine Staging 1.9.4. CORE-10912
authorAmine Khaldi <amine.khaldi@reactos.org>
Sun, 28 Feb 2016 22:53:26 +0000 (22:53 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Sun, 28 Feb 2016 22:53:26 +0000 (22:53 +0000)
svn path=/trunk/; revision=70804

27 files changed:
reactos/base/applications/cmdutils/reg/lang/bg-BG.rc
reactos/base/applications/cmdutils/reg/lang/cs-CZ.rc
reactos/base/applications/cmdutils/reg/lang/da-DK.rc
reactos/base/applications/cmdutils/reg/lang/de-DE.rc
reactos/base/applications/cmdutils/reg/lang/en-US.rc
reactos/base/applications/cmdutils/reg/lang/es-ES.rc
reactos/base/applications/cmdutils/reg/lang/fr-FR.rc
reactos/base/applications/cmdutils/reg/lang/it-IT.rc
reactos/base/applications/cmdutils/reg/lang/ja-JP.rc
reactos/base/applications/cmdutils/reg/lang/ko-KR.rc
reactos/base/applications/cmdutils/reg/lang/lt-LT.rc
reactos/base/applications/cmdutils/reg/lang/nl-NL.rc
reactos/base/applications/cmdutils/reg/lang/no-NO.rc
reactos/base/applications/cmdutils/reg/lang/pl-PL.rc
reactos/base/applications/cmdutils/reg/lang/pt-PT.rc
reactos/base/applications/cmdutils/reg/lang/ro-RO.rc
reactos/base/applications/cmdutils/reg/lang/ru-RU.rc
reactos/base/applications/cmdutils/reg/lang/sl-SI.rc
reactos/base/applications/cmdutils/reg/lang/sq-AL.rc
reactos/base/applications/cmdutils/reg/lang/sv-SE.rc
reactos/base/applications/cmdutils/reg/lang/tr-TR.rc
reactos/base/applications/cmdutils/reg/lang/uk-UA.rc
reactos/base/applications/cmdutils/reg/lang/zh-CN.rc
reactos/base/applications/cmdutils/reg/lang/zh-TW.rc
reactos/base/applications/cmdutils/reg/reg.c
reactos/base/applications/cmdutils/reg/reg.h
reactos/media/doc/README.WINE

index df79787..acdab2e 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Грешка: Неуспешно добавяне на ключове в отдалечената машина\n"
     STRING_CANNOT_FIND, "Грешка: Уредбата не откри указания регистърен ключ или стойност\n"
     STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index a084370..6a61834 100644 (file)
@@ -17,4 +17,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Chyba: Nelze přidat klíče na vzdálený stroj\n"
     STRING_CANNOT_FIND, "Chyba: Systém nenalezl zadaný klíč nebo hodnotu registru\n"
     STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index f9e2034..cda3c99 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Fejl: Kunne ikke tilføje nøgler til fjern maskinen\n"
     STRING_CANNOT_FIND, "Fejl: Systemet kunne ikke finde, den angivet registrerings nøgle eller værdi\n"
     STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index ddcb0d1..14d7afa 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Fehler: Konnte Schlüssel nicht zum entfernten Rechner hinzufügen\n"
     STRING_CANNOT_FIND, "Fehler: Der angegebene Schlüssel oder Wert konnte nicht gefunden werden\n"
     STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 7f9c2d5..877a46a 100644 (file)
@@ -7,9 +7,21 @@ STRINGTABLE
     STRING_DELETE_USAGE, "REG DELETE key_name [/v value_name | /ve | /va] [/f]\n"
     STRING_QUERY_USAGE, "REG QUERY key_name [/v value_name | /ve] [/s]\n"
     STRING_SUCCESS, "The operation completed successfully\n"
-    STRING_INVALID_KEY, "Error: Invalid key name\n"
-    STRING_INVALID_CMDLINE, "Error: Invalid command line parameters\n"
-    STRING_NO_REMOTE, "Error: Unable to access remote machine\n"
-    STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_INVALID_KEY, "reg: Invalid key name\n"
+    STRING_INVALID_CMDLINE, "reg: Invalid command line parameters\n"
+    STRING_NO_REMOTE, "reg: Unable to access remote machine\n"
+    STRING_CANNOT_FIND, "reg: The system was unable to find the specified registry key or value\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index b72fb32..0cb7be0 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Error: No se pueden agregar las claves al equipo remoto\n"
     STRING_CANNOT_FIND, "Error: El sistema no pudo encontrar la clave o el valor del Registro especificado\n"
     STRING_UNSUPPORTED_TYPE, "Error: Tipo no soportado\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 2073c1e..0b1ef13 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Erreur : impossible d'ajouter des clés à une machine distante\n"
     STRING_CANNOT_FIND, "Erreur : le système n'a pas pu trouver la clé ou la valeur de registre spécifiée\n"
     STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 1896b77..d73190f 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Errore: impossibile aggiungere chiavi alla macchina remota\n"
     STRING_CANNOT_FIND, "Errore: il sistema non è riuscito a trovare la chiave di registro o il valore specificati\n"
     STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index d8829d4..db14f7c 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "エラー: コマンド ライン引数が無効です\n"
     STRING_NO_REMOTE, "エラー: リモート マシンにキーを追加できませんでした\n"
     STRING_CANNOT_FIND, "エラー: システムは指定されたキーまたは値を見つけられませんでした\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 9695f2e..a9033c0 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "에러:올바르지 않은 명령라인 매개변수\n"
     STRING_NO_REMOTE, "에러: 원격 머신에  키를 더하는 것은 가능하지 않습니다\n"
     STRING_CANNOT_FIND, "에러: 이 시스템에서 지정된 레지스트리 키나 값을 찾을수 없습니다\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index a5d30e2..b550632 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Klaida: Netinkami komandos eilutės parametrai\n"
     STRING_NO_REMOTE, "Klaida: Negalima pridėti raktų nuotoliniame kompiuteryje\n"
     STRING_CANNOT_FIND, "Klaida: Sistemai nepavyko rasti nurodyto registro rakto ar reikšmės\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index acda423..14fefd6 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Fout: Foutieve commandoregel-parameters\n"
     STRING_NO_REMOTE, "Fout: Sleutels konden niet toegevoegd worden aan de remote machine\n"
     STRING_CANNOT_FIND, "Fout: Het systeem kon de gespecificeerde registersleutel of waarde niet vinden\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 4ab0cf6..8feca8c 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Feil: Ugyldige parametere på kommandolinjen\n"
     STRING_NO_REMOTE, "Feil: Kan ikke legge til nøkler på ekstern maskin\n"
     STRING_CANNOT_FIND, "Feil: Systemet klarte ikke finne den angitte registernøkkelen eller -verdien\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 5364d6e..0d5e74a 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Błąd: Nie można dodać kluczy do zdalnej maszyny\n"
     STRING_CANNOT_FIND, "Błąd: System nie mógł znaleźć podanej wartości lub klucza rejestru\n"
     STRING_UNSUPPORTED_TYPE, "Błąd: Nieobsługiwany typ\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 2b17b58..dc33db1 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Erro: Parâmetros da linha de comandos inválidos\n"
     STRING_NO_REMOTE, "Erro: Incapaz de adicionar chaves à máquina remota\n"
     STRING_CANNOT_FIND, "Erro: O sistema foi incapaz de encontrar a chave de registo ou valor especificado\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index b8dae7a..ed1b7db 100644 (file)
@@ -18,4 +18,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Eroare: Nu se pot adăuga chei pe calculatorul de la distanță\n"
     STRING_CANNOT_FIND, "Eroare: Sistemul nu a putut găsi cheia sau valoarea de registru specificată\n"
     STRING_UNSUPPORTED_TYPE, "Eroare: Tip nerecunoscut\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 729e039..c9ced31 100644 (file)
@@ -12,4 +12,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Ошибка: Невозможно добавить ключи на удаленной машине\n"
     STRING_CANNOT_FIND, "Ошибка: Не удалось найти указанный ключ реестра или значение\n"
     STRING_UNSUPPORTED_TYPE, "Ошибка: Неподдерживаемый тип\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 6f0d6f6..5f5418e 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Napaka: Napačen parameter v ukazni vrstici\n"
     STRING_NO_REMOTE, "Napaka: Na morem dodati ključa na oddaljen računalnik\n"
     STRING_CANNOT_FIND, "Napaka: Sistem ni našel zahtevanega ključa ali vrednosti\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index cbc0399..ed8d8ba 100644 (file)
@@ -15,5 +15,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Error: Parametrat e pavlefshme ne vijën komanduse\n"
     STRING_NO_REMOTE, "Error: Në pamundësi për të shtuar çelësat në makinë në distancë\n"
     STRING_CANNOT_FIND, "Error: Sistemi nuk ishte në gjendje për të gjetur çelësat të caktuar të regjistrit ose vlerës\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index a38a7e3..9d7bfc5 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Fel: ogiltiga kommandoradsparametrar\n"
     STRING_NO_REMOTE, "Fel: Kan inte lägga till nycklar till fjärrmaskin\n"
     STRING_CANNOT_FIND, "Fel: Systemet kunde inte hitta angiven nyckel eller värde i registret\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 09be025..607de5a 100644 (file)
@@ -14,4 +14,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "Yanlışlık: Uzak makineye erişilemez\n"
     STRING_CANNOT_FIND, "Yanlışlık: Dizge belirtilen değer defteri dizinini ya da değerini bulamadı\n"
     STRING_UNSUPPORTED_TYPE, "Yanlışlık: Desteklenmeyen tür\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index aca994e..547129e 100644 (file)
@@ -11,5 +11,17 @@ STRINGTABLE
     STRING_INVALID_CMDLINE, "Помилка: неправильні параметри командного рядка\n"
     STRING_NO_REMOTE, "Помилка: неможливо додати ключі на віддаленій машині\n"
     STRING_CANNOT_FIND, "Помилка: не вдалось знайти вказаний ключ реєстру чи значення\n"
-    STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
+    STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index b055468..990a778 100644 (file)
@@ -14,4 +14,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "错误: 无法访问远程计算机\n"
     STRING_CANNOT_FIND, "错误: 系统是无法找到指定的注册表项或值\n"
     STRING_UNSUPPORTED_TYPE, "错误: 不支持的类型\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index b62b490..a0f3291 100644 (file)
@@ -14,4 +14,16 @@ STRINGTABLE
     STRING_NO_REMOTE, "錯誤: 無法訪問遠端計算機\n"
     STRING_CANNOT_FIND, "錯誤: 系統是無法找到指定的註冊表項或值\n"
     STRING_UNSUPPORTED_TYPE, "錯誤: 不支援的類型\n"
+    STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
+    STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
+    STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
+    STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
+    STRING_YESNO, " (Yes|No)"
+    STRING_YES, "Y"
+    STRING_NO, "N"
+    STRING_CANCELLED, "The registry operation was cancelled\n"
+    STRING_DEFAULT_VALUE, "(Default)"
+    STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
+    STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
+    STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
 }
index 5ea2313..433fdf3 100644 (file)
@@ -29,6 +29,8 @@
 
 #define ARRAY_SIZE(A) (sizeof(A)/sizeof(*A))
 
+WINE_DEFAULT_DEBUG_CHANNEL(reg);
+
 static const WCHAR short_hklm[] = {'H','K','L','M',0};
 static const WCHAR short_hkcu[] = {'H','K','C','U',0};
 static const WCHAR short_hkcr[] = {'H','K','C','R',0};
@@ -81,19 +83,11 @@ type_rels[] =
     {REG_MULTI_SZ, type_multi_sz},
 };
 
-static int reg_printfW(const WCHAR *msg, ...)
+static void output_writeconsole(const WCHAR *str, DWORD wlen)
 {
-    va_list va_args;
-    int wlen;
     DWORD count, ret;
-    WCHAR msg_buffer[8192];
-
-    va_start(va_args, msg);
-    vsnprintfW(msg_buffer, 8192, msg, va_args);
-    va_end(va_args);
 
-    wlen = lstrlenW(msg_buffer);
-    ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), msg_buffer, wlen, &count, NULL);
+    ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, wlen, &count, NULL);
     if (!ret)
     {
         DWORD len;
@@ -103,29 +97,83 @@ static int reg_printfW(const WCHAR *msg, ...)
          * back to WriteFile(), assuming the console encoding is still the right
          * one in that case.
          */
-        len = WideCharToMultiByte(GetConsoleOutputCP(), 0, msg_buffer, wlen,
-            NULL, 0, NULL, NULL);
+        len = WideCharToMultiByte(GetConsoleOutputCP(), 0, str, wlen, NULL, 0, NULL, NULL);
         msgA = HeapAlloc(GetProcessHeap(), 0, len * sizeof(char));
-        if (!msgA)
-            return 0;
+        if (!msgA) return;
 
-        WideCharToMultiByte(GetConsoleOutputCP(), 0, msg_buffer, wlen, msgA, len,
-            NULL, NULL);
+        WideCharToMultiByte(GetConsoleOutputCP(), 0, str, wlen, msgA, len, NULL, NULL);
         WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), msgA, len, &count, FALSE);
         HeapFree(GetProcessHeap(), 0, msgA);
     }
+}
+
+static void output_formatstring(const WCHAR *fmt, __ms_va_list va_args)
+{
+    WCHAR *str;
+    DWORD len;
+
+    SetLastError(NO_ERROR);
+    len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER,
+                         fmt, 0, 0, (WCHAR *)&str, 0, &va_args);
+    if (len == 0 && GetLastError() != NO_ERROR)
+    {
+        WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(fmt));
+        return;
+    }
+    output_writeconsole(str, len);
+    LocalFree(str);
+}
+
+static void __cdecl output_message(unsigned int id, ...)
+{
+    WCHAR fmt[1024];
+    __ms_va_list va_args;
 
-    return count;
+    if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, ARRAY_SIZE(fmt)))
+    {
+        WINE_FIXME("LoadString failed with %d\n", GetLastError());
+        return;
+    }
+    __ms_va_start(va_args, id);
+    output_formatstring(fmt, va_args);
+    __ms_va_end(va_args);
 }
 
-static int reg_message(int msg)
+static void __cdecl output_string(const WCHAR *fmt, ...)
 {
-    static const WCHAR formatW[] = {'%','s',0};
-    WCHAR msg_buffer[8192];
+    __ms_va_list va_args;
+
+    __ms_va_start(va_args, fmt);
+    output_formatstring(fmt, va_args);
+    __ms_va_end(va_args);
+}
 
-    LoadStringW(GetModuleHandleW(NULL), msg, msg_buffer,
-        sizeof(msg_buffer)/sizeof(WCHAR));
-    return reg_printfW(formatW, msg_buffer);
+/* ask_confirm() adapted from programs/cmd/builtins.c */
+static BOOL ask_confirm(unsigned int msgid, WCHAR *reg_info)
+{
+    HMODULE hmod;
+    WCHAR Ybuffer[4];
+    WCHAR Nbuffer[4];
+    WCHAR defval[32];
+    WCHAR answer[MAX_PATH];
+    DWORD count;
+
+    hmod = GetModuleHandleW(NULL);
+    LoadStringW(hmod, STRING_YES, Ybuffer, ARRAY_SIZE(Ybuffer));
+    LoadStringW(hmod, STRING_NO,  Nbuffer, ARRAY_SIZE(Nbuffer));
+    LoadStringW(hmod, STRING_DEFAULT_VALUE, defval, ARRAY_SIZE(defval));
+
+    while (1)
+    {
+        output_message(msgid, reg_info ? reg_info : defval);
+        output_message(STRING_YESNO);
+        ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), answer, ARRAY_SIZE(answer), &count, NULL);
+        answer[0] = toupperW(answer[0]);
+        if (answer[0] == Ybuffer[0])
+            return TRUE;
+        if (answer[0] == Nbuffer[0])
+            return FALSE;
+    }
 }
 
 static inline BOOL path_rootname_cmp(const WCHAR *input_path, const WCHAR *rootkey_name)
@@ -186,7 +234,9 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
 
     switch (reg_type)
     {
+        case REG_NONE:
         case REG_SZ:
+        case REG_EXPAND_SZ:
         {
             *reg_count = (lstrlenW(data) + 1) * sizeof(WCHAR);
             out_data = HeapAlloc(GetProcessHeap(),0,*reg_count);
@@ -194,13 +244,14 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
             break;
         }
         case REG_DWORD:
+     /* case REG_DWORD_LITTLE_ENDIAN: */
+        case REG_DWORD_BIG_ENDIAN: /* Yes, this is correct! */
         {
             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);
+            val = strtoulW(data, &rest, (data[1] == 'x') ? 16 : 10);
+            if (*rest || data[0] == '-') {
+                output_message(STRING_MISSING_INTEGER);
                 break;
             }
             *reg_count = sizeof(DWORD);
@@ -210,7 +261,6 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
         }
         case REG_BINARY:
         {
-            static const WCHAR nohex[] = {'E','r','r','o','r',':',' ','/','d',' ','r','e','q','u','i','r','e','s',' ','h','e','x',' ','d','a','t','a','.','\n',0};
             BYTE hex0, hex1;
             int i = 0, destByteIndex = 0, datalen = lstrlenW(data);
             *reg_count = ((datalen + datalen % 2) / 2) * sizeof(BYTE);
@@ -234,15 +284,14 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
             no_hex_data:
             /* cleanup, print error */
             HeapFree(GetProcessHeap(), 0, out_data);
-            reg_printfW(nohex);
+            output_message(STRING_MISSING_HEXDATA);
             out_data = NULL;
             break;
         }
+        case REG_MULTI_SZ:
+            /* FIXME: Needs handling */
         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};
-            reg_printfW(unhandled, reg_type,data);
-        }
+            output_message(STRING_UNHANDLED_TYPE, reg_type, data);
     }
 
     return out_data;
@@ -254,13 +303,13 @@ static BOOL sane_path(const WCHAR *key)
 
     if (i < 3 || (key[i - 1] == '\\' && key[i - 2] == '\\'))
     {
-        reg_message(STRING_INVALID_KEY);
+        output_message(STRING_INVALID_KEY);
         return FALSE;
     }
 
     if (key[0] == '\\' && key[1] == '\\' && key[2] != '\\')
     {
-        reg_message(STRING_NO_REMOTE);
+        output_message(STRING_NO_REMOTE);
         return FALSE;
     }
 
@@ -270,20 +319,16 @@ static BOOL sane_path(const WCHAR *key)
 static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     WCHAR *type, WCHAR separator, WCHAR *data, BOOL force)
 {
-    static const WCHAR stubW[] = {'A','D','D',' ','-',' ','%','s',
-        ' ','%','s',' ','%','d',' ','%','s',' ','%','s',' ','%','d','\n',0};
     LPWSTR p;
     HKEY root,subkey;
 
-    reg_printfW(stubW, key_name, value_name, value_empty, type, data, force);
-
     if (!sane_path(key_name))
         return 1;
 
     p = strchrW(key_name,'\\');
     if (!p)
     {
-        reg_message(STRING_INVALID_KEY);
+        output_message(STRING_INVALID_KEY);
         return 1;
     }
     p++;
@@ -291,13 +336,19 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     root = path_get_rootkey(key_name);
     if (!root)
     {
-        reg_message(STRING_INVALID_KEY);
+        output_message(STRING_INVALID_KEY);
+        return 1;
+    }
+
+    if (value_name && value_empty)
+    {
+        output_message(STRING_INVALID_CMDLINE);
         return 1;
     }
 
     if(RegCreateKeyW(root,p,&subkey)!=ERROR_SUCCESS)
     {
-        reg_message(STRING_INVALID_KEY);
+        output_message(STRING_INVALID_KEY);
         return 1;
     }
 
@@ -309,9 +360,14 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
 
         if (!force)
         {
-            if (RegQueryValueW(subkey,value_name,NULL,NULL)==ERROR_SUCCESS)
+            if (RegQueryValueExW(subkey, value_name, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
             {
-                /* FIXME:  Prompt for overwrite */
+                if (!ask_confirm(STRING_OVERWRITE_VALUE, value_name))
+                {
+                    RegCloseKey(subkey);
+                    output_message(STRING_CANCELLED);
+                    return 0;
+                }
             }
         }
 
@@ -319,19 +375,28 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
         if (reg_type == ~0u)
         {
             RegCloseKey(subkey);
-            reg_message(STRING_UNSUPPORTED_TYPE);
+            output_message(STRING_UNSUPPORTED_TYPE, type);
             return 1;
         }
+        if (reg_type == REG_DWORD && !data)
+        {
+             RegCloseKey(subkey);
+             output_message(STRING_INVALID_CMDLINE);
+             return 1;
+        }
 
-        if (data)
-            reg_data = get_regdata(data,reg_type,separator,&reg_count);
+        if (data && !(reg_data = get_regdata(data, reg_type, separator, &reg_count)))
+        {
+            RegCloseKey(subkey);
+            return 1;
+        }
 
         RegSetValueExW(subkey,value_name,0,reg_type,reg_data,reg_count);
         HeapFree(GetProcessHeap(),0,reg_data);
     }
 
     RegCloseKey(subkey);
-    reg_message(STRING_SUCCESS);
+    output_message(STRING_SUCCESS);
 
     return 0;
 }
@@ -342,18 +407,13 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     LPWSTR p;
     HKEY root,subkey;
 
-    static const WCHAR stubW[] = {'D','E','L','E','T','E',
-        ' ','-',' ','%','s',' ','%','s',' ','%','d',' ','%','d',' ','%','d','\n'
-        ,0};
-    reg_printfW(stubW, key_name, value_name, value_empty, value_all, force);
-
     if (!sane_path(key_name))
         return 1;
 
     p = strchrW(key_name,'\\');
     if (!p)
     {
-        reg_message(STRING_INVALID_KEY);
+        output_message(STRING_INVALID_KEY);
         return 1;
     }
     p++;
@@ -361,25 +421,32 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     root = path_get_rootkey(key_name);
     if (!root)
     {
-        reg_message(STRING_INVALID_KEY);
-        return 1;
-    }
-
-    if (value_name && value_empty)
-    {
-        reg_message(STRING_INVALID_CMDLINE);
+        output_message(STRING_INVALID_KEY);
         return 1;
     }
 
-    if (value_empty && value_all)
+    if ((value_name && value_empty) || (value_name && value_all) || (value_empty && value_all))
     {
-        reg_message(STRING_INVALID_CMDLINE);
+        output_message(STRING_INVALID_CMDLINE);
         return 1;
     }
 
     if (!force)
     {
-        /* FIXME:  Prompt for delete */
+        BOOL ret;
+
+        if (value_name || value_empty)
+            ret = ask_confirm(STRING_DELETE_VALUE, value_name);
+        else if (value_all)
+            ret = ask_confirm(STRING_DELETE_VALUEALL, key_name);
+        else
+            ret = ask_confirm(STRING_DELETE_SUBKEY, key_name);
+
+        if (!ret)
+        {
+            output_message(STRING_CANCELLED);
+            return 0;
+        }
     }
 
     /* Delete subtree only if no /v* option is given */
@@ -387,16 +454,16 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     {
         if (RegDeleteTreeW(root,p)!=ERROR_SUCCESS)
         {
-            reg_message(STRING_CANNOT_FIND);
+            output_message(STRING_CANNOT_FIND);
             return 1;
         }
-        reg_message(STRING_SUCCESS);
+        output_message(STRING_SUCCESS);
         return 0;
     }
 
     if(RegOpenKeyW(root,p,&subkey)!=ERROR_SUCCESS)
     {
-        reg_message(STRING_CANNOT_FIND);
+        output_message(STRING_CANNOT_FIND);
         return 1;
     }
 
@@ -440,7 +507,7 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
         if (RegDeleteValueW(subkey,value_name) != ERROR_SUCCESS)
         {
             RegCloseKey(subkey);
-            reg_message(STRING_CANNOT_FIND);
+            output_message(STRING_CANNOT_FIND);
             return 1;
         }
     }
@@ -450,7 +517,7 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     }
 
     RegCloseKey(subkey);
-    reg_message(STRING_SUCCESS);
+    output_message(STRING_SUCCESS);
     return 0;
 }
 
@@ -458,8 +525,8 @@ static int reg_query(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
     BOOL subkey)
 {
     static const WCHAR stubW[] = {'S','T','U','B',' ','Q','U','E','R','Y',' ',
-        '-',' ','%','s',' ','%','s',' ','%','d',' ','%','d','\n',0};
-    reg_printfW(stubW, key_name, value_name, value_empty, subkey);
+        '-',' ','%','1',' ','%','2',' ','%','3','!','d','!',' ','%','4','!','d','!','\n',0};
+    output_string(stubW, key_name, value_name, value_empty, subkey);
 
     return 1;
 }
@@ -484,7 +551,7 @@ int wmain(int argc, WCHAR *argvW[])
     if (argc < 2 || !lstrcmpW(argvW[1], slashHelpW)
                  || !lstrcmpiW(argvW[1], slashHW))
     {
-        reg_message(STRING_USAGE);
+        output_message(STRING_USAGE);
         return 0;
     }
 
@@ -495,13 +562,13 @@ int wmain(int argc, WCHAR *argvW[])
 
         if (argc < 3)
         {
-            reg_message(STRING_INVALID_CMDLINE);
+            output_message(STRING_INVALID_CMDLINE);
             return 1;
         }
         else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
                                !lstrcmpiW(argvW[2], slashHW)))
         {
-            reg_message(STRING_ADD_USAGE);
+            output_message(STRING_ADD_USAGE);
             return 0;
         }
 
@@ -515,9 +582,24 @@ int wmain(int argc, WCHAR *argvW[])
             else if (!lstrcmpiW(argvW[i], slashTW))
                 type = argvW[++i];
             else if (!lstrcmpiW(argvW[i], slashSW))
-                separator = argvW[++i][0];
+            {
+                WCHAR *ptr = argvW[++i];
+
+                if (!ptr || strlenW(ptr) != 1)
+                {
+                    output_message(STRING_INVALID_CMDLINE);
+                    return 1;
+                }
+                separator = ptr[0];
+            }
             else if (!lstrcmpiW(argvW[i], slashDW))
-                data = argvW[++i];
+            {
+                if (!(data = argvW[++i]))
+                {
+                    output_message(STRING_INVALID_CMDLINE);
+                    return 1;
+                }
+            }
             else if (!lstrcmpiW(argvW[i], slashFW))
                 force = TRUE;
         }
@@ -531,13 +613,13 @@ int wmain(int argc, WCHAR *argvW[])
 
         if (argc < 3)
         {
-            reg_message(STRING_INVALID_CMDLINE);
+            output_message(STRING_INVALID_CMDLINE);
             return 1;
         }
         else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
                                !lstrcmpiW(argvW[2], slashHW)))
         {
-            reg_message(STRING_DELETE_USAGE);
+            output_message(STRING_DELETE_USAGE);
             return 0;
         }
 
@@ -562,13 +644,13 @@ int wmain(int argc, WCHAR *argvW[])
 
         if (argc < 3)
         {
-            reg_message(STRING_INVALID_CMDLINE);
+            output_message(STRING_INVALID_CMDLINE);
             return 1;
         }
         else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
                                !lstrcmpiW(argvW[2], slashHW)))
         {
-            reg_message(STRING_QUERY_USAGE);
+            output_message(STRING_QUERY_USAGE);
             return 0;
         }
 
@@ -586,7 +668,7 @@ int wmain(int argc, WCHAR *argvW[])
     }
     else
     {
-        reg_message(STRING_INVALID_CMDLINE);
+        output_message(STRING_INVALID_CMDLINE);
         return 1;
     }
 }
index 7d937ac..f0545c6 100644 (file)
 #define STRING_NO_REMOTE        108
 #define STRING_CANNOT_FIND      109
 #define STRING_UNSUPPORTED_TYPE 110
+#define STRING_MISSING_INTEGER  111
+#define STRING_MISSING_HEXDATA  112
+#define STRING_UNHANDLED_TYPE   113
+#define STRING_OVERWRITE_VALUE  114
+#define STRING_YESNO            115
+#define STRING_YES              116
+#define STRING_NO               117
+#define STRING_CANCELLED        118
+#define STRING_DEFAULT_VALUE    119
+#define STRING_DELETE_VALUE     120
+#define STRING_DELETE_VALUEALL  121
+#define STRING_DELETE_SUBKEY    122
index e9117d4..314f830 100644 (file)
@@ -229,7 +229,7 @@ reactos/dll/cpl/inetcpl               # Synced to WineStaging-1.7.55
 ReactOS shares the following programs with Winehq.
 
 reactos/base/applications/cmdutils/cscript  # Synced to WineStaging-1.7.55
-reactos/base/applications/cmdutils/reg      # Synced to WineStaging-1.7.55
+reactos/base/applications/cmdutils/reg      # Synced to WineStaging-1.9.4
 reactos/base/applications/cmdutils/taskkill # Synced to WineStaging-1.7.55
 reactos/base/applications/cmdutils/wmic     # Synced to WineStaging-1.7.55
 reactos/base/applications/cmdutils/wscript  # Synced to WineStaging-1.7.55