This file details the changes between the previous release of CWRU bash (07/11/93) and this release. 1. Bugs Fixed Readline's vi-mode once again has TAB bound to completion; entering `posix mode' changes it to self-insert Bash now binds its special emacs-mode functions directly into emacs_meta_keymap so that eight-bit character handling does not interfere Some source restructuring: more extern functions are defined in header files and not in C source files The handling of `line number' inside functions is now more correct and closer to reality Some functions of `general use' were moved to general.c (vfree, full_pathname) A bug that caused some redirections to be applied twice was fixed in execute_command_internal (dispose of redirection_undo_list after copying it; ditto for exec_redirection_undo_list) The exit status of a command that is not found is 126, as Posix.2 specifies More speed improvements -- bash now runs as fast as the SunOS sh on Haertel's `shell benchmark' Instead of returning pointers to -1, bash and the readline, history, and glob libraries now return pointers to special `error pointers', which the calling code checks for in place of -1 Fixed a problem with canonicalize_pathname which made it get confused with xxx/./yyy if yyy was `.' or `..' Fixes to make bash recognize SVR4.2 and set USGr4_2 for SVR4.2 systems Fixes to the HP/UX machine descriptions to make alloca work on HPUX_9 and to avoid `M_MACHINE redefined' warnings Fixes to the CRAY machine description Fixes to the mailpath code to make it Posix.2-compliant -- backslash may now quote `%' and `?' The namespace was further cleaned up, and more functions and variables were made static On systems with S_IFSOCK or S_ISSOCK defined in sys/stat.h, bash checks whether fd 0 is a socket to decide whether or not it's being started by rshd and to run the startup files Bash now gives the signal mask it inherits to its children -- previously, login shells cleared the signal mask cpp-Makefile and subst.c both used the `USE_GLOB_LIBRARY' define, but with different meanings; subst.c now uses `USE_POSIX_GLOB_LIBRARY' Fixed pattern substitution so that ${a%%$b}, where b was unset, no longer causes a core dump Changed the `test_exit' define in test.c to no longer use `longjmp' as the rhs or a comma-ized expression; this causes core dumps on some optimizer/machine combinations A speed hack in variables.c: if no local variables are defined for a level of shell context, kill_all_local_variables does not need to search the whole variable hash table when popping a context Fixed the `bind' builtin so that -m now changes the keymap for all of the subsequent operations Changed some more builtins to use internal_getopt: bind, command, export, readonly, declare, typeset Fixed fc to use the Posix.2 format for listing commands in the history list Changed bg to set `!', as Posix.2 specifies Fixed ulimit.def to compile if RLIMIT_RSS is not defined, as some systems seem to have it Replaced lib/malloc/alloca.c with the version from emacs 19. The old one lives in alloca.c.old malloc.c now uses the ANSI C features to `stringize' macro arguments if __STDC__ is defined Fixes to the GNU malloc library from glibc 1.06 and Mike Haertel Fixes to readline key binding and lookup for Cray systems, which don't like the casting that readline does Fixes to all readline library source files to clean up the code: make sure `int'-returning functions use `return x;' rather than `return;', declare all arguments, even the `int' ones, and make some functions void. Cleaned up the code formatting a little, too. The readline completer now double-quotes filenames with special word-break characters, so that tilde expansion still works ^C now breaks out of keyboard macros If being compiled as part of the shell, readline no longer attempts to handle SIGTTIN, SIGTTOU, or SIGTSTP tilde_expansion_failure_hook is now a CPFunction rather than a Function, since that's how it's used Readline vi-mode `change case' function now skips over characters which are neither upper nor lower case Readline vi-mode now allows replacement to be redoable with `.' 2. New Features A `strict Posix.2' mode, enabled with the -posix startup option or setting the POSIXLY_CORRECT variable (see CWRU/POSIX.NOTES for a description of the changed behavior) `ONESHOT' is now an option in config.h cpp-Makefile assumes that fixed header files are present if gcc is being used The redirections attached to a function declaration are now part of that function, applied when the function is executed, as specified by Posix.2. This caused a change to parse.y that resulted in 66 shift/reduce conflicts(!) All of the OP= functions that Posix.2 specifies are now implemented for both `let' and arithmetic substitution The `command' builtin has acquired the Posix.2 `-v' and `-V' options (this shares code with the `type' builtin) A new `bash_builtins' man page, like the `csh_builtins' page on some systems