1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-24 11:29:10 +00:00

Fix handling of the 'noError' variable. According to the code comments,

one can set the 'noError' variable to ignore any errors that occur for the
next command.  However, the code was only unsetting 'noError' when an error
actually occurred, so if you set 'noError', the next command completed ok,
and the command after that failed, the second command's failure would be
ignored.  This fixes this by performing the 'noError' check earlier and
then unsetting 'noError' after every command that is run.

Sponsored by:	The Weather Channel
This commit is contained in:
John Baldwin 2002-06-03 19:42:49 +00:00
parent 77218da374
commit e364f0da42
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=97778
2 changed files with 22 additions and 24 deletions

View File

@ -263,6 +263,13 @@ dispatchCommand(char *str)
msgNotify("Warning: No such command ``%s''", str);
i = DITEM_FAILURE;
}
/*
* Allow a user to prefix a command with "noError" to cause
* us to ignore any errors for that one command.
*/
if (i != DITEM_SUCCESS && variable_get(VAR_NO_ERROR))
i = DITEM_SUCCESS;
variable_unset(VAR_NO_ERROR);
}
return i;
}
@ -320,18 +327,10 @@ dispatch_execute(qelement *head)
item = (command_buffer *) head->q_forw;
if (DITEM_STATUS(dispatchCommand(item->string)) != DITEM_SUCCESS) {
/*
* Allow a user to prefix a command with "noError" to cause
* us to ignore any errors for that one command.
*/
if (variable_get(VAR_NO_ERROR))
variable_unset(VAR_NO_ERROR);
else {
msgConfirm("Command `%s' failed - rest of script aborted.\n",
item->string);
result |= DITEM_FAILURE;
break;
}
msgConfirm("Command `%s' failed - rest of script aborted.\n",
item->string);
result |= DITEM_FAILURE;
break;
}
dispatch_free_command(item);
}

View File

@ -263,6 +263,13 @@ dispatchCommand(char *str)
msgNotify("Warning: No such command ``%s''", str);
i = DITEM_FAILURE;
}
/*
* Allow a user to prefix a command with "noError" to cause
* us to ignore any errors for that one command.
*/
if (i != DITEM_SUCCESS && variable_get(VAR_NO_ERROR))
i = DITEM_SUCCESS;
variable_unset(VAR_NO_ERROR);
}
return i;
}
@ -320,18 +327,10 @@ dispatch_execute(qelement *head)
item = (command_buffer *) head->q_forw;
if (DITEM_STATUS(dispatchCommand(item->string)) != DITEM_SUCCESS) {
/*
* Allow a user to prefix a command with "noError" to cause
* us to ignore any errors for that one command.
*/
if (variable_get(VAR_NO_ERROR))
variable_unset(VAR_NO_ERROR);
else {
msgConfirm("Command `%s' failed - rest of script aborted.\n",
item->string);
result |= DITEM_FAILURE;
break;
}
msgConfirm("Command `%s' failed - rest of script aborted.\n",
item->string);
result |= DITEM_FAILURE;
break;
}
dispatch_free_command(item);
}