Commit Graph

52 Commits

Author SHA1 Message Date
kre af2cfdd7cf Reverse a decision made when the printsignals() routines from
kill and sh were merged so that the shell (for trap -l) and
kill (for kill -l) can use the same routine, and site that function
in the shell, rather than in kill (use the code that is in kill as
the basis for that routine).   This allows access to sh internals,
and in particular to the posix option, so the builtin kill can
operate in posix mode where the standard requires just a single
character (space of newline) between successive signal names (and
we prefer nicely aligned columns instead)..

In a SMALL shell, use the ancient sh printsignals routine instead,
it is smaller (and very much dumber).

/bin/kill still uses the routine that is in its source, and is
not posix compliant.   A task for some other day...
2018-12-12 20:22:43 +00:00
kre 33a05de6b0 Switch from using two printsignals() functions, one in trap.c
and one in (the included from bin/kill) kill.c and use just
the one in kill.c (which is amended slightly so it can work
the way that trap.c needs it to work).    This one is chosen as
it was a much nicer implementation, and because while kill is
always built into the shell, kill also exists without the shell.

Leave the old implementation #if 0'd in trap.c (but updated to
match the calling convention of the one in kill.c) - for now.

Delete references of sys_signame[] from sh/trap.c and along with
that several uses of NSIG (unfortunately, there are still more)
and replace them with the newer libc functional interfaces.
2018-10-28 18:26:52 +00:00
kre a3be5e86c2 Make arg parsing in kill POSIX compatible with POSIX (XBD 2.12) by
parsing the way getopt(3) would, if only it could handle the (required)
-signumber and -signame options.  This adds two "features" to kill,
-ssigname and -lstatus now work (ie: one word with all of the '-', the
option letter, and its value) and "--" also now works (kill -- -pid1 pid2
will not attempt to send the pid1 signal to pid2, but rather SIGTERM
to the pid1 process group and pid2).  It is still the case that (apart
from --) at most 1 option is permitted (-l, -s, -signame, or -signumber.)

Note that we now have an ambiguity, -sname might mean "-s name" or
send the signal "sname" - if one of those turns out to be valid, that
will be accepted, otherwise the error message will indicate that "sname"
is not a valid signal name, not that "name" is not.   Keeping the "-s"
and signal name as separate words avoids this issue.

Also caution: should someone be weird enough to define a new signal
name (as in the part after SIG) which is almost the same name as an
existing name that starts with 'S' by adding an extra 'S' prepended
(eg: adding a SIGSSYS) then the ambiguity problem becomes much worse.
In that case "kill -ssys" will be resolved in favour of the "-s"
flag being used (the more modern syntax) and would send a SIGSYS, rather
that a SIGSSYS.    So don't do that.

While here, switch to using signalname(3) (bye bye NSIG, et. al.), add
some constipation, and show a little pride in formatting the signal names
for "kill -l" (and in the usage when appropriate -- same routine.)   Respect
COLUMNS (POSIX XBD 8.3) as primary specification of the width (terminal width,
not number of columns to print) for kill -l, a very small value for COLUMNS
will cause kill -l output to list signals one per line, a very large
value will cause them all to be listed on one line.) (eg: "COLUMNS=1 kill -l")

TODO: the signal printing for "trap -l" and that for "kill -l"
should be switched to use a common routine (for the sh builtin versions.)

