regedit: Add data parsing operations to the state machine.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d60c31eadb
commit
191b81dbd3
2
po/ar.po
2
po/ar.po
|
@ -12313,7 +12313,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "النوع غير مدعوم.\n"
|
msgstr "النوع غير مدعوم.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/bg.po
2
po/bg.po
|
@ -11920,7 +11920,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/ca.po
4
po/ca.po
|
@ -12188,7 +12188,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Seqüència d'escapada no reconeguda [\\%1!c!]\n"
|
msgstr "regedit: Seqüència d'escapada no reconeguda [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Tipus de dades de registre incompatible [%1]\n"
|
msgstr "regedit: Tipus de dades de registre incompatible [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/cs.po
2
po/cs.po
|
@ -12002,7 +12002,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Nepodporovaný typ.\n"
|
msgstr "Nepodporovaný typ.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/da.po
2
po/da.po
|
@ -12270,7 +12270,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Ikke-understøttet type.\n"
|
msgstr "Ikke-understøttet type.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/de.po
4
po/de.po
|
@ -12153,7 +12153,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Unbekannte Escape-Sequenz [\\%1!c!]\n"
|
msgstr "regedit: Unbekannte Escape-Sequenz [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Nicht unterstützter Registrierungsdatentyp [%1]\n"
|
msgstr "regedit: Nicht unterstützter Registrierungsdatentyp [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/el.po
2
po/el.po
|
@ -11687,7 +11687,7 @@ msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Επιλογές.\n"
|
msgstr "Επιλογές.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/en.po
4
po/en.po
|
@ -12065,8 +12065,8 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
msgstr "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Unsupported registry data type [%1]\n"
|
msgstr "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
msgid "regedit: Unexpected end of line in '%1'.\n"
|
msgid "regedit: Unexpected end of line in '%1'.\n"
|
||||||
|
|
|
@ -12065,8 +12065,8 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
msgstr "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Unsupported registry data type [%1]\n"
|
msgstr "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
msgid "regedit: Unexpected end of line in '%1'.\n"
|
msgid "regedit: Unexpected end of line in '%1'.\n"
|
||||||
|
|
2
po/eo.po
2
po/eo.po
|
@ -11609,7 +11609,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/es.po
2
po/es.po
|
@ -12349,7 +12349,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Tipo no soportado.\n"
|
msgstr "Tipo no soportado.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/fa.po
2
po/fa.po
|
@ -11687,7 +11687,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/fi.po
4
po/fi.po
|
@ -12041,7 +12041,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Tuntematon merkintä [\\%1!c!]\n"
|
msgstr "regedit: Tuntematon merkintä [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Rekisterin tietotyypille [%1] ei ole tukea\n"
|
msgstr "regedit: Rekisterin tietotyypille [%1] ei ole tukea\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/fr.po
4
po/fr.po
|
@ -12236,7 +12236,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit : séquence d'échappement non reconnue [\\%1!c!]\n"
|
msgstr "regedit : séquence d'échappement non reconnue [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit : type de données de registre non pris en charge [%1]\n"
|
msgstr "regedit : type de données de registre non pris en charge [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/he.po
2
po/he.po
|
@ -12084,7 +12084,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Error: Command line not supported\n"
|
#| msgid "Error: Command line not supported\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Error: Command line not supported\n"
|
msgstr "Error: Command line not supported\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/hi.po
2
po/hi.po
|
@ -11478,7 +11478,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/hr.po
2
po/hr.po
|
@ -11816,7 +11816,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Nepodržan tip.\n"
|
msgstr "Nepodržan tip.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/hu.po
2
po/hu.po
|
@ -12266,7 +12266,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Nem támogatott típus.\n"
|
msgstr "Nem támogatott típus.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/it.po
2
po/it.po
|
@ -12350,7 +12350,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Tipo non supportato.\n"
|
msgstr "Tipo non supportato.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/ja.po
4
po/ja.po
|
@ -12073,7 +12073,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: 認識できないエスケープ シーケンスです [%1!c!]\n"
|
msgstr "regedit: 認識できないエスケープ シーケンスです [%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: サポートされていないレジストリ データ型 [%1]\n"
|
msgstr "regedit: サポートされていないレジストリ データ型 [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/ko.po
2
po/ko.po
|
@ -12335,7 +12335,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "지원하지 않는 형식.\n"
|
msgstr "지원하지 않는 형식.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/lt.po
4
po/lt.po
|
@ -12068,7 +12068,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Neatpažinta kaitos seka [\\%1!c!]\n"
|
msgstr "regedit: Neatpažinta kaitos seka [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Nepalaikomas registro duomenų tipas [%1]\n"
|
msgstr "regedit: Nepalaikomas registro duomenų tipas [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/ml.po
2
po/ml.po
|
@ -11478,7 +11478,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -12062,7 +12062,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Ukjent escape-sekvens [\\%1!c!]\n"
|
msgstr "regedit: Ukjent escape-sekvens [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Registerdatatypen [%1] støttes ikke\n"
|
msgstr "regedit: Registerdatatypen [%1] støttes ikke\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/nl.po
2
po/nl.po
|
@ -12315,7 +12315,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Niet-ondersteund type.\n"
|
msgstr "Niet-ondersteund type.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/or.po
2
po/or.po
|
@ -11478,7 +11478,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/pa.po
2
po/pa.po
|
@ -11478,7 +11478,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/pl.po
4
po/pl.po
|
@ -12111,7 +12111,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Nierozpoznana sekwencja wyjściowa [\\%1!c!]\n"
|
msgstr "regedit: Nierozpoznana sekwencja wyjściowa [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Nieobsługiwany rodzaj wartości rejestru [%1]\n"
|
msgstr "regedit: Nieobsługiwany rodzaj wartości rejestru [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -12150,7 +12150,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Sequência de escape não reconhecida [\\%1!c!]\n"
|
msgstr "regedit: Sequência de escape não reconhecida [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Tipo de dado de registro não suportado [%1]\n"
|
msgstr "regedit: Tipo de dado de registro não suportado [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -12148,7 +12148,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Tipo não suportado.\n"
|
msgstr "Tipo não suportado.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/rm.po
2
po/rm.po
|
@ -11572,7 +11572,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/ro.po
2
po/ro.po
|
@ -12074,7 +12074,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Error: Command line not supported\n"
|
#| msgid "Error: Command line not supported\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Eroare: Linie de comandă nesuportată\n"
|
msgstr "Eroare: Linie de comandă nesuportată\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/ru.po
4
po/ru.po
|
@ -12064,7 +12064,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: неизвестная управляющая последовательность [\\%1!c!]\n"
|
msgstr "regedit: неизвестная управляющая последовательность [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: тип данных [%1] не поддерживается\n"
|
msgstr "regedit: тип данных [%1] не поддерживается\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/sk.po
2
po/sk.po
|
@ -11778,7 +11778,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Nepodporovaný typ.\n"
|
msgstr "Nepodporovaný typ.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/sl.po
2
po/sl.po
|
@ -12289,7 +12289,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "Nepodprta vrsta.\n"
|
msgstr "Nepodprta vrsta.\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -12183,7 +12183,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Error: Invalid command line parameters\n"
|
#| msgid "Error: Invalid command line parameters\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Грешка: унесени су непознати или неисправни параметри наредбене линије\n"
|
"Грешка: унесени су непознати или неисправни параметри наредбене линије\n"
|
||||||
|
|
||||||
|
|
|
@ -12334,7 +12334,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Error: Invalid command line parameters\n"
|
#| msgid "Error: Invalid command line parameters\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Greška: uneseni su nepoznati ili neispravni parametri naredbene linije\n"
|
"Greška: uneseni su nepoznati ili neispravni parametri naredbene linije\n"
|
||||||
|
|
||||||
|
|
2
po/sv.po
2
po/sv.po
|
@ -11963,7 +11963,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "reg: Unsupported registry data type [%1]\n"
|
#| msgid "reg: Unsupported registry data type [%1]\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "reg: Ej stödd typ [%1] i registret\n"
|
msgstr "reg: Ej stödd typ [%1] i registret\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/te.po
2
po/te.po
|
@ -11478,7 +11478,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/th.po
2
po/th.po
|
@ -11727,7 +11727,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/tr.po
4
po/tr.po
|
@ -12086,7 +12086,9 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Desteklenmeyen kayıt defteri veri türü [%1]\n"
|
msgstr "regedit: Desteklenmeyen kayıt defteri veri türü [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
4
po/uk.po
4
po/uk.po
|
@ -12157,7 +12157,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: Нерозпізнана послідовність [\\%1!c!]\n"
|
msgstr "regedit: Нерозпізнана послідовність [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: Непідтримуваний тип даних [%1]\n"
|
msgstr "regedit: Непідтримуваний тип даних [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
2
po/wa.po
2
po/wa.po
|
@ -11635,7 +11635,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -11413,7 +11413,7 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -11856,7 +11856,9 @@ msgid "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
msgstr "regedit: 无法识别的转义序列 [\\%1!c!]\n"
|
msgstr "regedit: 无法识别的转义序列 [\\%1!c!]\n"
|
||||||
|
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
#, fuzzy
|
||||||
|
#| msgid "regedit: Unsupported registry data type [%1]\n"
|
||||||
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "regedit: 不受支持的注册表数据类型 [%1]\n"
|
msgstr "regedit: 不受支持的注册表数据类型 [%1]\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -12220,7 +12220,7 @@ msgstr ""
|
||||||
#: regedit.rc:420
|
#: regedit.rc:420
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Unsupported type.\n"
|
#| msgid "Unsupported type.\n"
|
||||||
msgid "regedit: Unsupported registry data type [%1]\n"
|
msgid "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
msgstr "不受支援的型態。\n"
|
msgstr "不受支援的型態。\n"
|
||||||
|
|
||||||
#: regedit.rc:421
|
#: regedit.rc:421
|
||||||
|
|
|
@ -416,7 +416,7 @@ STRINGTABLE
|
||||||
STRING_INVALID_HEX, "regedit: Invalid hexadecimal value.\n"
|
STRING_INVALID_HEX, "regedit: Invalid hexadecimal value.\n"
|
||||||
STRING_CSV_HEX_ERROR, "regedit: Unable to convert hexadecimal data. An invalid value was encountered at '%1'.\n"
|
STRING_CSV_HEX_ERROR, "regedit: Unable to convert hexadecimal data. An invalid value was encountered at '%1'.\n"
|
||||||
STRING_ESCAPE_SEQUENCE, "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
STRING_ESCAPE_SEQUENCE, "regedit: Unrecognized escape sequence [\\%1!c!]\n"
|
||||||
STRING_UNKNOWN_DATA_FORMAT, "regedit: Unsupported registry data type [%1]\n"
|
STRING_UNKNOWN_DATA_FORMAT, "regedit: Unsupported registry data type [0x%1!x!]\n"
|
||||||
STRING_UNEXPECTED_EOL, "regedit: Unexpected end of line in '%1'.\n"
|
STRING_UNEXPECTED_EOL, "regedit: Unexpected end of line in '%1'.\n"
|
||||||
STRING_UNRECOGNIZED_LINE, "regedit: The line '%1' was not recognized.\n"
|
STRING_UNRECOGNIZED_LINE, "regedit: The line '%1' was not recognized.\n"
|
||||||
STRING_SETVALUE_FAILED, "regedit: Unable to add the registry value '%1' to '%2'.\n"
|
STRING_SETVALUE_FAILED, "regedit: Unable to add the registry value '%1' to '%2'.\n"
|
||||||
|
|
|
@ -142,6 +142,11 @@ enum parser_state
|
||||||
QUOTED_VALUE_NAME, /* parsing a double-quoted value name */
|
QUOTED_VALUE_NAME, /* parsing a double-quoted value name */
|
||||||
DATA_START, /* preparing for data parsing operations */
|
DATA_START, /* preparing for data parsing operations */
|
||||||
DELETE_VALUE, /* deleting a registry value */
|
DELETE_VALUE, /* deleting a registry value */
|
||||||
|
DATA_TYPE, /* parsing the registry data type */
|
||||||
|
STRING_DATA, /* parsing REG_SZ data */
|
||||||
|
DWORD_DATA, /* parsing DWORD data */
|
||||||
|
HEX_DATA, /* parsing REG_BINARY, REG_NONE, REG_EXPAND_SZ or REG_MULTI_SZ data */
|
||||||
|
UNKNOWN_DATA, /* parsing an unhandled or invalid data type */
|
||||||
SET_VALUE, /* adding a value to the registry */
|
SET_VALUE, /* adding a value to the registry */
|
||||||
NB_PARSER_STATES
|
NB_PARSER_STATES
|
||||||
};
|
};
|
||||||
|
@ -152,6 +157,8 @@ struct parser
|
||||||
WCHAR two_wchars[2]; /* first two characters from the encoding check */
|
WCHAR two_wchars[2]; /* first two characters from the encoding check */
|
||||||
BOOL is_unicode; /* parsing Unicode or ASCII data */
|
BOOL is_unicode; /* parsing Unicode or ASCII data */
|
||||||
short int reg_version; /* registry file version */
|
short int reg_version; /* registry file version */
|
||||||
|
HKEY hkey; /* current registry key */
|
||||||
|
WCHAR *key_name; /* current key name */
|
||||||
WCHAR *value_name; /* value name */
|
WCHAR *value_name; /* value name */
|
||||||
DWORD data_type; /* data type */
|
DWORD data_type; /* data type */
|
||||||
void *data; /* value data */
|
void *data; /* value data */
|
||||||
|
@ -171,6 +178,11 @@ static WCHAR *default_value_name_state(struct parser *parser, WCHAR *pos);
|
||||||
static WCHAR *quoted_value_name_state(struct parser *parser, WCHAR *pos);
|
static WCHAR *quoted_value_name_state(struct parser *parser, WCHAR *pos);
|
||||||
static WCHAR *data_start_state(struct parser *parser, WCHAR *pos);
|
static WCHAR *data_start_state(struct parser *parser, WCHAR *pos);
|
||||||
static WCHAR *delete_value_state(struct parser *parser, WCHAR *pos);
|
static WCHAR *delete_value_state(struct parser *parser, WCHAR *pos);
|
||||||
|
static WCHAR *data_type_state(struct parser *parser, WCHAR *pos);
|
||||||
|
static WCHAR *string_data_state(struct parser *parser, WCHAR *pos);
|
||||||
|
static WCHAR *dword_data_state(struct parser *parser, WCHAR *pos);
|
||||||
|
static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos);
|
||||||
|
static WCHAR *unknown_data_state(struct parser *parser, WCHAR *pos);
|
||||||
static WCHAR *set_value_state(struct parser *parser, WCHAR *pos);
|
static WCHAR *set_value_state(struct parser *parser, WCHAR *pos);
|
||||||
|
|
||||||
static const parser_state_func parser_funcs[NB_PARSER_STATES] =
|
static const parser_state_func parser_funcs[NB_PARSER_STATES] =
|
||||||
|
@ -184,6 +196,11 @@ static const parser_state_func parser_funcs[NB_PARSER_STATES] =
|
||||||
quoted_value_name_state, /* QUOTED_VALUE_NAME */
|
quoted_value_name_state, /* QUOTED_VALUE_NAME */
|
||||||
data_start_state, /* DATA_START */
|
data_start_state, /* DATA_START */
|
||||||
delete_value_state, /* DELETE_VALUE */
|
delete_value_state, /* DELETE_VALUE */
|
||||||
|
data_type_state, /* DATA_TYPE */
|
||||||
|
string_data_state, /* STRING_DATA */
|
||||||
|
dword_data_state, /* DWORD_DATA */
|
||||||
|
hex_data_state, /* HEX_DATA */
|
||||||
|
unknown_data_state, /* UNKNOWN_DATA */
|
||||||
set_value_state, /* SET_VALUE */
|
set_value_state, /* SET_VALUE */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -198,7 +215,7 @@ static inline enum parser_state set_state(struct parser *parser, enum parser_sta
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Converts a hex representation of a DWORD into a DWORD.
|
* Converts a hex representation of a DWORD into a DWORD.
|
||||||
*/
|
*/
|
||||||
static BOOL convertHexToDWord(WCHAR* str, DWORD *dw)
|
static BOOL convert_hex_to_dword(WCHAR *str, DWORD *dw)
|
||||||
{
|
{
|
||||||
WCHAR *p, *end;
|
WCHAR *p, *end;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -223,14 +240,13 @@ static BOOL convertHexToDWord(WCHAR* str, DWORD *dw)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
output_message(STRING_INVALID_HEX);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Converts a hex comma separated values list into a binary string.
|
* Converts comma-separated hex data into a binary string.
|
||||||
*/
|
*/
|
||||||
static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
|
static BYTE *convert_hex_csv_to_hex(WCHAR *str, DWORD *size)
|
||||||
{
|
{
|
||||||
WCHAR *s;
|
WCHAR *s;
|
||||||
BYTE *d, *data;
|
BYTE *d, *data;
|
||||||
|
@ -249,7 +265,6 @@ static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
|
||||||
|
|
||||||
wc = strtoulW(s,&end,16);
|
wc = strtoulW(s,&end,16);
|
||||||
if (end == s || wc > 0xff || (*end && *end != ',')) {
|
if (end == s || wc > 0xff || (*end && *end != ',')) {
|
||||||
output_message(STRING_CSV_HEX_ERROR, s);
|
|
||||||
HeapFree(GetProcessHeap(), 0, data);
|
HeapFree(GetProcessHeap(), 0, data);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -265,13 +280,12 @@ static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
|
||||||
#define REG_UNKNOWN_TYPE 99
|
#define REG_UNKNOWN_TYPE 99
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* This function returns the HKEY associated with the data type encoded in the
|
* Parses the data type of the registry value being imported and modifies
|
||||||
* value. It modifies the input parameter (key value) in order to skip this
|
* the input parameter to skip the string representation of the data type.
|
||||||
* "now useless" data type information.
|
|
||||||
*
|
*
|
||||||
* Note: Updated based on the algorithm used in 'server/registry.c'
|
* Returns TRUE or FALSE to indicate whether a data type was found.
|
||||||
*/
|
*/
|
||||||
static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
static BOOL parse_data_type(struct parser *parser, WCHAR **line)
|
||||||
{
|
{
|
||||||
struct data_type { const WCHAR *tag; int len; int type; int parse_type; };
|
struct data_type { const WCHAR *tag; int len; int type; int parse_type; };
|
||||||
|
|
||||||
|
@ -290,31 +304,31 @@ static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct data_type *ptr;
|
const struct data_type *ptr;
|
||||||
int type;
|
|
||||||
|
|
||||||
for (ptr = data_types; ptr->tag; ptr++) {
|
for (ptr = data_types; ptr->tag; ptr++)
|
||||||
if (strncmpW( ptr->tag, *lpValue, ptr->len ))
|
{
|
||||||
|
if (strncmpW(ptr->tag, *line, ptr->len))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Found! */
|
parser->data_type = ptr->parse_type;
|
||||||
*parse_type = ptr->parse_type;
|
*line += ptr->len;
|
||||||
type=ptr->type;
|
|
||||||
*lpValue+=ptr->len;
|
if (ptr->type == -1)
|
||||||
if (type == -1) {
|
{
|
||||||
WCHAR* end;
|
WCHAR *end;
|
||||||
|
DWORD val;
|
||||||
|
|
||||||
/* "hex(xx):" is special */
|
/* "hex(xx):" is special */
|
||||||
type = (int)strtoulW( *lpValue , &end, 16 );
|
val = strtoulW(*line, &end, 16);
|
||||||
if (**lpValue=='\0' || *end!=')' || *(end+1)!=':') {
|
if (!**line || *end != ')' || *(end + 1) != ':')
|
||||||
type = REG_UNKNOWN_TYPE;
|
return FALSE;
|
||||||
} else {
|
|
||||||
*lpValue = end + 2;
|
parser->data_type = val;
|
||||||
|
*line = end + 2;
|
||||||
}
|
}
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
return type;
|
return FALSE;
|
||||||
}
|
|
||||||
*parse_type = REG_UNKNOWN_TYPE;
|
|
||||||
return REG_UNKNOWN_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -388,10 +402,6 @@ static HKEY parse_key_name(WCHAR *key_name, WCHAR **key_path)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Globals used by the setValue() & co */
|
|
||||||
static WCHAR *currentKeyName;
|
|
||||||
static HKEY currentKeyHandle = NULL;
|
|
||||||
|
|
||||||
/* Registry data types */
|
/* Registry data types */
|
||||||
static const WCHAR type_none[] = {'R','E','G','_','N','O','N','E',0};
|
static const WCHAR type_none[] = {'R','E','G','_','N','O','N','E',0};
|
||||||
static const WCHAR type_sz[] = {'R','E','G','_','S','Z',0};
|
static const WCHAR type_sz[] = {'R','E','G','_','S','Z',0};
|
||||||
|
@ -431,101 +441,16 @@ static const WCHAR *reg_type_to_wchar(DWORD type)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* Sets the value with name val_name to the data in val_data for the currently
|
static void close_key(struct parser *parser)
|
||||||
* opened key.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* val_name - name of the registry value
|
|
||||||
* val_data - registry value data
|
|
||||||
*/
|
|
||||||
static LONG setValue(WCHAR* val_name, WCHAR* val_data, BOOL is_unicode)
|
|
||||||
{
|
{
|
||||||
LONG res;
|
if (parser->hkey)
|
||||||
DWORD dwDataType, dwParseType;
|
|
||||||
LPBYTE lpbData;
|
|
||||||
DWORD dwData, dwLen;
|
|
||||||
WCHAR del[] = {'-',0};
|
|
||||||
|
|
||||||
if (!val_data)
|
|
||||||
return ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
if (lstrcmpW(val_data, del) == 0)
|
|
||||||
{
|
{
|
||||||
res=RegDeleteValueW(currentKeyHandle,val_name);
|
HeapFree(GetProcessHeap(), 0, parser->key_name);
|
||||||
return (res == ERROR_FILE_NOT_FOUND ? ERROR_SUCCESS : res);
|
parser->key_name = NULL;
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the data type stored into the value field */
|
RegCloseKey(parser->hkey);
|
||||||
dwDataType = getDataType(&val_data, &dwParseType);
|
parser->hkey = NULL;
|
||||||
|
|
||||||
if (dwParseType == REG_SZ) /* no conversion for string */
|
|
||||||
{
|
|
||||||
WCHAR *line;
|
|
||||||
if (!REGPROC_unescape_string(val_data, &line))
|
|
||||||
return ERROR_INVALID_DATA;
|
|
||||||
while (*line == ' ' || *line == '\t') line++;
|
|
||||||
if (*line && *line != ';')
|
|
||||||
return ERROR_INVALID_DATA;
|
|
||||||
lpbData = (BYTE*) val_data;
|
|
||||||
dwLen = (lstrlenW(val_data) + 1) * sizeof(WCHAR); /* size is in bytes */
|
|
||||||
}
|
|
||||||
else if (dwParseType == REG_DWORD) /* Convert the dword types */
|
|
||||||
{
|
|
||||||
if (!convertHexToDWord(val_data, &dwData))
|
|
||||||
return ERROR_INVALID_DATA;
|
|
||||||
lpbData = (BYTE*)&dwData;
|
|
||||||
dwLen = sizeof(dwData);
|
|
||||||
}
|
|
||||||
else if (dwParseType == REG_BINARY) /* Convert the binary data */
|
|
||||||
{
|
|
||||||
lpbData = convertHexCSVToHex(val_data, &dwLen);
|
|
||||||
if (!lpbData)
|
|
||||||
return ERROR_INVALID_DATA;
|
|
||||||
|
|
||||||
if((dwDataType == REG_MULTI_SZ || dwDataType == REG_EXPAND_SZ) && !is_unicode)
|
|
||||||
{
|
|
||||||
LPBYTE tmp = lpbData;
|
|
||||||
lpbData = (LPBYTE)GetWideStringN((char*)lpbData, dwLen, &dwLen);
|
|
||||||
dwLen *= sizeof(WCHAR);
|
|
||||||
HeapFree(GetProcessHeap(), 0, tmp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else /* unknown format */
|
|
||||||
{
|
|
||||||
if (dwDataType == REG_UNKNOWN_TYPE)
|
|
||||||
{
|
|
||||||
WCHAR buf[32];
|
|
||||||
LoadStringW(GetModuleHandleW(NULL), STRING_UNKNOWN_TYPE, buf, ARRAY_SIZE(buf));
|
|
||||||
output_message(STRING_UNKNOWN_DATA_FORMAT, buf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
output_message(STRING_UNKNOWN_DATA_FORMAT, reg_type_to_wchar(dwDataType));
|
|
||||||
|
|
||||||
return ERROR_INVALID_DATA;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = RegSetValueExW(
|
|
||||||
currentKeyHandle,
|
|
||||||
val_name,
|
|
||||||
0, /* Reserved */
|
|
||||||
dwDataType,
|
|
||||||
lpbData,
|
|
||||||
dwLen);
|
|
||||||
if (dwParseType == REG_BINARY)
|
|
||||||
HeapFree(GetProcessHeap(), 0, lpbData);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void closeKey(void)
|
|
||||||
{
|
|
||||||
if (currentKeyHandle)
|
|
||||||
{
|
|
||||||
HeapFree(GetProcessHeap(), 0, currentKeyName);
|
|
||||||
currentKeyName = NULL;
|
|
||||||
|
|
||||||
RegCloseKey(currentKeyHandle);
|
|
||||||
currentKeyHandle = NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,32 +458,31 @@ static void closeKey(void)
|
||||||
* Opens the registry key given by the input path.
|
* Opens the registry key given by the input path.
|
||||||
* This key must be closed by calling close_key().
|
* This key must be closed by calling close_key().
|
||||||
*/
|
*/
|
||||||
static LONG openKeyW(WCHAR* stdInput)
|
static LONG open_key(struct parser *parser, WCHAR *path)
|
||||||
{
|
{
|
||||||
HKEY key_class;
|
HKEY key_class;
|
||||||
WCHAR *key_path;
|
WCHAR *key_path;
|
||||||
LONG res;
|
LONG res;
|
||||||
|
|
||||||
closeKey();
|
close_key(parser);
|
||||||
|
|
||||||
/* Get the registry class */
|
/* Get the registry class */
|
||||||
if (!stdInput || !(key_class = parse_key_name(stdInput, &key_path)))
|
if (!path || !(key_class = parse_key_name(path, &key_path)))
|
||||||
return ERROR_INVALID_PARAMETER;
|
return ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
res = RegCreateKeyExW(key_class, key_path, 0, NULL, REG_OPTION_NON_VOLATILE,
|
res = RegCreateKeyExW(key_class, key_path, 0, NULL, REG_OPTION_NON_VOLATILE,
|
||||||
KEY_ALL_ACCESS, NULL, ¤tKeyHandle, NULL);
|
KEY_ALL_ACCESS, NULL, &parser->hkey, NULL);
|
||||||
|
|
||||||
if (res == ERROR_SUCCESS)
|
if (res == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
currentKeyName = HeapAlloc(GetProcessHeap(), 0, (strlenW(stdInput) + 1) * sizeof(WCHAR));
|
parser->key_name = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(path) + 1) * sizeof(WCHAR));
|
||||||
CHECK_ENOUGH_MEMORY(currentKeyName);
|
CHECK_ENOUGH_MEMORY(parser->key_name);
|
||||||
strcpyW(currentKeyName, stdInput);
|
lstrcpyW(parser->key_name, path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
currentKeyHandle = NULL;
|
parser->hkey = NULL;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum reg_versions {
|
enum reg_versions {
|
||||||
|
@ -660,9 +584,7 @@ static WCHAR *parse_win31_line_state(struct parser *parser, WCHAR *pos)
|
||||||
|
|
||||||
line[key_end] = 0;
|
line[key_end] = 0;
|
||||||
|
|
||||||
closeKey();
|
if (open_key(parser, line) != ERROR_SUCCESS)
|
||||||
|
|
||||||
if (openKeyW(line) != ERROR_SUCCESS)
|
|
||||||
{
|
{
|
||||||
output_message(STRING_OPEN_KEY_FAILED, line);
|
output_message(STRING_OPEN_KEY_FAILED, line);
|
||||||
goto invalid;
|
goto invalid;
|
||||||
|
@ -729,7 +651,7 @@ static WCHAR *key_name_state(struct parser *parser, WCHAR *pos)
|
||||||
set_state(parser, DELETE_KEY);
|
set_state(parser, DELETE_KEY);
|
||||||
return p + 1;
|
return p + 1;
|
||||||
}
|
}
|
||||||
else if (openKeyW(p) != ERROR_SUCCESS)
|
else if (open_key(parser, p) != ERROR_SUCCESS)
|
||||||
output_message(STRING_OPEN_KEY_FAILED, p);
|
output_message(STRING_OPEN_KEY_FAILED, p);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
@ -802,12 +724,10 @@ static WCHAR *data_start_state(struct parser *parser, WCHAR *pos)
|
||||||
p[len] = 0;
|
p[len] = 0;
|
||||||
|
|
||||||
if (*p == '-')
|
if (*p == '-')
|
||||||
{
|
|
||||||
set_state(parser, DELETE_VALUE);
|
set_state(parser, DELETE_VALUE);
|
||||||
|
else
|
||||||
|
set_state(parser, DATA_TYPE);
|
||||||
return p;
|
return p;
|
||||||
}
|
|
||||||
else if (setValue(parser->value_name, p, parser->is_unicode) != ERROR_SUCCESS)
|
|
||||||
output_message(STRING_SETVALUE_FAILED, parser->value_name, currentKeyName);
|
|
||||||
|
|
||||||
done:
|
done:
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
|
@ -822,20 +742,136 @@ static WCHAR *delete_value_state(struct parser *parser, WCHAR *pos)
|
||||||
while (*p == ' ' || *p == '\t') p++;
|
while (*p == ' ' || *p == '\t') p++;
|
||||||
if (*p && *p != ';') goto done;
|
if (*p && *p != ';') goto done;
|
||||||
|
|
||||||
RegDeleteValueW(currentKeyHandle, parser->value_name);
|
RegDeleteValueW(parser->hkey, parser->value_name);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
set_state(parser, LINE_START);
|
set_state(parser, LINE_START);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* handler for parser DATA_TYPE state */
|
||||||
|
static WCHAR *data_type_state(struct parser *parser, WCHAR *pos)
|
||||||
|
{
|
||||||
|
WCHAR *line = pos;
|
||||||
|
|
||||||
|
if (!parse_data_type(parser, &line))
|
||||||
|
{
|
||||||
|
set_state(parser, LINE_START);
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (parser->data_type)
|
||||||
|
{
|
||||||
|
case REG_SZ:
|
||||||
|
set_state(parser, STRING_DATA);
|
||||||
|
break;
|
||||||
|
case REG_DWORD:
|
||||||
|
set_state(parser, DWORD_DATA);
|
||||||
|
break;
|
||||||
|
case REG_NONE:
|
||||||
|
case REG_EXPAND_SZ:
|
||||||
|
case REG_BINARY:
|
||||||
|
case REG_MULTI_SZ:
|
||||||
|
set_state(parser, HEX_DATA);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
set_state(parser, UNKNOWN_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* handler for parser STRING_DATA state */
|
||||||
|
static WCHAR *string_data_state(struct parser *parser, WCHAR *pos)
|
||||||
|
{
|
||||||
|
WCHAR *line;
|
||||||
|
|
||||||
|
parser->data = pos;
|
||||||
|
|
||||||
|
if (!REGPROC_unescape_string(parser->data, &line))
|
||||||
|
goto invalid;
|
||||||
|
|
||||||
|
while (*line == ' ' || *line == '\t') line++;
|
||||||
|
if (*line && *line != ';') goto invalid;
|
||||||
|
|
||||||
|
parser->data_size = (lstrlenW(parser->data) + 1) * sizeof(WCHAR);
|
||||||
|
|
||||||
|
set_state(parser, SET_VALUE);
|
||||||
|
return line;
|
||||||
|
|
||||||
|
invalid:
|
||||||
|
set_state(parser, LINE_START);
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* handler for parser DWORD_DATA state */
|
||||||
|
static WCHAR *dword_data_state(struct parser *parser, WCHAR *pos)
|
||||||
|
{
|
||||||
|
WCHAR *line = pos;
|
||||||
|
|
||||||
|
parser->data = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD));
|
||||||
|
CHECK_ENOUGH_MEMORY(parser->data);
|
||||||
|
|
||||||
|
if (!convert_hex_to_dword(line, parser->data))
|
||||||
|
goto invalid;
|
||||||
|
|
||||||
|
parser->data_size = sizeof(DWORD);
|
||||||
|
|
||||||
|
set_state(parser, SET_VALUE);
|
||||||
|
return line;
|
||||||
|
|
||||||
|
invalid:
|
||||||
|
HeapFree(GetProcessHeap(), 0, parser->data);
|
||||||
|
parser->data = NULL;
|
||||||
|
|
||||||
|
set_state(parser, LINE_START);
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* handler for parser HEX_DATA state */
|
||||||
|
static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos)
|
||||||
|
{
|
||||||
|
WCHAR *line = pos;
|
||||||
|
|
||||||
|
if (!(parser->data = convert_hex_csv_to_hex(line, &parser->data_size)))
|
||||||
|
goto invalid;
|
||||||
|
|
||||||
|
if (!parser->is_unicode && (parser->data_type == REG_EXPAND_SZ || parser->data_type == REG_MULTI_SZ))
|
||||||
|
{
|
||||||
|
void *tmp = parser->data;
|
||||||
|
|
||||||
|
parser->data = GetWideStringN(parser->data, parser->data_size, &parser->data_size);
|
||||||
|
parser->data_size *= sizeof(WCHAR);
|
||||||
|
HeapFree(GetProcessHeap(), 0, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_state(parser, SET_VALUE);
|
||||||
|
return line;
|
||||||
|
|
||||||
|
invalid:
|
||||||
|
set_state(parser, LINE_START);
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* handler for parser UNKNOWN_DATA state */
|
||||||
|
static WCHAR *unknown_data_state(struct parser *parser, WCHAR *pos)
|
||||||
|
{
|
||||||
|
output_message(STRING_UNKNOWN_DATA_FORMAT, parser->data_type);
|
||||||
|
|
||||||
|
set_state(parser, LINE_START);
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
/* handler for parser SET_VALUE state */
|
/* handler for parser SET_VALUE state */
|
||||||
static WCHAR *set_value_state(struct parser *parser, WCHAR *pos)
|
static WCHAR *set_value_state(struct parser *parser, WCHAR *pos)
|
||||||
{
|
{
|
||||||
RegSetValueExW(currentKeyHandle, parser->value_name, 0, parser->data_type,
|
RegSetValueExW(parser->hkey, parser->value_name, 0, parser->data_type,
|
||||||
parser->data, parser->data_size);
|
parser->data, parser->data_size);
|
||||||
|
|
||||||
|
if (parser->reg_version == REG_VERSION_31)
|
||||||
set_state(parser, PARSE_WIN31_LINE);
|
set_state(parser, PARSE_WIN31_LINE);
|
||||||
|
else
|
||||||
|
set_state(parser, LINE_START);
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
@ -1468,6 +1504,8 @@ BOOL import_registry_file(FILE *reg_file)
|
||||||
parser.two_wchars[0] = s[0];
|
parser.two_wchars[0] = s[0];
|
||||||
parser.two_wchars[1] = s[1];
|
parser.two_wchars[1] = s[1];
|
||||||
parser.reg_version = -1;
|
parser.reg_version = -1;
|
||||||
|
parser.hkey = NULL;
|
||||||
|
parser.key_name = NULL;
|
||||||
parser.value_name = NULL;
|
parser.value_name = NULL;
|
||||||
parser.data_type = 0;
|
parser.data_type = 0;
|
||||||
parser.data = NULL;
|
parser.data = NULL;
|
||||||
|
@ -1486,7 +1524,8 @@ BOOL import_registry_file(FILE *reg_file)
|
||||||
if (parser.value_name)
|
if (parser.value_name)
|
||||||
HeapFree(GetProcessHeap(), 0, parser.value_name);
|
HeapFree(GetProcessHeap(), 0, parser.value_name);
|
||||||
|
|
||||||
closeKey();
|
close_key(&parser);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -457,14 +457,14 @@ static void test_basic_import(void)
|
||||||
"\"Wine13h\"=hex(ffffffff):56,61,6c,75,65,00\n"
|
"\"Wine13h\"=hex(ffffffff):56,61,6c,75,65,00\n"
|
||||||
"\"Wine13i\"=hex(100000000):56,61,6c,75,65,00\n\n");
|
"\"Wine13i\"=hex(100000000):56,61,6c,75,65,00\n\n");
|
||||||
verify_reg(hkey, "Wine13a", REG_NONE, "Value", 6, 0);
|
verify_reg(hkey, "Wine13a", REG_NONE, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13b", 0x10, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13b", 0x10, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13c", 0x100, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13c", 0x100, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13d", 0x1000, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13d", 0x1000, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13e", 0x7fff, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13e", 0x7fff, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13f", 0xffff, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13f", 0xffff, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13g", 0x7fffffff, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13g", 0x7fffffff, "Value", 6, 0);
|
||||||
verify_reg(hkey, "Wine13h", 0xffffffff, "Value", 6, 0);
|
todo_wine verify_reg(hkey, "Wine13h", 0xffffffff, "Value", 6, 0);
|
||||||
todo_wine verify_reg_nonexist(hkey, "Wine13i");
|
verify_reg_nonexist(hkey, "Wine13i");
|
||||||
|
|
||||||
RegCloseKey(hkey);
|
RegCloseKey(hkey);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue