From dd1395442448ec73b6e16c89d8e9affd554a4e8b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Delanoy?= Date: Thu, 25 Oct 2012 23:48:00 +0200 Subject: [PATCH] cmd: Move common error reporting code in WCMD_if. --- programs/cmd/builtins.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index d13cb5c0f09..ffdfe8d93fc 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -2346,9 +2346,8 @@ void WCMD_popd (void) { * * FIXME: Much more syntax checking needed! */ - -void WCMD_if (WCHAR *p, CMD_LIST **cmdList) { - +void WCMD_if (WCHAR *p, CMD_LIST **cmdList) +{ int negate; /* Negate condition */ int test; /* Condition evaluation result */ WCHAR condition[MAX_PATH], *command, *s; @@ -2368,10 +2367,7 @@ void WCMD_if (WCHAR *p, CMD_LIST **cmdList) { WCHAR *param = WCMD_parameter(p, 1+negate, NULL, FALSE, FALSE); WCHAR *endptr; long int param_int = strtolW(param, &endptr, 10); - if (*endptr) { - WCMD_output_stderr(WCMD_LoadMessage(WCMD_SYNTAXERR)); - return; - } + if (*endptr) goto syntax_err; test = ((long int)errorlevel >= param_int); WCMD_parameter(p, 2+negate, &command, FALSE, FALSE); } @@ -2401,14 +2397,15 @@ void WCMD_if (WCHAR *p, CMD_LIST **cmdList) { rightPart, rightPartLen) == CSTR_EQUAL); WCMD_parameter(s, 1, &command, FALSE, FALSE); } - else { - WCMD_output_stderr(WCMD_LoadMessage(WCMD_SYNTAXERR)); - return; - } + else goto syntax_err; /* Process rest of IF statement which is on the same line Note: This may process all or some of the cmdList (eg a GOTO) */ WCMD_part_execute(cmdList, command, NULL, NULL, TRUE, (test != negate)); + return; + +syntax_err: + WCMD_output_stderr(WCMD_LoadMessage(WCMD_SYNTAXERR)); } /**************************************************************************** -- 2.11.4.GIT