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

4
TODO
View file

@ -29,13 +29,11 @@ Fix or remove broken or misguided default aliases:
- functions='typeset -f'
- integer='typeset -li'
- nameref='typeset -n'
- stop='kill -s STOP'
- suspend='kill -s STOP $$'
Keep these default aliases for the benefit of interactive shells:
+ history='hist -l'
+ r='hist -s'
To avoid interfering with shell functions by those names that POSIX
scripts may set, those should only intialise on interactive shells.
scripts may set, those should only initialise on interactive shells.
______
Fix currently known bugs affecting shell scripting. These are identified by