From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- programs/cmd/cmd.rc | 1 + programs/cmd/wcmd.h | 1 + programs/cmd/wcmdmain.c | 23 +++++++++++++++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/programs/cmd/cmd.rc b/programs/cmd/cmd.rc index 59cb570b167..3bcf0ad4874 100644 --- a/programs/cmd/cmd.rc +++ b/programs/cmd/cmd.rc @@ -408,4 +408,5 @@ Enter HELP <command> for further information on any of the above commands.\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" + WCMD_ENDOFLINE, "End of line" } diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index 6230646bce6..f62ee3da6a9 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -482,3 +482,4 @@ extern WCHAR version_string[]; #define WCMD_BADHEXOCT 1045 #define WCMD_FILENAMETOOLONG 1046 #define WCMD_BADTOKEN 1047 +#define WCMD_ENDOFLINE 1048 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index e2c60f3b8c0..12d3db1b012 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -2466,15 +2466,34 @@ static BOOL node_builder_generate(struct node_builder *builder, CMD_NODE **node) /* print error on first unused token */ if (builder->pos < builder->num) { + WCHAR buffer[MAXSTRING]; + const WCHAR *tknstr; + 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); + tknstr = tkn_pmt.command->command; + break; + case TKN_EOL: + tknstr = WCMD_LoadMessage(WCMD_ENDOFLINE); + break; + case TKN_REDIRECTION: + MultiByteToWideChar(CP_ACP, 0, debugstr_redirection(tkn_pmt.redirection), -1, buffer, ARRAY_SIZE(buffer)); + tknstr = buffer; + break; + case TKN_AMP: + case TKN_AMPAMP: + case TKN_BAR: + case TKN_BARBAR: + MultiByteToWideChar(CP_ACP, 0, debugstr_token(tkn, tkn_pmt), -1, buffer, ARRAY_SIZE(buffer)); + tknstr = buffer; break; default: - WCMD_output_stderr(WCMD_LoadMessage(WCMD_BADTOKEN), debugstr_token(tkn, tkn_pmt)); + FIXME("Unexpected situation\n"); + tknstr = L""; } + WCMD_output_stderr(WCMD_LoadMessage(WCMD_BADTOKEN), tknstr); } /* free remaining tokens */ for (;;)