ash: allow "trap NUM [SIG]..." syntax
While at it, make get_signum() return -1 for numeric strings >= NSIG. function old new delta trapcmd 292 306 +14 get_signum 295 300 +5 builtin_trap 413 412 -1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 19/-1) Total: 18 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@@ -12981,13 +12981,18 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Why the second check?
|
||||
* "trap NUM [sig2]..." is the same as "trap - NUM [sig2]..."
|
||||
* In this case, NUM is signal no, not an action.
|
||||
*/
|
||||
action = NULL;
|
||||
if (ap[1])
|
||||
if (ap[1] && !is_number(ap[0]))
|
||||
action = *ap++;
|
||||
|
||||
exitcode = 0;
|
||||
while (*ap) {
|
||||
signo = get_signum(*ap);
|
||||
if (signo < 0 || signo >= NSIG) {
|
||||
if (signo < 0) {
|
||||
/* Mimic bash message exactly */
|
||||
ash_msg("%s: invalid signal specification", *ap);
|
||||
exitcode = 1;
|
||||
|
Reference in New Issue
Block a user