diff --git a/po/ar.po b/po/ar.po index fde3e44fd91..9715bdb19b5 100644 --- a/po/ar.po +++ b/po/ar.po @@ -15884,6 +15884,12 @@ msgstr "" "صيغة الرقم غير سليمة حيث أنها يمكن أن تكون عشرية (12),\n" " أو ست عشرية (0x34) أو ثماني (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "خطأ بنيوي\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "حجم المؤشر" diff --git a/po/ast.po b/po/ast.po index 4bad03d51fe..bb2dd17e7ec 100644 --- a/po/ast.po +++ b/po/ast.po @@ -14479,6 +14479,12 @@ msgstr "" "El númberu tien un formatu incorreutu. Ha ser\n" "decimal (12), hexadecimal (0x34) o octal (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Error de la sintaxis\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Tamañu del cursor" diff --git a/po/bg.po b/po/bg.po index a9ab2296710..79fa9036506 100644 --- a/po/bg.po +++ b/po/bg.po @@ -14575,6 +14575,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/ca.po b/po/ca.po index 70b3b4c2615..73a13e6c7e0 100644 --- a/po/ca.po +++ b/po/ca.po @@ -14681,6 +14681,12 @@ msgstr "" "El nombre és mal format - ha de ser un de decimal (12)\n" " hexadecimal (0x34) o octal (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Error de sintaxi\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Mida de cursor" diff --git a/po/cs.po b/po/cs.po index 1572bd42695..9e09d745a88 100644 --- a/po/cs.po +++ b/po/cs.po @@ -15398,6 +15398,12 @@ msgstr "" "Špatný formát čísla – musí být desítkové (12),\n" "šestnáctkové (0x34) či osmičkové (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Chyba syntaxe\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Velikost kurzoru" diff --git a/po/da.po b/po/da.po index 19d5672ef55..e1139706f06 100644 --- a/po/da.po +++ b/po/da.po @@ -15793,6 +15793,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Syntaks fejl\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Markør størrelse" diff --git a/po/de.po b/po/de.po index b03b33e4d49..e31d6c65ec7 100644 --- a/po/de.po +++ b/po/de.po @@ -14663,6 +14663,12 @@ msgstr "" "Zahl ungültig formatiert - muss dezimal (12),\n" " hexadezimal (0x34) oder oktal (056) sein.\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Syntaxfehler\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Cursorgröße" diff --git a/po/el.po b/po/el.po index b947232eae7..d906a7a23d1 100644 --- a/po/el.po +++ b/po/el.po @@ -14331,6 +14331,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/en.po b/po/en.po index 1ae3756efc3..88809b8112a 100644 --- a/po/en.po +++ b/po/en.po @@ -14575,6 +14575,10 @@ msgstr "" "Badly formed number - must be one of decimal (12),\n" " hexadecimal (0x34) or octal (056).\n" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "Syntax error: unexpected %1\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Cursor size" diff --git a/po/en_US.po b/po/en_US.po index 6b218090d21..3b793dc3001 100644 --- a/po/en_US.po +++ b/po/en_US.po @@ -14575,6 +14575,10 @@ msgstr "" "Badly formed number - must be one of decimal (12),\n" " hexadecimal (0x34) or octal (056).\n" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "Syntax error: unexpected %1\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Cursor size" diff --git a/po/eo.po b/po/eo.po index 98b6a1e5937..9f2e71151f0 100644 --- a/po/eo.po +++ b/po/eo.po @@ -14940,6 +14940,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Kursor-grando" diff --git a/po/es.po b/po/es.po index 99cf3ead672..7ced0602a57 100644 --- a/po/es.po +++ b/po/es.po @@ -15258,6 +15258,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Error de sintaxis\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Tamaño del cursor" diff --git a/po/fa.po b/po/fa.po index 19932187180..5c17f70f777 100644 --- a/po/fa.po +++ b/po/fa.po @@ -14516,6 +14516,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/fi.po b/po/fi.po index 1eac555df7a..d0df9bcca28 100644 --- a/po/fi.po +++ b/po/fi.po @@ -14555,6 +14555,12 @@ msgstr "" "Luvun muoto ei kelpaa – täytyy olla desimaaliluku (12),\n" " heksadesimaaliluku (0x34) tai oktaaliluku (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Syntaksivirhe\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Kursorin koko" diff --git a/po/fr.po b/po/fr.po index c3933ce184b..f338fd4e063 100644 --- a/po/fr.po +++ b/po/fr.po @@ -15175,6 +15175,12 @@ msgstr "" "Nombre mal formé : doit être décimal (12),\n" " hexadécimal (0x34) ou octal (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Erreur de syntaxe\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Taille du curseur" diff --git a/po/he.po b/po/he.po index dd35c4a0ff1..deeb0018fc6 100644 --- a/po/he.po +++ b/po/he.po @@ -15339,6 +15339,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error" +msgid "Syntax error: unexpected %1\n" +msgstr "שגיאת תחביר" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "גודל הסמן" diff --git a/po/hi.po b/po/hi.po index 9de611d8d9d..504052ad0ac 100644 --- a/po/hi.po +++ b/po/hi.po @@ -14071,6 +14071,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/hr.po b/po/hr.po index a7009e35a7c..4a3488543fb 100644 --- a/po/hr.po +++ b/po/hr.po @@ -15350,6 +15350,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Sintaksna greška\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Veličina pokazivača" diff --git a/po/hu.po b/po/hu.po index 9aea7ce7703..5f82bc6d38b 100644 --- a/po/hu.po +++ b/po/hu.po @@ -15784,6 +15784,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Szintaktikai hiba\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Kurzor mérete" diff --git a/po/it.po b/po/it.po index 6f9e8ad3b62..9ddad998f10 100644 --- a/po/it.po +++ b/po/it.po @@ -15860,6 +15860,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Errore di sintassi\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Dimensione del cursore" diff --git a/po/ja.po b/po/ja.po index 804bfa18676..40b4c5afc9b 100644 --- a/po/ja.po +++ b/po/ja.po @@ -14575,6 +14575,12 @@ msgstr "" "数値の形式に誤りがあります - 10 進数 (12)、16 進数 (0x34)、\n" "8 進数 (056) のいずれかとする必要があります。\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "構文エラー\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "カーソルの大きさ" diff --git a/po/ka.po b/po/ka.po index 1c11bd0db52..9b268955183 100644 --- a/po/ka.po +++ b/po/ka.po @@ -14178,6 +14178,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "სინტაქსური შეცდომა\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "კურსორის ზომა" diff --git a/po/ko.po b/po/ko.po index beaa998bebe..b2c4176d0aa 100644 --- a/po/ko.po +++ b/po/ko.po @@ -14532,6 +14532,12 @@ msgstr "" "잘못된 형식의 숫자 - 10진수(12)나,\n" "16진수(0x34)나 8진수(056)중의 하나이어야 합니다.\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "문법 오류\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "커서 크기" diff --git a/po/lt.po b/po/lt.po index 281318e9ce9..18c43029b88 100644 --- a/po/lt.po +++ b/po/lt.po @@ -14581,6 +14581,12 @@ msgstr "" "Blogai sudarytas skaičius – privalo būti dešimtainis (12),\n" " šešioliktainis (0x34) arba aštuntainis (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Sintaksės klaida\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Žymeklio dydis" diff --git a/po/ml.po b/po/ml.po index f0b1912e332..85d99cb2886 100644 --- a/po/ml.po +++ b/po/ml.po @@ -14070,6 +14070,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/nb_NO.po b/po/nb_NO.po index a78ae96df35..542aa06dc3c 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -15380,6 +15380,12 @@ msgstr "" "Ugyldig tallformat - må være enten desimal (12),\n" "heksadesimal (0x34) eller oktal (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Syntaksfeil\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Pekerstørrelse" diff --git a/po/nl.po b/po/nl.po index ad9856327d7..b6e392c9717 100644 --- a/po/nl.po +++ b/po/nl.po @@ -14630,6 +14630,12 @@ msgstr "" "Misvormd nummer - moet of decimaal (12),\n" " hexadecimaal (0x34) of octaal (056) zijn.\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Formuleringsfout\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Cursorgrootte" diff --git a/po/or.po b/po/or.po index f5664372857..03b1c5c4379 100644 --- a/po/or.po +++ b/po/or.po @@ -14056,6 +14056,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/pa.po b/po/pa.po index 66f3429789d..18abc54fd51 100644 --- a/po/pa.po +++ b/po/pa.po @@ -14056,6 +14056,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/pl.po b/po/pl.po index 6f0569fd128..7f336d941be 100644 --- a/po/pl.po +++ b/po/pl.po @@ -14615,6 +14615,12 @@ msgstr "" "Zły format liczbowy - musi on być jednym z formatów dziesiętnych (12),\n" " szesnastkowych (0x34) lub ósemkowych (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Błąd składni\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Rozmiar kursora" diff --git a/po/pt_BR.po b/po/pt_BR.po index 596f0a98c61..e9068825f75 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -14781,6 +14781,12 @@ msgstr "" "Número malformado - deve ser decimal (12),\n" " hexadecimal (0x34) ou octal (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Erro de sintaxe\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Cursor" diff --git a/po/pt_PT.po b/po/pt_PT.po index 9cad6d8a52d..2a737de4007 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -15555,6 +15555,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Erro de sintaxe\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Tamanho do Cursor" diff --git a/po/rm.po b/po/rm.po index d57c27eaa88..c344e3d3c53 100644 --- a/po/rm.po +++ b/po/rm.po @@ -14144,6 +14144,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/ro.po b/po/ro.po index 5ce22268b48..9ce79096d58 100644 --- a/po/ro.po +++ b/po/ro.po @@ -15629,6 +15629,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Eroare de sintaxă\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Dimensiune cursor" diff --git a/po/ru.po b/po/ru.po index 22a46187fde..30d7f4e2168 100644 --- a/po/ru.po +++ b/po/ru.po @@ -15012,6 +15012,12 @@ msgstr "" "Неверный формат числа - должен быть десятичный (12),\n" " шестнадцатеричный (0x34) или восьмеричный (056) формат.\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Синтаксическая ошибка\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Размер курсора" diff --git a/po/si.po b/po/si.po index 970a4cfa6e5..652a1c9a799 100644 --- a/po/si.po +++ b/po/si.po @@ -14677,6 +14677,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "වාග් රීති දෝෂයක්\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "කර්සරය ප්රමාණය" diff --git a/po/sk.po b/po/sk.po index 4a824641179..298c52c27d9 100644 --- a/po/sk.po +++ b/po/sk.po @@ -15096,6 +15096,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/sl.po b/po/sl.po index 2bfa46efe25..ec5b0f8892a 100644 --- a/po/sl.po +++ b/po/sl.po @@ -15814,6 +15814,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Napaka skladnje\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Velikost kazalca" diff --git a/po/sr_RS@cyrillic.po b/po/sr_RS@cyrillic.po index a0ec7648e61..7b049c7fc59 100644 --- a/po/sr_RS@cyrillic.po +++ b/po/sr_RS@cyrillic.po @@ -15125,6 +15125,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error" +msgid "Syntax error: unexpected %1\n" +msgstr "Грешка у синтакси" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/sr_RS@latin.po b/po/sr_RS@latin.po index 187cd7e7bf5..82ad8be5619 100644 --- a/po/sr_RS@latin.po +++ b/po/sr_RS@latin.po @@ -15266,6 +15266,12 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error" +msgid "Syntax error: unexpected %1\n" +msgstr "Greška u sintaksi" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/sv.po b/po/sv.po index 26860eaaecc..e2cd4985ded 100644 --- a/po/sv.po +++ b/po/sv.po @@ -15509,6 +15509,12 @@ msgstr "" "Felaktigt talformat - måste vara en av decimal (12),\n" " hexadecimal (0x34) eller oktal (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Syntaxfel\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Markörstorlek" diff --git a/po/ta.po b/po/ta.po index 6cc9428616c..fe8dc9608ed 100644 --- a/po/ta.po +++ b/po/ta.po @@ -14044,6 +14044,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/te.po b/po/te.po index 38c3ea8e6ed..33a5cb800be 100644 --- a/po/te.po +++ b/po/te.po @@ -14056,6 +14056,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/th.po b/po/th.po index 1ac5b773a98..4ceecbc01eb 100644 --- a/po/th.po +++ b/po/th.po @@ -14607,6 +14607,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/tr.po b/po/tr.po index e415066f995..f8908e11358 100644 --- a/po/tr.po +++ b/po/tr.po @@ -14601,6 +14601,12 @@ msgstr "" "Hatalı numara biçimi - ondalık (12), onaltılı (0x34) veya sekizli (056) " "olmalıdır.\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Sözdizimi hatası\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "İmleç boyutu" diff --git a/po/uk.po b/po/uk.po index f21e9057e97..4b80ca84311 100644 --- a/po/uk.po +++ b/po/uk.po @@ -14874,6 +14874,12 @@ msgstr "" "Неправильно сформоване число - має бути або десятковим (12),\n" " або шістнадцятковим (0x34), або вісімковим (056).\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "Синтаксична помилка\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "Розмір курсора" diff --git a/po/wa.po b/po/wa.po index 03adee543cf..884dd81c9ba 100644 --- a/po/wa.po +++ b/po/wa.po @@ -14501,6 +14501,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/wine.pot b/po/wine.pot index 9a359827a7e..1bd8d983d13 100644 --- a/po/wine.pot +++ b/po/wine.pot @@ -13971,6 +13971,10 @@ msgid "" " hexadecimal (0x34) or octal (056).\n" msgstr "" +#: programs/cmd/cmd.rc:411 +msgid "Syntax error: unexpected %1\n" +msgstr "" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index e3e8390a950..2b06d6602a7 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -14369,6 +14369,12 @@ msgstr "" "数字的格式错误 - 必须是十进制 (12),\n" " 十六进制 (0x34) 或者八进制 (056)。\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "语法错误\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "光标尺寸" diff --git a/po/zh_TW.po b/po/zh_TW.po index 72abbb39918..f3aa0280437 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -14435,6 +14435,12 @@ msgstr "" "錯誤的數字形式 - 必須是十進位 (12)、\n" " 十六進位 (0x34) 或八進位 (056) 之一。\n" +#: programs/cmd/cmd.rc:411 +#, fuzzy +#| msgid "Syntax error\n" +msgid "Syntax error: unexpected %1\n" +msgstr "語法錯誤\n" + #: programs/conhost/conhost.rc:54 msgid "Cursor size" msgstr "游標大小" diff --git a/programs/cmd/cmd.rc b/programs/cmd/cmd.rc index f72ba87a9a2..59cb570b167 100644 --- a/programs/cmd/cmd.rc +++ b/programs/cmd/cmd.rc @@ -407,4 +407,5 @@ Enter HELP for further information on any of the above commands.\n" WCMD_BADPAREN, "Mismatch in parentheses.\n" WCMD_BADHEXOCT, "Badly formed number - must be one of decimal (12),\n hexadecimal (0x34) or octal (056).\n" WCMD_FILENAMETOOLONG, "File name is too long.\n" + WCMD_BADTOKEN, "Syntax error: unexpected %1\n" } diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index fd2b541c830..dcf7c7a1492 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -469,3 +469,4 @@ extern WCHAR version_string[]; #define WCMD_BADPAREN 1044 #define WCMD_BADHEXOCT 1045 #define WCMD_FILENAMETOOLONG 1046 +#define WCMD_BADTOKEN 1047 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 22bfb1853da..24eff3cc68c 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -2125,23 +2125,6 @@ static CMD_COMMAND *WCMD_createCommand(WCHAR *command, int *commandLen, return thisEntry; } -static void WCMD_appendCommand(CMD_OPERATOR op, CMD_COMMAND *command, CMD_NODE **node) -{ - /* append as left to right operators */ - if (*node) - { - CMD_NODE **last = node; - while ((*last)->op != CMD_SINGLE) - last = &(*last)->right; - - *last = node_create_binary(op, *last, node_create_single(command)); - } - else - { - *node = node_create_single(command); - } -} - /*************************************************************************** * WCMD_IsEndQuote * @@ -2377,6 +2360,190 @@ syntax_error: return NULL; } +/* used to store additional information dedicated a given token */ +union token_parameter +{ + CMD_COMMAND *command; + void *none; +}; + +struct node_builder +{ + unsigned num; + unsigned allocated; + struct token + { + enum builder_token + { + TKN_EOL, TKN_AMP, TKN_BARBAR, TKN_AMPAMP, TKN_BAR, TKN_COMMAND, + } token; + union token_parameter parameter; + } *stack; + unsigned pos; +}; + +static const char* debugstr_token(enum builder_token tkn, union token_parameter tkn_pmt) +{ + static const char *tokens[] = {"EOL", "&", "||", "&&", "|", "CMD"}; + + if (tkn >= ARRAY_SIZE(tokens)) return "<<<>>>"; + switch (tkn) + { + case TKN_COMMAND: return wine_dbg_sprintf("%s {{%ls}}", tokens[tkn], tkn_pmt.command->command); + default: return wine_dbg_sprintf("%s", tokens[tkn]); + } +} + +static void node_builder_init(struct node_builder *builder) +{ + memset(builder, 0, sizeof(*builder)); +} + +static void node_builder_dispose(struct node_builder *builder) +{ + free(builder->stack); +} + +static void node_builder_push_token_parameter(struct node_builder *builder, enum builder_token tkn, union token_parameter pmt) +{ + if (builder->allocated <= builder->num) + { + unsigned sz = builder->allocated ? 2 * builder->allocated : 64; + builder->stack = xrealloc(builder->stack, sz * sizeof(builder->stack[0])); + builder->allocated = sz; + } + builder->stack[builder->num].token = tkn; + builder->stack[builder->num].parameter = pmt; + builder->num++; +} + +static void node_builder_push_token(struct node_builder *builder, enum builder_token tkn) +{ + union token_parameter pmt = {.none = NULL}; + node_builder_push_token_parameter(builder, tkn, pmt); +} + +static enum builder_token node_builder_peek_next_token(struct node_builder *builder, union token_parameter *pmt) +{ + enum builder_token tkn; + + if (builder->pos >= builder->num) + { + tkn = TKN_EOL; + if (pmt) pmt->none = NULL; + } + else + { + tkn = builder->stack[builder->pos].token; + if (pmt) + *pmt = builder->stack[builder->pos].parameter; + } + return tkn; +} + +static void node_builder_consume(struct node_builder *builder) +{ + builder->stack[builder->pos].parameter.none = NULL; + builder->pos++; +} + +static void WCMD_appendCommand(CMD_OPERATOR op, CMD_COMMAND *command, CMD_NODE **node) +{ + /* append as left to right operators */ + if (*node) + { + CMD_NODE **last = node; + while ((*last)->op != CMD_SINGLE) + last = &(*last)->right; + + *last = node_create_binary(op, *last, node_create_single(command)); + } + else + { + *node = node_create_single(command); + } +} + +static BOOL node_builder_parse(struct node_builder *builder, CMD_NODE **result) +{ + unsigned bogus_line; + CMD_NODE *left = NULL; + union token_parameter pmt; + enum builder_token tkn; + BOOL done; + +#define ERROR_IF(x) if (x) {bogus_line = __LINE__; goto error_handling;} + + for (;;) + { + CMD_OPERATOR cmd_op; + + done = FALSE; + /* we always get a pair of OP CMMAND */ + tkn = node_builder_peek_next_token(builder, &pmt); + switch (tkn) + { + case TKN_EOL: done = TRUE; break; + case TKN_AMP: cmd_op = CMD_CONCAT; break; + case TKN_AMPAMP: cmd_op = CMD_ONSUCCESS; break; + case TKN_BAR: cmd_op = CMD_PIPE; break; + case TKN_BARBAR: cmd_op = CMD_ONFAILURE; break; + case TKN_COMMAND: ERROR_IF(TRUE); + default: ERROR_IF(TRUE); + } + if (done) break; + node_builder_consume(builder); + + tkn = node_builder_peek_next_token(builder, &pmt); + ERROR_IF(tkn != TKN_COMMAND) + node_builder_consume(builder); + + WCMD_appendCommand(cmd_op, pmt.command, &left); + } while (!done); +#undef ERROR_IF + *result = left; + return TRUE; +error_handling: + TRACE("Parser failed at line %u:token %s\n", bogus_line, debugstr_token(tkn, pmt)); + node_dispose_tree(left); + + return FALSE; +} + +static BOOL node_builder_generate(struct node_builder *builder, CMD_NODE **node) +{ + union token_parameter tkn_pmt; + enum builder_token tkn; + + if (node_builder_parse(builder, node) && + builder->pos + 1 >= builder->num) /* consumed all tokens? */ + return TRUE; + /* print error on first unused token */ + if (builder->pos < builder->num) + { + tkn = node_builder_peek_next_token(builder, &tkn_pmt); + switch (tkn) + { + case TKN_COMMAND: + WCMD_output_stderr(WCMD_LoadMessage(WCMD_BADTOKEN), tkn_pmt.command->command); + break; + default: + WCMD_output_stderr(WCMD_LoadMessage(WCMD_BADTOKEN), debugstr_token(tkn, tkn_pmt)); + } + } + /* free remaining tokens */ + for (;;) + { + tkn = node_builder_peek_next_token(builder, &tkn_pmt); + if (tkn == TKN_EOL) break; + if (tkn == TKN_COMMAND) command_dispose(tkn_pmt.command); + node_builder_consume(builder); + } + + *node = NULL; + return FALSE; +} + /*************************************************************************** * WCMD_ReadAndParseLine * @@ -2402,8 +2569,8 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE WCHAR *curCopyTo; int *curLen; int curDepth = 0; - CMD_COMMAND *single_cmd = NULL; - CMD_OPERATOR cmd_op = CMD_CONCAT; + union token_parameter tkn_pmt; + enum builder_token cmd_tkn = TKN_AMP; static WCHAR *extraSpace = NULL; /* Deliberately never freed */ BOOL inOneLine = FALSE; BOOL inFor = FALSE; @@ -2421,6 +2588,8 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE /* handling brackets as a normal character */ int lineCurDepth; /* Bracket depth when line was read in */ BOOL resetAtEndOfLine = FALSE; /* Do we need to reset curdepth at EOL */ + struct node_builder builder; + BOOL ret; *output = NULL; /* Allocate working space for a command read from keyboard, file etc */ @@ -2445,6 +2614,8 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE curPos = extraSpace; TRACE("About to parse line (%ls)\n", extraSpace); + node_builder_init(&builder); + /* Handle truncated input - issue warning */ if (lstrlenW(extraSpace) == MAXSTRING -1) { WCMD_output_asis_stderr(WCMD_LoadMessage(WCMD_TRUNCATEDLINE)); @@ -2662,19 +2833,20 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE /* Add an entry to the command list */ if (curStringLen > 0) { + node_builder_push_token(&builder, cmd_tkn); /* Add the current command */ - single_cmd = WCMD_createCommand(curString, &curStringLen, - curRedirs, &curRedirsLen, - &curCopyTo, &curLen, - curDepth); - WCMD_appendCommand(cmd_op, single_cmd, output); + tkn_pmt.command = WCMD_createCommand(curString, &curStringLen, + curRedirs, &curRedirsLen, + &curCopyTo, &curLen, + curDepth); + node_builder_push_token_parameter(&builder, TKN_COMMAND, tkn_pmt); } if (*(curPos+1) == '|') { curPos++; /* Skip other | */ - cmd_op = CMD_ONFAILURE; + cmd_tkn = TKN_BARBAR; } else { - cmd_op = CMD_PIPE; + cmd_tkn = TKN_BAR; } /* If in an IF or ELSE statement, put subsequent chained @@ -2735,12 +2907,13 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE inIn = TRUE; } + node_builder_push_token(&builder, cmd_tkn); /* Add the current command */ - single_cmd = WCMD_createCommand(curString, &curStringLen, - curRedirs, &curRedirsLen, - &curCopyTo, &curLen, - curDepth); - WCMD_appendCommand(cmd_op, single_cmd, output); + tkn_pmt.command = WCMD_createCommand(curString, &curStringLen, + curRedirs, &curRedirsLen, + &curCopyTo, &curLen, + curDepth); + node_builder_push_token_parameter(&builder, TKN_COMMAND, tkn_pmt); curDepth++; } else { @@ -2766,19 +2939,20 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE /* Add an entry to the command list */ if (curStringLen > 0) { + node_builder_push_token(&builder, cmd_tkn); /* Add the current command */ - single_cmd = WCMD_createCommand(curString, &curStringLen, - curRedirs, &curRedirsLen, - &curCopyTo, &curLen, - curDepth); - WCMD_appendCommand(cmd_op, single_cmd, output); + tkn_pmt.command = WCMD_createCommand(curString, &curStringLen, + curRedirs, &curRedirsLen, + &curCopyTo, &curLen, + curDepth); + node_builder_push_token_parameter(&builder, TKN_COMMAND, tkn_pmt); } if (*(curPos+1) == '&') { curPos++; /* Skip other & */ - cmd_op = CMD_ONSUCCESS; + cmd_tkn = TKN_AMPAMP; } else { - cmd_op = CMD_CONCAT; + cmd_tkn = TKN_AMP; } /* If in an IF or ELSE statement, put subsequent chained commands at a higher depth as if brackets were supplied @@ -2798,21 +2972,23 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE /* Add the current command if there is one */ if (curStringLen) { + node_builder_push_token(&builder, cmd_tkn); /* Add the current command */ - single_cmd = WCMD_createCommand(curString, &curStringLen, - curRedirs, &curRedirsLen, - &curCopyTo, &curLen, - curDepth); - WCMD_appendCommand(cmd_op, single_cmd, output); + tkn_pmt.command = WCMD_createCommand(curString, &curStringLen, + curRedirs, &curRedirsLen, + &curCopyTo, &curLen, + curDepth); + node_builder_push_token_parameter(&builder, TKN_COMMAND, tkn_pmt); } /* Add an empty entry to the command list */ - cmd_op = CMD_CONCAT; - single_cmd = WCMD_createCommand(NULL, &curStringLen, - curRedirs, &curRedirsLen, - &curCopyTo, &curLen, - curDepth); - WCMD_appendCommand(cmd_op, single_cmd, output); + cmd_tkn = TKN_AMP; + node_builder_push_token(&builder, cmd_tkn); + tkn_pmt.command = WCMD_createCommand(NULL, &curStringLen, + curRedirs, &curRedirsLen, + &curCopyTo, &curLen, + curDepth); + node_builder_push_token_parameter(&builder, TKN_COMMAND, tkn_pmt); curDepth--; @@ -2844,12 +3020,13 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE Do not add command to list if escape char ^ was last */ if (*curPos == 0x00 && !lastWasCaret && *curLen > 0) { + node_builder_push_token(&builder, cmd_tkn); /* Add an entry to the command list */ - single_cmd = WCMD_createCommand(curString, &curStringLen, - curRedirs, &curRedirsLen, - &curCopyTo, &curLen, - curDepth); - WCMD_appendCommand(cmd_op, single_cmd, output); + tkn_pmt.command = WCMD_createCommand(curString, &curStringLen, + curRedirs, &curRedirsLen, + &curCopyTo, &curLen, + curDepth); + node_builder_push_token_parameter(&builder, TKN_COMMAND, tkn_pmt); /* If we had a single line if or else, and we pretended to add brackets, end them now */ @@ -2869,7 +3046,7 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE WINE_TRACE("Need to read more data as outstanding brackets or carets\n"); inOneLine = FALSE; ignoreBracket = FALSE; - cmd_op = CMD_CONCAT; + cmd_tkn = TKN_AMP; inQuotes = 0; memset(extraSpace, 0x00, (MAXSTRING+1) * sizeof(WCHAR)); extraData = extraSpace; @@ -2913,10 +3090,12 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_NODE **output, HANDLE } } - if (curDepth > lineCurDepth) { + *output = NULL; + ret = curDepth <= lineCurDepth && node_builder_generate(&builder, output); + node_builder_dispose(&builder); + if (!ret) + { WINE_TRACE("Brackets do not match, error out without executing.\n"); - node_dispose_tree(*output); - *output = NULL; errorlevel = 255; }