diff options
author | smh <smh@FreeBSD.org> | 2014-11-13 16:40:15 +0000 |
---|---|---|
committer | smh <smh@FreeBSD.org> | 2014-11-13 16:40:15 +0000 |
commit | f6482d9897690c9ed33161384a3fcce5a2035282 (patch) | |
tree | fd8095d0137fe38137231fd8c0e240e8365f1256 | |
parent | 8b16f1c857591e35897289e16425308ecb42e325 (diff) | |
download | FreeBSD-src-f6482d9897690c9ed33161384a3fcce5a2035282.zip FreeBSD-src-f6482d9897690c9ed33161384a3fcce5a2035282.tar.gz |
MFC r260800:
Fix a regression introduced in r237618
MFC r260801:
Re-work r260800 to include other signals which start with 'I'
such as ILL, INFO etc.
Sponsored by: Multiplay
-rw-r--r-- | usr.bin/killall/killall.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/usr.bin/killall/killall.c b/usr.bin/killall/killall.c index dd22a83..b171630 100644 --- a/usr.bin/killall/killall.c +++ b/usr.bin/killall/killall.c @@ -90,6 +90,7 @@ nosig(char *name) int main(int ac, char **av) { + char **saved_av; struct kinfo_proc *procs, *newprocs; struct stat sb; struct passwd *pw; @@ -144,9 +145,6 @@ main(int ac, char **av) if (**av == '-') { ++*av; switch (**av) { - case 'I': - Iflag = 1; - break; case 'j': ++*av; if (**av == '\0') { @@ -214,6 +212,7 @@ main(int ac, char **av) zflag++; break; default: + saved_av = av; if (isalpha((unsigned char)**av)) { if (strncasecmp(*av, "SIG", 3) == 0) *av += 3; @@ -223,8 +222,14 @@ main(int ac, char **av) sig = p - sys_signame; break; } - if (!sig) - nosig(*av); + if (!sig) { + if (**saved_av == 'I') { + av = saved_av; + Iflag = 1; + break; + } else + nosig(*av); + } } else if (isdigit((unsigned char)**av)) { sig = strtol(*av, &ep, 10); if (!*av || *ep) |