diff options
Diffstat (limited to 'bin/ksh')
-rw-r--r-- | bin/ksh/BUG-REPORTS | 1398 | ||||
-rw-r--r-- | bin/ksh/ChangeLog | 1600 | ||||
-rw-r--r-- | bin/ksh/ChangeLog.0 | 3589 | ||||
-rw-r--r-- | bin/ksh/IAFA-PACKAGE | 18 | ||||
-rw-r--r-- | bin/ksh/NEWS | 662 |
5 files changed, 0 insertions, 7267 deletions
diff --git a/bin/ksh/BUG-REPORTS b/bin/ksh/BUG-REPORTS deleted file mode 100644 index 8fcd5883bc5..00000000000 --- a/bin/ksh/BUG-REPORTS +++ /dev/null @@ -1,1398 +0,0 @@ -$OpenBSD: BUG-REPORTS,v 1.19 2013/11/28 10:33:37 sobrado Exp $ - -List of reported problems (problems reported and fixed before 5.0.4 not -included). Unresolved problems (may or may not still exist) marked by *, -problems believed to be fixed marked by x. - -* pdksh 5.0.3, MIPS RISC/os 5.0 (bsd universe) (noted by Michael Rendell): - for interactive, job controlled shells, the kernel's tty state gets twisted - in such a way that all output is lost (eg, if ttyXX is wedged then - "echo hi > /dev/ttyXX" from a separate login appears to succeed but produces - no output on ttyXX). - Work around is to run a program and hit ^C. - -* pdksh 5.0.1, NetBSD 0.9a? (reported by Simon J. Gerraty): problem with - job control not finding tty - [from Mail.1:71]: - Also, I have noticed (with 5.0.1 anyway) that if as root I su to a - user I get: - root:511$ su foobar - warning: won't have full job control - [1] + Stopped (tty output) stty erase ^? - foobar:1$ - -* pdksh 5.0.8, - (reported by Sean Hogan): attempting file name completion - on a word with a single backquote causes a "no closing quote" error and - loses the partially entered command (vi mode). - [see Mail.2:48] - [partly fixed in 5.2.14: backquote ok, but happens for the likes of ${.] - -* pdksh 5.0.10, - (reported by Andrew Moore): no overflow checking is done - in integer parsing code. - [see Mail.3:78] - -* pdksh 5.0.6+5.1.2, BSD43/MachTen (reported by Dan Menchaca): ksh freezes up - terminal after a while after printing process exit message. 5.1.2 causes - system to hang after executing two commands. - [see Mail.3:96,5:42] - -* pdksh 5.1.3, - (reported by Brad Warkentin & others): if the last command of - a pipeline is a shell builtin, it is not executed in the parent shell, - so "echo a b | read foo bar" does not set foo and bar in the parent - shell (at&t ksh will). - [see Mail.7:32,Mail.9:65] - -* pdksh 5.1.3, - (reported by Gabor Zahemszky): emacs/vi doesn't have \ as quote - character. - [see Mail.7:87] - -* pdksh 5.1.3, - (reported by Gabor Zahemszky): emacs default bindings doesn't - have vt52 arrow keys or vt100 alternate keypad mode bindings. - [see Mail.7:87] - -* pdksh 5.1.3, SCO 3.2.2 (reported by Gabor Zahemszky): shell hangs - waiting for finished process to finish. - [see Mail.7:87] - -* pdksh 5.2.0, - (reported by Gabor Zahemszky): ^V in vi leaves cursor at - start of the line. - [see Mail.8:43] - -* enhancements that haven't been merged yet - - Mail.6:36-39,78,84 recursive function diffs (add hard limit on - depeth of recursion) - -* pdksh 5.2.3, - (reported by David Gast(? gast@twinsun.com)): history (fc, - et al) don't work in shell scripts. - [see Mail.10:49] - -* pdksh 5.2.4, - (reported by Gabor Zahemszky): emacs: ^P steps through - multiline commands - should go to start of command. - [see Mail.XXX:XXX] - -* pdksh 5.2.7, - (reported by Adrian Marsh): typeset -L20u xxx is ok is ksh88 - but not in pdksh. - [see Mail.XXX:XXX] - -* pdksh 5.2.7, - (reported by Gabor Zahemszky): TMOUT doesn't effect - select and read operations. - [see Mail.XXX:XXX] - -* pdksh 5.2.10, - (reported by Simon J. Gerraty): in emacs, <ESC><ESC> applied - to a word with a macro does not complete the word (only expands the macro). - [see Mail.XXX] - -* pdksh 5.2.12, - (reported by Han Holl <jeholl@euronet.nl>): pdksh does not - parse the whole script before executing, so some syntax errors are not - detected (if the shell exits before reading the whole file). - [see Mail.XXX] - -* pdksh 5.2.12, (reported by Michael Staats): emacs: file completion does - not complete as much as possible when file is ~/something (will list - possible completions but won't fill in to the first difference). - Happens since code doesn't distinguish between globbing and ~ (needs - special case to strip & replace a leading ~ during the completion - process). - -* pdksh 5.2.13, (reported by Martin Dalecki): shell dumps core when set -x - is used on some scripts - [awaiting more info...] - -* pdksh 5.2.13, (reported by Arthor Pool): interactive shells can't be - interrupted when processing ${foo#bar} expressions. - [same goes for globbing - fixing this means checking for interrupts in - the `tight' loops - could slow things down quite a bit] - ---------------------- put fixed problems below this line --------------------- - -x pdksh 5.0.3, NetBSD 0.9a (reported by Simon J. Gerraty): pipelines - occasionally hang. - [from Mail.1:71]: - Yes, I just built 5.0.3 on zen (NetBSD) and the menu stuff worked fine. - However I've just done: - - sjg:910$ diff -cb /etc/profile profile | more - - And it has been sitting there ever since. - [... gdb output indicating process groups set up ok - presumed problem is - with tty process group] - [Fixed in 5.0.4 - do tcsetpgrp() in both parent and child for first process] - -x pdksh 5.0.2, ISC unix 3.01 (reported by Sean Hogan): set +o monitor (in - interactive shell?) closes tty - [from Mail.1:64]: - I'm having two problems with the job control code, which I believe might - be related. The first one is that "set +o monitor" closes the tty, - which causes the shell to exit since its input is gone. According to - the code, that would imply that FTALKING has mysteriously been turned - off (jobs.c:343). But my understanding of the code is that FTALKING - would only be clear for background processes, and set would be done by - the shell. Do you have any insights here? It's not a big deal of course; - I don't need to turn off monitor anyway. - [fixed in 5.0.5 - problem was tty process group was being restored so - shell could no longer read from tty] - -x pdksh 5.0.4, - (reported by Simon J. Gerraty and Sean Hogan): - test "" -a x would fail. - [fixed in 5.0.5 - t_wp being unnecessarily decremented in primary()] - -x pdksh 5.0.4, -: test -p foo would always fail. - [fixed in 5.0.5 - spell S_ISFIFO correctly] - -x pdksh 5.0.4, -: test ! ! foo would generate error (unexpected !) - [fixed in 5.0.5 - nexpr() always calls nexpr(), changes to posix code] - -x pdksh 5.0.4, -: set -i would generate an internal error. - [fixed in 5.0.5 - use OF_SET in creating set_opts] - -x pdksh 5.0.4, -: let 0>22 would evaluate to true (and 0<22 false) - [fixed in 5.0.5 - reversed order of O_LT and O_GT in enum] - -x pdksh 5.0.4, - (reported by Sean Hogan): echo does not process escape - characters (ie, echo "foo\c" doesn't to the sysV thing) - [see Mail.1:98] - [fixed in 5.0.5 - echo now behaves like sysv echo] - -x pdksh 5.0.4, - (reported by Sean Hogan): tty process groups not restored - properly (vi, :sh, exit causes vi to received SIGTTOU). - [see Mail.1:98] - [fixed in 5.0.5 - restore tty process group in j_exit] - -x pdksh 5.0.4, - (reported by Sean Hogan): the exit command does not do the - stopped jobs check. - [see Mail.1:94,95,98] - [fixed in 5.0.5 - added LSHELL, hack c_exitreturn to use it] - -x pdksh 5.0.3, ISC unix 3.01 (reported by Sean Hogan): if notify is set, - running cat & produces "[1] + Stopped (tty input) cat", but jobs, fg, - etc. don't know about the job. - [from Mail.1:76] - I get [1] + Stopped (tty input) cat. Interestingly, "jobs" reports - nothing, and "fg" doesn't see it either. But it's definitely there in - the ps output. It only responds to kill -9, nothing else. I guess this - is a side track? - [see also Mail.1:97,Mail.2:2,3] - [fixed in 5.0.6 - don't remove stopped jobs in the notify code of check_job()] - -x pdksh 5.0.5, - (reported by Sean Hogan): repeated history commands were being - echoed after the command was executed. - [see Mail.2:5,6] - [fixed in 5.0.6 - call shf_flush() in case SHIST: of yylex()] - -x pdksh 5.0.5, -: wait with no arguments would hang forever. - [fixed in 5.0.6 - only wait for running jobs in waitfor()] - -x pdksh 5.0.2, HP-UX 9.01 (reported by Sean Hogan): scripts occasionally get - stopped with SIGTTIN - [from Mail.1:68]: - I noticed another small problem today, which is that occasionally - (on an HP 9000/715, HP-UX 9.01, cc from the ANSI C developer set) - a background process which is definitely not reading from its input - stops with SIGTTIN. I first noticed this with a nohup'ed process, but - it periodically happens without as well. The process is a perl script, - if that makes any difference. Have you seen this on your HP(s)? - [hasn't been seen in 5.0.3: Mail.1:73,76] - [not a shell bug, see Mail.2:14,15] - -x pdksh 5.0.6, - (reported by Gordan Larson, Ed Ferguson): shell does not - compile when VI isn't defined. - [see Mail.2:22,40] - [fixed in 5.0.7 - fixed up lex.c] - -x pdksh 5.0.6, - (reported by Gordan Larson): ksh.1 font typo. - [see Mail.2:23] - [fixed in 5.0.7] - -x pdksh 5.0.6, FreeBSd 1.1.5 (reported by Thomas Gellekum): CLK_TCK is defined - to wrong value on FreeBSD; no depend target in Makefile; update /etc/shells - in install target. - [see Mail.2:28] - [fixed in 5.0.7 - include <limits.h> in sh.h to get the right value; added - depend target; print warning if ksh not in /etc/shells] - -x pdksh 5.0.6, - (reported by Michael Haardt): shell does not compile if JOBS - not defined. - [see Mail.2:32] - [fixed in 5.0.7 - added ifdefs to jobs.c(check_job)] - -x pdksh 5.0.6, - (reported by Nick Holloway): exit status of command - substitution is lost (known problem). - [from Mail.2:33]: - This is a variation on a theme of bug number 10 (and is one reason why - currently ksh can not be used for Linux's MAKEDEV). - - The exit status from command substitution is not available when used with - variable assignment. - - x=`false` && echo "Non-zero exit status lost". - [fixed in 5.0.7 - instead of faking :, set rv to subst_exstat] - -x pdksh 5.0.7 - (reported by Sean Hogan): CMASK redefined in emacs.c - [see Mail.2:44] - [fixed in 5.0.8 changed CMASK to CHARMASK] - -x pdksh 5.0.7 - (reported by Sean Hogan): "r" (fc -e -) doesn't work. - [see Mail.2:45] - [fixed in 5.0.8 - increment wp, change strcmp() test] - -x pdksh 5.0.7 - (reported by Thomas Gellekum): make install typeo. - [see Mail.2:46] - [fixed in 5.0.8 - added missing $] - -x pdksh 5.0.8 - (reported by Sean Hogan): "FOO=bar exec blah" does not - put FOO in environment. - [see Mail.2:50] - [fixed in 5.0.9 - re-arranged exec/command/builtin code in comexec()] - -x pdksh 5.0.8, QNX 4.2 (reported by Brian Campbell): "exec > /dev/null" - generates an error. - [see Mail.2:51] - [see Mail.2.58 - caused by ambitious compiler using same label for c_exec() - and c_builtin()] - [fixed in 5.0.9 - c_exec() no longer an empty function.] - -x pdksh 5.0.8, - (reported by Brian Campbell): "echo a{b," prints a "Missing }" - error - at&t ksh does not. at&t ksh always has brace-expansion on (unless - set -o nogolob). - [see Mail.2:51] - [fixed in 5.0.9 - brace expansion now compatible with at&t ksh] - -x pdksh 5.0.8, - (reported by Sean Hogan): ulimit output garbled; syntax error - in c_ulimit.c; no configure check for HAVE_SETRLIMIT. - [see Mail.2:64] - [fixed in 5.0.9 - use shprintf instead of shellf to print values; add - setrlimit() check to configure] - -x pdksh 5.0.7, - (reported by Jan Djarv): `echo > /foo/bar' causes a script to - exit - POSIX says it shouldn't. - [see Mail.2:60] - [fixed in 5.0.9 - iosetup returns error code, error messages cleaned up, etc] - -x pdksh 5.0.8, - : `more /etc/passwd &' followed by fg messes up tty settings. - [fixed in 5.0.9 - only save new tty settings if job originally started in fg] - -x pdksh 5.0.9, - (reported by Andrew Moore): a blank line causes $? to be - set to zero, newline after a here-document marker isn't read. - [see Mail.3:5,6] - [fixed in 5.0.10 - don't execute null trees, read the newline] - -x pdksh 5.0.9, - (reported by Michael Sullivan): mail checking reports you - have mail, when there is only old mail. - [fixed in 5.0.10 - use atime/mtime instead of size] - -x pdksh 5.0.9, - (reported by Chris Oates): if RANDOM is in ksh's environ - when it starts, the shell dumps core. - [see Mail.3:7,8] - [fixed in 5.0.10 - var.c(typeset): free t->val.s instead of - t->val.s + t->type] - -x pdksh 5.0.9, - (reported by Seah Hogan): ISC 3.01's make is confused by - a backslash followed by a blank line. - [see Mail.3:9,13] - [fixed in 5.0.10 - changed make depend target to change blank lines to sh.h] - -x pdksh 5.0.9, - (reported by Andrew Moore): commands without a newline cause - syntax errors - sh/ksh execute the commands. - [see Mail.3:15] - [fixed in 5.0.10 - have yyparse() accept newline and EOF] - -x pdksh 5.0.9, - (reported by Andrew Moore): empty arithmetic expressions not - accepted. - [see Mail.3:15,17] - [fixed in 5.0.10 - v_evaluate(): if first token is END, changed to literal 0] - -x pdksh 5.0.9, - (reported by Andrew Moore): nulls in input are not ignored. - [see Mail.3:15] - [fixed in 5.0.10 - added strip_nuls() function and calls to it] - -x pdksh 5.0.9, - (reported by Andrew Moore): \241 (M-!) not passed through - command substitutions. - [see Mail.3:15] - [fixed in 5.0.10 - evaluate(): cast c to a char before comparing to MAGIC] - -x pdksh 5.0.9, - (reported by Andrew Moore): newlines after here-documents - are read twice; shell reports an error if newline is missing. - [see Mail.3:25] - [fixed in 5.0.10 - fixed up readhere()] - -x pdksh 5.0.9, - (reported with fix by Mike Jetzer): 'r r' repeats the r - command forever. - [see Mail.3:38] - [fixed in 5.0.10 - start the search from the previous command] - -x pdksh 5.0.9, - (reported by Mike Jetzer): edit of multi-line commands - does not result in single history entry. - [see Mail.3:38] - [fixed in 5.0.10 - use hist_append() to add second+ lines] - -x pdksh 5.0.9, - (reported by Dale DePriest): ksh_times.h uses BROKEN_TIMES - [see Mail.3:43] - [fixed in 5.0.10 - changed ksh_times.h] - -x pdksh 5.0.9, - (reported by J. T. Conklin): using [ instead of test is slow. - [see Mail.3:46] - [fixed in 5.0.10 - put in kludgy check for [ in eval.c(glob)] - -x pdksh 5.0.9, - (reported by Michael Haardt): signals do not interrupt - read commands. - [see Mail.3:20] - [fixed in 5.0.10 - changed c_read() to check for fatal signals after EINTR] - -x pdksh 5.0.10, BSDI (reported by David Tamkin): use of _POSIX_VDISABLE in - tty.h causes compiler error. - [see Mail.3:67] - [fixed in 5.0.10.1 - new variable vdisable_c set/used in edit.c] - -x pdksh 5.0.8, - (reported by Donald Craig): on systems with both union wait - and waitpid(), waitpid() is passed a union wait pointer instead of an int - pointer. - [see Mail.2:54] - [fixed in 5.1 - added ksh_waitpid() define; cast status arg as needed.] - -x pdksh 5.0.10, - (reported by David Tamkin): space in vi command mode does - nothing. - [see Mail.3:76] - [fixed in 5.1 - vi.c(classify[]) table got changed by accident.] - -x pdksh 5.0.10, - (reported by Danial Quinlan): forward-word and - delete-word-forward functions in emacs don't go to the right place. - [see Mail.3:79] - [Fixed in 5.1 - changed order of loops in emacs.c(x_fword())] - -x pdksh 5.0.10, - (reported by David Tamkin): eof in multiline command - causes shell to exit, even if ignoreeof is set. - [see Mail.3:76] - [Fixed in 5.1 - reset eof after longjmp() in main.c(shell)] - -x pdksh 5.0.9, Ultrix 4.2 (reported by Matthew Nethook): type-ahead while - shell is waiting for a command to finish is temporarily lost until a - program that reads from stdin or goes a stty/gtty is run. - [see Mail.3:61,62] - [Fixed in 5.1 - changed aclocal.m4 to not define HAVE_TERMIOS_H on ultrix] - -x pdksh 5.0.10, - (reported by David Tamkin): if INT is trapped, ^C in - vi/emacs won't flush buffer/re-issue new prompt. - [see Mail.3:5,76] - [Fixed in 5.1 - use unwind() in vi/emacs to get back to shell()] - -x pdksh 5.0.10, - (reported by Dale DePriest): in emacs mode, file completions - resulting in long names (>256) cause core dumps - [see Mail.3:72] - [Fixed in 5.1 - use dynamically sized buffers in emacs code] - -x pdksh 5.0.10, - (reported by Dale DePriest): in emacs mode, command - completions (^[=) resulting in multiple hits caused internal memory error. - [see Mail.4:8] - [Fixed in 5.1 - don't call list_stash() twice in compl_command] - -x pdksh 5.0.10, - (reported by Dave Hatton): autoloading functions fail - on the first attempt, then work. - [see Mail.4:10] - [Fixed in 5.1 - in findcom(), check for include() returning non-0 (was 0)] - -x pdksh 5.0.10, - (reported by Art Pina via Dale DePriest): when SECONDS - parameter is assigned, it always acts as if 0 were assigned. - [see Mail.4:12] - [Fixed in 5.1 - set internal seconds variable to time - assigned value] - -x pdksh 5.1.0 - (reported by Larry Bouzane): for/select loops don't allow - {..} to be used instead of do...done. - [see Mail.4:16] - [Fixed in 5.1.1 - changed syn.c(dogroup) to allow {/} instead of do/done] - -x pdksh 5.1.0 - (reported by Andrew Moore and Larry Bouzane): a command ending - in ; or & that is not followed by a newline causes a syntax error. - [see Mail.4:126,128] - [Fixed in 5.1.1 - don't call syntaxerr() in get_command() if EOF is read] - -x pdksh 5.1.0, - (reported by Simon J. Gerraty): ksh died reading history - file (complex history, in hist_skip_backup()). - [see Mail.4:24] - [Fixed in 5.1.1 - hist_skip_back(): don't start past the end of the buffer] - -x pdksh 5.1.0 BSDI 1.1 (reported by Karl Denninger): after receipt of SIGHUP, - shell waits for foreground process to complete. - [see Mail.4:50,57] - [Fixed in 5.1.1 - added fatal_trap flag, check in jobs.c(j_waitj)] - -x pdksh 5.1.0 - (reported by Bob Manson): a leading non-white-space IFS - character does cause a field to be delimited. - [see Mail.4:68] - [Fixed in 5.1.2 - changed expand() to do the right thing.] - -x pdksh 5.1.2, -: ^c during $ENV or .profile kills shell; should just go - to prompt. - [see Mail.5:14] - [fixed in 5.2.4 - added intr_ok flag to main.c(include)] - -x pdksh 5.1.2, - (reported by Dan Quinlan): when shell prints out - execution trees (typeset -f), if botches elif statements. - [see Mail.5:17] - [fixed in 5.1.3 - changed tree.c(ptree) to deal with elif.] - -x pdksh 5.1.2, - (reported by Dale DePriest): fc -l -- -40 fails if there - are fewer than 40 commands. - [see Mail.5:19] - [fixed in 5.1.3 - changed history.c(histget) to allow out of range numbers] - -x pdksh 5.1.2, - (reported by Art Mills): file completion in command mode - doesn't work on a single character. - [see Mail.5:13] - [fixed in 5.1.3 - in vi.c(vi_cmd) call complete_word() with 1 not 0] - -x pdksh 5.1.2, - (reported by Dan Quinlan): an error in a let statement - causes shell to exit function/script. at&t ksh just prints error and - returns from let. - [see Mail.5:17] - [fixed in 5.2.3 - added error_ok arg to evaluate() and v_evaluate()] - -x pdksh 5.1.2, - (reported by Art Mills): if markdirs option is set, file - completion in vi adds two slashes to directories. - [see Mail.5:35] - [fixed in 5.1.3 - vi.c(complete_word), don't add / if file ends in one] - -x pdksh 5.1.2, - (reported by Dale DePriest): history read from history file - have negative numbers and can't be accessed (fc thinks neg numbers are - relative). - [see Mail.5:39] - [fixed in 5.1.3 - EASY_HISTORY/hist_init: increment line for each line] - -x pdksh 5.1.2, - (reported by David Tamkin): FPATH isn't searched if PATH - search can't find command (undocumented at&t ksh feature). - [see Mail.5:45] - [fixed in 5.1.3 - exec.c(findcom) search FPATH if PATH search fails] - -x pdksh 5.1.2, - (reported by Dan Quinlan): output typeset -f isn't - very pretty (no indenting done). - [see Mail.5:17] - [fixed in 5.1.3 - indenting added to ptree routines] - -x pdksh 5.0.9, ISC 3.2 (reported by cobra@guarany.cpd.unb.br): Running the - following script with pdksh crashes the machine: - cat > /tmp/foobar - The same command in an interactive pdksh does not cause a crash. - [see Mail.3:21,Mail.5:62] - [Fixed by Interactive - it is caused by an OS bug for which there is a patch] - -x pdksh 5.1.3, linux - (reported by Dan Quinlan): doesn't compile under new - linux due to declaration conflict between basename() in unistd.h and - pdksh'd basename. - [see Mail.5:90] - [fixed in 5.2.0 - changed basename() to arrayname()] - -x pdksh 5.1.3, - (reported by William Hudacek): very long prompts cause - vi command line editor grief. - [see Mail.6:2] - [fixed in 5.2.0 - initial part of prompt is stripped if its too long] - -x pdksh 5.1.3, - (reported by Roberto Zacheo): when set -u, variable trimming - with always causes an error. - [see Mail.6:21] - [fixed in 5.2.0 - fixed varsub() to test if variable is null] - -x pdksh 5.1.3, - (reported by David Tamkin): when a function is autoloaded, - ksh complains the definition file didn't define the function, even if it did. - [see Mail.6:52] - [fixed in 5.2.0 - exec.c(comexec): when checking if defined, use cp, - -x pdksh 5.1.3, ICS unix 3.2 (reported by Robert Clark): auto configuration - test for memmove doesn't work - [see Mail.6:65] - [fixed in 5.2.0 - special cases added for memmove, bcopy, memset] - -x pdksh 5.1.3, Unixware (Intel-SVR4.2) (reported by Thanh Ma): auto - configuration test for memset doesn't work; same for rlimit type. - [see Mail.6:67] - [fixed in 5.2.0 - special cases added for memmove, bcopy, memset; rlim_t - configuration stuff re-arranged] - -x pdksh 5.1.3, - (reported by Mike Jetzer + fix): . in vi doesn't work - after history motion or after one command is completed and another is being - edited. - [see Mail.6:85] - [fixed in 5.2.0 - fix up classify table, special case for empty initial - insert] - -x pdksh 5.1.3, - Janjaap van Velthooven: ^v (version) missing in vi mode. - [see Mail.6:98] - [fixed in 5.2.0 - added] - -x pdksh 5.1.3, - : y% on or before right bracket/paren/brace doesn't yank the - brackets - just what is in the brackets... - [fixed in 5.2.0 - changes to vi.c(domove,vi_cmd)] - -x pdksh 5.1.3, - (reported by Rob Mayoff): [[ ]] command doesn't do lazy - evaluation. - [see Mail.7:2] - [fixed in 5.2.1 - test routines re-arranged to deal with this] - -x pdksh 5.1.3, - (reported by Will Renkel): "r | more" doesn't work (nothing - is sent to more). - [see Mail.7:13] - [fixed in 5.2.0 - history commands now done in c_fc, not pushed onto input - stack] - -x pdksh 5.1.3, - (reported by Rod Byrne, John Rochester): if a program leaves - the non-blocking (O_NONBLOCK) flag set after it exists, the shell - exits (multiple eofs). - [see Mail.7:15,16,51] - [fixed in 5.2.0: O_NONBLOCK is reset if read fails with EAGAIN,EWOULDBLOCK] - -x pdksh 5.1.3, - (reported by Dale DePriest + fix): emacs: can't delete chars - from pattern in incremental search mode. - [see Mail.7:17] - [fixed in 5.2.0 - handle it] - -x pdksh 5.1.3, Linux 1.2.2 (reported by Fritz Heinrichmeyer + fix): siglist.sh - doesn't work due to bug in bash 1.4.3 (trap is called incorrectly in - subshell causing temp file to be removed prematurely). - [see Mail.7:21] - [fixed in 5.2.0 - clear all traps in subshell so file isn't removed] - -x pdksh 5.1.3, - (reported by Dale DePriest + fix): emacs: can't prefix - commands with more than single digit; many commands don't use nnumber - prefix. - [see Mail.7:26,40] - [fixed in 5.2.0 - x_set_arg reads sequence of numbers, other commands - changed to use x_arg] - -x pdksh 5.1.3, - (reported by Dale DePriest): fc command line parsing - (and its interaction with history alias) doesn't act like at&t ksh: - history -40 gives bad option 4 error. - [see Mail.7:41,49] - [fixed in 5.2.1 - kludge parsing of -40 (numbers are option letters)] - -x pdksh 5.1.3, - (reported by Dale DePriest): if PS1 contains paramaters that - get expanded, and if those parameters contain any ! characters, the !'s get - changed to history numbers. - [see Mail.7:44] - [fixed in 5.2.0 - substitution done after ! and !! substitution] - -x pdksh 5.1.3, - (reported by Steve Wallis): set -a (set -o allexport) has - no effect. - [see Mail.7:47] - [fixed in 5.2.0 - changes to c_read, c_getopts, and comexec] - -x pdksh 5.1.3, - (reported by Alexander S. Jones): (sleep 10000&) waits for - the sleep to complete. - [see Mail.7:54] - [fixed in 5.2.0 - execute() case TASYNC clears EXEC flag in call to execute] - -x pdksh 5.1.3, - (reported by Will Renkel): positional parameters can't be - accessed within temporary variable assignments (eg, "FOO=$1 blah" doesn't - set FOO to $1. - [see Mail.7:57] - [fixed in 5.2.0 - var.c(newblock) - copy argc/argv from previous environment] - -x pdksh 5.1.3, SCO unix ? (reported by Sean Hogan): job control stuff doesn't - work as sco doesn't do job control operations on /dev/tty. - [see Mail.7:30,43,69,70,74] - [fixed in 5.2.0 - don't try opening /dev/tty if on SCO] - -x pdksh 5.1.3, - (reported with fix by Mike Jetzer): vi globing tacks - * at the end of files even if there are globing chars in last component - of filename (at&t ksh does not). - [see Mail.7:71] - [fixed in 5.2.0 - don't append * if there are unescaped globing chars] - -x pdksh 5.1.3, - (reported with fix by Gabor Zahemszky): typoes in acconfig.h, - sh.h uses SVR3_PGRP insteda of SYSV_PGRP. - [see Mail.7:87] - [fixed in 5.2.0] - -x pdksh 5.1.3, - (reported by Gabor Zahemszky): emacs doesn't have ^[^]. - [see Mail.7:87] - [fixed in 5.2.0 - added search-char-backward] - -x pdksh 5.2.0, - (reported by David Tamkin): pwd -P doesn't strip .. and . - properly. - [see Mail.7:98] - [fixed in 5.2.0 - include ksh_stat.h in c_ksh.c] - -x pdksh 5.2.0, - (reported by Dale DePriest): unistd.h config test - doesn't include sys/types before dirent.h. - [see Mail.8:2] - [fixed in 5.2.0] - -x pdksh 5.2.0, - (reported by Robert Gallant): emacs file/command completion - code can clobber memory. - [see Mail.8:11] - [fixed in 5.2.1 - wrong variable being checked in buffer growing in - emacs.c(compl_file,compl_command)] - -x pdksh 5.2.0, - (reported by David Tamkin): when CDPATH set and cd'ing to a - directory that doesn't exist, the error message contains the last element - of the CDPATH. - [see Mail.8:8] - [fixed in 5.2.0 - fixed error message] - -x pdksh 5.2.0, - (reported by David Tamkin): if PS1 has an error in it - (eg, parameter expansion error), the shell loops forever printing - the error. - [see Mail.8:32] - [fixed in 5.2.3 - create error handling environment while expanding PS1] - -x pdksh 5.2.0, Coherent machines (reported by Gabor Zahemszky): insert after - movement in emacs mode replaces all chars with first char on line. - System's bcopy doesn't handle overlapping src/dst. - [see Mail.8:38,43] - [fixed in 5.2.1 - check for broken memmove/bcopy in aclocal.m4] - -x pdksh 5.2.0, - (reported by Gabor Zahemszky): ^[= in vi prints empty - strings for directory matches if markdirs is set. - [see Mail.8:48] - [fixed in 5.2.1 - skip trailing /'s before looking for last /] - -x pdksh 5.2.0, - (reported by Gabor Zahemszky): <ESC>^H bound to del-back-char - not del-back-word - [see Mail.8:50-52] - [fixed in 5.2.1 - fixed x_emacs_keys] - -x pdksh 5.2.1, - (reported by David Tamkin): compile fails due to lack - of c_test.h - [see Mail.8:58] - [fixed in 5.2.2 - fixed put c_test.h in distribution] - -x pdksh 5.2.2, - (reported by Simon J. Gerraty): hist_source not being - initialized in complex history. - [see Mail.8:64] - [fixed in 5.2.3 - set it in second hist_init()] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): set -A does not reset - the array contents. - [see Mail.8:65] - [fixed in 5.2.3 - changed var.c(unset) to unset whole array if appropriate] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): getopts stops after an error; - at&t ksh carries on with next option. - [see Mail.8:65] - [fixed in 5.2.3 - remove GI_DONE flag from ksh_getopt()] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): getopts prints shell name - twice in error messages. - [see Mail.8:65] - [fixed in 5.2.3 - added GI_NONAME flag] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): pdksh's test doesn't know about - /dev/fd/n. - [see Mail.8:65] - [fixed in 5.2.3 - added test_stat() and test_eaccess()] - -x pdksh 5.2.2, - (reported by Thomas Gellekum): config test for memmove/bcopy - missing semi-colon - [see Mail.8:67] - [fixed in 5.2.3] - -x pdksh 5.2.2, - (reported by Donald Craig): fc string doesn't find string - if it is the most recent command. - [see Mail.8:76] - [fixed in 5.2.3 - fixed off by one error in history.c(hist_get)] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): pdksh doesn't do the - "You have running jobs" when user attempts to log out. - [see Mail.8:74] - [fixed in 5.2.3 - added set -o nohup option with supporting code] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): configure test for - broken memmove/bcopy doesn't work. - [see Mail.8:93] - [fixed in 5.2.3 - fixed test to copy overlapping buffers] - -x pdksh 5.1.3, - (reported by <wendt@sv5.mch.sni.de>): doesn't compile on - solaris 5.x with COMPLEX_HISTORY defined. - [see Mail.8:98] - [fixed in 5.2.3 - undef COMPLEX_HISTORY if flock not available] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): tilde expansion not preformed - in word part of ${foo[-+=?} substitution. - [see Mail.9:7] - [fixed in 5.2.3 - allow ~foo to end in a close brace] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): "fc 30" edits from 30 to - most recent history (should be just 30). - [see Mail.9:7] - [fixed in 5.2.3 - if !-l and no last given, use first] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): [many problems with man page] - [see Mail.9:12] - [fixed in 5.2.3 - fixed problems] - -x pdksh 5.2.2, - (reported by Gabor Zahemszky): #else followed by non-comment - in sigact.c. - [see Mail.9:13] - [fixed in 5.2.3 - turn it into a comment] - -x pdksh 5.2.2, - (reported with fix by Gabor Zahemszky): two argument form of - cd doesn't work. - [see Mail.9:14] - [fixed in 5.2.3 - in c_cd(), use current_wd not path] - -x pdksh 5.2.2, - (reported with fix by Gabor Zahemszky): command -V doesn't - report reserved words. - [see Mail.9:30] - [fixed in 5.2.3 - in c_whence(), look for reserved words if vflag set] - -x pdksh 5.2.3, - (reported by Dale DePriest): at&t's tbl wants space - between font specification and end of table descrption (ie, fB . not - fB.). - [see Mail.9:41] - [fixed in 5.2.4 - put spaces in] - -x pdksh 5.2.3, - (reported by David Tamkin & Claus L{gel Rasmussen): PS1 - isn't imported from environment anymore. - [see Mail.9:43,76] - [fixed in 5.2.4 - main: don't set PS1 if it is already set] - -x pdksh 5.2.3, - (reported by Gary Rafe): If PS1 contains newlines, vi - editing mode dones't redraw lines properly. - [see Mail.9:63] - [fixed in 5.2.4 - added prompt_skip stuff to vi/emacs] - -x pdksh 5.2.3, - (reported & fixed by Mike Jetzer): cd: error message if - directory didn't exist was wrong. - [see Mail.9:66] - [fixed in 5.2.4 - print correct string in error message] - -x pdksh 5.2.3, - (reported & fixed by Mike Jetzer): vi: <ESC>* shouldn't append - a * if word contains a $. - [see Mail.9:66] - [fixed in 5.2.4 - vi.c(glob_word): check for $ in word, check for null - expansion] - -x pdksh 5.2.3, - (reported & fixed by Mike Jetzer): vi: <ESC>= doesn't - list expansions in column form. - [see Mail.9:66] - [fixed in 5.2.4 - use pr_menu to print things nicely] - -x pdksh 5.2.3, - (reported Larry Bouzane): should be a way of installing - binary/man page as pdksh instead of ksh. - [see Mail.9:100] - [fixed in 5.2.4 - use the --enable-shell=pdksh option to configure] - -x pdksh 5.2.3, - (reported by Gabor Zahemszky): [many problems with man - page] - [see Mail.10:20] - [fixed in 5.2.4 - fixed problems] - -x pdksh 5.2.3, - (reported by Gabor Zahemszky): exec 1<&9 reports - error with ">&9" in it. - [see Mail.10:20] - [fixed in 5.2.4 - changed iosetup()] - -x pdksh 5.2.3, - (reported by Gabor Zahemszky): man page doesn't document - /dev/fd/N - [see Mail.10:20] - [fixed in 5.2.4 - updated manual] - -x pdksh 5.2.3, - (reported by Ted Coady): [[ foo/bar = foo* ]] - fails; should succeed. - [see Mail.10:32] - [fixed in 5.2.4 - fixed problem in exec.c(dbteste_getopnd)] - -x pdksh 5.2.3, - (reported by Ruei-wun Tu): make on NeXT/NeXTSTEP 3.3 - doesn't understand .PRECIOUS target and so does nothing. - [see Mail.10:43] - [fixed in 5.2.4 - moved .PRECIOUS after all in Makefile.in] - -x pdksh 5.2.3, - (reported & fixed by Paul Borman): shell doesn't kill - foreground process when SIGHUP received; Also, CONT sent before HUP. - [see Mail.10:44] - [fixed in 5.2.4 - j_exit now sends HUP to foreground process] - -x pdksh 5.2.3, AIX 3.2.5 (reported by Ian Portsmouth): C compiler compains - about sigtraps[] being re-declared in trap.c. - [see Mail.10:73] - [fixed in 5.2.4 - use cpp define to avoid bogus re-declaration error] - -x pdksh 5.2.3, - (reported by Michael Haardt): ENV should not be - included if shell is compiled as sh and posix option not set. - [see Mail.10:83] - [fixed in 5.2.4 - only include ENV if POSIX, if compiled as sh] - -x pdksh 5.2.3, - (reported & fixed by DaviD W. Sanderson): case statements - don't allow {/} in place of IN/ESAC. - [see Mail.10:77,78] - [fixed in 5.2.4 - allow {/} in case statements] - -x pdksh 5.2.3, - (reported by Larry Daffner): $? is incorrectly zero'd - at start of traps. - [see Mail.11:9] - [fixed in 5.2.4 - don't clear exstat in main.c(shell)] - -x pdksh 5.2.3, - (reported by Frank "Crash" Edwards): configure on linux XXX - doesn't detect the presence of lstat(). - [see Mail.11:36] - [fixed in 5.2.4 - change configure to include <sys/stat.h> in lstat() test] - -x pdksh 5.2.3, - (reported by Gabor Zahemszky): typeset -f dumps core - in the after using autoload functions. - [see Mail.11:74?] - [fixed in 5.2.4 - c_typeset no longer traverses the array link for functions] - -x pdksh 5.2.3, - (reported by Gabor Zahemszky): typeset -f does not report - undefined autoload functions - [see Mail.11:74?] - [fixed in 5.2.4 - c_typeset: don't ignore unset functions] - -x pdksh 5.2.3, - (reported by Dale DePriest): alias -t -r does not - reset aliases. - [see Mail.11:99] - [fixed in 5.2.4 - c_alias: call ksh_getopt_reset() before calling c_unalias] - -x pdksh 5.2.3, - (reported & fixed by Jason Tyler): 'echo abc^Jfc -e - a=b e' - echos b, not bbc. - [see Mail.11:100?] - [fixed in 5.2.4 - hist_replace: use s, not last] - -x pdksh 5.2.3, - (reported by Jason Tyler): 'fc -e -' when there is - no history causes infinite loop. - [see Mail.11:100?] - [fixed in 5.2.4 - histbackup: allow histptr to go below history] - -x pdksh 5.2.4, - (reported by David Tamkin): jmp_buf is used instead of - sigjmp_buf. - [see Mail.XXX:XXX] - [fixed in 5.2.5 - added ksh_jmp_buf and defined appropriately] - -x pdksh 5.2.4, - (reported by Stephen Coffin): /<RETURN> in vi mode does not - repeat last search. - [see Mail.XXX:XXX] - [fixed in 5.2.5 - vi.c(vi_hook) - make it repeat last search] - -x pdksh 5.2.4, - (reported by Gabor Zahemszky): functions containing select - commands aren't printed correctly by typeset. - [see Mail.XXX:XXX] - [fixed in 5.2.5 - tree.c(ptree) - add case for TSELECT] - -x pdksh 5.2.4, - (reported & fixed by Stefan Dalibor): COLUMNS isn't set on - shell start up (and window size is ignored) 'cause tty_fd isn't valid when - x_init() is called. - [see Mail.XXX:XXX] - [fixed in 5.2.5 - call x_init() after j_init() is called] - -x pdksh 5.2.4, - (reported by Will Renkel): "echo -" just prints a blank - line - should print the minus. - [see Mail.XXX:XXX] - [fixed in 5.2.5 - c_ksh.c(c_print): don't do argument parsing on lone -] - -x pdksh 5.1.3, - (reported by Gabor Zahemszky): emacs doesn't have ^[*. - [see Mail.7:87] - [fixed in 5.2.5] - -x pdksh 5.2.3, - (reported by Mike Jetzer): in vi, <ESC>= doesn't append - a / after directories. - [see Mail.9:66] - [fixed in 5.2.5] - -x pdksh 5.2.0, - (reported by Gabor Zahemszky): can set readonly variables - via command assignments (eg, "readonly x=y; x=z /bin/echo hi" should - fail and doesn't). - [see Mail.8:50,65] - [fixed in 5.2.5 - LOCAL_COPY flag passed from comexec() down to local()] - -x pdksh 5.2.4, - (reported by Tom Karches): history: "r old=new", with - no commands prefix given, prints "fc: too mnay arguments" - it should - do the subst on the previous command. - [see Mail.XXX:XXX] - [fixed in 5.2.5] - -x pdksh 5.2.3, - (reported by Vigen Pogosyan): assignments in $(( ... )) - remember the base that was assigned in pdksh - does not in at&t ksh. - [see Mail.10:54] - [fixed in 5.2.5: uset setint() in expr.c(evalexpr)] - -x pdksh 5.2.4, - (reported by Gabor Zahemszky): emacs: ^O steps down - two lines (should be 1). - [see Mail.XXX:XXX] - [fixed in 5.2.5: convert history line to command number, then convert back] - -x pdksh 5.2.3, - (reported by David Gast(? gast@twinsun.com)): fc -ln -1 -1 - reports the current command, not the previous command. - [see Mail.10:49] - [fixed in 5.2.5] - -x pdksh 5.2.3, - (reported by Matthew Green): foo=`^Jecho bar` doesn't - set foo to bar (foo is empty). - [see Mail.XXX:XXX] - [fixed in 5.2.5: syn.c: set multiline.on when source is SSTRING] - -x pdksh 5.2.5, - (reported by Gabor Zahemszky): continue/break: if n - is too big, shell prints internal error message. - [see Mail.XXX:XXX] - [fixed in 5.2.6: fix c_brkcont to use last loop if n is too big] - -x pdksh 5.2.5, - (reported by Gabor Zahemszky): set: +o in ksh93 - prints command that sets various options. - [see Mail.XXX:XXX] - [fixed in 5.2.6: changed misc.c(printoptions)] - -x pdksh 5.2.5, - (reported by Gabor Zahemszky): COLUMNS/LINES variables - are not exported. - [see Mail.XXX:XXX] - [fixed in 5.2.6: use typeset() in edit.c(x_init) to export COLUMNS/LINES] - -x pdksh 5.2.5, - (reported by Gabor Zahemszky): emacs: <ESC><ESC> puts - space after completed directories. - [see Mail.XXX:XXX] - [fixed in 5.2.6: check for single/non-directory match in emacs.c(do_complete)] - -x pdksh 5.2.5, - (reported by Gabor Zahemszky): vi: # removes comment - and executes if command already commented. - [see Mail.XXX:XXX] - [fixed in 5.2.6: added vi.c(do_comment)] - -x pdksh 5.2.7, - (reported by Adrian Marsh): test doesn't have == operator. - [see Mail.XXX:XXX] - [fixed in 5.2.8: added == to c_test.c operator table] - -x pdksh 5.2.7, - (reported by Mike Jetzer): pdksh sets/exports COLUMNS/LINES - which causes applications not to respond to window size changes. - [see Mail.XXX:XXX] - [fixed in 5.2.8: COLUMNS/LINES no longer exported automatically] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): getopts sets OPTIND differently - that at&t ksh when a bad option is given. - [see Mail.XXX:XXX] - [fixed in 5.2.8: OPTIND not set if option was bad - fragile fix - may go away] - -x pdksh 5.2.7, - (reported with fix by Marc Olzheim): sh version shouldn't - have mail check stuff, macro expansion in PS[0-9]. - [fixed in 5.2.8: added lots of ifdefs] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): sub commands in PS1 cause - a warning message to be printed. - [see Mail.XXX:XXX] - [fixed in 5.2.8: lex.c(set_prompt) - don't print the warning message] - -x pdksh 5.2.7, - (reported by Tom Watson): some environment variables - (eg, PATH) are converted to uppercase on 16-bit int machine. - [see Mail.XXX:XXX] - [fixed in 5.2.8: struct tbl.flag (32 bit thing) was being treated as an - int in some places] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): unset always returns 0 - should - return 1 if variable/function is not set. - [see Mail.XXX:XXX] - [fixed in 5.2.8: fixed c_sh.c(c_unset)] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): select should only print the - menu the first time, if REPLAY is empty, or if a blank line is entered. - [see Mail.XXX:XXX] - [fixed in 5.2.8: fixed up exec.c(execute,do_selectargs)] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): shell reports "cannot execute" - error if file exists, even if . not in path. - [see Mail.XXX:XXX] - [fixed in 5.2.8: fixed up exec.c(comexec)] - -x pdksh 5.1.3, - (reported with partial fix by ra@rhi.hi.is): shell doesn't - listen to sigwinch. - [see Mail.7:7 and related] - [fixed in 5.2.8: changed edit.c(x_init) to catch sigwinch] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): typeset doesn't report - variables that have attributes (like export) but no values. - [see Mail.XXX:XXX] - [fixed in 5.2.8: fixed up c_ksh.c(c_typeset)] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): error message printed as - a result of "set -o nounset" is different from at7t ksh. - [see Mail.XXX:XXX] - [fixed in 5.2.8: fixed error messges in eval.c] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): vi/emacs: when listing - command/file completions, should go back at most one space. Also, should - allow completions on zero length names. - [see Mail.XXX:XXX] - [fixed in 5.2.8: fixed edit.c(x_locate_word); now allows zero-length - file completions (but not command)] - -* pdksh 5.2.7, - (reported by Gabor Zahemszky): emacs: <esc># doesn't do - the comment thing. - [see Mail.XXX:XXX] - [fixed in 5.2.8: added emacs.c(x_comment) et al.] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): arithmatic expressions - containing variables not expanded as in at&t ksh. eg, "x=1+2, let y=x" - fails. - [see Mail.XXX:XXX] - [fixed in 5.2.8: added evaling/INEXPREVAL/ET_RECURSIVE code to expr.c] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): unsetting the 0th element - of an array kills the whole array. - [see Mail.XXX:XXX] - [fixed in 5.2.8: var.c(unset) - allow ARRAY to be preserved] - -x pdksh 5.2.7, - (reported by Gabor Zahemszky): unsetting a function while - it is being executed can result in core dump. - [see Mail.XXX:XXX] - [fixed in 5.2.8: table.c(texpand) - dont free if FINUSE is set] - -* pdksh 5.2.7, - (reported by Gabor Zahemszky): exec 3<&p doesn't close - shells copy of the coprocess file desc. - [see Mail.XXX:XXX] - [fixed in 5.2.8: coprocess stuff made to act like ksh93 co-processes] - -x pdksh 5.2.8, - (reported with fix by Lars Hecking): doesn't compile as - sh - c_ksh.c and jobs.c boom out. - [see Mail.XXX:XXX] - [fixed in 5.2.9: added ifdef KSH to appropriate places] - -x pdksh 5.2.8, - (reported by Paolo Zeppegno): assignments containing brackets - are treated as commands. - [see Mail.XXX:XXX] - [fixed in 5.2.9: fixed bug in vars.c(skip_wdvarname).] - -x pdksh 5.2.5, - (reported by Adrian Marsh): configuration on Linux FT fails. - Caused by configure script using -g flag - gcc passes -lg to ld, ld fails - to find -lg (autoconf or Linux FT bug). - [see Mail.XXX:XXX] - [fixed in 5.2.9: changed autoconf's -g test to do linking as well.] - -x pdksh 5.2.8, Solaris 2.5.1 (reported by Stefan Dalibor): 2 tests - (xxx-exec-environment-1 and 2) fail because printenv isn't found. - [see Mail.XXX:XXX] - [fixed in 5.2.9: changed test to use env instead] - -x pdksh 5.2.8, - (reported by Stefan Dalibor): shell assumes 80 columns when - it starts up if COLUMNS is set correctly in the environ. - [see Mail.XXX:XXX] - [fixed in 5.2.9: fixed so window size is checked at startup] - -x pdksh 5.2.8, NeXT machines (reported by Kai Wong): clock_t, which lives - in sys/time.h, isn't found by configure (causes warning messages). - [fixed in 5.2.9: configure now checks in sys/time.h] - -x pdksh 5.2.3, - (reported by Mike Jetzer): in vi, <ESC>= on word with ~ - but no /, beeps (or prints final path component?). - [see Mail.9:66] - [fixed in 5.2.9: fixed edit.c(add_glob) so no * is appended to ~username] - -x pdksh 5.1.3, NeXT machines (reported by Jason Baugher): job control doesn't - work on NeXT machines (both m68k and x86 based) in rlogin sessions. - (caused by open("/dev/tty") failing - rlogin on NeXT doesn't set up - controlling tty properly). - [see Mail.7:29] - [fixed in 5.2.9: added hack to main to get a controlling tty] - -x pdksh 5.2.8, NeXT 3.2 (reported by Andrew S Townley): the output of the - siglist.sh script fills the disk. Also, the signal list generated (by the - fixed script) is mostly empty. - [see Mail.XXX] - [fixed in 5.2.9: fixed siglist.sh script to avoid infinite loops. Added - comment to README warning of problem with NeXT's native cc -E] - -x pdksh 5.2.9, - (reported by Loris Talpo): long prompts are messed up in - vi mode. - [see Mail.XXX] - [fixed in 5.2.9: lex.c(pprompt) was broken] - -x pdksh 5.2.9, - (reported by Will Renkel): a double backslash followed - by a newline in an unquoted here document results in one of the backslashes - and the newline being stripped. - [see Mail.XXX] - [fixed in 5.2.10: fixed backslash-newline processing in lex.c] - -x pdksh 5.2.9, - (reported by Han Holl): read x?prompt doesn't work - on non-interactive shells when the input is from a tty. - [see Mail.XXX] - [fixed in 5.2.10: changed test in c_read() from FTALKING to isatty] - -x pdksh 5.2.10, - (reported by Dale DePriest): expanding aliases causes - extra input. - [see Mail.XXX] - [fixed in 5.2.11: fixed syn.c(c_list).] - -x pdksh 5.2.10, - (reported by John Rochester): window size changes don't - happen on Dec unix (osf) because TIOCGWINSZ is defined in <sys/ioctl.h> - not in <termios.h>. - [see Mail.XXX] - [fixed in 5.2.12: sys/ioctl.h included with termios.h/termio.h if possible] - -x pdksh 5.2.11, - (reported by Randy Bouzane): aliases in command substitutions - result in code dumps. - [see Mail.XXX] - [fixed in 5.2.12: lex.c(getsc__): break if eof is read] - -x pdksh 5.2.11, - (reported by Will Renkel): aliases containing ;<newline> - or <newline><newline> aren't fully read/executed. - [see Mail.XXX] - [fixed in 5.2.12: syn.c(get_command): call inalias()] - -x pdksh 5.2.11, SGI/IRIX 5.2 (reported by bert@xpilot.com): pipelines - containing built in commands hang forever. - [see Mail.XXX] - [fixed in 5.2.12: fixed pgrp sync code in jobs.c] - -x pdksh 5.2.11, - (reported by Herbert Thielen via Larry Daffner): shell leaves - temp files around when executing shell scripts that have functions with - here documents which end in an exec. - [see Mail.XXX] - [fixed in 5.2.12: call main.c(cleanup_proc_env()) from exec.c(execute()).] - -x pdksh 5.2.12, - (reported with fix by Eric J. Chet via Thomas Gellekum): - . can cause core dump when cleaning up. - [see Mail.XXX] - [fixed in 5.2.13: call shf_close() before quitenv()] - -x pdksh 5.2.12, - (reported by Bruce Burns): test with a single -t option - always returns true (does a string test instead of isatty(1)). - [see Mail.XXX] - [fixed in 5.2.13: do the isatty(1) unless in posix mode] - -x pdksh 5.2.12, - (reported by David Tamkin): aliases ending in "; " - cause continuation prompt to be printed. - [see Mail.XXX] - [fixed in 5.2.13: syn.c(c_list) now handles blank lines, removed cf=CONTIN - in syn.c(get_command)] - -x pdksh 5.2.12, - (reported by Herbert Thielen via Larry Daffner): set - does not allow +o and -o options in the same command line. - [see Mail.XXX] - [fixed in 5.2.13: changed ksh_getopt to remove exclusion code.] - -x pdksh 5.2.12, - (reported by Han Holl <jeholl@euronet.nl>): - set -A foo -- bar doesn't skip the --. - [see Mail.XXX] - [fixed in 5.2.13: changed misc.c(parse_args) so A takes an option] - -x pdksh 5.2.12, - (reported by David Tamkin): -e (errexit) should be ignored - when processing profile and ENV. - [see Mail.XXX] - [fixed in 5.2.13: errexit saved/cleared/restored in main()] - -x pdksh 5.2.12, - (reported by Han Holl <jeholl@euronet.nl>): - [ -x foo ] succeeds for root if foo exists. - [see Mail.XXX] - [fixed in 5.2.13: changed c_test.c(test_access) to use stat in this case] - -x pdksh 5.2.4, - (reported by Gabor Zahemszky): echo ${foo[*]#/} generates - bad substsitution error, newer ksh's don't (older ones do); - error includes {...#@(/)}. - [fixed in 5.2.13: moved the @(..) hack from yylex() to expand()] - -x pdksh 5.2.8, - : extended pattern globing doesn't handle nested parens (), - e.g., [[ aby = +(a|b(x|y)) ]] - -x pdksh 5.2.12, - (reported by Marc Olzheim <marcolz@stack.nl>): - "echo a | (echo b | echo c)" causes a core dump. - [see Mail.XXX] - [fixed in 5.2.13: clear XPIPEI,XPIPEO at start of jobs.c(exchild)] - -x pdksh 5.2.12, - (reported by Curt Finch <curt@pnk.com>): in an interactive - shell, globbing isn't done on redirections if the command is part of - a pipeline. e.g., in "cat < /tmp/*gz | grep foo", the /tmp/*gz is - not expanded. - [see Mail.XXX] - [fixed in 5.2.13: clear XPIPEI,XPIPEO at start of jobs.c(exchild)] - -x pdksh 5.2.12, - (reported with fix by Greg A. Woods <woods@most.weird.com>): - in emacs, ^[_ (aka ^[.) gets the word from the previous line relative to - where the current line came from in the history. It should get it from - the last executed line ala at&t ksh. - [see Mail.XXX] - [fixed in 5.2.13: use absolute last command] - -x pdksh 5.2.12, - (reported by Gabor Zahemszky): MAILCHECK and MAIL - don't report `new mail' unless MAIL is re-assigned. - [see Mail.XXX] - [fixed in 5.2.13: mail code was using variables memory, which was later - trashed by exporting the MAIL variable. Fixed by saving copy of value.] - -x pdksh 5.2.12, - (reported by Gabor Zahemszky): memory gets badly fragmented - when reversing a (large) file using a simple while read loop and variable - concatenation. - [see Mail.XXX] - [fixed in 5.2.13: alloc.c changed to allow malloc() to deal with large - blocks.] - -x pdksh 5.2.12, - (reported by Bernd Eggink <eggink@rrz.uni-hamburg.de>) - ksh style functions don't save/reset/restore OPTIND. - [see Mail.XXX] - [fixed in 5.2.13: save and restore user_opt for ksh-style functions.] - -x pdksh 5.2.12, - (reported by Marc Olzheim <marcolz@stack.nl>) - ${..%..} stuff don't work in SH mode. - [see Mail.XXX] - [fixed in 5.2.13: removed ifdef KSH from misc.c(do_gmatch)] - -x pdksh 5.2.12, - (reported with fix by George Robbins - <grr@shandakor.tharsis.com>) - in sh, "exec 3>&1" does not keep fd 3 open in executed commands. - [see Mail.XXX] - [fixed in 5.2.13: c_sh.c(c_exec): added ifdef KSH around fd_clexec() call] - -x pdksh 5.2.12, - (reported with fix by George White - <gwhite@bodnext.bio.dfo.ca>) - in remove_temps(main.c), space for name field is not allocated correctly. - [see Mail.XXX] - [fixed in 5.2.13: initialize t->name in new structure] - -x pdksh 5.2.12, - (reported with fix by Marc Olzheim <marcolz@stack.nl>): - when at (past) end of the line, word/command completion will skip back - [see Mail.XXX] - [fixed in 5.2.13: edit.c(x_locate_word): delete special handling of - end-of-buffer] - -x pdksh 5.2.12, - (reported by Mike Kelly <tfsmiles@ecst.csuchico.edu>): - doting a directory (or a empty path) is allowed. - [see Mail.XXX] - [fixed in 5.2.13: exec.c(search_access): don't do non-regular files for R_OK] - -x pdksh 5.2.13, - (reported by Mike Kelly <tfsmiles@ecst.csuchico.edu>): - typeset -f FUNC doesn't print follows command (and expression) substitutions. - [see Mail.XXX] - [fixed in 5.2.14: tree.c(tputS): add wp++] - -x pdksh 5.2.13, - (reported by Thomas Gellekum): - make check fails on freebsd with "chmod 644 abcx failed - Inappropriate ...". - [see Mail.XXX] - [fixed in 5.2.14: make test/th convert permissions to octal] - -x pdksh 5.2.13, - (reported with fix by David E. Wexelblat): - when re-allocating memory, too much may be copied from old memory. - [see Mail.XXX] - [fixed in 5.2.14: use min old old size and new size] - -x pdksh 5.2.13, - (reported with fix by David E. Wexelblat): - set -o printed some options sans names. - [see Mail.XXX] - [fixed in 5.2.14: use 0 instead of null in options[] table] - -x pdksh 5.2.13, - (reported by Gabor Zahemszky): - emacs mode: <esc>. in very fist command causes core dump. - [see Mail.XXX] - [fixed in 5.2.14: ring bell if no history in emacs.c(x_prev_histword)] - -x pdksh 5.2.13, - (reported by Keith S McCabe): pdksh dumps core - after a cd command. - [see Mail.XXX] - [fixed in 5.2.14: exec.c(flushcom) was setting bits in table entry, instead - of clearing a single bit] - -x pdksh 5.2.12, - (reported by Jaime A. Urquidi): typeset -i reports - on array elements that have no value (at&t ksh reports on array - base name - no index). - [see Mail.XXX] - [fixed in 5.2.14: hack to c_ksh.c(c_typeset) to generate the ksh88 style - output] - -x pdksh 5.2.13, - (reported with fix by Todd C. Miller): - ulimit -ctn unlimittttted kills shell (resource exceeded). - [see Mail.XXX] - [fixed in 5.2.14: hacked c_ulimit to generate error val is 0 and expr doesn't - start with a digit] - -x pdksh 5.2.13, - (reported with fix by Theo de Raadt): - ". /dev/null" says access denied. - [see Mail.XXX] - [fixed in 5.2.14: exec.c(search_access): allow non-regular file if reading] - -x pdksh 5.2.13, - (reported with fix by Eric Youngdale): flag field in aliases - incorrectly changed (all flags set instead of clearing ISSET) in - exec.c(flushcom). - [see Mail.XXX] - [fixed in 5.2.14: exec.c(flushcom): change = ~ISSET to &= ~ISSET] - -x pdksh 5.2.13, - (reported by Andre Delafontaine): ${#array[*]} prints - largest index instead of number of (set) elements in an array (ksh88 does - the former). - [see Mail.XXX] - [fixed in 5.2.14: eval.c(varsub): count number of elements] - -x pdksh 5.2.13, - (reported by Clifford Wolf): sys_siglist[] doesn't - always have NSIG non-null entries... - [see Mail.XXX] - [fixed in 5.2.14: trap.c(inittrap): check for null sys_siglist entries.] - -x pdksh 5.2.13, - (reported with fix by Todd C. Miller): waitfor in jobs.c - can cause core dump if j_lookup fails. - [fixed in 5.2.14: jobs.c(waitfor): return if j_lookup fails] - -x pdksh 5.2.13, - (reported by Martin Bond): if shell is started several - times in quick succession, echo $RANDOM produces the same results. - [fixed in 5.2.14: main.c(main): seed RANDOM using time, pid, ppid] - -x pdksh 5.2.13, - (reported by Martin Bond): repeating "echo `echo $RANDOM`" - will always produce the same number. - [fixed in 5.2.14: call var.c(change_random) from jobs.c(exchild)] - -x pdksh 5.2.13, hpux 10.x (reported by Mike Kelly): pwd will dump core if - current directory is not readable. - [fixed in 5.2.14: config test & code to work around hpux C library bug] - -x pdksh 5.2.13, linux (reported by Mike Jetzer): getwd warning from linker - [fixed in 5.2.14: configure.in/misc.c: check for getcwd, use it over getwd] - -x pdksh 5.2.13, (reported by Dmitri Kulginov): "trap exit 1" does not set a - trap for HUP (exit is mistaken as a signal name, not a command). - [fixed in 5.2.14: c_sh.c(c_trap): use case sensitive lookup for first arg] - -x pdksh 5.2.13, (reported by Mark Funkenhauser): eval "$(false)" does not - result in $? being set to 1 (is 0). - [fixed in 5.2.14: c_sh.c(c_eval): set exstat to subst_exstat before shell()] - -x pdksh 5.2.13, (reported with fix by Kevin Schoedel): word boundaries in - file completion are only spaces - at&t ksh uses ()<>&| and spaces. - [fixed in 5.2.14: edit.c(IS_WORDC): changed macro to be LEX1 + quotes] - -x pdksh 5.2.13.5, (reported with fix by Martin Lucina <mato@kotelna.sk>): - exit status parsing in exit command incorrect (sets status to random - value if no argument given). - [fixed in 5.2.14: c_sh.c(c_exitreturn): only set exstat if arg given] - -x pdksh 5.2.13.5, (reported with fix by Martin Lucina <mato@kotelna.sk>): - KSH_CHECK_H_TYPE in aclocal.m4 has too many [] around the patterns. - [fixed in 5.2.14: aclocal.m4(KSH_CHECK_H_TYPE): remove two pairs on []] - -x pdksh 5.2.13.5, (reported by Charles M. Hannum <root@ihack.net>): An exit - trap set in a subshell is not executed (unless explicit exit used). - [fixed in 5.2.14: exec.c(execute): changed exit(rv) to unwind(LEXIT).] - -x pdksh 5.2.12, - : MAILCHECK isn't preserved from the environment on startup. - [fixed in 5.2.14: changed main's initcoms[].] - -x pdksh 5.2.13, (reported by Marc Olzheim): time at the end of a pipeline - doesn't print anything. - [fixed in 5.2.14: exec.c(execute): clear XEXEC when calling timex().] - -x pdksh 5.2.13, (reported by David J. McMahon): here documents in subshells - don't work if the parent exits before the subshell. - [fixed in 5.2.14: heredocs now saved in memory, written to temp when needed.] - -x pdksh 5.2.13, (reported by Seiichi Namba): emacs: keys bound in .profile/$ENV - are overridden by stty settings (eg, binding ^U in .profile has no effect). - [fixed in 5.2.14: emacs.c: added x_bound array to track what user has set.] - -x pdksh 5.2.13: vi: failed redo (.) commands caused line to be returned to the - shell (eg, "echo hi/there^[Bdf/."). - [fixed in 5.2.14: vi.c(vi_hook): removed !=0 from VREDO switch expression] - -x pdksh 5.2.13, (reported by Arthor Pool): man page: (a) the time reserved - word is not described; (b) description of command line wrapping is in vi - section only (not in emacs); (c) limit on array indices not mentioned; - (d) ignoreeof ignored if eof read 13 times. - [fixed in 5.2.14: man page updated] - -x pdksh 5.2.13, (reported by Arthor Pool): set -u causes loss of stdout - when command substitution with undefined parameter reference is run - in an interactive shell. - [fixed in 5.2.14: jobs.c(fill_command): don't eval TCOM arguments] - - XXX fd 1 lost (general fd pool handler?, error handler for comsub?) - - AP messages: - time not descr - vi/emacs <+> - trap - typeset -f ... "$(jasdsjh)" ... - array - os2 interrupts + pattern - ignoreeof - set -A -- - set -u -> comsub errors & fill_command eval - -x pdksh 5.2.13, (reported by Dave Hillman): test -nt - and test -ot do not succeed if file2 (file2) does not exist. - [fixed in 5.2.14: c_test.c(test_eval): return true if appropriate stat fails] - diff --git a/bin/ksh/ChangeLog b/bin/ksh/ChangeLog deleted file mode 100644 index 9bd74fcf3a4..00000000000 --- a/bin/ksh/ChangeLog +++ /dev/null @@ -1,1600 +0,0 @@ -Tue Jul 13 14:32:57 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * made pdksh-5.2.14 distribution - -Wed Jun 30 17:42:54 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * c_test.c(test_eval): changed -nt/-ot tests so they succeed - if file2 (file2) `does not exist' (ie, the stat fails). - (based on fix from Dave Hillman). - -Tue May 25 17:23:39 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * jobs.c(fill_command): do not eval() TCOM arguments - can cause - problems. - -Tue May 25 15:26:31 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * new-version.sh,ksh.Man: added version number to man page; update - version as well as date when updating tests/version.t and ksh.Man. - -Mon May 24 20:57:21 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * c_sh.c(c_eval): only set exstat to substs_exstat if in non-posix mode. - -Mon May 24 15:44:10 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * tree.h(FTIME): new define. - * c_sh.c(timex): stuff to get info to/from timex_hook. - * c_sh.c(timex_hook): new function (handles option processing). - * exec.c(execute): call timex_hook() after TCOM eval(). - -Tue May 18 12:23:27 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * vi.c(vi_hook): case VREDO: removed != 0 from switch expression. - -Tue May 18 11:24:12 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * emacs.c(CHARMASK,X_TABSZ): changed from 128 to 256. - * emacs.c(x_size,x_zotc,x_mapout): use iscntl() vs range test. - (Based on changes from Martin Dalecki) - -Thu May 13 17:23:17 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * emacs.c(x_bound,bind_if_not_bound): new variable/function. - * emacs.c(x_bind): set bit in x_bound[]. - * emacs.c(x_emacs_keys): call bind_if_not_bound. - -Thu May 13 14:23:12 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * sh.h: ifdefs for __CYGWIN__ for path defines. - * path.c(simplify_path): ifdefs for __CYGWIN__; preserve leading - double-slash on pathnames. - * c_ksh.c(c_cd): use cygwin_conv_to_full_posix_path(). - * edit.c(x_mode): default eof char to ^D. - - [fixes from Corinna Vinschen and Steven Hein, obtained from - ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/ - porters/Vinschen_Corinna/B20/] - -Wed May 12 12:30:09 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * exit.c(x_mode): set fields of edchars to -1 if corrisponding char - is unset. - * exit.c(x_init): initialize edchars to -2, not -1. - * emacs.c(x_emacs_keys): check if char is >= 0 before setting. - -Wed May 12 11:31:24 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * shf.c(shf_write): don't buffer if buffer is empty and we're - writting a large amount. - * shf.c(shf_open): changed to use shf_reopen instead of shf_fdopen - so alloca failing won't lose the fd. - -Wed May 12 10:19:43 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * sh.h: deleted TT_HEREDOC_RAW define. - * tree.h(struct ioword): added heredoc field. - * tree.c(iocopy,iofree): copy/free heredoc field; remove special case - for IOHERE and name field. - * tree.c(ptree): changed to use heredoc content string (not open temp). - * lex.c(yylex): initialize heredoc field. - * lex.c(readhere): save to string instead of a temp file. - * exec.c(herein): changed first are from file name to heredoc content - string; changed all calls. Changed to always create a new temp file - and write content to it. - -Tue May 11 11:38:22 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * tree.c(iofree): free delim field; don't free name of IOHERE iowords. - -Tue May 11 10:57:53 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * sh.h(func_heredocs): deleted. - * sh.h(EF_FAKE_SIGDIE): added. - * lex.c(readhere): put function heredocs at bottom of env stack. - * main.c(quitenv,cleanup_proc_env): deleted remove_temps(func_heredocs) - calls. - - * main.c(quitenv): moved exit of no oenv to en after reclaim. - * main.c(cleanup_parents_env): free ep->savefd and set to 0. - * main.c(unwind,quitenv): moved code for E_NONE from unwind() - to quitenv(). - -Mon May 10 17:04:03 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * exec.c(herein): restore source to osource after yylex(). - -Mon May 10 12:14:40 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * tree.c(iocopy): don't copy IOHERE name (it belongs to a struct temp). - * tree.c(wdscan): added default case to print internal error. - -Mon May 10 10:39:34 NDT 1999 Michael Rendell (michael@deimos.cs.mun.ca) - - * sh.h(Temp_type): new enum (TT_HEREDOC_RAW, TT_HEREDOC_EXP, - TT_HIST_FILE). - * sh.h(struct temp): added type field. - * io.c(maketemp): added type and tlist arguments; changed - all calls. - -Tue Apr 27 11:31:48 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * exec.c(execute): clear XEXEC in the call to timex() so time - can be used at the end of a pipeline. - -Fri Apr 23 16:29:01 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * mail.c(mcheck): don't check if MAILCHECK is set, just check if - mplist is null. - * mail.c(mcset): new function. - * var.c(setspec): case MAILCHECK: call mcset. - * var.c(unspecial): new function. - * var.c(unsetspec): call unspecial for LINENO, MAILCHECK, RANDOM, - SECONDS, TMOUT. - -Fri Apr 23 15:34:39 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * main.c(initcoms): put MAILCHECK, SECONDS, TMOUT in an eval to - preserve previous values. - * var.c(getspec): case V_SECONDS: don't do anything special if - variable not set. - -Thu Apr 22 15:03:27 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * var.c(setstr): error if var is RDONLY. - * var.c(global): non-letter params: set RDONLY flag after setstr call. - * c_ksh.c(c_getopts), eval.c(expand), exec.c(execute): - removed readonly check. - - * sh.h(KSH_UNWIND_ERROR, KSH_RETURN_ERROR): new defines. - * var.c(setstr): added error_ok argument; changed all calls. - * c_ksh.c(c_getopts): clear READONLY and INTEGER flags for OPTARG; - return non-zero if variable can't be set. - * var.c(typeset): if fake_assign fails, unset the variable's value - and carry on for rest of array, then unwind. - * expr.c(expand,v_expand): changed all calls to use KSH_UNWIND_ERROR - or KSH_RETURN_ERROR. - -Tue Apr 20 16:52:24 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * configure.in: added check dup2. - * sh.h: added dup2 prototype. - * aclocal.m4: replace AC_HEADER_DIRENT so it checks -lndir. - - * missing.c(dup2): new function. - Based on code from Marc Olzheim. - -Fri Apr 16 16:32:27 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * syn.c(lineno_offset): removed variable and all references. - * tree.c(tcopy): copy lineno field. - * var.c(user_lineno): new variable. - * var.c(setspec): added case for V_LINENO (sets user_lineno). - * var.c(getspec): V_LINENO: add in user_lineno. - -Fri Apr 16 15:26:26 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * tree.h(struct op): added lineno field. - * table.h(V_LINENO, current_lineno): new define/variable. - * exec.c(execute): set current_lineno for TCOM. - * syn.c(lineno_offset): new variable. - * syn.c(get_command): set t->lineno. - * syn.c(function_body): save/restore lineno_offset; - * syn.c(compile): initialize lineno_offset - * var.c(initvar,getspec): added V_LINENO entry. - - Changes from Mark Funkenhauser. - -Fri Apr 16 12:18:08 NDT 1999 Michael Rendell (michael@lyman.cs.mun.ca) - - * expr.c,misc.c(getoptions): added int casts to avoid errors from - old K&R compilers. - Fixes from Marc Olzheim. - -Fri Jan 15 12:51:53 NST 1999 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c: pass es as first param to all functions; deleted - es global variable. - -Tue Jan 12 12:28:41 NST 1999 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(x_defbindings[]): removed #else part of ifdef OS2. - - * shf.c(shf_getse): added code to strip \r for OS2. - * lex.c(getsc_line): removed OS2 ifdefs - - * os2/misc.c(ksh_execve),sh.h: added flags argument; changed all calls. - * exec.c(scriptexec): OS2: make copy of a0 before calling - search_access(X_OK). - * sh.h: OS2: changed EXECSHELL, EXECSHELL_STR. - * jobs.c(exchild): set XINTACT. - * os2/config.h: added HAVE_TERMIOS_H. - * os2/configure.cmd: changed test for existence of sed & gcc. - - Fixes from Ilya Zakharevich. - - * tests/th: added -C option, added "category" field. - * tests/th(category_check): new function. - * tests/*.t: added "category: !os:os2" to a few tests. - -Tue Jan 12 11:17:52 NST 1999 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(execute): changed exit(rv) to unwind(LEXIT) to - allow exit traps to be done. - -Tue Jan 5 16:45:00 NST 1999 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_CHECK_H_TYPE): remove extra [] from egrep pattern. - * c_sh.c(c_exitreturn): fixed logic of exit status parsing - (fixes from Martin Lucina). - -Tue Jan 5 16:31:37 NST 1999 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_locate_word): changed IS_WORDC macro from !isspace - to !lex1/'/" - (based on fix from Kevin Schoedel). - -Wed Dec 16 15:02:48 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(kshdebug_init_,kshdebug_printf_,kshdebug_dump_), - sh.h(kshdebug_init,kshdebug_printf,kshdebug_dump): - new macros/functions. - -Wed Dec 16 12:12:23 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_eval): set exstat to substs_exstat to propogate - substition exit status if resulting command is empty - (based on fix from Mark Funkenhauser). - -Tue Dec 15 15:50:34 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(initcom[]): PPID no longer read only. - -Mon Dec 14 17:09:52 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * trap.c(gettrap): added igncase argument; changed all calls. - * c_sh.c(c_trap): use case sensitive compare for first gettrap(). - (fix "trap exit 1"). - -Thu Dec 10 12:24:53 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * configure.in: added test for getcwd. - * aclocal.m4(KSH_OS_TYPE): added case for hpux; added test for - bug in hpux getcwd (dumps core if . is not readable). - * config.h.in: added HAVE_HPUX_GETWD_BUG define. - * aclocal.m4,configure.in: remove AC_C_CROSS or change to AC_PROG_CC. - * misc.c(ksh_get_wd): added code to handle bug in hpux getwd; - changed precedence of getcwd vs getwd (use getcwd if available: - getwd causes warnings under linux). - -Tue Dec 8 17:17:47 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): seed RANDOM using time, pid, ppid (was just time). - -Tue Nov 24 17:17:12 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ulimit.c(c_ulimit): improve setrlimit error message for EPERM - (fix from Todd C. Miller). - -Thu Nov 19 18:09:59 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(waitfor): if j_lookup fails, always return - (fix from Todd C. Miller). - -Fri Oct 23 19:59:25 NDT 1998 Michael Rendell (michael@lenny.cs.mun.ca) - - * jobs.c(JF_SAVEDTTYPGRP,j_resume,j_waitj): added save_ttypgrp - stuff to deal with new gnu su which doesn't exec, but forks - then execs. - -Thu Sep 24 16:23:48 NDT 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * trap.c(inittrap): Don't assume sys_siglist[] has NSIG non-null - entries (fix from clifford@clifford.at). - -Thu Aug 6 14:46:45 NDT 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(varsub): ${#array[*]} now prints N elements, not - max index. - -Sun Jul 19 11:50:21 NDT 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(function_body): fixed bug in handling of empty function - body; if empty, pretend there is a : command. - -Mon Jun 29 10:13:02 NDT 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(search_access): allow non-regular files to be .'ed - (fix from Theo de Raadt). - -Thu Jun 25 17:01:36 NDT 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ulimit.c(c_ulimit): added KSH_RLIM_INFINITY and defined - if system doesn't define RLIM_INFINITY; use when setting limits. - When setting, if expression evaluates to 0 and string was not - a number, generate an error (based on fix from Todd C. Miller). - -Wed Mar 11 16:35:37 NST 1998 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(flushcom): clear ISSET bit, don't set all the other bits - (fix from Eric Youngdale). - -Tue Dec 16 11:07:21 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * shf.c(shf_vfprintf): %e/%f/%g conversion now prints negative - numbers correctly (fix from Larry Bouzane). - -Thu Nov 20 15:16:15 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(x_prev_histword): check if histptr is 0. - -Sat Nov 8 11:46:32 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(options[]): changed null entries to (char *) 0 - (based on fix from David E. Wexelblat). - -Fri Nov 7 14:45:24 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * alloc.c(aresize): avoid memory overrun when copying old memory - to new memory. - (fix from David E. Wexelblat). - -Tue Oct 28 11:26:22 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * tests/th: file-setup code: convert chmod argument to octal. - -Tue Oct 28 11:00:45 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * tree.c(tputS): incr wp after COMSUB and EXPRSUB while loop - to get past null. - -Mon Oct 27 12:38:05 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.13 distribution - -Mon Oct 27 12:21:51 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_dot): use search() error argument to report problem - correctly. - * exec.c(search_access): don't set *errnop if it is already set. - * exec.c(search_access): extended non-regular file check from - just X_OK to both X_OK and R_OK. - -Wed Oct 22 11:49:02 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_locate_word): don't skip trailing space if at end - of buffer (based on fix from Marc Olzheim). - -Fri Aug 15 22:06:53 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(varsub,expand), lex.c(yylex): allow :%, :#, :%% and :## - to be compatible with ksh88. - -Sat Aug 2 12:13:30 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(get_command): case MDPAREN/DBRACKET: do not - clear KEYWORD|ALIAS from syniocf. - -Tue Jul 29 16:24:38 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_exec): added ifdef KSH around fd_clexec() - (based on fix from George Robins). - -Tue Jun 3 12:52:05 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(do_gmatch): removed ifdef KSH about @(..|..) code as it - is needed in SH mode for ${..%..} stuff. - -Mon May 19 16:10:06 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * table.h(struct block): added getopt_state and flags fields; - added BF_DOGETOPTS. - * sh.h,c_ksh.c: moved user_opt decl/defn from c_ksh.c to sh.h. - * var.c(getspec): added case for V_OPTIND. - * var.c(popblock): if BF_DOGETOPTS set, restore user_opt. - * exec.c(comexec): case CFUNC: save user_opt for ksh-style functions. - * c_ksh.c(getopts_reset,c_getopts): removed getopts_noreset variable - and code. - * sh.h(Getopts): added uoptind field. - -Fri May 16 11:40:22 NDT 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(error_prefix): don't print kshname if it is the - same as the source file name. - -Thu Mar 13 10:42:31 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * mail.c(mbset): save a copy of the path so it can't get trashed - (eg, by exporting a variable). - -Wed Feb 26 11:24:06 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(x_prev_histword): get word from last command entered, - not from last command relative to current location in history - (fix from Greg A. Woods). - -Sun Feb 16 13:18:52 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(FTALKING_I): new define - * misc.c(options[]): added anonymous options for internal use: - changed all code using options to not assume null option name - is the end of options (use NELEM()) instead. - Added slot for FTALKING_I - - * c_sh.c(c_read), exec.c(iosetup): test FTALKING_I instead of FTALKING. - * main.c(main): set FTALKING_I. - -Fri Jan 10 16:36:36 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(exchild): use orig_flags instead of flags when testing - XPIPEI/XPIPEO; clear all flags except XEXEC and XERROK. - -Tue Jan 7 11:16:08 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(yynerrs): deleted (not used); deleted all assignments of it. - -Fri Jan 3 13:40:29 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(yylex): case STBRACE: interpret ( | ) as patterns; - case SPATTERN: allow ( as an alias for @(. - -Thu Jan 2 15:44:07 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): set PATH to def_path in startup. - -Thu Jan 2 10:19:43 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(comexec): ifdef KSH the setting of $_; only set $_ to - last arg if interactive. - -Wed Jan 1 13:38:26 NST 1997 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(yylex),eval.c(expand),tree.c(tputS,wdscan,wdstrip): - changed OSUBST/CSUBST encoding to have { or x after xSUBST. - - * lex.c(yylex): case ${: don't prepend @( and append ) to trim patterns. - * eval.c(expand): prepend MAGIC @ and append MAGIC ) to trim patterns. - - * syn.c(function_body): call wdstrip(). - * tree.c(wdstrip): new function. - - * lex.c(yylex): moved handling of < and > into one location. - -Wed Dec 11 13:00:05 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(ksheuid): new variable. - * main.c(main): set/use ksheuid. - * misc.c(change_flag): set ksheuid. - * c_test.c(test_eval): use ksheuid - * c_test.c(test_eaccess): if doing X_OK and user is root, use - stat to avoid false positives on files. - -Mon Dec 9 12:08:56 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): save/clear/restore FERREXIT flag while processing - profile and ENV. - -Wed Dec 4 12:25:23 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(parse_args): change -A option handling - make getopts - gather the option (A: vs A). - -Thu Nov 21 15:42:57 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_alias): accept + options; don't print alias definition - if + option used; allow export flag to be cleared; added -p - option. - -Thu Nov 21 14:35:47 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * tree.c(ptree),c_ksh.c(c_typeset): print ksh functions as - "function foo...", sh functions as "foo()...". - - * c_ksh.c(c_typeset): accept -p flag (does nothing). - -Wed Nov 20 11:36:08 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_typeset): simplified option exclusion code. - - * misc.c(ksh_getopt): allow options in same command line to start - with either + or - (if appropriate). [code existed to similate - ksh88 typeset behaviour which disallowed "typeset +x -i foo"] - -Wed Nov 13 12:02:59 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(c_list): added multi argument; changed all calls to pass - TRUE, except one in yyparse(); changed logic to accept and - ignore blank lines if multi flag is set. - * syn.c(get_command): removed multiline.on/cf=CONTIN test/assignment. - * syn.c(struct multiline_state,struct nesting_state,multiline,nesting, - multiline_push,multiline_pop,nesting_push,nesting_pop): renamed - *multiline* to *nesting*; removed struct multiline_state.on field - (deleted all references). - -Mon Nov 4 16:29:50 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_test.c(c_test): in special < 5 arg code: if single arg is - -t and not in FPOSIX mode, don't decide its a string test. - -Wed Oct 30 11:34:39 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(include): call quitenv() after shf_close() - (fix from Eric J. Chet). - -Wed Oct 30 11:23:17 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(comexec): case CFUNC: set $0 to kshname if non-function - function. - -$OpenBSD: ChangeLog,v 1.16 2013/11/28 10:33:37 sobrado Exp $ - -Tue Oct 29 11:34:58 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.12 distribution - -Fri Oct 25 11:59:48 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_cmd): case Cntl('i'): dont fall through, call complete_word(). - -Tue Oct 22 17:38:21 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * table.h(USERATTRIB): new define. - * c_ksh.c(c_typeset): report unset params only if it has some - interesting attributes. - -Tue Oct 22 15:54:39 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(exchild): changed NEED_PGRP_SYNC code so j_sync_pipe[1] isn't - left open in 2nd+ children. - -Tue Oct 22 12:59:49 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): memset() env to 0. - -Mon Oct 21 12:53:44 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(cleanup_proc_env): new function. - * exec.c(execute): call cleanup_proc_env() before calling ksh_execve(). - -Fri Oct 11 22:53:57 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(display): use ch not e->buf[cur] when printing character. - -Fri Oct 11 13:26:11 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_TIMES_CHECK,KSH_DUP2_CLEXEC_CHECK,KSH_OPENDIR_CHECK): - changed sense of test so "yes" result is printed if you have a good - system. - * aclocal.m4(KSH_C_FUNC_ATTR): changed return type of test_cnst to int. - -Fri Oct 11 13:05:40 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(get_command): added inalias() call when setting cf = CONTIN. - -Thu Oct 10 16:22:03 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(getsc__): case SALIAS: if we read eof, break, don't continue. - -Tue Oct 8 13:14:00 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_TERM): added SYS_IOCTL_WITH_TERMIOS, - SYS_IOCTL_WITH_TERMIO tests. - * tty.h: include <sys/ioctl.h> with <termios.h>/<termio.h> - if possible. - -Tue Oct 8 11:42:36 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.11 distribution - -Tue Oct 8 11:02:54 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(inalias): new function. - * syn.c(c_list): call inalias() instead of testing source->type. - -Mon Oct 7 17:00:40 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.10 distribution - -Mon Oct 7 16:23:53 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_read): when printing prompt, use isatty, not FTALKING. - -Wed Oct 2 12:00:51 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(yylex): redirection stuff: save result of getsc() == '-' - and use it for ungetsc(). - - * lex.h(struct source): moved ugbuf out of union so it can be used - with alias stuff. - * lex.c(getsc__) case SALIAS: instead of appending a space, get the - next character and stuff it in ugbuf. - - * lex.c(getsc_,getsc__): getsc_() renamed to getsc__(). - * lex.c(getsc_,getsc): getsc() macro renamed to getsc_(). - * lex.c(backslash_skip,ignore_backslash_newline): new variables. - * lex.c(getsc): new macro that checks backslash_skip. - * lex.c(getsc_bn_,getsc_bn): getsc_bn() macro deleted (all calls - replaced with getsc()); getsc_bn_ renamed to getsc_bn. - * lex.c(ungetsc_,ungetsc): ungetsc() macro deleted; renamed ungetsc_() - to ungetsc(). - * lex.c(yylex,ungetsc,getsc_bn): set and use backslash_skip, - ignore_backslash_newline. - * lex.c(yylex): removed special cases for backslash-newline sequence, - explicitly ignore backslash followed by eof. - -Mon Sep 30 17:14:41 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.9 distribution - -Mon Sep 30 12:52:21 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(pprompt): fixed usage of ntruncate. - -Thu Sep 19 17:43:33 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(KSH_SYSTEM_PROFILE): new define. - * main.c(main): use KSH_SYSTEM_PROFILE. - - * aclocal.m4(KSH_OS_TYPE): added case for NEXT. - -Thu Sep 19 15:39:54 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * tty.c(tty_init): added hack for NeXT's rlogin's missing controlling - tty. - -Mon Sep 16 11:18:10 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(add_glob): don't append a * to a ~username. - - * edit.c(x_init): set got_sigwinch before calling check_sigwinch(). - -Wed Sep 11 14:38:38 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_let): ifdef'd KSH. - * lex.h(SDPAREN),lex.c: ifdef'd KSH all uses of SDPAREN. - * lex.h(MDPAREN),syn.c: ifdef'd KSH all uses of MDPAREN. - -Mon Sep 9 16:18:03 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(AC_PROG_CC): replaced autoconf's version with - modified version. - - * configure.in(clock_t): check in sys/time.h as well. - * ksh_times.h: include ksh_time.h. - * ksh_time.h,ksh_times.h: added ifndef KSH_TIME_H/KSH_TIMES_H. - -Fri Sep 6 13:20:24 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(promptlen): X\r hack for delimiting hidden characters - in prompt. - (Based on fix from Bill Kish) - -Tue Sep 3 11:03:26 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * Makefile.in: removed options.h from HDRS (also removed file). - -Thu Aug 29 10:04:01 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_MEMMOVE): added return 0 to end of main(). - -Fri Aug 23 14:23:50 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4,ksh_stat.h: changed S_IFFIFO to S_IFIFO. - -Fri Aug 23 09:58:09 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(skip_wdvarname): don't check for array if first char - isn't [. - -Thu Aug 22 12:51:25 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c: added ifdef KSH around Coproc_id/j->coproc_id usagae. - * c_ksh.c(c_read): added ifdef KSH around opipe. - -Tue Aug 20 09:41:32 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * configure.in: fixed quoting of sed LDSTATIC expression. - -Mon Aug 19 14:26:08 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.8 distribution - -Mon Aug 19 11:38:16 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * table.c(texpand): don't free entry if FINUSE is set. - - * var.c(unset): preserve ARRAY and DEFINED if unsetting foo[0]. - -Thu Aug 15 15:08:52 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(sm_sigchld,sm_default): moved to sh.h. - * sh.h(Coproc_id, struct coproc): new typedef; added njobs and - id fields to struct coproc. - * exec.c(execute): case TCOPROC: re-did coprocess stuff to use - njobs/coprocess id. - * jobs.c(struct Job): added coproc_id field. - * jobs.c(exchild): initialize coproc_id to 0; set job coproc_id - and increment coproc.njobs in parent. - * jobs.c(checkjob): check coproc_id and close co-process input/output - if needed. - - * exec.c(iosetup): only play with coprocess fds if this is an - empty exec. - * c_sh.c(c_read): commented out coproc_readw_close() call and eof call. - * c_ksh.c(c_print): commented out closing coprocess fd on EPIPE. - - * jobs.c(exchild): in parent, last part of job: use orig_flags (not - flags) when checking XCOPROC. - -Thu Aug 15 15:00:42 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(get_coproc_fd,cleanup_coproc): renamed to coproc_getfd() and - coproc_cleanup(), respecitively; changed all calls. - -Tue Aug 13 16:56:59 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c(O_COMMA,P_COMMA): new enums. - * expr.c(evalexpr): added case for O_COMMA. - -Tue Aug 13 15:18:28 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c(do_ppmm): new function to handle ++/--. - * expr.c(evalexpr): call do_ppmm() in P_PRIMARY code. - * expr.c(LAST_BINOP): deleted. - * expr.c(IS_BINOP): new define. - * expr.c(evalexpr): use IS_BINOP. - * expr.c(O_PLUSPLUS,O_MINUSMUNS,opinfo[]): new enums; updated opinfo - * expr.c(ET_LVALUE,ET_RDONLY): new enums. - - * expr.c(token): var code: don't increment cp in iter part of for loop, - do it in body; don't correct for off by 1 in array or !noasign code. - * table.h(EXPRLVALUE): new define. - * expr.c(token): var code: set EXPRLVALUE flag if noassign. - * expr.c(intvar): copy temp var if EXPRLVALUE set. - * expr.c(assign_check): new function. - * expr.c(evalexpr): if assign-op, call assign_check(). - -Tue Aug 13 11:02:32 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(do_comment),edit.c(x_do_comment): made do_comment generic, - renamed and moved to edit.c; changed all calls. - * emacs.c(x_ftab[]): added x_comment. - * emacs.c(x_defbindings[]): added XFUNC_comment as <esc>#. - * emacs.c(x_comment): new function. - -Mon Aug 12 16:13:36 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c(ET_BADVAR): deleted. - * expr.c(ET_RECURSIVE, struct expr.evaling),table.h(EXPRNEVAL): added. - * expr.c(v_evaluate): if curstate.evaling set, clear EXPRINEVAL. - * expr.c(evalerr): added ET_RECURSIVE case, removed ET_BADVAR case. - * expr.c(intvar): do recursion check, call v_evaluate() on value. - -Mon Aug 12 14:25:23 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(coproc_read_close): call coproc_readw_close() instead of - duplicating code. - -Mon Aug 12 11:21:39 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_locate_word): changed to allow at most 1 leading blank - before the word. - * edit.c(x_file_glob,x_command_glob,add_glob): allow zero length word. - * edit.c(x_cf_glob): allow zero length globs on when doing file - completion. - - * edit.c(x_complete_word): #if 0 - it isn't used... - * edit.c(x_file_glob,x_command_glob,x_locate_word): made static. - - * eval.c(varsub): changed FNOUNSET error from "unset variable" - to "parameter no set", ala at&t ksh. - - * c_ksh.c(c_typeset): print variables that aren't set (just - leave out the =...). - -Mon Aug 12 11:03:22 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(findfunc): removed redundant DEFINED check after tsearch(). - -Fri Aug 9 22:16:21 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(j_change): when turning off FMONITOR and not FTALKING, - changed SS_RESTORE_CURR to SS_RESTORE_ORIG. - - * edit.c(x_sigwinch): new function. - * edit.c(x_init): set up signal handler for SIGWINCH; moved - code to get window size into x_sigwinch(); call x_sigwinch(). - * emacs.c(xx_cols): new variable. - * emacs.c(x_init): set xx_cols_to x_cols; change all uses of x_cols - to xx_cols. - * vi.c(display): when displaying morec, changed x_cols-2 to - pwidth+winwidth+1. - -Fri Aug 9 12:49:00 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * table.h(FKSH): new define. - * tree.h(struct op): put evalflags into new union u, added ksh_func - to union; changed all uses of evalflags. - * syn.c(function_body): set u.ksh_func. - * exec.c(execute): changed define() arg to t (was t->left). - * exec.c(define): copy t->left (was t); set FKSH in flag if is - a ksh function. - * exec.c(comexec): don't keep assignments for x() style functions. - * exec.c(comexec: case CFUNC: set kshname ($0) for ksh style functions - only (was FPOSIX). - - * exec.c(execute): case TAND/TOR: pass XERROK on when executing right - hand side. - - * jobs.c(exchild): deleted redundant code to set j->flags - (near new_job() call). - - * sh.h(ksh_tmout),main.c(alarm_init),trap.c(alarm_init,alarm_catcher): - ifdef'd KSH. - - * sh.h(SS_SHTRAP,Trap.shtrap): added. - * trap.c(trapsig): if shtrap is non-zero, call it. - * trap.c(setsig): set shtrap if SS_SHTRAP set. - * jobs.c(j_init),trap.c(alarm_init): pass SS_SHTRAP. - * jobs.c(j_sigchld),trap.c(alarm_catcher): don't call trapsig(). - * trap.c(Sigact_alarm): removed. - -Thu Aug 8 15:57:14 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(comexec): case CEXEC: print cannot execute error only - if / in pathname; also, set exit code to 126. - - * exec.c(do_selectargs): added print_menu arg; only print - menu if this is set, or if REPLY is null; removed "while isspace" - loop. - * exec.c(execute): case TSELECT: call do_selectargs with print_menu - of TRUE on first call only. - - * exec.c(define): added was_set variable and logic. - * c_sh.c(c_unset): return 1 if variable/function to be unset wasn't - set to begin with. - -Wed Jul 31 10:33:00 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(Tflag): new type. - * sh.h(builtin_flag): changed type to Tflag. - * table.h(struct tbl): changed type of flag field to Tflag. - * c_ksh.c(typeset): changed type of flag, fset, fclr to Tflag. - * c_ksh.c(c_alias): changed type of xflag to Tflag. - * exec.c(comexec): changed type of old_inuse to Tflag. - * exec.c(builtin): changed type of flag to Tflag. - * var.c(typeset): changed set, clr args to Tflag; convert second - arg of call to local() to boolean. - -Wed Jul 31 10:26:25 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(C_QUOTE): new define. - * sh.h(ctypes[]),misc.c(ctypes[]): changed from char to short. - * misc.c(initctypes): set C_QUOTE bits in ctypes[]. - * misc.c(print_value_quoted): use C_QUOTE. - -Mon Jul 29 11:38:36 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(set_prompt): don't print warning message if setjmp returns - non-zero. - -Fri Jul 26 10:16:27 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(set_prompt): don't do ! and parameter expansion if !KSH. - - * table.h(V_MAIL,V_MAILPATH,V_MAILCHECK): ifdef KSH. - * var.c(initvar,setspec,unsetspec): ifdef KSH use of MAIL stuff. - * mail.c: ifdef KSH whole file. - * main.c(shell): ifdef KSH call to mcheck(). - * main.c(initcoms[]): ifdef KSH the MAILCHECK=600. - (based on patches from Marc Olzheim). - - * exec.c(PS4_SUBSTITUTE): new macro. - * exec.c(execute, comexec, iosetup): use PS4_SUBSTITUTE. - -Thu Jul 25 17:19:17 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(F_VIESCCOMPLETE): new define. - * misc.c(options[]): added vi-esccomplete. - * vi.c(classify[]): make ^[ a repeatable command. - * vi.c(vi_cmd): check F_VIESCCOMPLETE for ^[. - -Mon Jul 22 16:54:38 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_getopts): return if variable is readonly; don't change - OPTIND if option is bad (fragile). - * c_sh.c(c_brkcont): use ksh_getopt(); changed error message if - n <= 0. - * c_sh.c(c_dot,c_eval,c_exitreturn): use ksh_getopt(). - * misc.c(ksh_getopt): print `unknown option' instead of `bad option'. - -Mon Jul 22 16:08:40 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_init): do NOT export COLUMNS/LINES - causes more problems - than it fixes. - -Mon Jul 22 15:49:35 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(get_command): fixed test for '< foo (command)' so it - works. - -Fri Jun 21 09:57:47 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_OPENDIR_CHECK): include dirent.h if HAVE_DIRENT_H - defined (was DIRENT || _POSIX_VERSION). - * aclocal.m4(KSH_UNISTD_H): don't test HAVE_DIRENT_H when including - dirent.h. - -Wed Jun 12 11:02:32 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_test.c(b_ops[]): added "==" entry (ksh93ism). - -Mon Jun 10 14:00:21 1996 Michael Rendell (michael@lyman.cs.mun.ca) - - * ksh_stat.h: undef S_ISSOCK if STAT_MACROS_BROKEN defined. - * aclocal.m4(AC_HEADER_STAT): redefine autoconf's version to handle - FreeBSD's S_ISSOCK. - -Tue Jun 4 08:41:19 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.7 distribution - - * vi.c(CMDLEN): changed from 16 back to 1024. - -Sun Jun 2 11:54:46 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.6 distribution - -Sun Jun 2 11:46:56 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(search_access): changed ordering of xsuffixes[], rsuffixes[]; - removed code that used xsuffixes[] when suffix is present. - * lex.c(getsc_line): set O_TEXT/O_BINARY if os/2. - * main.c(remove_temps): added os2 ifdefs. - [Changes from Dale DePriest.] - -Tue May 21 14:18:22 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_cmd): case '#': call do_comment() to do work. - * vi.c(do_comment): new function. - * vi.c(putbuf,grabhist,grabsearch): fixed pesimestic off-by-1 error - (cbufsize - 1 -> cbufsize). - * vi.c(vi_hook): case VCMD: case -1: added refresh(0). - * vi.c(vi_cmd): case 'P': don't move cursor back if nothing added. - -Tue May 21 12:03:34 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(do_complete): don't add space if single match and - it doesn't end with a /. - -Tue May 21 11:51:36 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_init): use typeset to set EXPORT attribute for - COLUMNS/LINES. - -Tue May 21 11:40:12 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(parseargs): option setting: ignore context if option - isn't being changed. - * misc.c(printoptions): for non-verbose mode: print a set command - (eg, set -o vi -o ...) instead of just the option names. - -Tue May 21 11:14:27 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_brkcont): if n is too big, use last enclosing loop. - -Fri May 10 09:27:47 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(Getopt): changed field p from int to unsigned. - -Tue May 7 12:10:47 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.5 distribution - -Tue May 7 11:45:37 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(compile): set multiline if source is SSTRING. - * syn.c(yyparse): don't peek before calling c_list() - build - TEOF if c_list() fails and c is 0. - * syn.c(c_list): remove SSTRING test. - * syn.c(get_command): if EOF is reached, free iops,args,vars. - * syn.c(syntaxerr): set multiline.on to false when it is used; - don't use multiline.on if start token is 0. - -Tue May 7 10:11:41 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(c_fc,hist_execute): moved calls to histbackup() from - c_fc() to hist_execute(). - * history.c(hist_get): number: took out +1 correction as histbackup - hasn't been done yet; string: added -1 correction to ensure - current fc command isn't searched. - * history.c(hist_get_newest,hist_get_oldest): don't find the - current (fc) command; removed print_err argument (was always - true). - * history.c(hist_get,hist_get_newest): added allow_cur argument; - changed all calls. - -Mon May 6 09:55:29 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(x_nextcmdp): renamed to x_nextcmd, changed from - char ** to int. - * emacs.c(x_nl_next_com): save absolute command number, not - relative position in history array (which changes). - * emacs.c(x_emacs): convert x_nextcmd back to relative position. - * emacs.c(x_init_emacs): initialize x_nextcmd to -1. - -Sun May 5 13:10:48 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c(evalexpr): when assigning a non-integer, call setint() - (not setstr(..., strval(...))). - -Sun May 5 12:16:11 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * mail.c(maddmsg): changed name to mprintit(); now prints message - directly instead of saving in a linked list; changed all calls. - * mail.c(mprint): deleted; deleted all calls. - * mail.c(mmsgs,struct mailmsg): deleted. - -Sun May 5 11:52:05 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(SF_TTY): new flag. - * lex.h(STTY): deleted. - * main.c(main): if tty, use SSTDIN, set SF_TTY. - * main.c(shell): check SF_TTY instead of STTY. - * lex.c(getsc_): call getsc_line for SSTDIN/SFILE. - * lex.c(getsc_line): new function (merged old STTY/SSTDIN/SFILE code). - -Fri May 3 11:24:17 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(shell): changed exit_atend to toplevel. Changed interactive - to be falking&toplevel (was talking&s->type==STTY). - -Fri May 3 10:59:22 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(getint): only allow one base (ie, disallow 2#4#5). - -Thu May 2 21:31:23 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(array_index_calc): new function - * var.c(global): call array_index_calc(); moved $2 code into - if (!letter(c))... - * var.c(local): call array_index_calc(); added copy argument & code; - changed all calls. - * table.h(LOCAL_COPY): new define. - * exec.c(comexec): maybe pass LOCAL_COPY to typeset(). - -Thu May 2 16:34:29 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c: command completion changes. - * emacs.c(Comp_type,CT_LIST,CT_COMPLETE,CT_COMPLIST): new type. - * emacs.c(x_ins): return type changed to int; return -1 if - string can't be inserted. - * emacs.c(x_do_ins): new function. - * emacs.c(add_stash,list_stash,compl_dec,compl_file,compl_command, - str_match): deleted; changed callers to use do_complete(). - * emacs.c(do_complete,x_expand): new functions. - * emacs.c(x_ftab[],x_defbindings[]): added entry for file-expand; - bound to <ESC>*. - -Thu May 2 15:31:32 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(set_prompt): pass strlen() + 1 to shf_sopen. - (fix from Arnon Kanfi). - -Wed Apr 24 11:50:52 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(c_fc): -e -: don't increment wp past null; allow - pat=replace arg with "-1" type argument. - (based on fix from Jason Tyler). - -Mon Apr 15 11:58:34 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * table.c(tenter),alloc.c(alloc): changed use of offsetof() so field - parameter is a constant expression. - * sh.h: took out undef of offsetof on CRAYs. - -Fri Apr 12 16:01:40 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(JF_USETTYMODE): renamed JR_ORIGFG to JF_USETTYMODE. - * jobs.c(j_waitj): clear JF_USETTYMODE if fg job is stopped. - -Sun Apr 7 12:35:30 NDT 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh(c_print): echo: don't treat a lone minus as an option. - -Sat Apr 6 00:09:37 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ulimit.c(c_ulimit.c): always pass 2 args to ulimit(). - * ksh_sigsetjmp(): changed all uses to be simple expressions - seems - to be required by the cray C compiler. - * sh.h(offsetof): undef if on a cray. - (based on fixes from Dave Kinchlea) - -Sat Mar 23 13:58:12 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * siglist.in: added WAITING,LWP,FREEZE,THAW,CANCEL - -Thu Mar 7 23:26:37 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_init): set LINES if possible. - -Thu Mar 7 23:01:55 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): call x_init() after j_init() - (based on fix from Stefan Dalibor). - -Thu Mar 7 16:13:10 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_OS_TYPE): check for TitanOS (use cc -43). - * aclocal.m4(KSH_SIGNAL_TYPE): for bsd41 signals, check if signal - interrupt read(). - -Thu Mar 7 13:59:29 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(strstr),missing.c(strstr): changed args to const. - -Wed Mar 6 17:21:36 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(errorf,bi_errorf): changed null pointer string check to - empty string; changed all calls (due to new error gcc warnings). - -Wed Mar 6 17:15:58 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(search_access): files aren't executable if they don't - have any execute bits. - * ksh_stat.h: added S_IXUSR,S_IXGRP,S_IXOTH. - * exec.c(search_access,search_access1): OS2: changed the meaning - of these two functions (search_access1 now called from search_access). - -Wed Mar 6 16:23:23 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * tree.c(ptree): add case for TSELECT. - -Wed Mar 6 12:40:34 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(Z_,is_zeroarg): new defines. - * vi.c(classify): use Z_ for G, g, _, |, v, ^I, ^F. - * vi.c(vi_cmd): use is_zerocount(). - * vi.c(complete_word): if command prefixed by a count, complete - to count'th expansion (as reported by print_expansions()). - -Tue Mar 5 14:43:48 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(GF_NONE,GF_EXCHECK,GF_GLOBBED,GF_MARKDIR): new defines. - * eval.c(glob_str): added markdirs argument; changed all calls; - made function non-static. - * eval.c(glob): added markdirs argument; changed all calls. - * tree.h(DOMARKDIRS): new define. - * eval.c(expand): set DOMARKDIRS if FMARKDIRS. - * edit.c(x_complete_word,x_print_expansions,x_file_glob,x_command_glob, - x_locate_word,x_cf_glob,x_add_glob,x_longest_prefix,x_free_words): - new functions. - * proto,edit.h: moved functions defined in edit.c to edit.h. - * vi.c(struct edstate): moved to top of file. - * vi.c(print_expansions): added struct edstate argument; changed all - calls. - * vi.c(struct glob,Glob,globstr,glob_word,): deleted - * vi.c(vi_pprompt): new function; changed all calls of pprompt() in - vi.c to use vi_pprompt(). - * vi.c(x_vi): moved to top of file. - * vi.c(expand_word,complete_word): free buf if it is not null. - * vi.c(expand_word,complete_word,print_expansions): changed - to use new edit.c functions. - -Tue Feb 20 11:02:05 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * table.c(twalk,tnext,struct tstate),table.h(struct tstate): moved - struct tstate from table.c to table.h; changed twalk,tnext to take - struct tstate* argument; changed all calls; deleted static tstate - variable. - -Sat Feb 17 12:28:11 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_hook): case VSEARCH: if new pattern is empty, repeat last - search. - -Sat Feb 10 15:59:28 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * table.h(struct arg_info): new struct. - * table.h(struct block): changed argv, argc fields to argi. - -Sat Feb 10 15:12:47 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - ANSI C name space requirements: - - * vi.c(isbad,iscmd,islong,ismove,issrch,isundoable,iswordch): changed - to is_bad,is_cmd,is_long,is_move,is_srch,is_undoable,is_wordch. - * emacs.c(iscfs,ismfs): changed to is_cfs, is_mfs. - * emacs.c(strmatch): changed to str_match. - * sh.h(strchr_dirsep,strrchr_dirsep): changed to ksh_strchr_dirsep, - ksh_strtchr_dirsep; changed all calls. - * missing.c(strichars[]): changed to ichars[]. - * var.c(strint,strval): changed to setint_v, str_val. - * missing.c(strsave,strnsave): changed to str_save,str_nsave. - -Fri Feb 9 11:30:15 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): remove envp parameter; declare and use environ. - - * c_ksh.c(c_print): octal digit escape sequences must start with \0. - -Sat Feb 3 15:35:41 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_cmd,classify[]): made ^I a command. - -Fri Feb 2 10:40:32 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(struct source): added u.freeme field. - * lex.c(getsc_): case SREREAD: free u.freeme iff start isn't u.ugbuf. - -Thu Feb 1 15:27:06 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_test.h(Test_env): added end union. - * c_test.c(c_test): keep track of end position using end.wp; - don't write on wp. - - * emacs.c(x_mapin): changed to dup string, then munge; return duped; - changed all calls. - - * eval.c(homedir): deleted getpwnam() declaration - can't believe - its needed anywhere (we shall see, though). - - * sh.h(handler_t): use ARGS for prototype; use h - * sh.h(struct trap),trap.c(setsig,settrap),sigact.c,sigact.h: - use handler_t. - * history.c,c_sh.c,c_ksh.c: removed register declaration from - c_*() functions. - * exec.c(builtin),proto.h(builtin): use prototype for func. - * misc.c(qsortp,qsort1),proto.h(qsortp): use prototype for f. - - * c_ksh.c(ksh_getopt): made options arg const. - * tree.c(fptreef,snptreef,vfptreef): made fmt arg const. - * jobs.c(waitfor,j_kill,j_resume,j_lookup,j_jobs): made cp arg const. - * shf.c(shf_snprintf,shf_smprintf,shf_vfprintf): made fmt arg const. - * c_test.h(Test_env.error),c_test.c(ptest_error): made msg arg const. - * c_test.c(test_stat,test_eaccess): made path arg const. - * c_test.c(ptest_getopnd,dbteste_getopnd): made return value const. - * c_test.c(ptest_eval,test_eval,dbteste_eval,dbtestp_eval,test_primary): - made opnd1,opnd2 arg const. - * c_test.c(test_isop): made s arg const. - - * misc.c(bi_getn,getn): made as arg const. - * misc.c(getn): made as arg const. - * misc.c(gmatch): made s/p arg const. - * misc.c(has_globbing): made xp/xpe arg const. - * misc.c(do_gmatch): made s/p/se/pe arg const. - * misc.c(cclass): made p arg const. - -Thu Feb 1 14:54:32 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.h, sh.h, tty.h: changed _I_ to I__. - * edit.h, edit.c: changed _D_ to D__. - - * jobs.c,shf.c,tty.c: include ksh_stat.h (POSIX: needed for open). - - * sigact.c: use ARGS instead of __P; comment out __P defines. - - * shf.c: include math.h if FP. - * shf.c(my_ceil): remove modf() declaration. - * shf.c(shf_fvprintf): comment out frexp() declaration; changed - exp to expo. - - * jobs.c(struct job, j_utime, j_stime): changed utime/stime to - usrtime/systime; change j_utime/j_stime to j_usrtime/j_systime. - -Wed Jan 31 16:13:44 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(x_getc): cast return value to int to avoid warnings on - strange compilers. - * exec.c(funcfunc): changed second arg to unsigned int (was int). - * syn.c(elsepart): move return NULL to end of function (avoids - warning from some compilers). - * vi.c(classify[]): changed type to unsigned char. - * shf.c(shf_smprintf): delete unused variable n. - * aclocal.m4(KSH_TIMES_CHECK): define INT32 in test code. - * aclocal.m4(KSH_SIGNAL_CHECK): typeo: had bsd42 instead of bsd41. - * sh.h(MAGIC): changed to 7 to increase portability. - * jobs.c(tcsetpgrp,tcgetpgrp): define if TTY_PGRP (was TIOCSPGRP). - -Tue Jan 23 11:40:25 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(ksh_jmp_buf): new define. - -Thu Jan 18 15:03:19 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(hist_replace): fixed substitution code (again). - -Wed Jan 17 20:10:02 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.4 distribution - - * main.c(initcoms): changed hash alias to "hash=alias -t". - - * exec.c(do_selectargs): deleted c_read() declaration. - - * c_ksh(c_alias): call ksh_getopt_reset() before calling c_unalias(). - -Wed Jan 17 19:47:55 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(histbackup): changed "histptr > history" - to "histptr >= history". - - * history.c(hist_replace): removed un-needed "last" - use "s" instead. - (based on fix from Jason Tyler). - -Thu Jan 11 15:59:46 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_whence,c_command),main.c(initcoms[]): removed ifdef KSH - (type is a builtin in sys-5 sh). - -Wed Jan 10 11:49:59 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * Makefile.in: added NEWS.os2 to OS2FILES. - - * version.c: include "sh.h" (needed for const define). - - * exec.c(pr_menu): made non-static. - * vi.c(print_expansions): gather expansions into an arrat - and use pr_menu(). - (fixes from Mike Jetzer). - - * vi.c(redraw_line): added newline option; changed all calls. - -Wed Jan 10 10:21:06 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(classify): made 'U' a C_. - * vi.c(ohnum): new variable. - * vi.c(vi_reset): set ohnum to hlast. - * vi.c(grabhist): set ohnum. - * vi.c(vi_cmd): case n,N,/,? set ohnum; added case 'U'. - * vi.c(edit_reset): clear holdlen. - (based on fix from Dale DePriest). - -Tue Jan 9 11:23:36 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(iscfs): make ', " separators. - (fix from Dale DePriest). - - * conf-end.h: deleted stuff to undef HISTORY, VI, EMACS, etc if - KSH wasn't defined (now done in configure). - - * sh.h(GI_NONAME): changed to GF_NONAME; changed all uses. - - * configure.in: added AC_ARG_PROGRAM. - * Makefile.in: replaced binprefix and manprefix with - program_transform stuff. - -Mon Jan 8 11:42:46 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(struct temp): added shf field. - * io.c(maketemp): changed to use O_EXCL; keep trying if open - fails (due to O_EXCL); fill in shf field; changed all calls. - - * main.c(include): added intr_ok flag; changed all calls. - - * main.c(main): if compiled as sh and posix option not set, do not - include $ENV. - - * trap.c: define FROM_TRAP_C before including sh.h. - * sh.h: don't declare sigtraps if FROM_TRAP_C declared. - - * c_ksh.c(c_cd): fixed error message. - * vi.c(glob_word): don't add * if word contains a $. - (Based on fixes from Mike Jetzer). - - * eval.c(tilde): if HOME,PWD,OLDPWD aren't set, don't expand - ~,~+/~-. - -Fri Jan 5 12:15:58 NST 1996 Michael Rendell (michael@garfield.cs.mun.ca) - - * c_ksh.c(c_typeset): separate loop for printing functions - (do not traverse array link). - * c_ksh.c(c_typeset): list functions: do not ignore unset functions. - * exec.c(findfunc): set val.t to 0 when creating new entry. - * exec.c(define): if FINUSE, use tail recursion. - -Thu Jan 4 11:10:22 NST 1996 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(globstr): deleted ifdef'd out code. - -Sun Dec 10 11:07:52 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(yylex): added case for STBRACE; wrap word part of - trim substitution in @(..). - * eval.c(trimsub): deleted code to wrap pattern in @(..); changed - '%' code to use strnsave(). - -Fri Dec 8 22:55:56 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(trimsub): if trim pattern contains a |, wrap pattern - in @(...). - * lex.c(yylex): make | special when incounted in a ${...} - substitution. - -Fri Dec 8 11:52:38 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c: ifdef'd HISTFILE, HISTSIZE stuff with HISTORY (was KSH). - - * *.c,*.h: ifdef'd coprocess stuff with KSH. - -Thu Dec 7 14:41:06 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * options.h(BRACEEXPAND): changed to BRACE_EXPAND; changed all - references. - -Thu Dec 7 13:54:20 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * exec.c(do_selectargs): don't print newline on eof. - -Thu Dec 7 10:23:30 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * c_ksh.c(c_print): added -f for OS2. - * tree.h(DODIRSWP),eval.c: deleted define and all uses of it. - * exec.c(scriptexec): ... - * io.c(check_fd): set O_TEXT/O_BINARY flag for OS2. - * main.c(main): set O_BINARY/O_TEXT, search path for arg. - * emacs.c(compl_file): call opendir with buf, not dirnam. - (based on changes from Dale DePriest). - -Wed Nov 29 15:50:36 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * eval.c(expand,debunk): handle extended pattern matching stuff. - * eval.c(debunk): now has two arguments, changed all calls. - * eval.c(globit): changed to use has_globbing. - * eval.c(copy_non_glob): deleted. - - * misc.c(has_globbing): new function. - * misc.c(cclass): changed argument to unsigned char *; handle - extended pattern matching. - * misc.c(do_gmatch): new function (taken from gmatch()). - * misc.c(gmatch): changed to call do_gmatch. - * misc.c(do_gmatch): added cases for extended pattern matching - (*(foo|bar), etc.). - * misc.c(pat_scan): new function. - - * lex.c(yylex): added SPATTERN case. - - * lex.c(arraysub): changed to assume just past the leading [ - (was assuming about to read [); changed all calls; changed - to use getsc_bn(). - - * lex.c(ungetsc): added argument; changed all calls; can now unget - arbitrary number of characters. - * lex.c(ungetsc_): new function. - - * lex.h(struct source): added start field, removed u.start field, - changed all uses. - * lex.c(getsc_): case STTY: skip blank line only if this is first line - of a command (eg, not part of here documennt, etc.). - - * lex.c(yylex): case SHEREDELIM,SHEREDQUOTE: ignore \newline. - * lex.c(readhere,get_brace_var): ignore \newline. - * lex.c(getsc_bn,getsc_bn_): new define/function. - - * exec.c(iosetup): don't enforce noclobber for non-regular files. - - * tree.h(OPAT,SPAT,CPAT): new defines. - * tree.c(tputS,wdscan): added cases for OPAT,SPAT,CPAT. - - * lex.c(yylex): moved case '[' from Subst: switch to case SBASE:. - -Tue Nov 14 11:00:48 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * syn.c(get_command,caselist): moved parsing of IN/ESAC into - caselist; allow {/} instead of IN/ESAC; - * syn.c(casepart): new parameter: endtok. - * lex.c(yylex): allow } as well as ESAC when ESACONLY set. - (changes based on fix from DaviD W. Sanderson). - -Tue Nov 14 10:22:17 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * main.c(shell): do not zero exstat at start of routine. - - * exec.c(execute): removed redundant "exstat = rv" before - unwind(LERROR). - -Thu Nov 9 15:01:54 NST 1995 Michael Rendell (michael@angel.cs.mun.ca) - - * var.c(arrayname): made argument const. - * var.c(typeset): made var argument const. - * var.c(export): made val argument const. - * tree.c(wdscan): changed return type to non-const (added casts). - -Thu Nov 9 14:39:49 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_alias),c_sh.c(c_set): made args[] array const. - * c_ulimt.c(c_ulimit): made limits[] array const. - * edit.c(x_mode): x_cur_mode no longer explicitly initialized to 0. - * emacs.c(x_tab,x_atab): no longer explicitly initialized to 0. - * exec.c(comexec): made texec non-static, non-initialized. - * history.c(hist_finish): once no longer explicitly initialized to 0. - * io.c(maketemp): io no longer explicitly initialized to 0. - * jobs.c(job_list,last_job,async_job,free_jobs,free_procs): no longer - explicitly initialized to 0. - * jobs.c(lookup_msgs[],tt_sigs[]): made array const. - * mail.c(mplist,mbox,mlastchkd,mmsgs): no longer explicitly - initialized to 0. - * vi.c(expand_word,complete_word): buf no longer explicitly - initialized to 0. - * vi.c(classify[]): made array const. - -Tue Nov 7 11:08:01 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * mkman: new script - * Makefile.in: use mkman to generate ksh.1 - * ksh.Man,ksh.1: renamed ksh.1 to ksh.Man - * ksh.Man: changed way sh/ksh option handled. - (changes based on fix from Michael Haardt). - -Tue Sep 19 09:53:53 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(j_stopped): deleted function. - * jobs.c(j_exit): send SIGCONT, then SIGHUP; send SIGHUP if - job is in foreground. - (based on fix from Paul Borman) - - * Makefile.in: move .PRECIOUS to after all. - -Wed Sep 13 15:00:22 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(dbteste_getopnd): changed tests from TO_STLT/TO_STGT - to TO_STEQL/TO_STNEQ. - -Thu Aug 31 11:54:02 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(exchild): if fork fails, allow user to ^C out of loop. - -Tue Aug 29 09:40:37 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(iosetup): don't do globing if not interactive (POSIX). - - * exec.c(iosetup): print <& or >& as appropriate in error message. - - * tree.h(IONAMEXP): new define. - * tree.c(pioact): handle IONAMEXP. - * exec.c(iosetup): set IONAMEXP. - - * io.c(savefd): added noclose parameter; changed all calls. - * exec.c(iosetup): move call to savefd() to after the open(); - re-arranged the dup'ing (failed dups reported). - - * main.c(shell): call quitenv() before internal_error(). - -Sun Aug 13 21:38:44 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(ksh_sigsetjmp,ksh_siglongjmp): new defines; changed - all uses of setjmp/longjmp to these. - * configure.in: added checks for sigsetjmp() and _setjmp(). - -Wed Jul 26 10:08:23 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ulimit.c(c_ulimit): added -p ("maxproc", RLIMIT_NPROC) - (fix from Simon J. Gerraty). - -Thu Jun 29 10:22:51 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.c(promptlen): added spp parameter; changed all calls. - * vi.c(prompt_skip): new variable. - * vi.c(edit_reset): set prompt_skip; use prompt_skip in all calls - to pprompt(). - -Sat Jun 24 15:55:03 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * IAFA-PACKAGE: new file. - * Makefile.in: added IAFA-PACKAGE to DISTFILES. - -Mon Jun 19 10:04:52 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(initcoms[]): added EXTRA_INITCOMS. - -Fri Jun 16 12:33:10 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(search_access1): use FILECMP() instead of strcmp(). - - * sh.h(FIELCHCONV): OS2 version: added isascii(). - * misc.c(gmatch); took unsigned out again for sc and pc. - - * main.c(main): don't set PS1 if it's already set; set it if - we are root and prompt doesn't contain a #. - diff --git a/bin/ksh/ChangeLog.0 b/bin/ksh/ChangeLog.0 deleted file mode 100644 index 8f7f7ca394d..00000000000 --- a/bin/ksh/ChangeLog.0 +++ /dev/null @@ -1,3589 +0,0 @@ -$OpenBSD: ChangeLog.0,v 1.5 2013/11/28 10:33:37 sobrado Exp $ - -Thu Jun 15 11:02:06 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.3 distribution - - * c_ksh.c(c_whence): search keyword table if vflag set. - - * tree.h(DOVACHECK): new define. - * eval.c(expand): check DOVACHECK flag. - * exec.c(execute): when calling eval(), or in t->evalflags. - * syn.c(get_command): set evalflags to DOVACHECK instead of DOASNTILDE. - -Wed Jun 14 09:27:19 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_cd): two argument format: use current_wd, not path - when appending elen bytes. - (fix from Gabor Zahemszky). - -Tue Jun 13 15:54:11 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(c_fc): if last not specified and !-l, use first as last. - - * eval.c(maybe_expand_tilde): allow CSUBST to end tilde word. - - * misc.c(gmatch): made sc and pc unsigned. - -Fri Jun 2 11:55:40 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * configure.in: added flock to AC_CHECK_FUNCS call. - * conf-end.h: undef COMPLEX_HISTORY if !HAVE_FLOCK. - -Tue May 30 20:38:47 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(SEEK_SET,SEEK_CUR,SEEK_END): define if not defined. - * history.c: change L_XTND to SEEK_END. - -Tue May 30 17:01:34 NDT 1995 John Rochester (jr@panda.cs.mun.ca) - - * shf.c(shf_seek): new function. - * shf.h(shf_seek): new prototype. - -Tue May 30 16:42:41 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_DEV_FD): new test. - * acconfig.h(HAVE_DEV_FD): new define. - * configure.in: call KSH_DEV_FD. - - * c_test.h(TO_FILAXST): new enum. - * c_test.c(test_stat,test_eaccess): new functions for /dev/fd/n - handling. - * c_test.c(test_evalop): call test_stat() and test_eaccess() - instead of stat() and eaccess() in most places; added case - for TO_FILAXST. - -Tue May 30 16:06:21 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_MEMMOVE): fixed test so copies overlap. - -Sun May 28 11:11:03 NDT 1995 John Rochester (jr@panda.cs.mun.ca) - - * sh.h(safe_prompt): new variable. - * main.c(initsubs): removed PS1. - * main.c(main): initialize safe_prompt; initialize PS1 from - safe_prompt. - * lex.c(set_prompt): create new env while expanding PS1 - if expansion - fails, use safe_prompt. - -Sat May 27 20:59:02 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c: put comments around token after #endif. - -Thu May 25 10:10:45 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * c_test.c(test_eval): case TO_OPTION: negate test if option starts - with a !, always fail if option doesn't exist. - - * sh.h(FNOHUP): new define. - * misc.c(options[]): "nohup" new option. - * jobs.c(j_stopped,j_stopped_running): name of j_stopped changed - to j_stopped_running; changed all calls; check for/warn about - running jobs if appropriate. - * jobs.c(j_exit): check for/kill running jobs if appropriate. - * main.c(shell),c_sh.c(c_exit): un-ifdef JOBS the j_stopped_running() - call and really_exit initialization/clearing. - -Wed May 24 10:06:14 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * options.h(DEFAULT_ENV): new define. - * main.c(main): if ENV isn't set and DEFAULT_ENV is defined, include - the later. - (based on patches from Dave Kinchlea). - - * sh.h(LAEXPR): new define. - * expr.c(evaluate): changed return type to error indicator; added - rval and error_ok arguments; changed all calls (c_sh.c(c_shift), - c_ulimit.c(c_ulimit),eval.c(expand),var.c(global,local)). - * expr.c(v_evaluate): added error_ok argument; changed return value - to error indicator; call unwind() if !error_ok. - * expr.c(evalerr): changed errorf() to warningf(); call unwind(LAEXPR). - * c_test.c(test_eval): merged code for integer operations to have - two calls to evaluate(). - - * io.c(warningf): print trailing newline; changed all calls. - - * history.c(hist_get): string search: use histptr, not histptr - 1. - -Tue May 23 11:07:50 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(GI_NONAME): new define. - * misc.c(ksh_getopts): honour GI_NONAME flag. - * c_ksh.c(getopts_reset): set GI_NONAME flag. - - * exec.c(comexec): don't change $0 if FPOSIX flag set. - - * misc.c(ksh_getopt): don't use GI_DONE to allow parsing past - bad options. - * sh.h(GI_DONE): deleted define. - - * var.c(unset): added array_ref parameter; unset/free whole array - if not an array_reference; changed all calls. - * c_sh.c(c_unset): set array_ref parameter if there is a [ in the name. - -Mon May 22 10:33:14 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(hist_init): complex version: initialize hist_source - (fix from Simon J. Gerraty). - -Sat May 20 11:06:15 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.2 distribution - - * Makefile.in: added c_test.h to HDRS. - -Fri May 19 12:35:18 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.1 distribution - - * emacs.c(v_version): ignore typed character if it is a space. - * emacs.c(x_emacs_keys): bind <ESC>erase-char to delete-back-word - (was delete-back-char). - * emacs.c(x_defkeybindings[]): bound list-file to ^X^Y and - newline-and-next to ^O, as per man page. - - * c_ksh.c(c_whence): changed "is a keyword" to "is a reserved word". - - * sh.h: changed SVSV_PGRP to SYSV_PGRP. - - * vi.c(vi_cmd): uncommented case for ^[ to make it easy to enable - completion. - -Mon May 15 15:25:22 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(c_fc): accept -40 as -- -40. - * main.c(initcoms[]): take -- out of history alias. - - * vi.c(print_expansions): handle trailing slash correctly (don't - print empty strings). - - * c_ksh.c(c_cd): put back ksh_get_wd() call for os/2. - - * misc.c(ksh_get_wd): changed buf to b in call to getcwd(). - -Tue May 9 13:57:31 NDT 1995 Michael Rendell (michael@dragon.cs.mun.ca) - - * c_test.h: new file. - * c_test.c: major code restructuring: common parsing/evaluation - routines call/called-by three sets of routines: one for - normal test (and [..]), one for parsing [[ .. ]] one for - evaluating [[ .. ]]. - * c_test.c(oexpr,aexpr,nexpr,primary,is_op): renamed to test_oexpr, - test_aexpr, test_nexpr, test_primary, test_isop. - * c_test.c(eval_unop,eval_binop): combined into new test_eval function. - * c_test.c(syntax): renamed to ptest_error, - * c_test.c(ptest_isa,ptest_getopnd,ptest_eval): new functions. - * syn.c(syntaxerr): added extra arg; changed all calls. - * syn.c(db_parse,db_oaexpr,db_nexpr,db_primary): deleted. - * syn.c(dbtestp_isa,dbtestp_getopnd,dbtestp_eval,dbtestp_error): added. - * syn.c(get_command): case DBRACKET: changed to call new routines. - * tree.c(ptree): case DBRACKET: changed. - * exec.c(execute): case DBRACKET: changed. - * exec.c(dbteste_isa,dbteste_getopnd,dbteste_eval,dbteste_error): added. - -Fri May 5 17:10:23 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(compl_file,compl_command): fixed buffer growing code. - -Thu May 4 22:44:01 NDT 1995 Michael Rendell (michael@garfield.cs.mun.ca) - - * aclocal.m4(KSH_UNISTD_H): include <sys/types.h> and only include - <dirent.h> if HAVE_DIRENT_H is defined. - -Thu May 4 21:19:15 NDT 1995 Michael Rendell (michael@garfield.cs.mun.ca) - - * c_ksh.c: include "ksh_stat.h". - * c_ksh.c(c_cd): don't do physical chdir if S_ISLNK not defined. - -Wed May 3 10:08:32 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.2.0 distribution - - * misc.c: include <ctype.h>. - * misc.c(gmatch): added isfile argument; changed all calls. - * sh.h(FILECHCONV): (os2 version) - use isupper. - * emacs.c(strmatch): don't increment in FILECHCONV. - - * aclocal.m4(KSH_HEADER_SYS_WAIT): new macro. - * configure.in: use KSH_HEADER_SYS_WAIT instead of AC_HEADER_SYS_WAIT. - * ksh_wait.h: if POSIX_SYS_WAIT not defined, undef W* macros. - -Tue May 2 12:10:39 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c,emacs-gen.sh,emacs-c.in,emacs.out,Makefile.in: changed emacs - source munging to create emacs.out which is included by emacs.c - rather then munging emacs.c itself. - - * lex.c(pprompt): flush shl_out. - - * vi.c(glob_word): if path has *?[, don't add * (was if last component). - - * emacs.c(x_search_char): renamed to x_search_char_forw. - * emacs.c(x_search_char_back): new function; bound to ^[^]. - - * sh.h: changed SVR3_PGRP to SYSV_PGRP. - (fixes from Gabor Zahemszky). - -Tue May 2 10:09:57 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_cd): deleted OS2 ifdefs. - * path.c(make_path): use ISRELPATH instead of ISABSPATH - * path.c(simplify_path): use ISROOTEDPATH instead of ISABSPATH. - * sh.h(ISABSPATH,ISROOTEDPATH,ISRELPATH): changed/new defines. - - * aclocal.m4(AC_LANG_C,AC_LANG_CPLUSPLUS,AC_TRY_RUN): copied - from autoconf's acgeneral.m4, changed to handle .exe suffix. - * aclocal.m4(KSH_OS_TYPE): os2 case: set $ac_exe_suffix. - * configure.in: substitute ac_exe_suffix. - * Makefile.in: changed references to E to exe_suffix, set to - ac_exe_suffix - - * c_ksh.c(c_cd): ifdef S_ISLNK second use of get_phys_path(). - * edit.c(x_mode): removed ifndef OS2. - (fixes from Dale DePriest) - * exec.c(search_access1): add .sh to suffix lists. - * vi.c(vi_insert,vi_hook): OS2: changes to allow arrow keys work - in insert mode. - -Mon May 1 16:28:44 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * path.c(ksh_get_wd): getcwd() case, return alloc'd buffer, not - a malloc'd one. - -Mon May 1 09:41:56 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4: changed HAVE_SYS_RESOURCES_H to HAVE_SYS_RESOURCE_H. - - * aclocal.m4(KSH_OS_TYPE): new macro. - * aclocal.m4(KSH_OS2_EMX): deleted. - * configure.in: deleted calls to AC_AIX,AC_MINIX,AC_ISC_POSIX, - KSH_OS2_EMX; replaced with KSH_OS_TYPE. - * acconfig.h(OS_ISC,OS_SCO): new undefs. - * sh.h: changed use of isc386 to OS_ISC - * edit.c: changed use of M_UNIX to OS_SCO. - -Sat Apr 29 21:10:54 NDT 1995 Michael Rendell (michael@garfield.cs.mun.ca) - - * vi.c(glob_word): don't append * if there are unescaped globing - characters in the last component of the filename; some redundant - code eliminated. - (based on fix from Michael Jetzer). - -Fri Apr 28 16:10:22 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(globit): save/restore actual DIRSEP char - don't use DIRSEP. - - * c_ulimit.c: removed ARGS from declaration of ulimit to avoid - portability problems (osf/1 has ulimit(int,...), os2 has - ulimit(int,long)). - - * tty.c(tty_init): added __SCO__ defines to avoid opening /dev/tty. - - * configure.in,aclocal.m4,acconfig.h: added KSH_OS2_EMX test. - * os2/config.h, os2/configure.cmd, os2/make.sed: updated for new - autoconf. - -Tue Apr 25 12:20:45 NDT 1995 Michael Rendell (michael@dragon.cs.mun.ca) - - * configure.in: added sys/param.h test; changed getcwd test to getwd. - * c_ksh.c(c_pwd): new function. - * sh.h(current_wd, current_wd_size): new variables. - * c_ksh.c(c_cd): changed to handle -L, -P. - * main.c(main): use set_current_wd when setting $PWD; - instead of changing to / when can't get pwd, print warning; - deleted pwd alias; don't make PWD and OLDPWD reaedonly. - * path.c(simplify_path): changed to handle relative paths. - * path.c(make_path): added phys_path argument to support cd -P. - * path.c(set_current_wd,get_phys_path,do_phys_path): new functions. - * misc.c(ksh_get_wd): new function. - * missing.c(getcwd): deleted. - * misc.c(options[]),sh.h: added "physical", FPHYSICAL. - -Mon Apr 24 14:33:03 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * shf.c(shf_smprintf): new function. - - * expand.h(Xsize): new define. - -Fri Apr 21 21:22:44 NDT 1995 Michael Rendell (michael@garfield.cs.mun.ca) - - * sh.h: changed SIZEOF_long to SIZEOF_LONG. - * exec.c(scriptexec): if OS2 ifdefed code, changed ISDIRSEP to - explicit /. - -Thu Apr 20 21:18:12 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(hist_get) if n < 0, use n + 1 to account for histbackup(). - - * lex.c(set_prompt): added source argument; changed all calls; - changed to do ! and !! substitutions when setting PS1. - * lex.c(pprompt): ifdef'd out code to deal with ! and !!. - - * shf.c(shf_puts): new routine. - * exec.c(herein), lex.c(getsc_): changed to use shf_puts. - -Thu Apr 20 15:50:35 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * siglist.sh: clear traps in subshell to cover for bug in bash 1.4.3 - (based on fix from Fritz Heinrichmeyer). - -Wed Apr 19 12:04:59 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(classify): cleaned up table; filled in U_ flag for commands - that don't modify things. - * vi.c(first_insert, saved_inslen): new variables. - * vi.c(vi_reset): don't reset yanklen, inslen, lastcmd, lastac; - set first_insert, saved_inslen. - * vi.c(vi_insert): added code to handle first insertion to allow - redoing commands from last edit. - (based on fixes from Michael Jetzer). - - * vi.c(VVERSION): new state. - * vi.c(classify): cleared C_ flag for 032 (^Z); set it for ^V. - * vi.c(nextstate): added VVERSION. - * vi.c(vi_hook): cases for VVERSION. - * sh.h(ksh_version): new declaration; removed declaration from - all other files. - - * Makefile.in: removed rcs-ci, rcs-diff targets; put RCSFILES - into DISTFILES and removed former. - - * var.c(newblock): copy argc/argv from previous env if it exists. - -Tue Apr 18 23:10:32 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(exchild): report internal error if execute() returns in child. - * exec.c(execute): case TASYNC: clear exec flag in call to execute(). - -Tue Apr 18 12:05:23 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(x_bind): added list argument. - * c_ksh.c(c_bind): added -l (list) option. - - * emacs.c,emacs-c.in: moved emacs.c to emacs-c.in. - * Makefile: add rule to create emacs.c from emacs-c.in. - * emacs-gen.sh: new file. - * emacs.c(struct x_defbindings, x_defbindings[]): new struct/array. - * emacs.c(struct x_ftab, x_ftab[]): removed x_db_tab, x_db_char; - initialize x_ftab[] via script. - * emacs.c(x_init_emacs): changed to load key bindings from - x_defbindings. - * emacs.c(Findex): added typedef. - * emacs.c(x_tab[]): changed to index into x_ftab; changed all refernces. - * emacs.c(xft_*): changed to XFUNC_*. - * emacs.c(XF_PREFIX): new flag, used for x_meta1, 2, 3. - * emacs.c(KPREF,KNULL): deleted (no functional use), changed - references to KSTD. - * emacs.c(x_last_command): changed type to Findex. - * emacs.c(x_emacs): set x_last_command to 0 at start; removed - same from case KEOL. - - * emacs.c(XF_ARG): new flag for struct ftab. - * emacs.c(x_ftab[]): filled in XF_ARG for appropriate commands. - * emacs.c(x_arg_defaulted): new variable. - * emacs.c(x_emacs,x_set_arg): set x_arg_defaulted. - * emacs.c(x_bword, x_fword,x_fold_case): removed use of x_last_command. - * emacs.c(x_fold_upper,x_fold_lower,x_fold_capitailze): trivial - functions that call x_fold_case; changed x_ftab[] to use these - instead of x_fold_case so arbitrary keys can be bound to them. - * emacs.c(x_fold_case): changed to assume argument is 'L', 'U', or 'C'. - * emacs.c(x_del_back,x_del_char,x_prev_histword,x_prev_com,x_next_com, - x_kill,x_insert): use x_arg and x_arg_defaulted. - * emacs.c(x_delete): don't change mark point (xmp) if <= cp; added - force_push argument; changed all calls. - -Mon Apr 17 10:30:12 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * emacs.c(x_e_getc): changed to handle macroptr, ungetting characters. - * emacs.c(x_e_ungetc): new function. - * emacs.c(x_emacs): let x_e_getc() take care of macroptr. - * emacs.c(x_version,x_search_hist): use x_e_ungetc() instead of - macroptr. - * emacs.c(x_set_arg): handle string of digits. - - * emacs.c(x_search_hist): handle deleting chars from search string. - (fix from Dale DePriest) - * emacs.c(x_search): added sameline paramater. - * emacs.c(x_search_list): changes x_zots() to x_e_puts(); make - deleting in empty pattern break out of search. - - * vi.c(domove): case '%': adjust ncursor forward only if matching - opening bracket (so when cursor is on the B in "(fooBar)", c% - changes the openbracket as well. - * vi.c(vi_cmd): case y/d/c: special case to move end point ahead - if move cmd is % and match was to the left of the cursor. - -Thu Apr 13 10:34:26 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(complete_word): no bell on ambiguous matches (user can - tell its ambiguous 'cause there is not space or slash appended) - - * configure.in,aclocal.m4: added KSH_MEMMOVE, KSH_MEMSET tests - to fix problems with compiler builtins. - - * misc.c(blocking_read, reset_nonblock) new routines. - * sh.h: deleted O_NONBLOCK ifdefs/defines. - * main.c(main),lex.c(getsc_),edit.c(x_getc),shf.c(shf_fillbuf): - use reset_nonblock(). - (fix based on code from John Rochester) - -Tue Apr 11 14:36:22 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(c_fc): mostly POSIXized. - * history.c(hist_execute,hist_get_newest,hist_get_oldest): new routines. - * history.c(hist_get,histget): changed histget to hist_get. - * history.c(hist_replace,histrpl): changed histrpl to hist_replace. - * lex.h(SHIST,histpush): deleted; deleted all references. - * history.c(histget): add approx check for history that hasn't - happened yet. - - * misc.c(getn): allow leading plus (eg, +3). - - * main.c(initcoms[]): defined history as "fc -l --". - - * conf-end.h(JOBS): don't define if no posix or bsd process groups - (was if SIGCONT not defined). - -Mon Apr 10 14:51:54 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(comexec),c_ksh.c(c_getopts),c_sh.c(c_read): use FEXPORT flag. - - * ksh_wait.h: changed to work with autoconf 2.x AC_HEADER_SYS_WAIT - - if sys/wait.h uses union wait, don't include it. - -Thu Apr 6 12:19:58 NDT 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * tty.c(tty_init): print warning if open of /dev/tty fails. - -Sat Mar 4 01:20:03 NST 1995 Michael Rendell (michael@garfield.cs.mun.ca) - - * io.c(maketemp): create valid dos filenames. - -Mon Feb 27 11:04:32 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * Changed from autoconf 1.x to autoconf 2.x. - * acconfig.h: included old config.h.top and config.h.bot. - * config.h.top, config.h.bot: deleted; deleted all references. - * install.sh: changed to install-sh; changed all references. - * Makefile.in: use @CPPFLAGS@, @CFLAGS@, @LDFLAGS@; - use @configure_input@; remove config.log and config.cache in - distclean; use @prefix@ and @exec_prefix@. - * ksh_dir.h: changed to use new autoconf defines; changed NLENGTH() - to NAMLEN(); changed all references. - -Mon Feb 27 9:31:02 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(ISABSPATH): new macro. - * var.c(setspec): use ISABSPATH() when setting tmpdir. - - * emacs.c(compl_file): added OS2 ifdefs. - * exec.c(scriptexec): OS2: ignore path specified in #! scripts. - * sh.h(ksh_dupbase): OS2: now same as unix. - * trap.c(sigtraps[],inittraps): remove OS2 defines. - * trap.c(alarm_catcher): V7_SIGNALS: use sig, not i. - (Fixes from Dale DePriest) - -Mon Feb 27 10:06:00 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * configure.in: test for resource.h. - * c_ulimit.c: include ksh_time.h instead of sys/time.h; use - HAVE_SYS_RESOURCE_H when including sys/resource.h - (was HAVE_SETRLIMIT). - * aclocal.m4(KSH_RLIM_T): check sys/resources.h for rlim_t. - -Fri Feb 24 17:30:16 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(struct macro_state, macro): new structure/variable. - * vi.c(vi_hook, vi_cmd): use macro state info to allow nested macros, - detect recursive macros. - -Wed Feb 22 21:20:43 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_whence): "an export" instead of "a export". - * vi.c(classify[]): added @<char>. - * vi.c(vi_hook,vi_cmd): added support for @<char> (macros). - (fixes from Frank Edwards). - -Sun Feb 19 11:57:20 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(comexec): case CFUNC: use cp (not tp->name) when checking if - an autoloaded function was defined; save/restore kshname before/after - function call. - * var.c(popblock): don't set kshname to e->loc->argv[0] - it isn't - always right. - -Fri Feb 10 12:36:16 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(parse_args): check OF_SET when building set_opts (was - checking OF_CMDLINE). - - * conf-end.h(JOBS): don't define if SIGCONT not defined. - - * sh.h(FLOGIN) new enum. - * misc.c(options[],parse_args): added login option; set FLOGIN if - name in argv[0] starts with -. - * main.c(main): use FLOGIN flag; changed the way OS2 code looks - for profile. - -Wed Feb 1 09:55:40 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c(varsub): in FUNSET test, don't always fail # and % - substitutions (test for unset variable). - -Wed Jan 25 09:22:15 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(MIN_COLS): new define. - * sh.h(MIN_EDIT_SPACE): new define. - * vi.c(prompt_trunc): new variable. - * vi.c(edit_resize): calculate how much of prompt to truncate. - * lex.c(pprompt): added new argument; changed all calls. - * lex.c(yylex),emacs.c(x_emacs),vi.c(x_vi): move pprompt() inside - x_emacs(), x_vi() or just before read in yylex(). - -Tue Jan 24 12:35:18 NST 1995 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(parse_args): changed arrayname variable to array. - * var.c(basename): changed name of function to arrayname(); - changed all references (Based on fix from Dan Quinlan). - -Fri Dec 30 10:34:50 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * ksh.1: modifications to generate two man pages: sh and ksh - (Fixes from Michael Harrdt). - -Wed Dec 28 16:55:13 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(complete_word): don't check for globing characters. - -Wed Dec 28 10:32:18 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(search_access1): don't use ret variable; move "." to end - of xsuffixes/rsuffixes. - * os2.c(_execve): OS2: fixed typo. - * sh.h(FILENCMP): changed stricmp to strnicmp. - * os2/config.h: added define for rlim_t. - * os2/make.sed: changed > null to > nul. - * Makefile.in(dist): generate os2/makefile after running Dist-fixup. - (Fixes from Dale DePriest) - -Thu Dec 22 15:06:06 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.1.3 distribution - - * *.c: removed RCSids. - -Wed Dec 21 11:55:01 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * table.h(struct tbl): changed array field to union of array/fname; - changed all references. - * c_ksh.c(c_whence): print undefined function path. - * exec.c(comexec): do autoloading of undefined functions; print - error if function can't be found. - * exec.c(findcom): fill in tp->u.fname for undefined functions; - search FPATH if search of PATH fails. - * table.h(FC_NOAUTOLOAD): deleted define; removed all references. - -Tue Dec 20 14:16:16 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(herein): check if name is null. - * lex.h(HEREDELIM,SHEREDELIM,SHEREDQUOTE): new defines. - * lex.c(yylex): added code for HEREDELIM. - * syn.c(synio): use HEREDELIM. - * lex.c(readhere): changed to allow \n in here-delimiter. - - * tree.c(tputS): quote ", ` and $ inside "-quotes. - * tree.c(ptree,pioact): made static. - * tree.c(ptree,fptreef,vfptreef): added indent argument; changed to - use indent argument; changed all calls. - * tree.h(struct ioword): added delim field. - * tree.c(iocopy),syn.c(synio,syntaxerr): deal with delim field. - * tree.c(pioact): print contents of here documents. - - * c_ksh.c(c_typeset): typeset -f foo: set exit code to 1 if function - not found. - -Mon Dec 19 15:14:02 NST 1994 Michael Rendell (michael@garfield.cs.mun.ca) - - * history.c(histinit): increment line number for each history line. - - * exec.c(iosetup): OS2: if open /dev/null fails, try nul instead. - * Makefile.in(debugtools,install,uninstall): make check-pgrp last; - use $E. - * eval.c(eval,expand): OS2: added DODIRSWP code. - * main.c(main): OS2: only include $HOME/kshrc.ksh if interactive. - * sh.h(FILENCMP,FILECMP,FILECHCONV): new defines. - * misc.c(gmatch),vi.c(grabsearch,complete_word),emacs.c(compl_file): - OS2: case insensitive compares. - (fixes from Dale DePriest). - -Mon Dec 19 09:54:42 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_cmd): make ~ honour argcnt (fix from Troy Bollinger). - - * vi.c(complete_word): don't add trailing / if there is already one. - * vi.c(glob_word): return rval, not 0. - -Thu Dec 15 11:06:01 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_cmd): call complete_word() with argument of 1 not 0. - -Tue Dec 13 12:07:50 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(histget): made static; added approx argument; changed - all calls. - -Tue Dec 13 10:58:14 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * Makefile.in(mandir): use $(manext), not 1 (fix from Mike Long). - -Mon Dec 12 20:55:53 NST 1994 John Rochester (jr@panda.cs.mun.ca) - - * tree.c(ptree): print TELIF part of if statements - -Fri Dec 9 15:21:36 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * trap.c(inittraps): OS2: don't trap SIGTERM (temporary fix). - - * exec.c(search_access1): OS2: fixed to check for valid suffix - and change mode from X_OK to R_OK if appropriate. - - * edit.c: include <sys/stream.h>, <sys/ptem.h> for SCO unix - (fix from William Bader). - - * c_ulimit.c(c_ulimit): changed type of val from long to rlim_t - (fix from Thomas Gellekum and J.T.Conklin). - * aclocal.m4(KSH_RLIM_T): new test for rlim_t. - * configure.in: use KSH_RLIM_T. - * acconfig.h: added rlim_t. - -Thu Dec 8 12:20:25 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c(evalexpr): changed div-by-zero test to only derefernce vr - if operation is a divide. - -Mon Dec 5 14:42:52 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(search): OS2: typo - changed namlen to namelen. - * exec.c(search_access): OS2: check execute bit explicitly. - * main.c(main): OS2: don't include ./profile.ksh. - * options.h(DEFAULT_PATH): OS2: added /os2 to path. - * sh.h(ksh_getdup): OS2: define to getdup(); prototype for getdup(). - * Makefile.in(dist): create os2 Makefile based on distribution - Makefile.in. - -Mon Dec 5 12:17:14 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.1.2 distribution - - * eval.c(globit): when searching directory, re-calculate end of - string based on prefix length. - -Fri Dec 2 11:07:48 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(wordlist): if token isn't 'in', don't reject ;. - - * eval.c(expand): leading non-white-space IFS chars no cause initial - empty field. - -Thu Dec 1 12:04:00 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.1.1 distribution - -Thu Dec 1 10:50:38 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(TF_FATAL,fatal_trap): new define,variable. - * trap.c(inittraps,trapsig,fatal_trap_check,trap_pending,runtrap, - settrap): use TF_FATAL, fatal_trap. - * trap.c(runtraps): changed argument from bool to TF_* flag; changed - all calls. - * jobs.c(j_waitj): check fatal_trap flag. - -Wed Nov 30 11:20:03 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * conf-end.h: new file. - * config.h.bot: moved guts to conf-end.h. - - * emacs.c(struct x_ftab): changed type of xf_db_char from char to int. - * emacs.c(x_emacs): changed type of c from char to int. - * emacs.c(X_NTAB): new define. - * emacs.c(x_bind,x_init_eamcs): new X_NTAB, X_TABSZ. - * emacs.c(x_prefix3, x_meta3): ifdef OS2. - * emacs.c(x_bind): ifdef OS2; mask *a1 with CHARMASK. - - * exec.c(search_access): new function. - * exec.c(search): use search_access() instead of duplicating test. - * exec.c(search,search_access1): ifdef OS2. - - * Makefile.in(OS2FILES): new macro. - * Makefile.in(dist): add OS2FILES to distribution. - - * options.h(DEFAULT_PATH): ifdef OS2. - * edit.c(x_getc,x_mode): ifdef OS2. - * path.c(make_path): ifdef OS2. - -Tue Nov 29 16:51:35 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(EXECSHELL,EXECSHELL_STR): ifdef OS2. - * exec.c(scriptexec): use EXECSHELL_STR (was "EXECSHELL"). - - * trap.c(sigtraps[]): ifdef OS2. - * lex.c(yylex): ifdef OS2. - * misc.c(change_flag): ifdef OS2. - * history.c(HISTFILE): ifdef OS2. - * eval.c(homedir): ifdef OS2. - * c_sh.c(shbuiltins[]): ifdef OS2. - - * sh.h(ksh_execve,ksh_dupbase): new defines. - - * jobs.c(exchild): ifdef use of nice. - -Tue Nov 29 12:32:26 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(globit,copy_non_glob): changed to pass/use &xp it can change - (memory can be re-allocated). - - * ksh_dir.h(NLENGTH): new macro. - * eval.c(globit): use NLENGTH macro. - - * alloc.c(aresize): removed redundant np and optr variables. - -Mon Nov 28 14:55:49 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * config.h.bot(HISTORY): new define. - * lex.c(getsc_): ifdef HISTORY. - * history.c: ifdef HISTORY (dummy histsave, init_histvec and - hist_finish routines). - * c_ksh.c(kshbuiltins): c_fc: ifdef KSH - * lex.h(HISTORY): changed to HISTORYSIZE; changed all references. - - * options.h(KSH): new define. - * config.h.bot: changed to deal with KSH define. - * exec.c(do_select,pr_menu): ifdef KSH. - * exec.c(execute): case TSELECT: ifdef KSH. - * c_ksh.c(c_whence,c_command,kshbuiltins[]): ifdef KSH. - * main.c(initcoms[],main): ifdef some aliases, SECONDS/RANDOM/TMOUT. - * syn.c(get_command): case TDBRACKET: ifdef KSH. - * syn.c(db_parse,db_aoexpr,db_nexpr,dp_primary): ifdef KSH. - * syn.c(tokentab[]): "select", "[[" ifdef KSH. - * var.c(special,getspec,setspec,unsetspec): ifdef KSH. - * ksh.1: ifdef KSH; misc fixups. - (changes mostly from Michael Haardt). - -Mon Nov 28 14:27:34 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(skip_varname,special,global,local), table.c(hash,tsearch, - tenter): made argument and return value const. - - * main.c(version_param[]): new variable. - * main.c(initcoms[],main): use version_param instead of "KSH_VERSION". - - * history.c(histsave): EASY_HISTORY: changed to take same arguments - as COMPLEX_HISTORY histsave(); changed all calls, removing - unneeded ifdefs. - - * vi.c(x_vi), emacs.c(x_emacs): changed unwind() call from LINTR - to LSHELL so newline isn't printed twice - also lets runtrap() - set the exit code. - - * vi.c(vi_cmd): increment source line if saving to history. - -Fri Nov 25 14:43:57 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(get_command): don't generate a syntax error if EOF is read. - - * configure.in: add LDSTATIC to LDFALGS if the former is set. - - * history.c(hist_skip_back): start at the end of the buffer, not - one past the end (fix from Simon J. Gerraty). - -Thu Nov 24 09:53:49 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * syn.c(get_command,dogroup): allow { ...;} to be used instead - of do ...;done in for/select loops. - -Wed Nov 23 09:09:43 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.1.0 distribution - - * var.c(setspec): set seconds to current time - assigned value, - not just current time. - - * emacs.c(x_copy_arg): deleted ifdef'd out code (x_prev_histword() - does what it was supposed to do). - - * emacs.c(compl_command): don't call list_stash() twice (happened - if type == 2 and multi set). - -Tue Nov 22 10:26:13 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_test.c(eval_unop): don't assume S_ISBLK, S_ISCHR, S_ISUID, - S_ISGID are defined. - - * path.c(make_path): avoid addeding extra /'s in paths; avoid - infinate loop if result buffer not big enough. - - * main.c(main): setting PWD: avoid calling setstr() with the - current value of PWD. - - * var.c(typeset): set free_me to 0 if t is integer. - - * emacs.c(x_search_hist): added overflow checking to fixed sized - buffers. - * emacs.c(compl_file,compl_command): removed fixed sized buffers. - - * vi.c(x_vi), emacs.c(x_emacs): on interrupt, unwind instead of - calling runtraps(). - - * vi.c(vi_cmd): added 'g' command to goto the most recent command. - - * c_sh.c(c_read), c_ksh.c(c_print): always increment source->line when - saving history. - -Mon Nov 21 10:45:34 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(do_selectargs): removed use of pmenu variable (redundant) - use isspace() instead of IFS chars; include <ctype.h>. - - * aclocal.m4(KSH_TERM_CHECK): do not allow HAVE_TERMIOS_H check to - succeed on ultrix (avoid type-ahead loss). - - * emacs.c(x_fword): cahnged loop to skip non word chars, then word - chars (was the opposite). - - * main.c(shell): after error/interrupt/etc, reset an EOF if ignoreeof - option is set. - - * vi.c(classify[]): changed space (040) from C_|U_ to M_ - (got broken in 5.0.10). - - * ksh_wait.h(ksh_waitpid): new define. - * jobs.c(waitpid): moved define to ksh_wait.h; changed use of - waitpid() to ksh_waitpid(). - - * history.c(hist_skip_back),io.c(maketemp): use procpid instead of - getpid(). - -Fri Nov 18 16:08:09 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(FSHOW8): inverted meaning: now if set, do the M- stuff - (done so 8 bit char sets work by default). - - * main.c(main): set exstat to 127 if command file can't be opened. - - * main.c(main): use argv[0] instead of kshname when deciding - whether to include profiles. - -Fri Nov 18 14:25:11 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.10.1 distribution - - * tty.h: deleted KSH_VDISABLE; moved _POSIX_VDISABLE stuff to edit.c. - * edit.c(x_init): calculate value for vdisable_c. - * edit.c(x_mode): use vdisable_c instead of KSH_VDISABLE. - -Thu Nov 17 12:09:13 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.10 distribution - - * lex.c(getsc_),edit.c(x_getc): call runtraps(FALSE) if read is - interrupted. - * vi.c(x_vi),emacs.c(x_emacs): call runtraps(FALSE) (was TRUE). - -Wed Nov 16 09:48:54 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(execute,scriptexec): call __setostype(0)/(1) before/after - execve() on ISC machines. - - * trap.c(trap_pending): new fuction. - * jobs.c(j_waitj): use trap_pending(); return -<signal-number> if - interrupted. - * jobs.c(waitfor): added sigp argument; changed all calls. - * c_sh.c(c_wait): use signal number set by waitfor() to set exit status. - - * shf.c(SHF_INTERRUPT): no longer calls intrcheck() - now sets - error flag and returns EOF. - * c_sh.c(c_read): re-arranged to have single shf_getc() call; if read - interrupted and signal is fatal (fatal_trap_check()), make read - return with appropriate exit code. - * trap.c(fatal_trap_check()): new function. - * trap.c(inittraps()): catch and cleanup on SIGHUP; don't force the - setting of SIGINT,SIGQUIT,SIGTERM,SIGHUP. - - * table.c(tenter): changed to use strlen()/memcpy() instead of loops. - - * var.c(initvar): new function. - * main.c(main): call initvar(). - * var.c(special): changed to use hash table for lookup. - - * main.c(main),syn.c(initkeywords): moved table initialization - from main() to initkeywords(). - -Tue Nov 15 10:01:20 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(copy_non_glob): new routine. - * eval.c(globit): changed to use copy_non_glob() instead of strchr(). - - * misc.c(cclass): if [..] pattern has no closing ], do literal - compare of character with [ (used to always fail). - - * eval.c(globit): handle symbolic links in the check code. - - * configure.in: added check for lstat(). - * ksh_stat.h: defined lstat to be stat if lstat is not available. - - * exec.c(search): return Xclose() instead of Xstring(). - -Mon Nov 14 16:28:41 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * ksh_times.h: changed BROKEN_TIMES to TIMES_BROKEN. - - * c_test.c(syntax): removed \n from error messages. - - * eval.c(glob,globit): changed to use dynamicly allocated string - instead of a fixed sized buffer. - -Thu Nov 10 10:47:55 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * history.c(sethistsize): don't set size if new size is < 0; fixed - offset calculation so histptr is not way beyond the end of array; - if history is shrinking, save newest history back. - - * vi.c(vi_hook): case VSEARCH: call restore_cbuf() after \n or \r. - - * main.c(quitenv): call restfd() even if fd < 0 to re-close fd. - - * exec.c(execute): commented out code that set savefd[0/1] to -1 - if input/output was a pipeline. - - * missing.c(dup2_fixup): deleted function. - * sh.h(dup2->dup2_fixup): deleted define. - * io.c(ksh_dup2): new function; changed all dup2() calls to ksh_dup2(). - -Wed Nov 9 11:11:31 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * edit.h(struct edchars): added eof field. - * edit.c(x_init): initialize eof fields. - * vi.c(x_vi): changed ^D to edchars.eof. - * vi.c(vi_cmd): make I/cc/S skip blanks. - - * history.c(histsave): EASY_HISTORY: use memmove() to copy pointers - back one. - - * vi.c(vi_cmd): make G act the same as at&t ksh. - * vi.c(ismeta,O_): deleted macros; removed all references to O_. - * vi.c(classify[]): add ^X and ^F to command mode. - -Tue Nov 8 11:15:01 NST 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * main.c(initsubs[]): don't set SHELL. - - * vi.c(vi_cmd): added v command (start up vi). - * vi.c(vi_hook): added case for vi_cmd() returning 2. - * vi.c(grabsearch): set anchored flag if pattern starts with ^. - (based on fixes from Michael Jetzer). - - * history.c(findhist): added anchored argument; changed all calls. - * history.c(histget): start searching from histptr-1; changed to - call findhist() to do searching. - * history.c(c_fc): changed to print multiline commands correctly. - (based on fixes from Michael Jetzer). - -Fri Nov 4 10:30:14 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(yylex): when pushing alias sources, allocate from existing - source's area. - - * lex.c(struct source): added areap field. - * lex.c(pushs): added area argument; changed all calls. - * history.c(histrpl): changed constant sized hline[] to expandable - string; removed hline/hsize parameters; changed all calls; put - newline at end of string. - * history.c(c_fc): changed to use dynamically sized buffer when reading - commands; strip nulls after read. - * history.c(histbackup): made static. - - * trap.c(block_pipe): if handler is SIG_DFL, change it to SIG_IGN. - - * lex.c(readhere): changed to allow eof after end-of-file marker - (bug report from Andrew Moore). - -Thu Nov 3 09:09:39 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(coproc_read_close,coproc_write_close): new functions. - * c_sh.c(c_read): call coproc_read_close() when eof is read. - * c_ksh.c(c_print): set PO_COPROC if fd is coproc.write; call - coproc_write_close() if write fails due to EPIPE. - * exec.c(iosetup): call coproc_write_close() after #>&p. - * sh.h(EF_COPROC_DUPED): deleted. - * sh.h(struct coproc): deleted isopen field. - * io.c(cleanup_coproc): do not use isopen field. - * c_sh.c(c_exec): deleted EF_COPROC_DUPED code. - * exec.c(TCOPROC): don't set isopen; don't start new coprocess if - old job exists and write pipe hasn't been closed. - - * misc.c(str_zcpy): new function. - * lex.c(getsc_): made line[] buffer local/static; use str_zcpy() - to fill line[]. - * history.c(c_fc): use local hline buffer instead of global line[]; - use str_zcpy() to fill hline[]; - * history.c(histrpl): added hline and hsize parameters; changed all - calls. - * history.c(hist_init): EASY_HISTORY: use local hilne buffer instead - of global line[]. - * lex.h(line[]): deleted. - * syn.c(compile): do not set s->str to null for STTY and SHIST. - -Wed Nov 2 11:48:36 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(getsc_): case SDDPAREN: set csstate before going to - SPAREN state. - - * Makefile.in(RCSFILES): removed POSIX from list (now covered in - man page). - -Tue Nov 1 09:27:46 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(comsub): save/restore source before/after compile(). - - * c_ulimit.c(c_ulimit): allow value to be arithmetic expression - (as per Korn book). - - * c_sh.c(c_read): call set_prompt() before printing prompt. - - * expr.c(v_evaluate): treat an empty expression as 0. - -Mon Oct 31 09:23:57 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(grabhist,grabsearch): check that history line doesn't overflow - edit buffer. - - * history.c(hist_finish): (EASY_HISTORY) changed for-loop condition to - prevent passing the end of history. - - * eval.c(expand): when stuffing MAGIC, cast c to char. - - * misc.c(strip_nuls): new function. - * lex.c(getsc_): case STTY/SFILE/SSTDIN: call strip_nuls() after - reading commands. - - * edit.c(set_editmode): reversed strstr() arguments - check for - vi/emacs in $EDITOR/$VISUAL string. - - * syn.c(yyparse): allow EOF as well as newline after a command. - * lex.c(getsc_): case SSTRING: don't fake newline - -Sun Oct 30 10:55:20 NST 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_print): echo: check for -n, -e and -E options. - - * exec.c(comexec): don't allow command -p if restricted. - -Fri Oct 28 10:24:48 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(typeset): in fake_assign code, was freeing t->val.s + t->type - instead of t->val.s - now uses free_me variable instead of aflag. - - * Makefile.in(depend): change blank lines in depend output to sh.h - so dumb make(1)s won't die. - - * mail.c: changed checking to use atime/mtime instead of size; changed - struct mbox mb_size field to mb_mtime, changed all references. - - * main.c(shell): do not execute (or set the exit status for) a null - command. - * lex.c(readhere): read the newline after the eof marker. - -Wed Oct 26 09:11:08 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(globit): added FMARKDIRS support. - - * emacs.c(x_ftab[]): added entries for ansi arrow key bindings. - - * exec.c(execute,iosetup): move tracing of redirections from - execute() to iosetup() so expanded name can be printed. - - * exec.c(execute): case TDBRACKET: read was being called instead of - test. - - * ksh_stat.h(S_ISCDF): new define. - * c_test.c: added -H for context dependent files (HP bizarreness). - - * main.c(initcoms[]): added alias local=typeset. - - * Makefile.in(stamp-h,config.status): added double quotes CONFIG_FILES - and LDSTATIC assignments for dmake. - * aclocal.m4(KSH_SYS_SIGLIST): do something with sys_siglist so it - isn't optimized away. - * aclocal.m4(KSH_CLOCK_T): do extra check for clock_t in sys/times.h. - * acconfig.h(CLOCK_T_IN_SYS_TIMES_H): new define. - * sh.h(SIGNALS): use _SIGMAX if NSIG, _MINIX not defined. - (fixes from Brian Campbell <brianc@qnx.com>) - - * emacs.c(x_transpose): changed behavior if FGMACS flag set - (fix from <guy@netapp.com>). - -Tue Oct 25 17:11:58 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * tty.c(KSH_VDISABLE): new define. - * edit.c(x_init): use KSH_VDISABLE. - -Tue Oct 25 09:55:09 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.9 distribution - - * c_ulimit.c(c_ulimit): changed SOFT, HARD from enum to defines - to avoid problems with ancient compilers. - - * vi.c(CHAR_LEN,char_len): changed macro to function; added FVISHOW8 - support. - * misc.c(options[]), sh.h(FVISHOW8): added FVISHOW8 option. - -Sun Oct 23 11:02:26 NDT 1994 Michael Rendell (michael@maple.cs.mun.ca) - - * main.c(shell): keep unwinding if LINTR and not interactive. - - * lex.c(yylex): do redumentery quote parsing for $(..). - -Thu Oct 20 11:02:27 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(execute): case TSELECT: set rv to 1 if eof is read. - * exec.c(execute): case TFOR/TSELECT/TWHILE/TUNTIL: set rv to 0 before - entering loop, but after setjmp incase of a continue; rv to 0 - after a break. - * exec.c(execute): case TFOR/TSELECT: do readonly check before - assigning value. - * c_ksh.c(c_getopts): do readonly check before assigning value. - - * misc.c(print_columns),c_ksh.c(kill_fmt_entry), - misc.c(options_fmt_entry),exec.c(select_fmt_entry): new functions. - * c_ksh.c(c_kill),misc.c(printoptions),exec.c(pr_menu): use - print_columns() call a call-back routine to format information - in columns. - -Wed Oct 19 10:26:25 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * misc.c(cclass): require MAGIC before - and ]. - * eval.c(expand): prefix - and ] with MAGIC if appropriate. - - * var.c(typeset): don't allow export flag of readonly variables - to be cleared. - - * eval.c(globit): added call to intrcheck(). - -Mon Oct 17 11:48:05 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * lex.c(readhere): check for and report write errors. - -Sun Oct 16 16:10:59 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_ksh.c(c_cd): don't allow cd if restricted. - * exec.c(comexec): if restricted and command contains /, print error. - * exec.c(ioestup): if restricted, don't allow file creations. - * main.c(is_restricted): new function. - * main.c(main): save and reset FRESTRICTED during .profile/ENV reading; - set FRESTRICTED if argv[0] or SHELL refers to restricted shell; - make PATH, ENV, SHELL readonly if restricted. - * var.c(typeset): check for restricted shell and PATH/ENV/SHELL. - -Thu Oct 13 21:01:14 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(shell): only call j_notify() for interactive shells. - - * c_sh.c(c_read): check if variable is readonly before assigning - value. - -Wed Oct 12 14:08:46 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(COPROC),tree.h(TCOPROC,XCOPROC): added defines. - * lex.c(yylex): return COPROC for |& token. - * syn.c(tokentab): added COPROC. - * syn.c(c_list): accept COPROC, create TCOPROC node. - * tree.c(ptree): added case for TCOPROC. - * exec.c(execute): added case for TCOPROC. - * io.c(check_fd,get_coproc_fd): new functions. - * c_sh.c(c_read),c_ksh.c(c_print): changed to use check_fd(); - added -p option; for c_print() ensure SIGPIPE doesn't kill shell. - * exec.c(iosetup): changed to use check_fd() for IODUP; when - checking fore close, require exactly the string '-', not any - string starting with '-'; added strerror() to error message. - * jobs.c(exchild): don't open /dev/null if XCOPROC; close - coproc.read/write/childread in child if XCOPROC; don't pass - XCOPROC flag on to execute(); set coproc.job to job in parent - if XCOPROC. - * jobs.c(check_job): clear coproc.job if said job dies. - * trap.c(block_pipe,restore_pipe): new functions. - * sh.h(struct coproc, EF_COPROC_DUPED): new structure and define. - * c_sh.c(c_exec): if EF_COPROC_DUPED set, clean up co-process stuff. - - * main.c(cleanup_parents_env): new function. - * jobs.c(exchild): call cleanup_parents_env() after fork(). - - * tree.h(IORDUP): new define. - * lex.c(yylex): changed redirection parsing to not accept & only after - a single < or >; set IORDUP flag for x<&y; fixed <</<>/>> check to - not allow >< (again). - * tree.c(pioact): use IORDUP flag to print <& or >&. - - * jobs.c(exchild): set JF_ORIGFG flag if job started in foreground. - * jobs.c(j_waitj): don't get default tty settings if JF_ORIGFG not - set. - - * misc.c(parse_args): treat -A as a flag that is handled later - (used to require argument); do array setting after argument - sorting. - * var.c(set_array): changed second argument from 0/1 flag to - -1/1 flag; changed all calls. - -Thu Oct 6 11:55:27 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * table.c(tinit): added initial table size argument; call texpand - if size isn't 0; changed all calls. - * main.c(main): try to make sure table size is big enough for - builtins and keywords (cut down on amount of re-hashing). - - * eval.c(expand): added next and prev fields to struct SubType; - removed fixed length subtype array, changed code to allocate - SubTypes as needed. - -Wed Oct 5 09:25:06 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * main.c(main): moved initio() above inittraps() as later can print - stuff. - - * table.h(IMPORT): new flag. - * var.c(typeset): if IMPORT flag set, don't allow array references, - insist on assignment. - * var.c(import): deleted function. - * main.c(main): use typeset() instead of import(). - - * sh.h: include expand.h. - * expand.h(Xnleft): new define. - * expand.h(struct XString, Xinit): added areap field; added area - argument to Xinit; changed all calls. - * lex.h(struct source): added xs field. - * shf.c(shf_gets,shf_getse): changed name fromshf_gets to shf_getse; - return pointer to null byte instead of start of buffer. - * lex.c(pushs): if type is SFILE or SSTDIN, initialize s->xs. - * lex.c(getsc_): case SFILE/SSTDIN: use s->xs instead of fixed - size line buffer. - - * syn.c(compile): don't change s->str if SFILE. - * main.c(main): call pushs() explicitly for each of SSTRING, - SFILE, SSTDIN, STTY. - - * aclocal.m4(KSH_GCC_FUNC_ATTR): changed GCC_FUNC_ATTR to - HAVE_GCC_FUNC_ATTR. - * config.h.bot: changed use of GCC_FUNC_ATTR; deleted - GCC_FA_NORETURN, GCC_FA_CONST, GCC_FA_FORMAT defines, created - generic GCC_FUNC_ATTR define; changed all uses of GCC_FA_*. - - * main.c(main): set s->file for SSTDIN input. - - * main.c(shell): pass LERROR on if not interactive. - - * expand.h(Xcheck,XcheckN): added XcheckN define, changed Xcheck - to use XcheckN; made XcheckN call Xcheck_grow_() do do any real work - (to cut down on code size). - * misc.c(Xcheck_grow_): new function. - * exec.c(search),c_sh.c(c_read): changed to use Xstring() routines - (used to use the fixed size buffer line[]). - * exec.c(findcom): avoid re-saving search() result in ATEMP. - -Tue Oct 4 15:32:37 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * jobs.c(j_jobs): return int value indicating error/ok; changed - all calls. - - * misc.c(getn): added int * argument to hold result; changed - return value to indicate success/failure; changed all calls. - * misc.c(bi_getn): new function. - * misc.c(getn_): deleted function. - - * io.c(internal_error,error_prefix,warningf): new functions. - * *.c: changed errorf() calls reporting internal errors to - use internal_error() function; changed many shellf()s to - warningf(). - * io.c(errorf),lex.c(yyerror): changed to use error_prefix(). - - * alloc.c(aprint): ifdef'd out. - * tree.c(phash): deleted function. - -Mon Oct 3 15:08:24 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * sh.h(kshname): new variable - * main.c(main): changed name to kshname, deleted local variable. - * exec.c(comsub): update kshname. - * var.c(popblock): restore kshname. - * io.c(errorf,bi_errorf): print shell name before error message. - - * c_ksh.c(c_cd): print new directory on stdout, not stderr. - - * sh.h(GI_MINUS): new define. - * misc.c(ksh_getopts): changed so once - or + introduces option, - all options must start with same character. - - * sh.h(builtin_argv0): new variable. - * exec.c(call_builtin): set/clear builtin_argv0, builtin_flag; changed - argument to a struct tbl *; changed all calls. - * io.c(bi_errorf): new function. - * c_ksh.c,c_sh.c,c_ulimit.c,emacs.c,history.c,jobs.c: changed all uses - of errorf() to bi_errorf(). - * emacs.c(x_bind): changed return value to int; changed all calls. - * history.c(histrpl): return 0 if there is an error; changed all calls. - * misc.c(parse_args): use bi_errorf(); return -1 for error; changed all - calls. - * misc.c(ksh_getopts): call bi_errorf instead of errorf which means - ksh_getopts() may return after an error, so changed all calls to - check for '?' return. - - * exec.c(iosetup): use shellf() to report errors and return value - indicating success or failure. - * exec.c(execute): if iosetup fails, cause fatal error for special - builtins, return otherwise; print PS4 and redirections. - -Fri Sep 30 15:17:37 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_ulimit.c(c_ulimit): accept unlimited as a valid value. - - * c_test.c(c_test): changed posix special case code to use - while loop. - - * c_ksh.c(c_whence): for whence -p, don't look for built-ins or - fuctions. - -Thu Sep 29 10:34:59 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_ksh.c(c_alias): added -r option so the sysv-bounre shell - hash -r will work. - - * eval.c(debunk): use strchr() to find first MAGIC, if any. - -Wed Sep 28 15:34:32 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * sh.h(O_NONBLOCK): define to O_NDELAY or FNDELAY if not defined. - * main.c(main): if stdin is O_NONBLOCK'd, clear O_NONBLOCK. - - * misc.c(options[], parse_args): make -c a normal flag, not an option - with an argument (POSIX); deleted cargp argument to parse_args(). - * main.c(main): print error if -c and no arguments left. - - * lex.h(SSTDIN): new define. - * lex.c(yylex): added case for SSTDIN. - * main.c(main): if -s flag used, set source type to SSTDIN. - -Tue Sep 27 08:52:11 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * lex.c(get_brace_var): new function. - * lex.c(yylex): removed most ${..} parsing - leave it to expand(); - use get_brace_var() to read the variable part of a ${..} expression. - * tree.c(tputs,wdscan): case OSUBST: delete code that understood - partially compiled ${..}. - * sh.h(C_SUBOP,C_SUBOP1,C_SUBOP2): changed C_SUBOP to C_SUBOP1, - added C_SUBOP2. - * misc.c(initctypes): removed # and % from C_SUBOP; changed C_SUBOP to - C_SUBOP1; added C_SUBOP2. - * eval.c(varsub): look at word part of substitution to figure out - type of substitution; check for bad substitutions; check for unset - variables for #/% substitutions. - * eval.c(struct SubType): changed type field to stype; changed quote - field to short; added f field. - * tree.h(DOTEMP_): new define. - * eval.c(expand): case CSUBST: case '=': deleted bad substitution - error (now handled in varsub); case OSUBST: removed special handling - of trimming - varsub() does it now; when pushing/poping state (st), - save/restore value of f; set f to DOPAT when trimming; case CSUBST: - case '=': restore original position in string, substitute the value - of the variable (as opposed to the value that was assigned to the - variable); case OSUBST: if '?' qualifier, turn off DOBLANK when - expandined word part; define DOTEMP_ when expanding word part - of ${..[#%=?]..}; deleted first_eq and tstart - replaced with - tilde_ok and saw_eq. - - * eval.c(expand): tilde expansion: use tstart variable instead of cp; - changed '?' error message to be like at&t ksh; don't test if strval() - returns NULL - it doesn't. - - * var.c(strval): if !ISSET, instead of returning null, set s to null. - - * exec.c(comexec): case TDBRACKET: don't pass DOASNTILDE to evalstr(). - - * exec.c(scriptexec): changed line[] to buf[] so it doesn't get - confused with global the line[]. - - * main.c(initsubs): initialize PS4. - * edit.c(x_getc): cast char to unsigned before returning. - -Mon Sep 26 11:06:55 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * eval.c(globit): call strnsave instead of strsave; if file has - trailing /, use stat() to check that it is a directory. - - * eval.c(expand): case CSUBST: case #/%: deleted duplicate *dp = 0; - case CSUBST: case =: copy string and call debunk() to oust MAGICs. - - * misc.c(print_value_quoted): deleted bogus shf_shlout argument to - shprintf(); deleted unneeded test (p != s). - - * main.c(main): turn on FBRACEEXPAND. - * misc.c(change_flag): turn FBRACEEXPAND off if turning FPOSIX on. - - * vi.c(x_vi): use x_vi_zotc() to print ^D. - * vi.c(CHAR_LEN): new define. - * vi.c(vi_hook): use CHAR_LEN() instead of inline tests for - c < ' ' || c== 0x7f; search editing: display M- if necessary. - * vi.c(display): changed to deal tiwh meta-characters. - - * vi.c(x_vi_zotc): print M- for meta chars. - * emacs.c(x_e_getc): new function; changed all x_getc() calls to - x_e_getc() calls. - * edit.c(x_getc): don't and out upper bit. - - * sh.h(OPAREN,CPAREN,OBRACK,CBRACK,OBRACE,CBRACE): new defines - * expr.c(OPAREN,CPAREN): re-named to OPEN_PAREN, CLOSE_PAREN. - - * eval.c(debunk): changed to convert MAGIC MAGIC -> MAGIC. - * eval.c(expand): removed ismagic_bracket stuff - not needed. - * eval.c(expand): always restore value of quote when CSUBST - reached; don't set DOGLOB in fdo if trimming. - -Sat Sep 24 11:46:03 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * tree.h(DOBRACE_): new define. - * eval.c(expand): changed check for leading ! in [..] to be more - robust (old test could have looked before start of string). - * eval.c(expand,maybe_expand_tilde): case ~: moved code into a function - (maybe_expand_tilde). - * eval.c(expand): expand alternations after macros, before globing - (was before macros). - * eval.c(alt_expand): changed to be called after macro expansion. - * eval.c(alt_scan,alt_count): deleted (no longer needed). - - * misc.c(cclass): return NULL (no match) if first char in a range - is greater than the second. - * eval.c(expand): when building strings, stuff literal MAGIC chars. - -Thu Sep 22 15:05:48 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(comexec): re-arranged handling of builtin and exec; - handle command (and command -p, etc.); deleted comexec_flags - variable; made function static again; removed fcflags argument. - * table.h(FC_NOBLOCK): deleted define. - * c_sh.c(c_exec): changed empty function to deal with preserving I/O - redirects (code taken from comexec()). - * c_ksh.c(c_command): new function - calls c_whence. - * c_ksh.c(c_whence): removed code to deal with command -p. - - * Makefile.in: changed [ to test. - * shf.h: changed errno structure member to errno_; changed all uses - (fixes for QNX from Brian Campbell). - - * c_test.c(enum Op): deleted trailing comma (some compilers complain). - * proto.h: added volatile to tp arg of comexec() prototype. - -Thu Sep 22 11:08:31 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.8 distribution - - * Makefile.in(install): added missing dollar (fix from Thomas Gellekum). - - * emacs.c: changed CMASK to CHARMASK to avoid conflicts with some - system headers (eg, HP-UX 9.01 <sys/param.h>). Reported by Sean - Hogan. - - * history.c(c_fc): wp not being incremented; -e strcmp() test reversed - (reported by Sean Hogan). - -Thu Sep 21 21:12:03 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.7 distribution - -Tue Sep 20 09:56:54 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * history.c(c_fc): use ksh_getopt() to parse arguments. - * c_ksh.c(c_bind): use ksh_getopt() to parse arguments. - - * main.c(initcoms[]): changed hash alias from alias -t - to alias -t --. - - * misc.c(print_value_quoted): don't use quotes if no special - characters. - - * c_ksh.c(c_whence): added POSIX command command. - - * c_sh.c(c_label): removed check for null wp. - - * exec.c(comexec): added new flags argument (FC_*); - don't call newblock() if FC_NOBLOCK set; pass flags on to - findcom(); changed all calls; made comexc() a non-static - function. - - * table.h:(FC_SPECBI,FC_FUNC,FC_REGBI,FC_UNREGBI,FC_PATH,FC_DEFPATH, - FC_NOAUTOLOAD,FC_NOBLOCK): new defines. - * exec.c(findcom): merged insert/justsearch/autoload arguments - into one flags argument; changed code to check various flags; - changed all calls. - -Sat Sep 17 20:17:59 NDT 1994 Michael Rendell (michael@garfield.cs.mun.ca) - - * exec.c(comexec): print error if builtin has no command. - - * exec.c(execute): before doing redirections, check for TCOM and - evaluate arguments and determine if it is a special builtin; - print arguments (using PS4) if FXTRACE set; case TCOM: simply call - comexec(). - * exec.c(comexec): deleted vp argument; only call newblock() if - needed (ie, !special, !empty); evaluate assignments and put - in environment one at a time; print environment (using PS4) if - FXTRACE set; removed code to turn empty command into :; - removed environment setting code in switch statement. - * exec.c(echo): deleted function. - - * lex.c(yylex): only honour CMDWORD if FPOSIX set. - - * c_sh.c(shbuiltins): removed = attribute from false/true commands. - - * sh.h(E_TCOM): delete define - not used. - - * sh.h(null),var.c: use EXTERN for initialization of null. - * sh.h(space,newline,slash): new variables (" ", "\n", "/") - use these everwhere instead of "", " ", "\n", "/". - * path.c: include sh.h. - - * exec.c(execute): combined TFOR/TSELECT cases. - -Fri Sep 16 11:32:01 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(CMDWORD): new define to prevent continued alias expansion in - non-command contexts. - * lex.c(yylex): only set ALIAS if SF_ALIAS and CMDWORD are set. - * syn.c(get_command): case LWORD/REDIR: pass CMDWORD if argc is 0. - - * exec.c(comexec): if there is no command, do assignments and set - the return value to subst_exstat (used to fake a : command). - - * sh.h(subst_exstat): new variable. - * exec.c(execute): case TCOM: clear subst_exstat before doing eval()s. - * eval.c(expand): set subst_exstat to return value of waitlast(). - * c_sh.c(c_set): if !FPOSIX, return subst_exstat instead of 0. - - * exec.c(execute): removed redundant "exstat = rv;" near if FERREXIT. - * exec.c(comexec): case CFUNC: for normal function completion, set - i to 0 and rv to return value of execute() (was i=LRETURN,exstat=..). - - * main.c(include): return -1 if file could not be found/opened, - otherwise, the exit status of the last command is returned; - changed all calls. - * c_sh.c(c_dot): print error if include() returns < 0. - - * var.c(setspec): ifdef EDIT'd V_VISUAL, V_EDITOR cases. - - * misc.c(parse_args): no longer accept set -o alternations as - a substitute for set -o braceexpand. - - * jobs.c(j_exit): when restoring tty process group, also restore - our process group. - - * config.h.bot: define JOB_SIGS iff we have modern signal and wait - routines. - * jobs.c: use ifdef JOB_SIGS instead of ifdef JOBS when setting - signal masks and routines or using waitpid; define TTY_PGRP and - NEED_PGRP_SYNC separately from JOBS. - * jobs.c(j_kill): only send SIGCONT if job is stopped. - * jobs.c(j_jobs): remove exited/signaled jobs even if !FMONITOR, - un-ifdef JOBS same. - - * jobs.c(check_job): ifdef FNOTIFY with JOBS (noted by - Michael Haardt <u31b3hs@POOL.Informatik.RWTH-Aachen.DE>). - * jobs.c(j_notify,j_waitj): put ifdef JOBS around use of FMONITOR. - * main.c(shell): removed ifdef JOBS from declaration of interactive. - - * ksh_limval.h,sh.h: moved include of <limits.h> from ksh_limval.h - to sh.h since some machines define CLK_TCK there. - -Thu Sep 15 09:58:14 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * vi.c(vi_cmd): took out ESC as file completion char in command mode - (too annoying). - - * jobs.c(exchild): if starting a job in the background and FBGNICE - is set, call nice(). - - * Makefile.in: changed maxext to manext (fix from Thomas Gellekum - <thomas@ghpc8.ihf.rwth-aachen.de>); in the install target, check - if the path of the installed shell is in /etc/shells and - complain if it isn't; added depend target, removed old $(OBJS) - and trap.o dependencies. - -Wed Sep 14 09:39:55 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(options[]): changed position of vi-tabcomplete option. - - * lex.c(yylex): ifdef use of FVI/FEMACS/FGMACES with VI/EMACS - (fix from Gordan Larson <hoh@approve.se>). - - * ksh.1(DESCRIPTION): added missing P in \fP - (fix from Gordan Larson <hoh@approve.se>). - -Tue Sep 13 11:01:47 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.6 distribution - -Mon Sep 12 11:39:07 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(scriptexec): changed so it will compile if SHARPBANG is - defined; fixed error message; shell argument is everything up to - a newline; don't listen to #! line unless it ends in a newline. - - * syn.c(get_command): case FOR: changed VARASN to ARRAYVAR. - - * jobs.c(waitfor): restore signal mask before returning if named job - isn't own own; when waiting for unspecified jobs, only consider - running jobs; don't pass JW_STOPPEDWAIT flag to j_wait. - - * table.h(V_TMPDIR,tmpdir): new define/variable. - * var.c(setspec, unsetspec): added case for V_TMPDIR. - * io.c(maketemp): use tmpdir variable if it is set, else use /tmp. - - * var.c(popblock): if poping a variable that wasn't set in the old - environment, call unsetspec(). - -Fri Sep 9 10:37:18 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(PATHMAX): increased value from 256 to 1024. - - * main.c(main): moved initialization of name to start of main; - if getcwd() fails, use name in error message and call shf_flush(). - - * io.c(maketemp): check/use TMPDIR variable instead of /tmp; allocate - temp structure and path in one chunk. - - * c_ksh.c(c_cd): when checking for no home directory, compare - against null, not (char *) 0. - -Thu Sep 8 10:52:59 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(yylex): case SHIST: flush shl_out after printing command. - - * jobs.c(check_job): when notifing, do not remove job if it is stopped. - -Wed Sep 7 10:55:35 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.5 distribution - - * main.c(shell): commented out shf_flush(shl_out) - shouldn't be - needed since -v flushes itself. - -Tue Sep 6 09:30:57 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * sh.h(LSHELL,really_exit): new define/variable. - * c_sh.c(c_exitreturn): if how is LEXIT, check if there are stopped - jobs and, if so, unwind with LSHELL (also check/set really_exit). - * main.c(shell): added case for LSHELL - stop unwinding if shell - is interactive; changed local reallyquit to global really_exit. - * main.c(include),exec.c(comexec): added case for LSHELL. - - * c_sh.c(c_exitreturn): quitenv() for LRETURN as well as LEXIT. - - * sh.h(TF_CHANGED): new define. - * trap.c(runtrap): default EXIT/ERR trap during execution and restore - original if TF_CHANGED not set. - * trap.c(settrap): set TF_CHANGED when setting trap. - - * jobs.c(j_stopped): check that job created by current process; print - "You have stopped jobs" message. - * main.c(shell): don't print you have stopped jobs message. - - * main.c(initcoms): removed echo alias. - * c_ksh.c(kshbuiltins): added echo as a builtin. - * c_ksh.c(c_print): if wp[0] is echo, act like strict sysv echo; - added \a (BEL) escape sequence. - - * syn.c(function_body): new function; calls get_command() to get - the body of a function (old code did nested { } block which - caused problems with how redirections after the block were - handled). - * syn.c(get_command): call function body to deal with foo() and - function foo. - - * jobs.c(restore_ttypgrp): new variable. - * jobs.c(j_change): set restore_ttypgrp if process group is set. - * jobs.c(j_exit): if necessary, restore tty process group for main - shell. - -Fri Sep 2 21:32:03 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * main.c(main): set FPRIVILEGED if uid (gid) doesn't match euid (egid); - don't include $HOME/.profile if FPRIVILEGED; include - /etc/suid_profile instead of $ENV if FPRIVILEGED. - * misc.c(change_flag): if clearing FPRIVILEGED flag, set euid (egid) - to uid (gid). - -Fri Sep 2 21:10:23 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * main.c(main): don't include $ENV if uid (gid) doesn't match - euid (egid) (from J.T.Conklin). - -Fri Sep 2 12:07:14 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * syn.c(get_command): removed MPAREN case, taken care of in '(' case, - as per POSIX.2 which says () is two operators, not one. - * lex.c(yylex): don't check for/return MPAREN. - * lex.h(MPAREN): deleted define. - - * configure.in: add test for library routine confstr(); add - header test for paths.h. - * sh.h: include paths.h if available; define DEFAULT__PATH. - * table.h(def_path): new variable. - * options.h(DEFAULT_PATH): new define. - * main.c(main): initialize value of def_path; set path to def_path; - remove PATH initalization from initsubs; do not set value of HOME - variable (POSIX); allow SHELL, PS1, PS2, PS3 to have empty values - (at&t ksh). - * var.c(unsetspec): when unsetting PATH, set path to def_path. - - * jobs.c(j_waitj): restore proc mask before calling error if - 1st tcsetpgrp() fails. - -Thu Sep 1 10:28:03 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * Makefile.in: added check-sig.c, check-fd.c and check-pgrp.c - to RCSFILES; added rules for compiling the above; added debugtools - target to compile them all. - - * c_test.c(arg0,t_error,T_ERR_EXIT): new variables/defines. - * c_test.c(c_test): set arg0 to wp[0], t_error to 0; after - calling eval_binop() or oexpr() check t_error and if set, - return T_ERR_EXIT. - * c_test.c(syntax): set t_error exit; use shellf() instead of - errorf(); use arg0 instead of "test"; delete GCC_FA_NORETURN - attribute; changed all calls to return after calling. - * c_test.c(oexpr,aexpr,primary): check terror after calling - oexpr(), aexpr(), nexpr(). - - * c_test.c(primary): if unary operator is -t and there is no - argument, don't increment t_wp; if missing closing parenthesis, - show next operand (if any) in error message. - * c_test.c(eval_unop): default case, print t_wp[-2] (was -1). - * c_test.c(c_test): set t_wp before calling eval_binop() incase - there is an erorr. - * c_test.c(syntax): print first message even if op is an empty string. - -Wed Aug 31 11:48:51 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * expr.c(O_LT, O_GT): reverse order of enums to match opinfo table. - - * c_test.c(nexpr): always call !nexpr() (never !primary()). - * c_test.c(c_test): switch on argc-1 to make code match POSIX - description; make 4 arg case fall into 3 arg case, and 3 arg case - fall into 2 arg case. - * c_test.c(is_not,is_and,is_or): new defines. - * c_test.c(c_test,oexpr,aexpr,nexpr): use is_not,is_and and is_or. - * c_test.c(primary): don't decrement t_wp in final string case. - - * c_test.c(eval_unop): change S_ISIFO to S_ISFIFO and S_ISFITO - to S_ISFIFO. - - * misc.c(parse_args): use OF_SET when initializing set_opts. - -Wed Aug 31 09:32:39 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * made pdksh-5.0.4 distribution - - * jobs.c(j_change): do not restore tty process group when turning - off job control; no need to save original tty process group; - deleted orig_ttypgrp variable. (fixes bug in which turning off - job control causes an interactive shell to exit) - -Tue Aug 30 14:43:48 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(KSH_OPENDIR_CHECK): always include sys/types.h; - set return value according to what failed. - -Tue Aug 30 11:17:09 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * missing.c(strerror): for systems without sys_errlist[], report - error number if unknown. - - * Makefile.in: added BUG-REPORTS to DISTFILES. - - * jobs.c(exchild): do tcsetpgrp() in both parent and child after - the first process is created (may need to change to every child). - - * aclocal.m4(KSH_PGRP_SYNC): new test - defines NEED_PGRP_SYNC. - * acconfig.h: added define for NEED_PGRP_SYNC. - * configure.in: use KSH_PGRP_SYNC test. - * jobs.c(exchild,j_startjob,j_sync_open,j_sync_pipe): if NEED_PGRP_SYNC - is defined, use a pipe to block the first process in a pipeline - until the whole pipeline is set up. - -Mon Aug 29 09:15:00 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * jobs.c(exchild): for background, unmonitored jobs, don't open - /dev/null if input is a pipe. - - * jobs.c(exchild): for background, unmonitored jobs, use setsig() - instead of setexecsig() to set up SIGQUIT and SIGINT; changed - restoration of SIGTSTP,SIGTTIN,SIGTTOU - set them to DFL if - monitoring and not a `..` command, otherwise leave them alone. - * jobs.c(j_init): only use SIGTSTP,SIGTTIN,SIGTTOU if talking - or monitoring - if just talking leave signals ignored. - * jobs.c(j_change): if going into job control, set TF_SHELL_USES - flag for sigtraps[SIGTSTP,SIGTTIN,SIGTTOU]; if leaving job control - ignore signals if interactive, else restore original signals. - - * table.h(SPEC_BI, REG_BI): new defines. - * exec.c(builtin): check for * or + in front of builtin names and set - SPEC_BI or REG_BI if found. - * exec.c(findcom): search for special builtins first, then functions, - then regular builtins, then PATH search. - * c_sh.c(shbuiltins[]),c_ksh(kshbuiltins[]): add */+ in front of POSIX - special/regular builtins; add = infront of unset; - remove = from alias. - * c_sh.c(c_label): set exit value according to name (for true/false). - * c_sh.c(shbuiltins[]): add entries for true and false. - * main.c(initcoms[]): deleted true/false aliases. - - * aclocal.m4(KSH_OPENDIR_CHECK): new test - see if opendir() will - open non-directories. - * configure.in,acconfig.h: added KSH_OPENDIR_CHECK. - * missing.c,ksh_dir.h(ksh_opendir): new define/function. - * eval.c(globit),emacs.c(compl_file): use ksh_opendir() instead of - opendir(). - - * main.c(include): save source filename since search() uses line[] - for the filename and shell() trashes line[]. - - * table.h(FINUSE,FDELETE) new defines. - * exec.c(execute): case CFUNC: re-arranged code so normal return goes - through setjmp() switch; use FDELETE/FINUSE flags to avoid problems - with a function being undefined or redefined during its execution. - * exec.c(define): if FINUSE is set, set FDELETED and find a new table - entry. - -Fri Aug 26 21:58:25 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.c(getsc_): flush output after write when echoing. - - * Makefile.in(dist): after creating distrubution, use pathchk -p - to check file names. - -Fri Aug 26 10:28:20 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * made pdksh-5.0.3 distribution - - * expr.c(IS_ASSIGNOP): new define. - * expr.c(evalexpr): use IS_ASSIGNOP (bug fix). - - * exec.c(execute): case TFOR,TSELECT: change e->type just - before setjmp() to avoid problems with bad jmpbufs. - - * jobs.c(startlast): new function. - * jobs.c(waitlast): print error if job not started. - * eval.c(comsub): call startlast() after execute(). - * jobs.c(exchild,j_startjob,j_sync_pipe): when starting a pipeline - use a pipe to ensure the first process doesn't die before - the last process is started. - - * exec.c(execute): case TFUNC: set/clear FXTRACE according to - tp->flag & TRACE, and restore old value when function completes. - - * c_test.c,exec.c,io.c,mail.c,vi.c: changed all uses of - (x&S_IFMT) == S_IF* to the equivilent S_IS* (for ISC unix). - * c_test.c(eval_unop): if system doesn't have symlinks or sockets - (S_ISLNK,S_ISSOCK), return 0 (used to cause internal error). - * ksh_stat.h(S_ISVTX): define if sys/stat.h doesn't. - - * sigaction.c(Signal,signal): ifdef'd Signal() and signal() out as - they cause header file conflicts on some systems (eg, signal() - in ISC unix); also ifdef'd out other routines not used by ksh - (ie, sigdelset, sigfillset, sigismember, sigpending). - -Thu Aug 25 11:50:03 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_test.c(primary): always check that *t_wp isn't 0 before using it. - - * eval.c(homedir): cache home directory values. - - * exec.c(findcom): search builtins before tracked aliases. - - * table.h(commands,taliases): changed name of commands to taliases. - - * c_ksh.c(c_unalias): changed to use ksh_getopt(); added -t and -a - options; exit with non-zero value if non-alias name unaliased - (POSIX). - - * main.c(initcoms[]): alias hash to 'alias -t -'; added autoload alias - as well; set selected comands to be tracked aliases (eg, grep, - ls, who, vi, emacs, etc.). - - * c_ksh.c(c_alias): when printing aliases, check ISSET, not DEFINED - flag (so unset tracked aliases won't cause problems); changed - to use ksh_getopt(); added -t flag; added -x flag (does nothing). - * c_ksh.c(c_hash): deleted function; removed all references. - - * table.h(CTALIAS): new define. - * exec.c(findcom): added search argument for whence -p; fixed - introduced bug preventing tracking of commands when insert set; - changed all calls; when creating tracked aliases, set type to CTALIAS - (was CEXEC). - * exec.c(findcom,flushcom): when freeing old tracked aliases, use - APERM, not commands.areap. - * c_ksh.c(c_whence): changed to use ksh_getopt(); assume findcom() - never returns 0 and never returns tp->type == CNONE; made output - closer to at&t ksh output; combined vflag/!vflag switch statements; - added case for CTALIAS. - * exec.c(findcom): set tracked alias type to CTALIAS. - - * c_ksh.c(c_print): added -s option; changed to use Xstring() routines - and write() instead of shf routines; returns non-zero if there - was a write error. - - * jobs.c(struct job): changed pid_t lpid field to Proc *last_proc; - changed all uses. - * jobs.c(check_job): use j->last_proc instead of lp. - * jobs.c(j_waitj): when checking for fake ^C, test j->last_proc - status to see if it was signaled and use WTERMSIG to get signal. - - * main.c: initialize integer TMOUT parameter to 0; call alarm_init() - if FTALKING. - * trap.c(alarm_init,alarm_catcher): new functions. - * trap.c(runtraps): if ksh_tmout_leave is set, exit. - * sh.h(TMOUT_EXECUTING,TMOUT_READING,TMOUT_LEAVING,ksh_tmout, - ksh_tmout_state): new enum values/variables. - * table.h(V_TMOUT): new define. - * var.c(special,setspec,unsetspec): added V_TMOUT entry. - * edit.c(x_getc): call intrcheck() if read interrupted. - -Thu Aug 25 09:36:54 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_test.c(c_test): for argc cases 4 and 5, return the complement - of the expressioin result; for [[ .. ]] expressions, don't parse - based on argc; deleted struct t_op.op_flags field and related - defines UNOP,BINOP,ACCEPT_BE,ISTEST,ISDBRACKET,ISBOTH - changed all - uses to test the value of isdbracket. - * c_test.c(filstat): moved body of filstat() into eval_unop(), deleted - filstat(). - - * c_test.c: incorperated changes from J.T. Conlin (jtc@cygnus.com) - for POSIXization of test builtin. - -Wed Aug 24 12:16:25 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * new-version.sh: new file - updates date in version.c - * Makefile.in: added new-version.sh to RCSFILES; call new-version.sh - in dist: target. - -Tue Aug 23 09:28:10 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * made pdksh-5.0.2 distribution - - * jobs.c(exchild): don't call restoresigs(). - * exec.c(execute): do call restoresigs() (just before execve()). - - * c_sh.c(c_trap): ifdef'd out code to print default traps. Too ugly - and it isn't clear POSIX needs it. - - * c_ksh.c(c_print): put -e option back in for echo emulation (-R). - - * c_sh.c(c_shift): generate error if n < 0. - - * c_sh.c(c_trap): use shellf instead of errorf to report errors - (so we can return a value instead of unwinding - POSIX). - - * exec.c(execute): if command fails and !FERREXIT, call - trapsig(SIGERR_). - - * c_sh.c(c_exit,c_return,c_exitreturn): combined c_exit and c_return - functions. - -Mon Aug 22 09:39:54 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * eval.c(expand): case XARG: set word to IFS_WORD to force null - words to be created. - - * lex.c(yylex): added indquotes flag and code for `...` parsing - (to deal with "`...`" the way sh/at&t-ksh does). - - * trap.c(runtrap): don't reset ERR trap. - - * sh.h: combnied SS_USER/SS_FORCE flags with RESTORE_CURR et. al. - flags; changed RESTORE_* to SS_RESTORE_*. - * trap.c(setsig): combined restore, force and user flags; changed - all calls. - * trap.c(setexecsig): use SS_RESTORE_* values as argument. - - * table.h: changed LCASE to LCASEV (and UCASE_AL to UCASEV_AL) to - avoid problems with ioctl/tty LCASE define. - - * sh.h(struct env): deleted interactive field. - * main.c(shell),exec.c(iopsetup): deleted e->interactive assignment. - - * sh.h: made e a struct env * (was struct env); changed all references. - * main.c(newenv): copy loc, flags and interactive fields explicitly. - - * var.c(newblock): allocate block structure, don't assume already - exists. - * var.c(popblock): free old block structure. - * main.c(main): set e->loc to 0 before calling newblock(). - * exec.c(comexec): let newblock() allocate new structure; deleted - l variable (changed references to e->loc). - * table.h: deleted globals variable. - - * c_ksh.c(c_print): treat a lone - like --. - - * main.c(main),trap.c(inittraps): move SIGINT,SIGQUIT,SIGTERM signal - initialization to inittraps() and do it regardless of FTALKING. - - * trap.c(settrap): deleted force trap since probably will never - add -f flag to trap. - - * main.c(unwind): if we are dieing of SIGINT or SIGTERM, kill - ourselves with a signal. - - * vi.c(x_vi),emacs(x_emacs): if ^C read, call trapsig()/runtraps(); - don't return -2. - * edit.c(x_read): don't check for -2 return value. - * vi.c(x_vi): check for quit char (^\) and fake SIGQUIT. - - * exec.c(comexec): made flags argument volatile. - - * misc.c(getn_): new function. - * c_sh.c(c_exit,c_return): call quitenv() before unwind()ing; - moved c_exit() next to c_return(); use getn_() instead of getn(). - - * main.c(shell): added exit_atend argument to deal with POSIX trap exit - semantics; changed all calls. - * sh.h: added STOP_RETURN macro. - * c_sh.c(c_return): determine if we are returning or exiting before - unwind()ing so POSIX trap exit semantics are honored. - - * jobs.c(j_sigchld): call trapsig() instead of messing with sigtraps[]. - * trap.c(trapsig): don't restore signal handler if it wasn't set to - trapsig. - - * sh.h: added TF_TTY_INTR flag. - * trap.c(inittrap): set TF_TTY_INTR for SIGINT. - * jobs.c(j_waitj): if - - * jobs.c,sh.h: deleted SA_RESTART ifdefs; moved SIGCLD->SIGCHLD ifdefs - from jobs.c to sh.h. - -Sat Aug 20 15:26:24 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * sh.h: added KSH_SA_FLAGS define. - * trap.c(inittrap,setsig): set sa_flags field to KSH_SA_FLAGS. - * sigact.c(sigaction): if using BSD42_SIGNALS, set the SV_INTERRUPT - flag. - * configure.in: deleted AC_RESTARTABLE_SYSCALLS. - * config.h.bot: add error message to prevent compilation if using - BSD41 signals. - - * shf.h: added SHF_INTERRUPT flag. - * shf.c(shf_fillbuf,shf_putchar,shf_write,shf_emptybuf): call - intrcheck() if read()/write() interrupted and SHF_INTERRUPT set. - * c_sh.c(c_read): use SHF_INTERRUPT flag. - * lex.c(getsc_): call intrcheck() if read() interrupted. - - * main.c(main),trap.c(inittrap): moved Sigact* initialization - from main() to inittrap(); made Sigact_trap/Sigact_ign static; - deleted Sigact and Sigact_dfl. - * sh.h: deleted declarations of Sigact*. - - * main.c(shell): deleted sigaction call - no longer needed. - - * sh.h: added RESTORE_CURR, RESTORE_ORIG, RESTORE_DFL and RESTORE_IGN - defines. - - * trap.c(intrcheck): new function. - * trap.c(runtraps): added intr argument; clear trap/intrsig - before running traps; changed all calls. - * trap.c(runtrap): save/restore exstat when running trap. - * jobs.c(j_waitj): changed interrupt test to check intrsig - and return -1. - * jobs.c(waitfor): if j_waitj() returns -1, call intrcheck(). - * jobs.c(j_change): use setsig() instead of sigaction() to - set up SIGTTIN,SIGTTOU,SIGTSTP. - - * trap.c(inittraps): initialize flags for INT/QUIT/TERM. - * sh.h(intrsig): new variable. - * trap.c(trapsig): set intrsig if signal has TF_DFL_INTR flag set; - deleted longjmp(). - * trap.c(runtraps): clear intrsig. - * trap.c(runtrap): if signal is defaulted and TF_DFL_INTR is - set, set exstat and call unwind(); return if signal ignored; - reset an ERR trap before executing it. - * trap.c(cleartraps): deleted special case for EXIT; reset - command traps using settrap(); clear intrsig. - * trap.c(restoresigs): only deal with traps that have the TF_EXEC_IGN - flag set (others take care of themselves). - - * trap.c(sigtraps[]): added ERR trap. - * trap.c(gettrap): deleted #if 0'd ERR/EXIT check. - * trap.c(gettrap,runtrap,cleartraps,restoresigs): use SIGNAL+1 to - go through trap table. - * sh.h(SIGEXIT_,SIGERR_): new defines. - * c_kill.c(c_kill): test for signals > 128 (was >= 128) - * c_sh.c(c_trap): when printing traps, use SIGNALS+1. - - * sh.h(struct trap): replaced ourtrap and sig_dfl fields with - flags field; defined TF_SHELL_USES, etc. for flags field; added - cursig field. - * sh.h(struct env): replaced func_parse field with - flags field; defined EF_FUNC_PARSE, EF_BRKCONT_PASS for flags - field; defined STOP_BRKCONT(); changed uses of func_parse - (get_command()/readhere()). - * c_sh.c(c_brkcont): use STOP_BRKCONT(), EF_BRKCONT_PASS; call - unwind() to do the work. - -Fri Aug 19 09:59:43 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * trap.c(settrap): new function - does most of what c_trap did. - * c_sh.c(c_trap): changed to use settrap(); print out default - actions as well as caught/ignored actions. - * trap.c,c_sh.c(setsig): moved setsig from c_sh.c to trap.c and - made it static; added force and user arguments; don't do anything - for EXIT and ERR. - * main.c(main): use sigtrap() instead of ignoresig(). - * trap.c(ignoresig): deleted function. - - * exec.c(execute): case TSELECT: don't change SIGINT signal handler. - - * proto.h: use GCC_FA_NORETURN on aerror(). - * syn.c(yyparse): made function static and void. - - * exec.c(herein): changed error() calls to errorf()s; use error() - in error handler; call shf_close() instead of shf_fdclose(). - - * tree.h,sh.h: moved LBREAK/LCONTIN from tree.h to sh.h; - added LEXIT, LRETURN, LERROR, and LINTR defines; changed values - of LBREAK/LCONTIN; changed all calls to longjmp() and setjmp(). - * exec.c(execute): put Break: label after main switch, changed - goto Break[0-9] to Break; deleted Break[0-9] labels. - * exec.c(execute): changed FOR, SELECT, WHILE, DO loop setjmps - to explicitly check for LBREAK/LCONTIN, otherwise call unwind(). - * exec.c(execute): case TFUNC: added setjmp switch statement to take - care of various L* values. - * main.c(include,shell): added setjmp switch statement to take care of - various L* values. - * main.c(unwind): added L* parameter to pass on to longjmp(); - changed all calls. - * c_sh.c(c_return): just call unwind(LRETURN); - * main.c(unwind): put code from leave() in E_NONE case. - * main.c(error,leave): deleted functions; replace all calls with - unwind(LLEAVE or LERROR). - * *.c(longjmp): replaced all calls with unwind(L..) (except the - call in unwind()). - - * shf.h: add areap field to struct shf. - * shf.c(shf_fdopen,shf_sopen): initialize areap - * shf.c(shf_emptybuf,shf_close,shf_sclose,shf_finish): use areap - instead of ATEMP. - - * shf.c(shf_sopen): if buf is 0 and writing and DYNMAIC, allocate - a buffer; if writing, save room for a trailing null. - * shf.c(shf_sclose): new function. - * shf.c(shf_snprintf),tree.c(snptreef): use shf_sclose(). - * tree.c(snptreef): changed return type to char *; if buffer - is null, pass SHF_DYNAMIC to shf_sopen(); return (possibly - allocated) string. - * syn.c(syntaxerr): use snptreef() instead of ident. - - * tree.h: new define TDBRACKET; new defines DB_NORM,DB_OR,DB_AND, - DB_BE,DB_PAT. - * tree.c(ptree): added case for TDBRACKET. - * syn.c(get_command): case DBRACKET: make TDBRACKET command; - at end of function, null terminate args/vars if TDBRACKET. - * c_test.c(is_db_patop): new function. - * syn.c(db_primary): set type of arg to DB_PAT if is_db_patop() - returns true. - * exec.c(execute): added case for TDBRACKET. - - * syn.c(get_command): case MDPAREN: make arg[0] an allocated stuffed - string (was a literal string). - -Thu Aug 18 11:06:49 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_test.c(is_op,is_binop,is_unop): new functions to test for - unary/binary operators. - * c_test.c(oexpr,aexpr,nexpr,primary): no longer take argument - - call is_unop/is_binop directly. - * c_test.c(ISDBRACKET,ISTEST,ISBOTH,ACCEPT_BE): new defines. - * c_test.c(struct t_op): changed op_type field to op_flags. - * c_test.c(ops[]): broke into two arrays: u_ops and b_ops; - set flag field to ISDBRACKET/ISTEST/ISBOTH as appropriate. - * c_test.c(t_lex): deleted function. - * c_test.c(primary): before checking for unary operator, check - for -BE (binary expression next) if appropriate. - - * c_test.c: made operator type an enum to make it easier to add - operators; changed oexpr/aexpr/nexpr/primary/filstat/t_lex - operand/return types. - * c_test.c(struct t_op): changed op_text from char * to char [4]. - * c_test.c(primary): case FILTT: using digit(**t_wp) causes core dump - when there is no arg - just test if *t_wp is 0; move test into - filstat(). - * c_test.c(primary): use *opnd1 != 0 instead of strlen(opnd1) (3 - instances). - - * tree.c(wdscan,wdcopy): changed string argument to const; changed - return type of wdscan to const. - - * eval.c(expand): case CSUBST: case '?': use st->var->anme instead - of cp to allow proper nesting. - * eval.c(expand): case OSUBST: don't change cp - declare local - variable. - * eval.c(expand): case COMSUB: deleted Xsavepos() call; XCOM: deleted - Xrestpos() call. - * eval.c(expand): save the position of the first unquoted = for tilde - expansion. - * eval.c(expand): case '~': use sp == (cp+2) instead of dp == Xstring - so we aren't fooled by ''~ or ${foo}~; sp[-1]/sp[-2] and firsteq - for the DOASNTILDE after first = or unquoted : test. - - * tree.h(struct op): changed noexpand field to evalflags; changed - all uses. - * exec.c(execute): if t->evalflags is non-zero, pass them to eval(). - - * lex.h: added DBRACKET define for [[ keyword. - * syn.c(get_command): added case for DBRACKET. - * syn.c(db_parse,db_oaexpr,db_nexpr,db_primary): new functions - to parse [[ .. ]] expressions. - * syn.c(tokentab[]): added [[/DBRACKET keyword. - * c_test.c(is_db_unop,is_db_binop): new functions to test if arg - is [[ .. ]] unary/binary operator. - - * syn.c(syntaxerr): call REJECT; before token; removed REJECT - before all calls to syntaxerr(). - * syn.c(get_command): removed syntax error kludge. - -Wed Aug 17 11:07:40 NDT 1994 Michael Rendell (michael@arlene.cs.mun.ca) - - * c_test.c(struct ops): changed -U to -O. - - * tree.h: added new defined DOASNTILDE. - * eval.c(expand): case '~': changed !(f&DOBLANK) to f&DOASNTILDE. - * exec.c(execute): case TCOM: pass DOASNTILDE when evaluating vars - and when expanding args when t->noexpand is set. - - * exec.c(execute): case TCASE: pass DOTILDE to both evalstr() calls - (POSIX). - - * syn.c(get_command): don't check for redirections before determining - command type; handle REDIR where LWORD are handled; default case - always returns; pass ARRAYVAR flag to tpeek() if t->noexpand; - don't allow redirections before "x()" function; don't allow - redirection before keywords; allow a '(' in the case LWORD/REDIR: - if no variables or arguments (POSIX doesn't allow this, but - at&t ksh/bourne sh do). - * lex.h(ARRAYVAR): new define. - * lex.c(yylex): parse x[1 & 2] as one word if VARASN|ARRAYVAR. - - * var.c(is_wdvarname): added aok argument; changed all calls. - * syn.c(get_command): case FOR/SELECT: check identifier is valid. - - * c_sh.c(c_trap): use print_value_quoted() to print traps; - use ksh_getopt() to skip possible --. - * trap.c(gettrap): allow digits only if signal numbers match - POSIX values (ie, HUP=1,INT=2,QUIT=3,ABRT=6,KILL=9,ALRM=14,TERM=15). - - * misc.c(print_value_quoted): new function to print strings with - appropriate quoting. - * c_ksh.c(c_typeset,c_alias): use print_value_quoted() when printing - values. - - * lex.h: added new ESACONLY flag - only accept ESAC keyword. - * lex.c(yylex): check for ESACONLY flag when doing keyword search. - * syn.c(caselist): pass ESACONLY flag to tpeek(). - -Tue Aug 16 10:17:47 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(struct source); changed echo field to generic flags field; - defined SF_ECHO and SF_ALIASEND. - * lex.c(_getsc): case SALIAS: use isspace() to check for trailing - space in alias; if alias does not end in a space, return a fake - space to keep the current alias in the source list - this allows - recursive alias detection; set SF_ALIAS in next source if alias - does end if space. - * lex.c(yylex): deleted expanding_alias, rec_alias_cnt and - rec_alias_table variables; check for recursive aliases by checking - the source list; don't use EXPALIAS flag; if SF_ALIAS is set in - current source, set ALIAS flag and clear SF_ALAIS; deleted global - alias variable. - * table.h: deleted EXPALIAS define. - * main.c(shell): changed s->echo to set/clr of SF_ECHO in s->flags. - - * table.h: added aliases and keywords tables; deleted lexicals table - (POSIX says they are separate). - * syn.c(keywords,initkeywords): changed name of keywords() function - to initkeywords(); changed all calls; add to keywords table instead - of lexicals table. - * main.c(main): initialized aliases/keywords tables; deleted - initialization of lexicals table. - * c_ksh.c(c_whence,c_alias,c_unalias),lex.c(yylex): use - keywords/aliases tables instead of lexicals table; removed unneeded - type == CALIAS checks. - - * var.c(getint): new function, largely take from strint(). - * var.c(strint): call getint() to do most of the work; if vq - was an allocated string, free the string and clear the alloc - flag. - * var.c(intval): call getint() instead of strint(). - - * mail.c(mcheck): use getint() instead of strint() when getting - value of MAILCHECK. - - * var.c(skip_varname): added argument to allow array references; - changed all calls. - * var.c(set_array): remove valid variable name check - done in - parse_args(). - - * var.c(strint): check if getspec()/setspec() need to be called. - * var.c(intval): remove getspec()/INTEGER checks - let strint() do it. - - * var.c(skip_wdvarname,is_wdvarname,is_wdvarassign): new - functions. - * lex.h(VARASN): new define indicating variable assignment expected, - currently used to parse "x[1 & 2]" as one token - may be used - in future in returning AWORD (assignment word) to the parser. - * lex.c(yylex): Subst: case '[': use is_wdvarname() in determining - whether to parse an array dereference; do not require an = after the - dereference (typeset -r x[1 & 2] is legal). - * syn.c(many functions): pass VARASN to token/musthave/tpeek/synio - when ever the next token might be the first word of a simple - command. - * syn.c(get_command): case LWORD: use is_wdvarassign() to distinguish - variable assignments from normal arguments; allow aliases after - redirections and variable assignments; generate syntax error - for "foo=bar bogusfunction()"; allow array variables in for - and select statements. - * lex.c: make global alias variable static (no longer used by - get_command()). - - * syn.c(get_command): put MDPAREN into its own case. - - * lex.c(yylex): deleted place holder for tilde expansion. - - * tree.h(struct tree): added noexpand field for - alias/export/readonly/typeset. - * syn.c(newtp),tree.c(tcopy): initialize/copy noexpand field. - * syn.c(get_command): case LWORD: set noexpand if assign_command() - returns true. - * syn.c(assign_command): new function - returns true if command - is alias, export, readonly or typeset. - * exec.c(execute): case TCOM: don't pass DOTILDE flag when - expanding t->vars; don't do field splitting/globbing/tilde expansion - of t->args if t->noexpand is set. - - * table.h: re-grouped the struct tbl flags into common, variable, - funtion, builtin/alias, etc (some values overlap); new flag - names: KEEPASN (was overloaded with TRACE) and NOEXPAND. - * exec.c(comexec,builtin): changed TRACE to KEEPASN. - - * tree.c(tcopy): when copying t->str, use strsave(), not wdcopy() - if not copying a TCASE. - - * c_ksh.c(c_typeset): added -p flag for POSIX export/readonly. - - * eval.c(expand): expand tilde in place; don't do tilde expansion - on results of substitution (POSIX); only do tilde expansion - if login name is unquoted (POSIX); don't check for fdo&DOTILDE - when a word is completed. - * eval.c(tilde): changed to return home directory of a given login name - (taking care of null/+/-) (old version copied string, scanning - for, and replacing, magic tildes). - - * exec.c(findcom): don't create commands table entries when - not inserting; when doing access test of tracked alias, - check for ISSET, not ALLOC (but test ALLOC before calling afree). - * exec.c(search): use strcpy() instead of loop. - -Mon Aug 15 14:46:58 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_print): added at&t ksh -R flag; deleted -e flag; - changed to use ksh_getopt(). - * main.c(initcoms[]): changed echo alias from 'print -' to 'print -R'. - - * sh.h: new variable procpid; added pid field to struct temp. - * jobs.c: changed references to my_pid to procpid; deleted my_pid - variable. - * io.c(maketemp): initialize pid field from procpid. - * main.c(remove_temps): only remove temporary files created by - the current process. - -Sun Aug 14 11:47:05 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c: added var field to struct Expand and struct SubType; deleted - struct SubType.name field. - * var.c(expand): case OSUBST: use x.var/st->var field to save result - of global() for use in case CSUBST - this avoids problems with - x[i+=1] being evaluated twice; check to see if value is being - assigned to non-variable (eg, ${*:=aja}) or read-only variable. - * var.c(varsub): set value of xp->var; possibly generate error if - FNOUNSET set when expanding ${#*}, ${#var}, or ${#array[*]}. - - * table.h: added struct tbl.areap field to get rid of lastarea - problems; deleted lastarea variable; changted all refernces - to lastarea to var->areap. - * table.c(tenter): initialize areap field. - * var.c(arraysearch): deleted area parameter; initialize areap field. - * var.c(global,local,intval,setint): initialize areap field of vtemp. - -Fri Aug 12 10:54:51 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * expr.c: re-wrote e*() functions using single function and table; - token() now does table lookup; added full C expressions (sans - pre/post increment, sizeof). - - * table.h(INT_U,INT_L): new flags. - * var.c(strval): handle INT_U. - * c_ksh.c(c_typeset): add exclusions for INT_U/INT_L; - add -U option for unsigned (non-at&t ksh). - - * var.c(set_array): use global() instead of local(); - - * var.c(global): when parsing $123, don't limit number to 1000. - - * expr.c(v_evaluate): like old evaluate, but assigns result to - specified variable. - * expr.c(evaluate): changed to use v_evaluate(). - * expr.c(e0): when parsing literals, use strint() instead of setstr(). - - * var.c(setstr): when assigning to integers, use v_evaluate() instead - of strint(). - -Thu Aug 11 11:33:17 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(strint): don't change anything until number completely - parsed; don't clear ISSET flag if parsing fails; fail parse - if non-integer/non-letter found; default base if copying from - integer variable; set ISSET if parsing succeeds. - - * expr.c(tempvar): set vp->val.i to 0. - * expr.c(token): when skipping a literal number, don't allow _; - use isspace() to skip. - * expr.c(asn): use strint()/setstr() instead of setint(). - * expr.c(e0): added unary ~ and + (posix). - - * var.c(global,local): always call substitute on contents of [..]; - free sub when finished eval. - - * ksh_limval.h: new file. - * shf.c: use ksh_limval.h. - * Makefile.in: added ksh_limval.h to HDRS. - -Wed Aug 10 10:57:01 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_whence): case CFUNC: print exported/traced/undefined, - do not print function definition. - * exec.c(findcom): new argument indicated if functions to be - autoloaded; changed all calls. - - * misc.c(ksh_getopt): added # option modifier for typeset. - * c_ksh.c(c_typeset): changed to use ksh_getopt(); added - -L, -R, -Z, -l, -u flags; quote variable values when printing; - generally re-arranged function. - * table.h: added LJUST,RJUST,ZEROFIL,LCASE,RCASE; deleted FUNCT. - * exec.c(findfunc): new function. - * exec.c(define,findcom): use findfunc(); skeleton autoload code. - * var.c(typeset): added two arguments for initial field width and - base; changed all calls; deal with LJUST,.. flags; re-arrange to - have one loop iterating over array; do readonly check before - changing attributes. - * var.c(strval): deal with LJUST,.. flags when getting integers. - * var.c(setstr): deal with LJUST,.. flags when setting strings. - * var.c(setstr): deal with LJUST,.. flags when setting strings. - * var.c(arraysearch,tenter): initialize {new,p}->field to 0. - * table.h: added struct tbl.field. - - * siglist.in: changed signal messages to be more or less the - same as sys_siglist[]; moved SIGUNUSED before SIGBUS. - * jobs.c(j_print): assume sigtrap[].mess always valid; use - sigtrap[].mess directly for stopped processes. - - * aclocal.m4(KSH_SYS_SIGLIST): new macro like KSH_SYS_ERRLIST. - * configure.in: use KSH_SYS_SIGLIST instead of AC_SYS_SIGLIST_DECLARED. - -Tue Aug 9 10:28:45 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * version.c: removed RCS logs since version numbers don't match - release numbers. - - * configure.in: added AC_PROG_CPP - * Makefile.in: added rules for generating siglist.out - * siglist.in,siglist.sh: new files. - * trap.c(inittraps,deftraps[]): deleted deftraps[]; initialize - sigtraps[] directly by including siglist.out. - - * tree.h: added EXPRSUB for $((..)), re-numbered defines. - * tree.c(tputS,wdscan): added case for EXPRSUB. - * eval.c(expand,alt_count,alt_scan): added case for EXPRSUB. - * lex.h: added SDDPAREN for $((..)). - * lex.c(yylex): added case for SDDPAREN. - - * lex.c(yylex): case SPAREN: match parenthesis using counter instead - of pushing/poping states. - - * lex.h: re-numbered S* defines to be sequential; added SREREAD. - * lex.c(yyerror): pop SREREADs. - * lex.c(getsc_): added case for SREREAD. - * lex.c(arraysub): changed to save whatever is read and return a value - indicating if brackets matched; changed all calls. - * lex.c(yylex): if brackets in array reference are not balanced, - or if array reference not followed by an =, re-read the input. - -Mon Aug 8 21:20:08 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h: fix lseek prototype (from sjg@zen.void.oz.au) - - * configure.in,jobs.c: added HAVE_SYSCONF; don't use sysconf() unless - HAVE_SYSCONF defined (for NetBSD-Feb12 from sjg@zen.void.oz.au). - - * jobs.c(put_job): removed PJ_ON_END case and define (not used). - -Wed Jul 27 10:19:42 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-5.0.1 distribution - - * exec.c(comexec): when doing exec has no command, fall through - and do variable assignments. - - * c_ksh.c(c_let): complain if there are no arguments. - - * exec.c(comexec): if XEXEC is set, exit after executing - (builtin/function) command; deleted FERREXIT code; don't set - exstat. - * exec.c(execute): handle FERREXIT; set exstat to rv for all - cases. - - * lex.c,syn.c: changed calls to errorf to yyerror (except the - on in yyerror()). - * lex.h(struct source): added errline field. - * lex.c(yyerror): now a varargs function; if source->errline field is - non-zero, print it instead of source->line. - * syn.c(syntaxerr): set source->errline if read EOF in a multiline - command. - -Tue Jul 26 11:22:06 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * lex.h(SYNTAXERR,INP): deleted macros. - * lex.h(HISTORY): upped to 128 as per POSIX. - * lex.h,syn.c(multiline): moved from lex.h to syn.c. - * tree.c(vfptreef): added %R to format I/O redirections. - * tree.c(pioact): don't output unit more than once; print unit - only if it isn't the default for the action; print only - one opening quote for quoted here documents; print <> for - read-write (was ><). - * syn.c(zzerr, syntaxerr): replaced zzerr function with new syntaxerr - function; changed uses of SYNTAXERR to syntaxerr() calls; print - out the last unused token; if in a multiline command when EOF - encountered, print token that was unmatched. - - * tree.h(TBANG),lex.h(BANG): for POSIX ! keyword - * tree.c(ptree),exec.c(execute): added case for TBANG. - * syn.c(restab[]): added ! keyword. - * syn.c(get_command): added case for BANG (!). - - * tree.h(XERROK): new define to allow non-zero exits to be - ignored in certian circumstances (set -e). - * exec.c(execute): pass XERROK to recursive execute() calls; set - XERROK when evaluating conditional part of if/while/until/&&/||. - * exec.c(comexec): pass XERROK on to functions; don't exit if - XERROK is set. - - * jobs.c(async_pid): new variable needed since async_job may go - away, but $! should still be expanded. - * jobs.c(j_async): return async_pid. - * jobs.c(j_set_async): set async_pid. - -Mon Jul 25 14:15:25 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(parse_args): changed to use ksh_getopt(). - - * c_sh(c_set): deleted call to resetopts() - neither POSIX nor - at&t ksh touch OPTIND when positional parameters are changed. - * exec.c(comexec): changed resetopts() call to getopts_reset(1) - this - is not a proper fix - should declare a local optind. - - * misc.c(builtin_getopt,ksh_getopt): renamed builtin_getopt to - ksh_getopt (shorter); changed to use state structure instead - of static variables; changed all calls; optionally allow + to - introduce an option; don't skip lone - (or +) in arguments - set - optind to point to it. - * misc.c(ksh_getopt_reset): changed to use state structure instead - of static variables. - * sh.h(Getopt): new structure for ksh_getopt() state. - * exec.c(call_builtin): call ksh_getopt_reset(). - * c_ksh.c(c_getopts,getopts_reset): new getopts implementation that is - POSIX complient and uses ksh_getopt() routine. - * var.c(setspec): call getopts_reset() when OPTIND set. - * getopts.c: deleted file. - * Makefile.in: deleted getopts.c and getopts.o. - * options.h(FASCIST): deleted option. - -Thu Jul 21 09:52:03 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-4.9+mun.5 distribution - - * syn.c(get_command),shf.c(shf_fdopen,shf_sopen,shf_emptybuf): - added cast to alloc()/aresize() calls. - * sh.h: changed enum flags_enum to enum flags. - * misc.c(change_flag): changed type of first argument to enum flag. - * edit.c(set_editmode): change type of static array to enum flag. - - * edit.c(x_init): initialize tty chars to -1, except for werase, - which is set to ^W. - * edit(x_mode): split oldedchars structure declaration and - initalization (some old compilers don't like them combined). - - * c_test.c: made -h work like -L. - -Wed Jul 20 11:12:52 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * config.h.top: moved compile options into options.h; include - options.h. - * options.h: new file. - - * c_ksh.c(c_fgbg): if !FPOSIX, set return job exit status. - - * jobs.c(j_jobs,j_notify): use JF_REMOVE to flag jobs to delete - after all notification done (to prevent multiple + or - jobs). - - * jobs.c(put_job): new funtion, takes argument to specify where - to put job; changed all calls to put_job_on_front and - put_job_on_end to use this; put background processes just - after stopped jobs (instead of at end) (POSIX). - * jobs.c(put_job_on_front,put_job_on_end): deleted. - -Tue Jul 19 10:33:55 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * aclocal.m4(AC_MMAP): copied from autoconf's acspecific.m4 and - modified to use the MAP_FILE flag if available. - - * misc.c(change_flag): ifdef use of FVI/FEMACS/FGMACS. - -Mon Jul 18 13:19:29 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(async): deleted. - * var.c(global): call j_async() instead of using async global. - * jobs.c(j_async,j_set_async()): new functions. - * jobs.c(j_startjob): new function. - * jobs.c(exchild,j_waitlast): call j_startjob() to start job. - * jobs.c(j_sigchld): if any jobs aren't started, note signal - occured and return without calling wait. - * jobs.c(j_resume): allow un-reported dead jobs to be fg'd/bg'd; - if backgrounding, set async job. - * jobs.c(j_jobs,j_notify,j_waitj,check_job,remove_job): re-wrote to - deal with posix `known processes'. - * jobs.c(j_lookup()): if number specified, see if it is a lpid first, - then check for pgrp. - * jobs.c(new_job): added functionality of j_newjob(). - * jobs.c(j_newjob): deleted function and all calls. - - * tty.c(tty_init,tty_close): new functions which initialize - tty_fd, tty_state and tty_devtty. - * jobs.c(j_init,j_change): use tty_init()/tty_close(); changed - references of ttyfd to tty_fd; moved tty_fd, tty_state and - tty_devtty to tty.h; call tty_init() if !FMONITOR; save/restore - tty modes on foreground job completion if FTALKING (was FMONITOR). - * edit.h(X_chars): new structure for tty driver characters (replaces - ed_erase, ed_kill, ed_werase, ed_intr, ed_quit); moved prototypes - for emacs.c and vi.c from proto.h to edit.h; changed all references - to ed_* to edchars.*. - * edit.c(x_mode): use tty_state instead of cborig; re-initialize - tty state from tty_state whenever entering xmode; save tty characters - in edchars structure. - * edit.c(x_init): now called from main(); initializes edchars, x_cols, - and calls x_init_emacs. - * emacs.c(x_init_emacs): changed erase,kill,werase,intr,quit arguments - to X_chars argument. - -Fri Jul 15 10:35:13 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * io.c(restfd): only flush if fd is 2; use dup2() instead of - fcntl(F_DUPFD) (2 system calls instead of 3). - - * ksh_wait.h(WEXITSTATUS): changed mask from 0x7f to 0xff. - - * tty.h: added TTY_state structure. - * tty.c: new file - contains get_tty() and set_tty(). - * edit.c(x_init,x_mode): use get_tty() and set_tty(). - * jobs.c(j_waitj,j_resume): save/restore tty modes of stopped - jobs, as per POSIX.1, B.2, job control; for foreground jobs, - save tty state after successful completion, restore tty state - after non-successful completion (signaled, non-0 exit, stopped). - - * misc.c(options): changed "alternations" to "braceexpand" (this - is what bash uses - no need to invent new option names); changed - ALTERNATIONS define to BRACEEXPAND, same for FALTERNATIONS to - FBRACEEXPAND. - - * jobs.c(check_job): if process died of SIGINT or SIGPIPE, leave - job state as PEXITED (not PSIGNALLED). - * jobs.c(j_print): if printing short notice, ignore SIGPIPE the - way SIGINT is ignored. - - * exec.c(comexec): flush shl_out after 'not found' message. - - * c_ksh(c_kill): re-wrote function (again) to handle posix - options (-s, --, etc.) and posix -l output. - - * configure.in: added strcasecmp function check. - * missing.c(strcasecmp): define strcasecmp function if not available. - * trap.c(gettrap): use strcasecmp when comparing signal names. - - * var.c(global): expand $! to nothing if there haven't been any - asynchronous processes started yet. - - * misc.c(options): added posix option (set automatically if - POSIXLY_CORRECT env variable is set or if POSIXLY_CORRECT config - define is defined) - * var.c(special,setspec): added POSIXLY_CORRECT. - * config.h.top: added POSIXLY_CORRECT define. - * main.c(main): set FPOSIX if POSIXLY_CORRECT is defined. - * POSIX: new file describing what the posix flag controls. - -Thu Jul 14 10:53:15 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c,sh.h(killpg): moved killpg define to sh.h. - - * jobs.c(exchild): set async variable when starting background - processes. - * jobs.c(j_resume): print [job-num] before command when backgrounding; - print to stdout instead of stderr. - * c_ksh.c(c_fgbg): call builtin_getopt to skip possible --, complain - about unknown options. - - * jobs.c(held_sigchld): new global variable. - * jobs.c(j_sigchld): if any jobs aren't started, set held_sigchld and - return. - * jobs.c(exchild,waitlast): after setting JF_START, if held_sigchld - set, call j_sigchld(). - - * jobs.c(exchild): added/initialized ppid field to struct job; deleted - global is_child. - * jobs.c(waitfor): don't wait for a process that isn't a child of - the current process. - * jobs.c(j_exit): kill stopped jobs owned by current process only. - - * jobs.c(check_job): don't do monitor stuff for XXCOM jobs, but do - set up notification. - * jobs.c(j_waitj): added JW_NOTIFY flag to print job notification - messages. - - * jobs.c(exchild): remove !XPIPEI condition - we now close pipe so - pipeline doesn't have to call waitlast(). - * exec.c(execute): case TPIPE: no need to restore 0 or call waitlast() - since exchild() handles everything. - - * jobs.c(remove_job): set last_job to 0 if we are removing it. - * jobs.c(waitlast): check if last_job is 0. - - * jobs.c(struct job): combined started, waiting, interactive - field into flags field; added JF_* flags; changed JW_NONOTIFY - to JW_NOTIFY and changed all calls to j_waitj() to reverse - this flag. - - * jobs.c(exchild): ignore SIGTSTP, TTIN, TTOU for `command` jobs. - -Wed Jul 13 09:28:34 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): when checking if FMONITOR set on command line, - use 127 instead of -1 (signed vs unsigned char problem). - - * tree.h: renumbered, XEXEC, XFORK, ... and DOBLANK, DOGLOB, ... - to use bits in order (instead of 0 5 2 4...). - * jobs.c(j_init): don't set sigtrap[SIGCHLD].sig_dfl = 1 as a - forked child may be a shell that needs to trap SIGCHLD. - - * tree.h(XPCLOSE,XCCLOSE): flags for close in parent, close in child. - * jobs.c(exchild): added third argument - a file descriptor - if - flags has XPCLOSE, close fd in parent, if flags has XCCLOSE, close - in child. - * exec.c(execute): pass input side of pipe to exchild() so it can - be closed in the child. - -Tue Jul 12 10:21:57 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * main.c(main): let ignoresig() handle SIGTERM. - * jobs.c(exchild): let restoresigs handle SIGTERM. - - * lex.c(yylex): don't parse array references inside double quotes - (partial fix). - - * emacs.c(x_print): use shprintf instead of shellf so the output - of bind can be redirected. - - * trap.c(deftraps): added SIGINFO (from jconklin@netcom.com). - -Fri Jul 8 09:37:51 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-4.9+mun.4 distribution - - * Makefine.in: added $(LDSTATIC) to LDFALGS to make static - linking easier (suggested by sjg); use cp -p when creating - distributions to preserve file dates. - * configure.in: set LDSTATIC in Makefile if present in environ - when configure is run. - - * sigact.c(sigsuspend): when calling 4.2bsd sigpause, pass *mask, - not mask. - - * main.c(main): fixed up initialization of PWD (free memory, print - more informative message). - - * misc.c(getcwd): range check backwards. - - * c_sh.c(setsig): set sa_flags/sa_mask. - - * edit.c(init_editmode),main.c,proto.h: deleted function - not needed - since VISUAL/EDITOR are special. - - * lex.c(set_prompt),table.h: take out PS3. - - * c_sh.c(c_umask): handle multiple actions in symbolic mode clauses - (eg, u+r-w); handle X (eg, o+X); ignore s (eg, u+s). - - * shf.c(shf_fillbuf): continue reading if we get an EINTR. - * shf.c(shf_emptybuf,shf_write,shf_putchar): continue writing if we - get an EINTR. - -Thu Jul 7 10:19:24 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sigaction,sigprocmask: changed NULL third argument to - (struct sigaction *) 0. - * sh.h(kshpid): changed type from int to pid_t. - * proto.h(do_ulimit): removed do_ulimit() declaration. - * vi.c(complete_word): removed unused variable pos. - * syn.c(pipeline,elsepart): removed unused variable c. - * jobs.c(exchild): deleted variable s (assigned but not used). - * history(hist_init),shf.c(shf_gets): changed variable e to end - because there is a global e. - * exec.c(do_selectargs): removed secondarg argument; changed return - (char *) 1 to (char *) 0; changed all calls. - - * io.c(canseek): use fd argument instead of 0. - - * lex.c(readhere): don't use fixed sized buffer (line). - - * expand.h: changed multi-statement macros to use do {..} while (0); - changed temporary variable vp to vp__ to avoid lint complaints. - - * aclocal.m4(KSH_DUP2_CHECK): define F_GETFD/F_SETFD if not - already defined. - - * etc/profile, etc/ksh.kshrc: replaced with new versions from - Simon J. Gerraty (sjg@zen.void.oz.au). - -Wed Jul 6 10:09:55 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(killpg),configure.in: restored use of killpg() - some - systems don't understand kill(-pgrp, signal) (ultrix 2.2); - added test for killpg() in configure.in. - - * trap.c(inittraps): changed initialization of sigtraps - was - using -1 in deftraps[] as end of table marker but some systems - (eg, ultrix 2.2) define signals with -1 values (SIGPWR). - - * Makefile.in(mandir,install): fixed mandir value; added / - in man installation; prefixed ksh.1 with $(srcdir). - - * jobs.c(j_init): Ignore failure of TIOCSETD. - - * misc.c(options[]): changed "vicomplete" to "vitabcomplete". - - * emacs.c(x_e_putc,x_e_puts,x_debug_info): x_e_putc()/x_e_puts() are - the x_putc()/x_puts() functions from ksh4.9 edit.c (they got lost - in the merge); same for x_debug_info(); changed x_e_putc/x_e_puts - to call x_putc/x_puts. - -Mon Jul 4 09:29:05 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-4.9+mun.3 distribution - - * main.c(remove_temps): use unlink() instead of remove(); delete - remove() define. - - * sh.h(func_heredocs, struct env): added func_heredocs for here - documents in functions; added func_parse field to struct env - - set when a function is being parsed. - * lex.c(readhere): if e.func_parse, save temp file in func_heredocs. - * syn.c(get_command): increment/decrement func_parse when parsing - functions. - * main.c(remove_temps,reclaim,leave): added remove_temps(); make - reclaim() call remove_temps(); make leave() clean up function - here documents. - - * aclocal.m4(KSH_TIMES_CHECK): new test - define TIMES_BROKEN - if times() doesn't exist or if it always returns 0. - * acconfig.h(TIMES_BROKEN): new define. - * missing.c(ksh_times): new function. - * ksh_times.h: new file. - * c_sh.c,jobs.c: changed <sys/times.h> to "ksh_times.h" - * c_sh.c,ksh_time.h(CLK_TCK): moved CLK_TCK define from c_sh.c - to ksh_time.h (needed in missing.c). - - * syn.c(get_command): case TIME: don't call pipeline() with CONTIN - flag. - - * c_sh.c(c_times): combined some printfs(). - - * jobs.c(j_jobs,j_kill,j_resume,waitfor): block SIGCHLD before - calling j_lookup() or looking at jobs list - avoids potential - problems with remove_job() being called in signal handler. - -Sun Jul 3 11:09:01 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * exec.c(do_selectargs, selread, pr_menu): re-wrote do_selectargs to - let c_read() to most of the work; deleted selread; make pr_menu - calculate width/ncolumns each call so select can be used recursively. - - * configure.in, aclocal.m4(KSH_TERMIOS_H, KSH_TERM_CHECK): replaced - KSH_TERMIOS_H with KSH_TERM_CHECK; removed calls to - tcgetpgrp/tcsetpgrp - there is a separate test for this. - - * main.c(main), sh.h: move getcwd() declaration to sh.h. - - * eval.c(expand,varsub): added XNULLSUB case to deal with "$@" - (and "${foo[@]}") when $# (or ${#foo}) is 0. - - * eval.c(expand,varsub): removed free_me field - let reclaim() take - care of it. - -Wed Mar 9 00:50:12 1994 Simon J. Gerraty (sjg@zen.void.oz.au) - - * var.c (setstr): don't set ALLOC flag if vp.s is NULL. - -Thu Jun 30 10:16:44 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_read): ignore null characters; use builtin_getopt() - instead of explicit parsing; removed -e option (neither at&t ksh - nor POSIX have this); added -s option (put line in history, at&t ksh); - if no variable specified, use REPLY (at&t ksh). - - * exec.c(do_selectargs): use Xstring macros to deal with saving - input (was static, growing, buffers); flush shl_out after - shellf(). - - * vi.c(expand_word,complete_word): deleted call to free_edstate - since already done by restore_edstate(). - * var.c(global): in 'if !letter(c)' block, deleted !c from - 'if (!c || !n[1])' - don't know why it was added since it makes - no difference to what is returned. - - * syn.c(dogroup): removed onlydone argument since it is only - used in the while/until statements, where "while command; done" - is not allowed anyway; Changed all calls. - - * misc.c(options[]): allow -i to be specified on the command - line. - - * exec.c(iosetup): if stderr (fd 2) is being re-directed, - re-open shl_out to clear any errors. - * main.c(quitenv): if restoring fd 2, clear any write errors - * io.c(initio): initialize shl_out, shl_spare for writing - (was SHF_GETFL). - - * main.c(main): ignore SIGQUIT if talking. - -Wed Jun 29 11:11:34 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_sh.c(c_exit): removed jobs/really quit stuff - exit should - always exit. - * main.c(shell): made reallyquit a local variable. - * sh.h(reallyquit): deleted reallyquit - - * exec.c(comexec), main.c(main), misc.c(change_flag), jobs.c: - ifdef'd use of FMONITOR. - * sh.h, misc.c: define FMONITOR option only if JOBS defined. - - * c_sh.c(c_wait): POSIXized: option parsing (of no options); - return 0 if not given any arguments; deal with multiple arguments. - * jobs.c(j_lookup): changed second argument to return an integer - error code, added defines for error codes, added error message - array; changed all calls to use new conventions. - * jobs.c(waitfor): returns -1 if job not found; added argument - to specify if notification messages should be suppressed. - * jobs.c(j_waitj): added flags argument instead of intr argument; - added JW_STOPPEDWAIT flag to wait for stopped jobs to complete; - added JW_NONOTIFY flag to suppress notification of normal - job termination. - -Tue Jun 28 16:13:10 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ksh.c(c_jobs): added -n and -p options, allow job ids to be - specified for -l option. - * jobs.c(j_jobs): added new arguments to deal with -n and -p options. - - * shf.h(SHF_BSIZE): reduced size to 512 to reduce memory requirements - (I/O is used mostly for one line messages). - - * config.h.bot: removed necessity for tty process groups to define - JOBS, added necessity of signal blocking/pausing. - -Mon Jun 27 21:49:52 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * jobs.c(exchild,j_print,j_waitj,j_jobs,check_job): exchild() - removed - commented out shf_flush() calls; j_print() - print a space between - status reports when lflag < 0, changed flag argument to use - long/medium/short defines; Changed Job.notify field to use - long/medium/short defines; j_waitj() - instead of calling j_print(), - set j->notify to print the job; j_jobs() - clear j->notify so user - won't be notified twice if a job finishes before a jobs command; - check_job() - put job on front of list only if it is stopped. - - * main.c(main): pass flag to j_init() indicating if -m flag set/cleared - on command line; don't initialize ttyfd. - * sh.h: delete ttyfd. - * jobs.c(j_init,ttyfd,check_job): made ttyfd static; re-worked j_init() - to initialize ttyfd, initialize FMONITOR if not set by command line, - initialize shl_j for asynchronous job notification; - check_job() - use shl_j, look through saved fds to find real - standard-error. - - * jobs.c(TTY_PGRP, ttypgrps_ok): modified conditions so job control - is useful without tty process groups; added ttypgrps_ok flag that - indicates if tty process groups should be set up; modifications so - job control useful if ttypgrps_ok not set. - - * main.c(main): set FTALKING if 0 and 2 are tty as specified in POSIX - (was 0 and 1). - - * misc.c(parse_args): do POSIX option processing for -A, -c and -o - (allow -onoglob, -ctrue). - * main.c(main): don't set up shl_stdout before/after parse_args() since - lone -o on command line no longer accepted; remove code to allow - -c with no options to read from stdin (at&t khs does this but POSIX - requires an option to -c). - -Thu Jun 23 17:46:54 NDT 1994 John Rochester (jr@panda.cs.mun.ca) - - * trap.c(cleartraps): added special case for clearing trap 0 from - ksh-4.9 sources. - -Thu Jun 23 10:17:03 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(builtin_getopt): print error messages for unknown option, - missing option; reset state if argv is 0. - * c_ulimit.c(c_ulimit): let builtin_getopt() print error messages. - * exec.c(call_builtin): call builtin_getopt() with 0 argv. - - * c_sh.c(c_unset): added -v option (POSIX); use builtin_getopt() to - parse arguments; removed bogus comment about global() and special - variables; don't allow read-only variables to be unset (POSIX). - - * var.c(unset, unsetspec): when unsetting a special variable, call - unsetspec(); unsetspec() new function. - * mail.c(mbset, mcheck): check that path is not 0 before calling stat - (so mbset() can be called with 0 when MAIL is unset); deleted #if 0'd - declarations of munset, mballoc and maddmsg. - - * misc.c(parse_args): pass argv+i+1 to set_array (not argv+i); when - skipping arguments, leave i just before the NULL. - - * exec.c(echo): flush shl_out when done. - - * shf.c(shf_close): always used to return EOF. - - * trap.c(trapsig): skip error handlers when checking for PARSE or LOOP. - -Wed Jun 22 10:24:09 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * sh.h(C_IFSWS), misc.c(initctypes): added and initialized C_IFSWS - (IFS white space). - * c_sh.c(c_read): print continuation prompt if line ends in backslash; - multiple non-white-space IFS chars delimit fields; strip trailing - IFS-white-space from last variable; watch out for backslash followed - by EOF. - * eval.c(expand): only do field splitting on the results of - parameter/command substition (POSIX, !v7-sh); multiple - non-white-space IFS chars delimit fields. - - * eval.c(expand,alt_expand): removed NOALT tests since it could - never be set; added return after call to alt_expand() in expand(). - -Mon Jun 6 10:12:41 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * misc.c(setctypes, initctypes): setctypes - don't allow leading null - in IFS (IFS="" could cause problems, 0 is already added); - initctypes - don't use a leading null. - - * sh.h, eval.c: move definition of ifs0 from eval.c to sh.h; handle - null ifs0. - * var.c(setspec): set ifs0 to first character of IFS. - - * lex.c(yylex): when parsing ${..}, array references were not being - null terminated. - -Fri Jun 3 12:28:06 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * var.c(export): changed to use memcpy() instead of loops. - - * eval.c(varsub, expand): check for #foo[@] in addition to #foo[*]; - handle ${foo[*]} and ${foo[@]} - added free_me field to struct Expand - so pointer vector can get freed. - - * c_sh.c(c_dot), main.c(include): set up positional parameters if - any are specified; Added argc,argv args to include(); changed all - calls to include(); change include() to return 0 or 1 - caller - can check exstat if desired; c_dot() should return 1 if can't open - file (was -1). - - * c_sh.c(c_brkcont): warning message could call getn() with NULL - save - original number and print it. - - * main.c(main): set $0 to first argument when -c used, ie, - "sh -c cmd-string this-is-$0 argumernts..." - - * exec.c(iosetup): print "cannot open" if IOHERE fails. - - * io.c(errorf): set exstat to 1. - - * exec.c(search): assume mode is R_OK or X_OK (not 0/1 - 0 is F_OK, we - want R_OK); changed all calls to pass R_OK/X_OK. - sh.h: define R_OK,W_OK,X_OK,F_OK if not defined. - eaccess(): changed all calls to use [RWXF]_OK. - - * sh.h(flag[], shell_flags[], Flag()): Renamed flag[] array to - shell_flags[] to avoid conflicts with other uses of flag; Changed - all references to flag[] to Flag(); defined Flag() to cast its arg - to an int (for old pcc based C compilers). - - * vi.c(iswordch): use letnum() instead of isalnum || _. - - * misc.c(parse_args): call set_array() to deal with -A flag. - * var.c(set_array): new function. - - -Fri Jun 3 10:22:26 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * eval.c(substitute): afree(s). - - * var.c(global,local), sh.h: ARRAYMAX: new define - max index of an - array; changed 511 constants to this; changed global() and local() - to use array_ref_len() instead of arraysub(). - - * expr.c(token): deleted unneeded arraysub() decl. - - * lex.c(arraysub), proto.h: made static, removed unused arguments, - changed callers; removed prototype from proto.h. - - * ChangeLog: changed descriptions from func(file) to file(func). - -Wed Jun 1 09:17:50 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * made pdksh-4.9+mun.2 distribution - - * Makefile.in: added RCSFILES macro and rcs-ci target. - - * configure.in: add termio.h to the AC_HAVE_HEADERS() call. - - * sh.h, main.c, edit.c, misc.c: use EXTERN for aperm, x_cols, - builtin_optind and builtin_optarg in sh.h, delete definitions - in main.c, edit.c and misc.c. - - * io.c(maketemp): changed sizeof(PATH) to sizeof(path). - - * aclocal.m4(KSH_VOID,KSH_DUP2_CHECK): test that a void * variable - can be used (Ultrix 2.2 compiler doesn't do this); added ifdef - HAVE_FCNTL_H to dup2 test. - - * aclocal.m4, configure.in, sh.h, tree.c, io.c, shf.c: added - new config test KSH_PROTOTYPES to check for function prototypes - (MIPS RICS/os 5.0 C compiler isn't STDC and it can't mix <stddef.h> - with <varargs.h>). Removed stdarg.h test (now redundant). Changed - all varargs functions to use HAVE_PROTOTYPES instead of - HAVE_STDARG_H && STDC. - - * eval.c(alt_scan): changed type of endc param from char to int to - avoid problems with mixing prototype declarations and K&R - definitions. - - * main.c(main), sh.h: added plain getcwd() decl to main(), removed - ARGS() version from sh.h (some systems have getcwd() but don't - declare it, some have getcwd() with a size_t arg 2, some have - an int arg 2). - - * misc.c(memset,memmove): changed the second memset() to memmove(). - - * c_sh.c(clocktos): changed #if CLK_TCK ... to if (CLK_TCK.. since - CLK_TCK is not always defined to a number (may be a _sysconf())). - -Tue May 31 10:49:16 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * configure.in, Makefile.in: added code to set GCC_WARNFLAGS from - $(srcdir)/Warn-flags if gcc is being used; Took -Wall, etc. - out of CFLAGS, took -Dno_RCSids out of DEFS. Added install.sh to - DISTFILES, grabbed copy of install.sh from autoconf (who grabbed - it from X11R5). - - * io.c(errorf,shellf,shprintf),shf.c(shf_fprintf,shf_snprintf), - tree.c(fptreef,snptreef): don't use ansi decls with old style - varargs; changed ifdef __STDC__ to ifdef HAVE_STDARG_H. - - * jobs.c(j_init): changed getpgrp() call to getpgID(), defined getpgID() - appropriately for BSD vs POSIX/SYSV getpgrp. - - * expand.h, ksh_dir.h, ksh_stat.h, ksh_time.h, ksh_wait.h, shf.h, - tty.h: added RCS Id's. - - * acconfig.h: updated SIGSET_T comment: unisgned int -> unsigned. - - * aclocal.m4(KSH_CLOCK_T,KSH_TIME_T,KSH_SIGSET_T): make sure - type is a word (same fix as was done for more_t, et.al.). - - * aclocal.m4(KSH_VOLATILE): check that the compiler can deal with - volatile pointers (dec/pmax ultrix 4.2 compiler can't). - - * misc.c(parse_args): added skelatal code for dealing with -A. - - * var.c,proto.h(skip_varname): new function; deleted isassign() - function, which is no longer called. Changed typeset(var.c) - to use skip_varname(). - - * var.c(strint): fail if base is not in the range 2..36; set variable - base according to first base seen; generate an error if a non-alnum - char is seen (1^A was the same as 11). - - * var.c(strval): for integer variables, output base if != 10. - - * sh.h: fixed typo in x_cols define (#defined -> #define). - -Fri May 27 16:49:29 NDT 1994 Micharl Rendell (michael@panda.cs.mun.ca) - - * made pdksh-4.9+mun.1 distribution - - * finished autoconf'ing source code. - -Fri May 20 16:47:06 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * c_ulimit.c(c_ulimit) (was do_ulimit.c(do_ulimit)): major rework; - deal with combinations of getrusage and ulimit, use options at&t - ksh uses (-SHa..). - * misc.c(builtin_getopt): yet another getopt routine for builtin - commands - * misc.c(parse_args), c_sh.c(c_set), main.c(main): custom option - parsing routine for command line/set options. Lots of changes - to main() to incorporate this (easier to follow). - * c_test.c(c_test): added -e (file exists) test. - -Fri May 5 12:16:46 NDT 1994 Michael Rendell (michael@panda.cs.mun.ca) - - * numerous changes from old Notes.4-9 file: - - c_ksh.c: - - calls to errorf identify what function the error is in - (eg, errorf("print: bad -u option");) - - added array stuff (lots of places) - - table.c - - lex.c - - var.c: +arraysearch(), +basename() - - c_sh.c(c_exit), main.c(shell), sh.h: - - added reallyquit flag to deal with stopped jobs at exit time; - only two exit commands (or eofs) in a row will work. in - shell(), set exstat from execute value. - - c_ksh.c(c_print): - - handle \\ at end of string better (don't skip the null) - - c_ksh.c(c_whence): - - stop looking as soon as we get a failure - - pass flag[FTRACKALL] to findcom() instead of 0 - - c_ksh.c(c_alias): - - print '%s alias not found' if not found - - c_ksh.c(c_jobs): - - handle -l option (list pid) - - c_ksh.c(c_kill): - - two column -l output to try to keep it on one screen - - c_sh.c(c_read): - - skip IFS at start of line "echo ' a b' |(read a b; echo $a)" - should print a, not nothing. - - changed EOF check to set all vars to null (same way \n is - handled) - - eval.c(comsub): - - after compile(), return if t is NULL - - use setfileno() instead of fileno(x) = .. (see sh.h changes); - - exec.c(iosetup): - - set exstat if redirect fails - - exec.c(fd_clexec): - - check that fd >= 0 - - exec.c: - - change SHARPBANG ifdef code - everyone uses scriptexec(). - ifdef is put around open/read/parse code in scriptexec(). - [code cleanup] - - exec.c(search): - - eaccess test out side of loop: must be regular file to exec it - (like test in loop) - - eval.c(expand): - - added while getc() == 0 in XCOM - [a null in the output of a file would be treated as eof and - waitlast would not be called] - - eval.c(trimsub): - - '%' subst: use ATEMP, not APERM - - eval.c(tilde): use Xinit et. al., instead of fixed length buffer - - getopts.c(getopt): rename getopt() to ksh_getopt() to avoid - problems with prototypes in system #include files. - - io.c(fopenshf): - - call clearerr(fd) if already open - - use F_GETFL to determine appropriate mode for fdopen() call - instead of opening everything for read/write - - use ifdef _FSTDIO instead of ifdef _BSDI (_FSTDIO is used in - 4.4bsd, NetBSD, FreeBSD and other non BSDI environs) - - lex.c(ungetsc): don't decrement if str == null, remove nullstr hack - - lex.c(yylex): - - \ at eol: call Xfree before goto Again - - use memset() to clear ident, instead of while loop - - syn.c(get_command): renamed from command() to get_command() to - avoid conflicts with command(main.c). - - sym.c(get_command): - - allow A=B <alias-name> to work (alias was not being expanded) - - allow `if .. if .. fi fi' to work (no ; after group terminator - (fi , esac, done, ), }) - - allow `alias FI=fi ; if .. if .. fi FI' to work (alias - expansion after group terminator) - - do not assume resize returns same pointer - - tree.c(pioact): - - handle IORDWR case - - added leading quote for file in IOHERE case - - var.c(special): - - add MAILCHECK check - - var.c(setspec): - - add MAILCHECK case (doesn't do anything yet) - - var.c(strint): - - handle null vp->val.s - - eval.c(sh.h, expand), misc.c(options[]): - - enable alternations only if alternations flag set - (set -o alternations). This is so (att ksh) scripts that don't - expect alternations won't break. - - added notify option (asynchronous job completion notification) - - added vicomplete to enable tab char as file name completion - char in vi (this is likely to go away - exits for historical - reasons) - - jobs.c, main.c, sh.c, trap.c: - - define/use SIG_HDLR instead of void - - eval.c(expand): alt_expand() does not return a value so don't test - it, just return. Also changed decl of alt_expand() to reflect - reality. - - emacs.c(x_emacs): first return returns random value (i); change to - return 0. Also changed the way interrupts are returned to called - (return -2 means interrupt). - - c_sh.c(c_brkcont): at&t ksh allows breaks/continues outside of - loops, 4.9 prints an error and breaks out of all env's (if, case, - etc.). Fixed to act like at&t (ie, allow bogus continues), except - a warning message is printed. (Some HP-UX shell scripts actually - have continues outside of loops...) - - main.c(shell): parameter s should be volatile as it is used after a - setjmp. - - edit.c(promptlen): handle tabs, backspaces... - - cleaner fix to the ^C/source->line problem: in pprompt(lex.c), - convert ! to source->line+1 (same in promptlen(edit.c)), increment - source->line after a (non-empty, non-eof) line has been read - (before call to histsave()). To be pedantic, also adjust - position of source->line++ in SHIST in case PS9 is ever used. - Remove code in shell(main.c) that does the source->line--, - remove the source->line-- for eof and empty line in from - getsc_(lex.c). - - trap.c(sigtrap[]): do not depend on signal number matching position - in initialization array. Use second table in which order does not - matter to initialize sigtrap[] array. Easier to read/port, and - generally less fragile. requires call to inittraps() in main.c. - - trap.c(cleartraps): need to clear Sigact flags/mask after use - (actually, declare a local struct sigact and use that instead of - Sigact) - - exec.c(execute): case TSELECT: no USE_SIGACT code for call to - signal(); case TPIPE: don't call waitlast() if XXCOM since - waitlast() will be called in expand(); 4.9 code that set and - then cleared the XEXEC flag in the TPIPE case not added since - it was ifdef'd out, also the code to not exit if XPIPEI flag - set was not added; 4.9 XXWHL flag not added (don't flush stdin - if in a while loop) since this problem fixed (I hope) by shf stuff. - - ttyfd{sh.h/lex.c}: use EXTERN/_I_ to initialize ttyfd. Remove from - lex.c - - interrupted reads: instead of testing sigchld_caught after reads - fail, continue them if errno == EINTR. - - edit.c(x_getc): check for EINTR, and continue reading if so. - - lex.c(getsc_): check for EINTR, and continue reading if so. - (don't check return of x_read() - check has already been done) - - exec.c(selread): check for EINTR, and continue reading if so. - - history changes: - - history.c: - - histrpl(): bounds check doesn't take global flag into - account - move check into loop and past loop. - - c_fc(): if pattern is the empty string, histrpl() - goes into infinate loop. Start searching for = after first - char (this is what at&t ksh seems to do). - - c_fc(): `fc -l first' should list at most 16 - commands according to at&t manual. - - findhist(): re-wrote: shorter, easier to follow. Now - returns an int. (used only by vi code) - - use COMPLEX_HISTORY's allocated history array in - EASY_HISTORY: common init_histvec(), sethistfile() and - sethistsize() functions. - In the process, hist_open() went away. Use histsize - instead of HISTORY in hist_init() and hist_finish() - #ifdefs in lex.h, table.h, - var.c disappear, history variable definitions in lex.c - disappear. - - hist_init(COMPLEX_HISTORY): move hstarted = 1 to after the - FTALKING test. - - hist_finish(): don't open hname if its null - - histrpl(): made static, use ARGS in decl - - made current and curpos static - - changes to allow embedded newlines in commands: - - histsave(): trash only trailing newline - - hist_init(): read in null terminated lines instead of - newline terminated - - hist_finish(): write null terminated lines - - make multiple line command appear in single history line - (EASY_HISTORY only): - - added histappend() to append new command to last - command - - added call to histappend() in getsc_(lex.c) (also: only - adjust source->line if not multiline). - - lex.h: - - remove second decl of history if !EASY_HISTORY - - tree.c(ptree): case TCOM: check if t->vars or t->args is 0 - - vi.c(x_vi): ^D anywhere in command line is eof ($ foobar^D exits). - at&t ksh ignores ^D in middle of line - - edit.c: - - don't need to include string.h - included in stdh.h - - init_editmode(): in at&t ksh, VISUAL takes precenence over - EDITOR, so put it first. Also, at&t ksh doesn't use FCEDIT so - trash it. - - moved initialization of ed_* from x_read() to x_init() since - thats where they are set from tty structs. - - x_init(): set ed_intrc, ed_quitc for _BSD & _POSIX_TERM ifdefs - - send output to shlout (instead of stdout - at&t ksh writes to - stderr) - - made x_do_init static. - - exit.c(x_getc), lex.c(yylex): restart interrupted reads in - x_getc(), changed read-restart in yylex() to only effect call - to read(). - - syn.c(thenpart): then THEN is not optional - generate a syntax - error if no THEN. (ie, `if true ; fi' is not legal). - - syn.c(get_command): don't accept keywords after re-directory (eg, - `> /dev/null if true ; then echo hi ; fi' is not legal). - - vi.c: handle \ and ^[ in command mode ala at&t ksh (filename - completion) - - syn.c(thenpart), syn.c(elsepart): calling token(0) when they want a - keyword (always worked 'cause tpeek() is always called before, with - the keyword flag). Fix: call token(KEYWORD|ALIAS) (at&t ksh does - alias expansion here). Question: pass CONTIN as well? - - syn.c(get_command): LWORD/MPAREN case: do alias expansion when - getting open brace ({). CASE case: ditto for `in' and `esac'. - IF case: ditto for `fi'. FUNCTION case: dito for open brace ({). - - syn.c(dogroup): alias expansion when getting `do' and `done'. - - syn.c(wordlist): alias expansion when getting `in'. - - syn.c(nested): alias expansion when getting `)', `}' - - syn.c(casepart): alias expansion when getting `esac' or `;;'. - Also removed use of cf variable - it does nothing. - - eval.c(expand): case CSUBST: '#'/'%' - increment st so nested - substitutions work. - - var.c(typeset): INTEGER && no assignment: memory was being freed - and then used (there was even a comment saying it was being - done...) - - lex.c, lex.h, exec.c, main.c: - added shf_{open,fdopen,close,gets}() routines so stdio wasn't - used. When reading a command file under osf/1, stdio would - mess up the read pointer when a child exited: the exit flushed - all open files and flushing a file open for reading changes the - current read position (does a seek to where the next char would - be read). This position is then used by the parent process, - who thinks the read position is still at the end of the buffer - it read. - - c_sh.c: - use shf_*() routines avoids two bugs in read: - - on sunos 4.1.3, a read would gobble up a stdio buffer and - never put it back (ie, lseek backwards). Neither a - fflush() nor a fseek(x, 0L, 1) fixed the problem. - (see Bug 26) - - on linux, stdio knows its current offset and seeks there - before reading a buffer. This causes grief when the shell - replaces file descriptors behind stdio's back (ie, all the - time). - $ read x << EOF - hi - EOF - $ cat > /dev/tty << EOF - 1:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ - 2:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ - 3:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ - EOF - $ - the cat picks up reading at the offset where the read - command left off (ie, at bcdefg... - the 1:a are skipped). - - exec.c(comexec): built-in c_exec && no args: close the saved fd's - (were thrown away). Also, set close-on-exec flag for fd's > 2, - as per at&t manual. - - lex.c(yylex): only accept 1 digit before a redirection (eg, 1> is - ok, 1abc> is not) - - exec.c(iosetup): only accept 1 digit after a dup-redirection - (eg, >&1 is ok, >&1abc is not) - - exec.c(iosetup): use O_APPEND flag for >> redirections; use O_CREAT - flag for <> redirections. (re-organized to accumulate open() flags - and do one open() call); changed error message to know about dup - failing. - - c_sh.c(c_umask): umask should have leading 0 - doesn't when umask - has 3 digits (eg, `umask 222; umask' prints 222 instead of 0222) - - c_sh.c(setsig): declare local struct sigaction and use it so - sa_flags doesn't have to be cleared (also to try to keep away from - global vars). - - main.c(main): - - don't go set TALKING if name starts with -. - - read $HOME/.profile (not .profile) - - main.c(main): re-wrote option parsing code - - edit.c(init_editmode): don't check FCEDIT - - if set -o vi/emacs/gmacs on command line, don't set edit mode from - FCEDIT/EDITOR/etc. - - var.c(setspec): FCEDIT should not magicly change edit mode; VISUAL - and EDITOR should (EDITOR only if VISUAL is not set) - - changed noclobber char from ! to | (this is what at&t ksh uses) - - exec.c(iosetup): use O_EXCL flag if FNOCLOBBER set and >| not used - - c_sh.c(c_set): don't clear FERREXIT if FTALKING is set; although - some ksh manuals say -e is ignored for interactive shells, they - all seem to honour the -e flag for interactive shells. - - vi.c: reset history position to the end after a line is modified - - `(( 1 + 2 ))' no longer prints `+: bad expression'! - - lex.c(yylex): added parenthesis counting so `(( ((1+2)) ))' no - longer generates a syntax error - - expr.c(intvar): if strint() fails, give bad number error - (`let 1+foo' should fail) - - `echo hi 1abc123> /dev/tty' no longer interpreted as - `echo hi 1> /dev/tty' (is `echo hi 1abc123 > /dev/tty') - - `echo hi 1<> /tmp/does-not-exist' now works (used to say cannot - open) - - c_sh.c(c_umask): umask now takes symbolic arguments (g-r, +w, etc.) - - c_ksh.c(c_whence): pass flag[FTRACKALL] to findcom() instead of 1. - - `echo hi >< bar' now produces an error - - jobs.c(j_lookup): now checks for ambiguous job specifications; - callers now get an error message. - - c_ksh.c(c_fgbg): multiple jobs can be specified - - emacs.c(x_transpose): move past transposed chars like (gnu) emacs - does - - main.c(main): don't copy initcoms (messes up memory allocated for - shf_iob[] in initio(), should not be necessary) - - main.c(main), var.c(import), var.c(typeset), c_ksh.c(c_alias), - expr.c(token), misc.c(strnsave): added strnsave() function; use it - instead of writing nulls in the middle of strings; main() no longer - copies startup commands before executing them. - - vi.c: wbuf[] no longer a fixed size (was hard coded to 80 chars). - - alloc.c(aresize): if passed a null pointer, don't free it - - expand.h: restored usage description and NOTE from previous version - - alloc.c, table.h, table.c: - - changed struct fields named `free' to nfree (struct table) and - freelist (struct Block) to allow memory debugging - (involves #defining free) - - main.c(main): smart initialization of PWD (ensures it is always - valid). - - lex.h, table.h, tree.h: removed redundant function declarations - (were also in proto.h) - - sh.h: increased LINE from 256 to 1024 - - main.c(include), sh.h(E_INC), c_sh.c(c_return): added hack so a - return in a included file returns to the includer instead of - exiting the shell. Very useful in $ENV scripts and profiles, - eg, so the whole script does not have to be parsed for - non-interactive shells. - This is not compatible with the at&t ksh, whose man page says - return is the same as exit outside of functions. May be modified - in the future. (note that at&t ksh parses a .'ed file before - executing anything, so a premature return would not speed its - parsing, which is why the return hack was added to pdksh) - - exec.c(iosetup): don't save fd if already saved (and don't - generate an error) - - exec.c(findcom): in if (..ALLOC && eaccess), test for - ALLOC redundant - always call afree() diff --git a/bin/ksh/IAFA-PACKAGE b/bin/ksh/IAFA-PACKAGE deleted file mode 100644 index dbd1af45086..00000000000 --- a/bin/ksh/IAFA-PACKAGE +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: IAFA-PACKAGE,v 1.7 1999/07/14 13:37:23 millert Exp $ - -Title: pdksh -Version: 5.2.14 -Description: A public domain implementation of the Korn shell (ksh88), - a UNIX command line interpreter / scripting language; the few - missing ksh features are being added and the shell is being - POSIXized. -Author: (Eric Gisin), (Charles Forsyth), (John R MacMillan), - sjg@zen.void.oz.au (Simon J. Gerraty), - michael@cs.mun.ca (Michael Rendell), (plus many others) -Maintained-by: michael@cs.mun.ca (Michael Rendell) -Maintained-at: ftp://ftp.cs.mun.ca:/pub/pdksh/ -Platforms: Written in C, runs on most UNIX boxes (uses GNU autoconf; - works best in a POSIX or BSD environment). Also runs on OS/2 - and (using cygwin32 package) on win95/NT -Copying-Policy: Freely Redistributable (mostly public domain, some copyrighted) -Keywords: pdksh, ksh, Korn, shell, command line interpreter diff --git a/bin/ksh/NEWS b/bin/ksh/NEWS deleted file mode 100644 index 93faac92178..00000000000 --- a/bin/ksh/NEWS +++ /dev/null @@ -1,662 +0,0 @@ -Version 5.2.14 - -* bug fixes - * test: -nt(-ot) now succeed if second (first) file doesn't exist and the - other does. - * time: now accepts the -p (posix) option. - * vi: failed redo (.) commands no longer return the line to the shell. - * emacs: bind commands in .profile/$ENV no longer overridden by tty - settings. - * heredocs: now saved in memory to avoid temp files disappear too soon. - * time: commands at the end of a pipeline can now be timed. - * on startup: MAILCHECK,TMOUT,SECONDS values from environment are honoured. - * trap: exit traps now executed in subshells (without explicit exit call). - * eval: if given empty command while in non-posix mode, exit status is - that of last command substitution (if any). - * trap: if first argument is "exit", it is taken as a command not a signal. - * pwd: config test & code to work around bug in hpux 10.x getcwd(). - * RANDOM: seed based on both time and pid; different sequence in sub shells. - * typeset -f: now pretty-prints $(..) and $((..)) correctly. - * fixed bug in memory allocation which can lead to core dumps. - * set -o: no longer prints options that have no names. - * emacs: <esc>. in very fist command no longer dumps core. - * .: can now dot non-regular files (eg, /dev/null). - * parsing: bar(); no longer dumps core when function bar is run. - * variable substitution: ${#array[*]} now prints number of set elements - in the array (used to print largest index, not what ksh88 did). - * job control: resuming suspended gnu su no longer hoses su'd shell. - * job control: fixed possible core dump when waiting for jobs. - -* LINENO variable now supported. -* port to cygwin environment on win95/winnt. - - -Version 5.2.13 - -* bug fixes - * functions: $0 in sh-style functions is now the same as the shell's $0. - * .: fixed possible core dump on clean up. - * test: a lone -t argument now does a isatty(1) test if not in posix mode. - * alias: PS2 no longer printed when expanding alias foo="cmd; ". - * set/typeset/getopts: can have options prefixed with both + and -. - * typeset -f: now reproduces functions correctly ("function F" vs "F()"). - * alias: options can start with +. - * set -A: a -- marking end of options is now skipped. - * errexit option (-e) ignored when reading profile and $ENV files. - * test: '-x f' now fails for root if f is a file and has no x bits set. - * $_: set to last arg in interactive shells only. - * PATH: if $PATH not set on startup, it is set to the default path. - * extended globbing: allow (pat|pat) within @(...) and ${foo#...} patterns. - * emacs: ^[_ now behaves as it does in at&t ksh (word from _last_ command). - * MAIL/MAILCHECK: fixed bug that prevented the `new mail' messages. - * ${..%..} and ${..#..} now work if compiled as sh. - * sh: fd's greater than 2 are passed on to executed commands. - * syntax: accepts "if (( 1 )) then" (also [[ ]]): no ; required before then. - * substitution: accepts (and ignores) leading : in %, %%, #, ## substitions. - * .: doting directories no longer allowed. - * editing: completion after "cmd " now completes files (was command). - - -$OpenBSD: NEWS,v 1.15 2007/08/02 11:05:54 fgsch Exp $ - -Version 5.2.12 - -* bug fixes - * editing: shell recognizes window resizes on Dec alphas (config problem). - * alias: no longer dumps core if alias is in a command substitution. - * alias: everything after ;\n or \n\n was ignored in aliases. - * exec: temp files used by here docs in functions now cleaned up on exec. - * possible core dump when cleaning up environment fixed. - * vi: set -o vi-show8 now does what it was supposed to do (cat -v like). - * job control: process group synchronization (needed on systems with - broken setpgrp()) now works when the pipeline contains built in commands. - * vi: if set -o vi-tabcomplete, tab works in command mode as well. - * set/typeset: unset parameters are only reported if they have attributes. - - -Version 5.2.11 - -* bug fixes - * aliases: expansion was reading an extra character (bug added in 5.2.10). - - -Version 5.2.10 - -* bug fixes - * parsing: handling of backslash-newline fixed (esp. in here documents). - * read: prints prompt if non-interactive and input is a tty. - - -Version 5.2.9 - -* bug fixes - * config: using LDSTATIC no longer generates config error. - * config: can compile as sh again (--enable-shell=sh). - * config: should compile on machines with broken "gcc -g" - * config: fixed test for broken S_IFIFO. - * config: fixed test for getwd() routine. - * config: better NeXT support (signal list generated correctly, clock_t - type detected, enable job control in rlogin sessions) - * parsing: assignments containing brackets ([]) not treated as commands. - * editing: terminal column width determined correctly on startup. - * vi: long prompts truncated (more or less) correctly. - * file completion: files of the form ~user (no /'s) expanded correctly. - -* at&t ksh method for delimiting hidden characters in prompt added (i.e., - start prompt with non-printing char and \r, use char to delimit esc codes). - - -Version 5.2.8 - -* bug fixes - * configuration: handle FreeBSD's strange S_ISSOCK. - * test: added == operator. - * configuration: fixed opendir/dirent usage. - * redirections before subshells handled correctly. - * COLUMNS/LINES are no longer exported when they are automatically set. - * mail checks and PS1/PS4 expansions removed if compiled as sh. - * subcommands in PS1 no longer generate bogus warning messages. - * environment variables not longer messed up on 16-bit machines. - * unset: now returns non-zero if variable/function isn't set. - * select: only prints menu first time, if REPLY is null or on blank line. - * check for `cannot execute' improved, error message says why. - * typeset: now reports variables with attributes but now value. - * vi/emacs file completion: does directory listing on zero length names. - * arithmetic: non-numeric parameters expanded recursively. - * arithmetic: identifiers in unevaluated part of ?:,&&,|| parsed correctly. - * functions: unsetting a function within itself is now safe. - * arrays: unsetting element 0 of an array no longer kills the whole array. - * co-processes now behave like ksh93 co-processes (and less like ksh88). - -* functions declared with "function foo" are treated differently (from those - declared with "foo()"): $0 is (not) set to the function name, assignments - before function calls aren't (are) kept in the parent shell. - -* vi: added vi-esccomplete option for people who want ESC-ESC completion. - -* vi/emacs: now notice window size changes (but not while editing a line). - -* emacs: <esc># now does the comment/uncomment thing. - -* arithmetic: ++, -- and , added. - - -Version 5.2.7 - -* bug fixes - * vi: commands can be longer that 16 chars... - - -Version 5.2.6 - -* bug fixes - * break/continue: if too big a number is given, last enclosing loop is used. - * set: set +o now generates a set command that can be saved and executed. - * COLUMNS/LINES are now exported when they are automatically set. - * emacs: completion: space not added after directory names. - * vi: # command inserts # after each newline; # on commented line - undoes the commenting. - * some regression tests made less sensitive to their environment. - * should compile on os/2 again. - - -Version 5.2.5 - -* bug fixes - * configuration: if sig_setjmp() being used, use sigjmp_buf. - * configuration: test for times() fixed. - * configuration: ANSI usage of setjmp() and offsetof(). - * echo/print: octal number in \ sequence must start with a 0. - * echo: don't treat a lone minus as an option. - * typeset -f: correctly prints functions with select statements. - * vi: / with no pattern repeats last search. - * vi: repeat counts no longer effect file completion/expansion. - * vi: tab-completion now also works in command mode. - * emacs/vi: ^O key now read as ^O on suns/alphas (was eaten by tty driver). - * emacs: now has file expansion (^[*). - * emacs: ^O goes to next command, not next next command. - * COLUMNS/LINES: environment variables now set on start up. - * variables: command line assignments can't change readonly variables. - * arithmetic: giving multiple bases (5#4#3) no longer allowed. - * arithmetic: when assigning a non-integer variables, base no longer shown. - * history: fixed replacement bug introduced in last release. - * history: -1 refers to the previous command, not current fc command. - * parsing: correctly handles command substitutions starting with a newline. - -* full command completion added (both vi and emacs). - - -Version 5.2.4 - -* bug fixes - * PS1 imported from environment again. - * vi handles prompts with embedded newlines. - * errors redirecting stderr aren't lost. - * redirection errors for <&n no longer reported as to >&n. - * don't do globbing on re-direction targets if not interactive (POSIX). - * pattern matching in [[ foo = foo*bar ]] now works again. - * HUP signals are passed on to jobs running in the foreground. - * $? now valid (ie, not 0) in trap handlers, `...` expressions, etc. - * noclobber doesn't effect redirections to non-regular files (eg, /dev/null) - * \newline in here-document delimiters handled correctly. - * typeset -f now reports unloaded autoload functions properly. - * ~,~+,~- are not expanded if HOME,PWD,OLDPWD are unset. - * vi completion/expansion: * not appeded if word contains $. - * cd: error message contains correct directory string. - * vi expansion list: printed in column form ala at&t ksh. - * ^C while reading .profile/$ENV nolonger causes shell to exit. - * option errors for build-in commands now include command name. - * emacs completion/expansion: ' and " are treated as word delimiters. - * fc: replacements (a=b) no longer truncates the command. - * alias: alias -t -r now cleans out the tracked alias table. - -* compile-time configuration changed: configure script --enable-XXX options - replace the old options.h file. Use "configure --help" for information - on what the options do (they are basicly the same as what was in the - options.h file). Shell can be configured as a (almost) plain bourne - shell using the --enable-shell=sh (also generates appropriate man page). - Installed name of program (ksh or sh) can be modified using configure's - --program-* options. - -* ulimit: added -p (maxproc) option. - -* case statements can use the old syntax of {,} instead of in,esac. - -* extended file globbing added (eg, f*(bar|Bar) matches f, fbar fBarbar, etc). - -* trim expressions can be of the form ${parameter#pattern1|pattern2|...}. - -* if compiled as sh, $ENV included only if posix option is set. - -* vi: U command added (undo all changes on line). - -* the Bugs script has been replaced by a new regression testing system, kept - in the tests/ directory (contains a perl script which sets up a test - environment and runs tests, and a bunch of tests). - - -Version 5.2.3 - -* bug fixes - * arrays: set -A and unset now unset whole array. - * history(complex version): fixed core caused by uninitialized hist_source. - * getopts: will continue parsing options if called after error. - * getopts: doesn't print shell name twice in error message. - * posix: if posix option is set, $0 is always the name of the shell. - * history: "fc -s foo" now finds foo if it is the most recent command. - * let: expression errors no longer cause scripts to exit. - * PS1: does not go into infinite loop if there is an expansion error. - * configure: memmove/bcopy test has a change of working now. - * configure: check for flock(), undefine COMPLEX_HISTORY if not found. - * substitution: tilde substitution works in word part of ${var[-+=?]word}. - * history: "fc <number>" now edits <number>, not <number> to most recent. - * cd: two argument form works again. - * special commands taking assignments (alias,set,etc.): field splitting, - file globbing, etc. suppressed only for args that look like assignments. - * command: -V now finds reserved words. - -* added support for Korn's /dev/fd tests - -* new compile time option: DEFAULT_ENV - if defined, it names a file to - include if $ENV is not set. - -* test -o option: if option starts with a !, the test is negated. The test - always fails if the option doesn't exist (so [ -o foo -o -o !foo ] is true - iff option foo exists). - -* new option: set -o nohup (currently on by default) - if set, running jobs - are not kill -HUP'd when a login shell exits; if clear, they are. In - future, this will be clear by default (to act like at&t ksh) - if you don't - (won't) like this, add "[ -o !nohup ] && set -o nohup" to your .profile. - -Version 5.2.2 - -* bug fixes - * included c_test.h in distribution (opps). - -Version 5.2.1 - -* bug fixes - * emacs: buffer no longer overflowed when completing file names/commands. - * emacs: <ESC><tty-erase-char> now bound to delete-back-word (was ...-char). - * emacs: ignores a space char after ^V (version), as in at&t ksh. - * emacs: ^O bound to newline-and-next, ^X^Y bound to list-file. - * emacs: emacs words now include underscore. - * vi: set -o markdirs, directories and ^[= now get along. - * cd: -P no longer leaves .. and . in PWD. - * cd: if CDPATH set and can't cd, error doesn't contain any of CDPATH. - * cd: sets PWD properly, on machines without getwd(). - * configuration: unistd.h test fixed (include sys/types before dirent.h). - * configuration: detects memmove/bcopy's that don't handle overlaps. - * [[ ... ]] does lazy evaluation (eg, [[ ! -f foo || $(<foo) = bar ]] does - not evaluate $(<foo) if foo doesn't exist). - - -Version 5.2.0 - -* bug fixes - * vi: completion now allows globbing characters. - * vi: can deal with very long prompts. - * vi: . (redo) works after j, k, return. - * vi: [dyc]% causing backwards motion now gets correct start/end position. - * vi: complete_word (<ESC>\) no longer rings bell on ambiguous matches. - * vi: globbing doesn't append * if last component of file has globbing chars. - * emacs: most commands now take arguments, arguments can be multi digit. - * emacs: newline-and-next command works more correctly. - * after set -u, trimming substitutions no longer automatically fail. - * set -i no longer reports an internal error. - * FPATH: no longer incorrectly complains about function not being defined. - by a file; when it connectly complains, shell name in error is correct. - * set -a; set -o allexport: these now do something. - * shell deals with non-blocking input (clears non-blocking flag). - * autoconf: fixed memmove/memcpy tests. - * ! translation in prompt now done before parameter substitution. - * siglist.sh works around bug in bash 1.4.3. - * correct positional parameters accessible in local assignments. - * (sleep 100&) no longer waits for sleep to complete. - -* fc -s option added (same as -e -). - -* vi: ^V command (version) added. - -* vi: @<char> macros added (@X executes vi commands in alias _X). - -* emacs: bind -l lists all command names. - -* emacs: goto-history command added. - -* emacs: search-char function changed to search-char-forward; - added search-char-backward (bound to <ESC>^]). - -* cd and pwd take -L and -P options; added set -o physical option - (PWD,OLDPWD no longer readonly). - -* new command line -l option tells shell it is a login session. - -* os2 changes completed. - -* uses autoconf 2.x (was using 1.x). - -Version 5.1.3 - -* bug fixes - * fixed bug in arithmetic expression evaluation (||,&& caused core dump). - * ulimit code now uses rlim_t or quad_t, if appropriate. - * vi: file completion in command mode of single character filename works. - * vi: file completion with markdirs set resulted in two trailing /'s. - * vi: completion/expansion/listing acts like at&t ksh when expand fails. - * vi: ~ takes count. - * lines from history file are no longer negative (easy history). - * Makefile now uses manual extension consistently. - * fc now allows out of range relative (negative) numbers. - * functions with elif now printed correctly. - * FPATH now searched if PATH search fails, as in at&t ksh. - -* typeset -f output is readable (and more correct) - -* compiles under SCO unix - -* more os/2 changes integrated - -Version 5.1.2 - -* bug fixes - * for i; do ...; done now accepted. - * leading non-white-space IFS chars no longer ignored (now delimit fields). - * fixed globbing code so echo /usr/*/make works. - -Version 5.1.1 - -* bug fixes - * { ..;} allowed instead of do ..;done in for/select loops - * EOF after ; or & no longer causes syntax error - * complex history: when shrinking history file, keeps inside buffer space. - * vi editing: `v' on modified line no longer changes command numbering. - * ^C in vi/emacs no longer prints two newlines. - * long arguments (> 255) with globbing characters don't cause core dumps. - -* new (un)option, KSH, which compiles out ksh code (for producing minimal sh). - -* os/2 changes partly merged. - -Version 5.1.0 - -* bug fixes - * problem caused by _POSIX_VDISABLE on BSDI machines fixed - * exit status set to 127 if command file could not be opened - * profile files processed if basename argv[0] starts with (was $0) - * PWD now imported properly from environment. - * emacs code now either uses dynamic buffers or does overflow checking. - * emacs forward-word and delete-forward-word now work like other emacs's. - * ^C/^\ in vi/emacs work like at&t ksh (prompt reprinted, even if trapped). - * history number to command mapping now constant (numbers used to change). - * configuration: BSD tty now used on ultrix (avoids type ahead problem) - * eof in the middle of multiline commands now ignored if ignoreeof set. - * vi space command now works again. - * pointer mismatch compiler warning for waitpid() call dealt with. - * emacs internal memory error in command completion fixed. - * autoloaded functions now work first try. - * SECONDS parameter now acts like in at&t ksh. - -* sense of vi-show8 option changed: 8-bit characters are printed as is by - default; turning on vi-show8 now causes chars with 8th bit set to be - prefixed with M-. - -* missing sections in man page added (now basicly complete) - -* emacs ^V command added: prints ksh version - -* vi g command added: moves to most recent history - -Version 5.0.10 - -* bug fixes - * [[ ]] construct unbroken. - * the newline after a here document marker is now read properly. - * blank lines no longer cause $? to be set to 0. - * mail checking now uses atime/mtime instead of size. - * changing attributes of exported parameters no longer causes core dump. - * the last command in a file does not have to end in a newline. - * empty expressions now treated as 0 (previously generated an error). - * nul bytes stripped from input. - * 0241 (M-!) in a command substitution no longer lost. - * when read used in startup file, line continuation no longer causes crash. - * very long commands in history no longer cause vi to overwrite memory. - * easy history: when saving history, avoid going past the end of history. - * emacs mode no longer entered if EDITOR/VISUAL set to null string. - * command -p disabled in restricted mode. - * closed file descriptors are re-closed after a redirection. - * lone [ (test command) no longer causes globbing code to search directory. - * if TIMES_BROKEN is defined, ksh_times no longer recurses infinitely. - * `r r' no longer repeats r command forever. - * make depend no longer generates backslash followed by a blank line. - * globbing code now deals with symlinks that point to non-existent files. - * if the ] is missing in a pattern, the [ matches the [ character. - * syntax errors in test no longer have two newlines. - * in vi, G now goes to the oldest history (was newest). - * configuration: test for sys_siglist now harder for optimizers to break. - * configuration: look for clock_t in sys/times.h. - * configuration: use _SIGMAX, if available, for # of signals. - * SIGHUP now causes builtin read command to exit. - * wait builtin now returns whenever a trapped signal occurs as per POSIX. - -* v command now works in vi; anchored searches now work in vi mode (/^ptrn); - multi-line commands displayed correctly by history. - -* echo is now schizophrenic: accepts -n/-e/-E and backslash sequences. - -* test -H file added (checks for context dependent files on HPs). - -* set -o gmacs and markdirs honoured. - -* ansi arrow keys in default emacs key bindings. - -* ulimit now takes arithmetic expression (as per Korn book). - -* co-processes changed to be more compatible with at&t ksh. - -Version 5.0.9 - -* bug fixes - * FOO is put in the environment for FOO=bar exec blah. - * compiles under QNX and with dmake. - * the file pattern [!a--]* is now invalid (POSIX) (used to match everything) - * echo "${foo:-"a"}*" no longer the same as echo a*. - * alternation (brace expansion) fixes: - * brace expansion done after variable expansion, as in csh/at&t ksh. - * `echo a{b,c' no longer gives "Missing }" error (it echos a{b,c). - * expansion only done if there is a comma (ie, `echo {a}' prints {a}). - * globbing/expansion code passes 0x80 unharmed. - * "echo ${XX=a*b}" no longer sets XX to "a\200*b". - * "echo ${unset-a*b}" no longer has \200 in the error message. - * bad substitution error generated for things like ${x:a}, ${x^a}, etc. - * `x="a cdef"; echo ${x#a c}' now prints "def" instead of "a a cdef". - * on systems where /etc/passwd//// is a valid name, echo /etc/pass*/ no - longer matches /etc/passwd. - * trace output (set -x) flushed correctly, PS4 initialized. - * ulimit output ungarbled, code to use {set,get}ulimit (if available) - enabled. - * tilde expansion done in word part of ${foo-~/bar} - * when reading stdin (ie, ksh -s), no longer reads too much. - * shell handles i/o redirection and errors in builtin commands as per - POSIX (still have to sort out variable assignment errors). - * starting jobs that save/change/restore tty settings in the background - no longer messes up tty settings when job finishes. - * the pattern [a'-'z] now matches three characters, not 26, and - the pattern [ab']'] also matches three characters. - -* a mostly complete man page! (work is still in progress) - -* quoting inside $(..) mostly works. - -* error reporting has been orthogonalized. - -* brace expansion on by default (can be disabled with set +o braceexpand, or - set -o posix). - -* output of "set -o" now fits on a normal screen. - -* co-processes added (|&, read -p, print -p, etc.). - -* restricted mode added (for what its worth). - -* vi now prints meta characters with M- prefix, unless vi-show8 option is on. - -Version 5.0.8 - -* bug fixes - * two problems in fc (introduced in 5.0.7) - * install target in Makefile missing a dollar - -Version 5.0.7 - -* POSIX command command added - -* a few bug fixes - * now compiles with various options undefined (eg, VI, EMACS, JOBS). - * fixed typos in Makefile.in (maxext -> manext) and ksh.1 (\f -> \fP). - * CLK_TCK defined to correct value for FreeBSD 1.1.5 (and earlier?). - * original process group restored when an exec is done. - * the exit value of set is that of the last $(...) on the command line. - * ditto for a command with no command (eg, x=`false`). - * command variable assignments done before path search (so PATH=... x works) - and are added as they are processed (so A=1 B=$A works). - * variable assignments infront of function calls are exported to programs - inside the function. - * aliases with trailing space are only honoured in command contexts - if in posix mode. - -* make depend target added; install target warns if ksh not in /etc/shells. - -* set -o bgnice now does something. - -* vi mode: ESC is no longer a file completion command (too annoying). - -Version 5.0.6 - -* most reported bugs/problems fixed (all but two). - -* temporary files now created in $TMPDIR (if it is a sane path). - -Version 5.0.5 - -* function parsing POSIXized (function bodies can be any compound command, - redirections after functions effect function invocation, not the - instantiation, the () in a function definition now parsed as two tokens). - -* exit bultin now does stopped jobs check. - -* set -p/-o priviliged supported. - -* test builtin now believed to be completely posix. - -* a default path is now used when PATH is not set (defined in options.h). - -Version 5.0.4 - -* configuration checks for buggy opendir()s and setpgrp()s. - -* autoloading functions now supported. - -* functions can safely redefine themselves. - -Version 5.0.3 - -* hash command changed to "alias -t"; whence -p added; print -s added - (all as in at&t ksh); unalias -a added (POSIX). - -* test builtin POSIX complient - -* TMOUT parameter supported (at&t ksh: timeout interactive shells) - -Version 5.0.2 - -* trap/error handling changed to eliminate longjmp()s from signal handlers; - trap ERR added. - -* ksh conditional expressions ([[ .. ]]) supported. - -* arithmetic expressions (let, $((..)), etc.) now understand full C - integer expressions (except ++/-- and sizeof()). - -* typeset -L -R -Z -u -l added (as in at&t ksh) - -* at&t/posix $(( .. )) arithmetic expansions supported. - -Version 5.0.1 - -* set -e no longer effects commands executed as part of if/while/until/&&/||/! - condition. - -* posix ! keyword now recognized. - -* posix getopts; if not in posix mode, getopts will accept options starting - with + (at&t kshism) - -* syntax error messages improved (says what was unexpected/unmatched) - -Version 4.9+mun.5 - -* all known bugs related to job control fixed: - * fg,bg,jobs,wait,kill commands fully POSIX complient - * signals are no longer reported for foreground jobs killed by SIGINT and - SIGPIPE - * pipeline process groups now created more reliablely (was a problem - if first process exited before second process exec'd). - * "(: ; cat /etc/termcap) | sleep" nolonger hangs - -* save/restore tty mode if command succeeds/fails, respectively. Edit - mode (emacs,vi) no longer use old tty mode information - -* test command: added -h - -* alternations option renamed to braceexpand (eg, use set -o braceexpand). - Old usage (set -o alternations) still accepted (will disappear in next - version). - -* trap/kill now accept upper and lower case signal names. - -Version 4.9+mun.3 - -* here documents in functions now work properly - -* read command: added -s option, use REPLY if no variable specified - -* don't accept "while command; done" as a valid command - -* fg,bg,jobs,wait,kill commands mostly POSIX complient. - -* unset command: added POSIX -v option - -* set command: added -A option - -* handle ${array[@]} and ${array[*]} - -* compiles with old bsd 4.2 compiler (pcc) - -* new versions of etc/profile and etc/ksh.profile - -Version 4.9+mun.2 (versus 4.9) - -* directory/file structure has been re-arranged: - * moved files from sh directory up a level, deleted sh directory - * created misc directory, old ChangeLog,README,.. files moved to misc - -* now uses GNU autoconf for compilation. - -* no longer uses stdio FILE *'s for I/O redirection (most stdio - usage has been removed). Solves many porting problems caused by - dup'd file descriptors, forked processes and exiting. - -* removed lint from code (compiles with very few warning with gcc -O -Wall - -Wno-comment) - -* has array support (needs work but is pretty functional). - -* ulimit command now more functional on more machines. Compatible with at&t ksh. - -* command line and set option parsing cleaned up, POSIXized. - -* POSIX IFS handling. - -* many many small bug fixes (see ChangeLog) |