1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Make 'stop' and 'suspend' regular built-ins

The 'stop' and 'suspend' default aliases are now converted into
regular built-in commands so that 'unalias -a' does not remove
them, 'suspend' can do some sanity checks, and something like
	cmd=stop; $cmd $!
will now work.

src/cmd/ksh93/bltins/trap.c:
- b_kill(): Incorporate 'stop' functionality, which is simply
  setting the same flag and variable as '-s STOP' would have done.
- b_suspend(): Add simple builtin function that sends SIGSTOP to
  the main shell. Check for no operands, and refuse to suspend a
  login shell (which would leave the user stuck with no way out).
  Also check that 'kill' succeeds; if we're in an asynchronous
  subshell, it is possible the main shell no longer exists.

src/cmd/ksh93/data/aliases.c:
- Remove "stop" and "suspend" default aliases. (Why were these
  conditional upon SIGTSTP when they actually issued SIGSTOP?)

src/cmd/ksh93/include/builtins.h,
src/cmd/ksh93/data/builtins.c,
src/cmd/ksh93/data/msg.c:
- Add declarations of "stop" and "suspend" regular built-ins.
- Add option strings (AST manual/--man pages) for them.
- Add e_toomanyops ("too many operands") reusable error message for
  b_suspend(). Other new commands may want this at some point.

src/cmd/ksh93/sh.1:
- Remove "stop" and "suspend" default aliases.
- Document "stop" and "suspend" regular built-in commands.
This commit is contained in:
Martijn Dekker 2020-06-22 14:59:24 +02:00
parent add82e1984
commit 3ba4900e9c
8 changed files with 108 additions and 11 deletions

View file

@ -803,10 +803,6 @@ but can be unset or redefined:
.B "nameref=\(fmtypeset \-n\(fm"
.TP
.B "r=\(fmhist \-s\(fm"
.TP
.B "stop=\(fmkill \-s \s-1STOP\s+1\(fm"
.TP
.B "suspend=\(fmkill \-s \s-1STOP\s+1 $$\(fm"
.PD
.RE
.SS Tilde Substitution.
@ -7133,6 +7129,28 @@ Same as
.BR \|.\^ ,
except it is not treated as a special built-in command.
.TP
\f3stop\fP \f2job\^\fP .\|.\|.
Sends a
.B SIGSTOP
signal to one or more processes specified by
.IR job ,
suspending them until they receive
.BR SIGCONT .
The same as
.BR kill\ -s\ STOP .
.TP
\f3suspend\fP
Sends a
.B SIGSTOP
signal to the main shell process, suspending the script
or child shell session until it receives
.B SIGCONT
(for instance, when typing
.B fg
in the parent shell). Equivalent to
.BR kill\ -s\ STOP\ "$$" ,
except that it accepts no operands and refuses to suspend a login shell.
.TP
\f3times\fP
Displays the accumulated user and system CPU times, one line with the times
used by the shell and another with those used by all of the shell's child