f5fa431514
This closes PR pkg/25314. Changes: * Made various changes to hopefully improve the clarity. Added COMPATIBILITY, HISTORY, and NOTES sections. * Made changes to how the shell handles terminating `\' characters w/ the `-c' and `-t' flags. This is a simple extension of the same behaviour exhibited when the shell is interactive or when it executes a command file, the only difference being that where a terminating `\' character causes the shell to read the next line of input in an interactive shell or command file, w/ the `-c' and `-t' flags the shell terminates w/o executing the command line. * Allow parameter substitution w/ the `-c' and `-t' flags. This feature is not documented. For example, invoking the shell as follows allows parameter substitution to take place: % osh -t one two three echo $0 $1 $2 $3 -t one two three * The shell now ignores SIGINT and SIGQUIT when the `-c' or `-t' flag is used. Thus, asynchronous commands invoked in this way ignore interrupts as they should. * Ignore SIGINT and SIGQUIT for all commands started from asynchronous subshells. For example, `( sleep 300; some_command ) >outfile&' now ignores `^C' and `^\' as it should. * Don't ignore SIGINT and SIGQUIT for asynchronous commands started in command files. If a command file is terminated by one of these signals, the asynchronous commands should also terminate. * Reverted a change made to termination reporting in osh-040216 that was not actually compatible w/ the V6 shell. * Always terminate the shell when read(2) fails. This fixes a possible infinite loop. * Fixed a bug in the parser that caused syntactically incorrect subshell commands not to be detected as such when preceded by redirection arguments (e.g., `<infile >outfile ( | )'). This bug was introduced in osh-040216. * Fixed possible buffer overflows in substparm(); added a new error message, "Too many characters", and made other changes necessary to properly deal w/ the new error condition. This problem had been present since at least osh-020214. * Made some changes to how globbing is handled by the shell. Specifically, glob(3) should only be called when an argument contains unquoted occurrences of any of the glob characters `*', `?', or `['. Previously, it was being called for every argument of an external command. This change improves run-time performance slightly as judged by time(1) and information returned by getrusage(2). * The above-mentioned change also allows the following compatibility feature. Added globbing compatibility when the shell is compiled w/ -DCLONE so that when no matches are found a diagnostic, "No match", is printed. |
||
---|---|---|
.. | ||
DESCR | ||
distinfo | ||
Makefile | ||
PLIST |