All changes of relevance here are to bin/kill - the (minor) changes to bin/sh
are only to properly expose the builtin version of getenv(3) so the builtin
version of kill can use it (ie: make its prototype available.)
2017-06-26 22:09:16 +00:00
christos 5a2222869d Clarify 0 2017-04-22 23:01:36 +00:00
riastradh a5d8818134 Clarify `kill -0'. Note standard exit codes. 2017-04-22 22:42:03 +00:00
abhinav 40e3a09c63 kill(1) is a utility, not a function. 2016-10-02 21:00:54 +00:00
sevan 5da349fba4 Bump date 2016-08-11 22:10:01 +00:00
sevan a0ee124bc7 Earliest reference of kill in the TUHS archive is v3 AT&T UNIX.
Unfortunately only the source code for the compiler is present for that
release. The v2 archive is missing the manuals & only contains a some of the
commands.
Switch to v3 and reference manual category eight.
2016-08-11 21:56:55 +00:00
sevan 176b67f38f Pp not required before Bd, picked up by mandoc lint 2016-08-11 21:41:17 +00:00
wiz 3957bea1ef Fix whitespace nits. Suggested by Bug Hunting. 2012-03-22 07:58:16 +00:00
joerg 5bb1ddccc2 Use __dead 2011-08-29 14:51:17 +00:00
spz f1afa0902b Make sure that numerical signals and pids are in range for their types.
Fixes PR bin/42143
2009-10-01 09:24:38 +00:00
lukem 2fe2731d3f Remove the \n and tabs from the __COPYRIGHT() strings. 2008-07-20 00:52:39 +00:00
wiz ef266ed897 Wordo fix, noted by jmc@openbsd. 2007-12-28 14:32:50 +00:00
wiz ac14332299 Fix argument confusion, noted by drochner. 2007-12-27 12:59:56 +00:00
wiz acce89e796 Improve -l description. From jmc@openbsd. 2007-11-07 22:36:35 +00:00
christos 65b5013e95 Coverity CID 2356: Remove bogus test !*argv; also cleanup string usage. 2006-03-17 22:30:11 +00:00
agc b5b2954259 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22249, verified by myself.
2003-08-07 09:05:01 +00:00
jschauma 458ed23412 As discusses a little while back on tech-userlevel:
If stdout is a tty, use vis(3) to print any filenames to prevent garbage
from being printed if the filename contains control- or other non-printable
characters.

While here, sprinkle some EXIT_FAILURE and NOTREACHED where appropriate.
2003-08-04 22:31:21 +00:00
wiz 990562bfef .Nm does not need a dummy argument ("") before punctuation or
for correct formatting of the SYNOPSIS any longer.
2003-02-25 10:34:36 +00:00
christos 34100a1996 sent cont to jobs so that they can exit without an fg when killed. 2002-11-25 14:23:07 +00:00
christos c02b3bbdf4 Fixes from David Laight:
- ansification
- format of output of jobs command (etc)
- job identiers %+, %- etc
- $? and $(...)
- correct quoting of output of set, export -p and readonly -p
- differentiation between nornal and 'posix special' builtins
- correct behaviour (posix) for errors on builtins and special builtins
- builtin printf and kill
- set -o debug (if compiled with DEBUG)
- cd src obj (as ksh - too useful to do without)
- unset -e name, remove non-readonly variable from export list.
  (so I could unset -e PS1 before running the test shell...)
2002-11-24 22:35:38 +00:00
ad 5a6b9d89df Xref pkill/pgrep. 2002-03-04 13:02:32 +00:00
wiz 3ebcdc5e43 Whitespace nits. 2001-12-20 19:31:48 +00:00
kleink 6dc4210b48 Deocument the meaning of a pid value of 0 and remove the BUGS section;
mostly from Jonathan Perkin in resolution of PR bin/15008.
2001-12-20 15:13:08 +00:00
wiz ed7b508e36 Use {g,s}etprogname. Patch by Petri Koistinen. 2001-09-16 13:55:09 +00:00
wiz e54efb953b ANSIfy, some style improvements. Some parts from #13593 by Petri Koistinen. 2001-07-29 22:46:36 +00:00
christos eb7c557ca3 s/exit_status/signal_number/ 2000-05-13 17:04:04 +00:00
jdolecek a12da43ac4 xref signal(7) 1999-10-06 17:19:09 +00:00
ad 5118f5b2cc Consistancy nits. 1999-09-18 18:45:39 +00:00
christos 30d3c9f1b4 unsigned char casts for is*() 1998-11-04 18:14:15 +00:00
mycroft ee9e50eacb Be more retentive about use of NOTREACHED and noreturn. 1998-07-28 11:41:40 +00:00
mycroft 9dc385beb1 Delint. 1998-07-28 05:31:22 +00:00
mycroft 1381f68431 Delint. 1998-07-28 05:15:46 +00:00
enami c3872193cf Fix .Nm usage. 1997-10-20 08:50:59 +00:00
christos 23edbe3557 Remove WARNS=1 from all the subdirectory Makefiles, and add it to Makefile.inc
now that all /bin has been cleaned.
1997-07-20 22:36:20 +00:00
christos 51e9bcec47 Add WARNS=1 1997-07-20 17:34:50 +00:00
thorpej 71f1354a10 Fix a typo that caused lack of argument to be misinterpreted as "0".
From Arne H. Juul <arnej@pvv.ntnu.no>, PR #3236.
1997-02-22 01:45:41 +00:00
mikel 6a37335a9d reference sigaction(2) instead of the obsolete sigvec(3); fixes PR 3058. 1996-12-26 02:29:58 +00:00
jtc f859c958ca Sync with 4.4lite2 1995-09-07 06:28:39 +00:00
cgd 49f0ad8601 convert to new RCS id conventions. 1995-03-21 09:01:59 +00:00
jtc da08b16c49 Changed to accept ``kill -0 pid'' (PR #842). 1995-03-17 05:48:48 +00:00
cgd 5dad143982 from James Jegers <jimj@miller.cs.uwm.edu>: quiet -Wall, and squelch
some of the worst style errors.
1994-12-04 07:11:37 +00:00
mycroft 667b5ea158 Merge 4.4-Lite version. 1994-09-22 09:24:46 +00:00
mycroft cd203f3214 Use sys_signame[]. 1993-08-06 21:25:21 +00:00
mycroft 8542364e07 Add RCS identifiers. 1993-08-01 18:49:50 +00:00
mycroft b1bd4afedc Add RCS indentifiers. 1993-08-01 07:42:49 +00:00
mycroft cda4f8f6ee Add RCS identifiers. 1993-08-01 05:37:30 +00:00
jtc 0ba3448400 Make POSIX 1003.2 (D11.2) compliant. 1993-07-22 16:42:16 +00:00
cgd 06be60083d changed "Id" to "Header" for rcsids 1993-03-23 00:22:59 +00:00