diff options
author | Jari Aalto <jari.aalto@cante.net> | 1997-06-05 14:59:13 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:50 +0000 |
commit | d166f048818e10cf3799aa24a174fb22835f1acc (patch) | |
tree | 1ca27f9243900f8b236d0cde6a3862002aea9e19 /CWRU | |
parent | ccc6cda312fea9f0468ee65b8f368e9653e1380b (diff) | |
download | bash-d166f048818e10cf3799aa24a174fb22835f1acc.tar.gz |
Imported from ../bash-2.01.tar.gz.
Diffstat (limited to 'CWRU')
-rw-r--r-- | CWRU/PLATFORMS | 7 | ||||
-rw-r--r-- | CWRU/POSIX.NOTES | 3 | ||||
-rw-r--r-- | CWRU/changelog | 9140 |
3 files changed, 1238 insertions, 7912 deletions
diff --git a/CWRU/PLATFORMS b/CWRU/PLATFORMS index e479a296..4d2b4844 100644 --- a/CWRU/PLATFORMS +++ b/CWRU/PLATFORMS @@ -6,10 +6,13 @@ By chet: SunOS 4.1.4 SunOS 5.5 BSDI BSD/OS 2.1 -Motorola SVR3.2 -FreeBSD 2.1.5 +FreeBSD 2.1.7 +NetBSD 1.2 AIX 4.2 +AIX 4.1.4 HP/UX 9.05, 10.01, 10.10, 10.20 +Linux 2.0.29 (libc 5.3.12) +Linux 2.0.4 (libc 5.3.12) By other testers: diff --git a/CWRU/POSIX.NOTES b/CWRU/POSIX.NOTES index 304289e1..af3acbcc 100644 --- a/CWRU/POSIX.NOTES +++ b/CWRU/POSIX.NOTES @@ -77,6 +77,9 @@ The following list is what's changed when `POSIX mode' is in effect: 20. Assignment statements preceding POSIX.2 `special' builtins persist in the shell environment after the builtin completes. + 21. The `export' and `readonly' builtin commands display their output + in the format required by POSIX.2. + There is other POSIX.2 behavior that Bash does not implement. Specifically: diff --git a/CWRU/changelog b/CWRU/changelog index d09a5b5a..331c9e60 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,8399 +1,1719 @@ - 6/2 - --- -lib/readline/readline.c - - fixed an off-by-one error in the kill ring reallocation code - in rl_kill_text - -Makefile - - replaced instances of /bin/sh with $(SHELL) - -Makefile, cpp-Makefile, documentation/Makefile - - added a working `uninstall' target - -[1.14.0 FCS release made available for FTP] - - 6/3 - --- -README - - added note about building with gcc, same as in Makefile - -documentation/Makefile - - some versions of make don't understand `$*' in a regular recipe; - replace with features.dvi in the recipe for features.ps - - 6/4 - --- -subst.c - - fix up the calls to string_extract_double_quoted and - string_extract_single_quoted in char_is_quoted so the initial - value of the index is *after* the opening quote character - - make sure we only return 1 from char_is_quoted if the index - into the string after a call to string_extract_double_quoted or - string_extract_single_quoted is *greater than* `eindex' - -lib/readline/complete.c - - change the order and sense of the quoting tests in - rl_complete_internal so that the expensive char_is_quoted - is only called if `scan' actually is a word break character + 12/23/1996 + ---------- +[bash-2.0 released] -shell.c - - fixed a typo in the test for a restricted shell + 12/27 + ----- +configure.in + - don't automatically use GNU malloc on FreeBSD, the builtin one + is supposed to be better (but doesn't have the debugging hooks) builtins/exec.def - - need to include flags.h + - check that full_pathname(command) doesn't return NULL because of + inaccessible parent directories - 6/6 - --- -make_cmd.c - - make sure that we don't try to walk down a null command tree - in connect_async_list (tickled by `(command &) &') - - if a command has the CMD_WANT_SUBSHELL bit set in its flags, - don't even try to walk the command tree and move the `&'; - just connect the command with a null command using `&' +support/config.sub + - recognize OpenBSD execute_cmd.c - - make sure we don't try to reference a command struct without - first checking it (case '&') - - 6/7 - --- -machines.h - - fix a typo in the NeXT/i386 description; change the NeXT description - to #define HAVE_RESOURCE if not already defined rather than putting - -DHAVE_RESOURCE into the SYSDEP_CFLAGS + - broke the code that opens a file for output redirection when in + noclobber mode out into a separate function: noclobber_open(). + This tries to avoid race conditions and file replacement between + stat(2) and open(2) - 6/9 - --- -Makefile - - make sure all of the rules that reinvoke `make' have the - `-f bash-Makefile' before the assignment statements; some - versions of make like it that way - -variables.c - - make sure that `interactive' is set to 0 before evaluating the - string containing an exported function obtained from the - environment, so that it does not try to execute PROMPT_COMMAND - (this may not be the best fix) - - 6/13 - ---- -documentation/Makefile - - make sure all of the directories exist before trying to install - doc files into them - -lib/readline/history.c - - add a missing O_TRUNC to the open call for writing in - history_truncate_file - -trap.c - - run_interrupt_trap should only try to run the trap command if - the value is not IMPOSSIBLE_TRAP_HANDLER - -Makefile - - add `realclean' - -lib/readline/complete.c - - do the same kind of double-quoting a replacement string if the - user supplies the opening double quote as we would if we were - adding both quotes ourselves - -variables.c - - fixed the variable initialization so that history_control/HISTCONTROL - can be inherited from a parent shell - -INSTALL, README, cpp-Makefile, documentation/bash.1, documentation/readline.3 - - ai.mit.edu -> prep.ai.mit.edu - -shell.c - - fixed a problem with setting no_line_editing to the result of the - check for running inside emacs, thereby losing any value - initialized by the `-nolineediting' flag - -cpp-Makefile - - `make distclean' will now remove the `installed-bash' link +subst.c + - make sure pat_subst does not run off the end of its return + string when copying the unmatched portion of the input string -print_cmd.c - - fixed a problem with undefined variables when HAVE_VARARGS_H is - not defined + 12/30 + ----- +doc/Makefile.in + - don't install readline.3 by default - 6/14 - ---- -lib/readline/history.c - - fixed an error in the csh history expansion code so that the - `-y' word designator now expands to `0-y' rather than `1-y' +lib/tilde/tilde.c + - removed an unnecessary check for string[i] being non-null in + tilde_find_suffix -lib/readline/isearch.c - - changed an absolute check for a character falling within the - ASCII 32-126 range (printable chars) with checks for CTRL_P - and META_CHAR and a check against the value RUBOUT - - changed a `break' to a `continue' so that the first non-matching - character in the search string does not cause the search to - end abruptly - - initialize prev_line_found to 0 at the top of rl_search_history - to avoid duplicate history lines being saved across searches - -lib/readline/rltty.c - - consolidated repeated code for setting special characters into - `SET_SPECIAL' defines + 12/31 + ----- +support/config.{sub,guess} + - merged in changes from config.sub in autoconf-2.12 distribution lib/readline/readline.c - - include <sys/ioctl.h> if VSTATUS is defined - - add bindable command rl_tty_status (unbound by default) - -lib/readline/funmap.c - - assign bindable command name `tty-status' to rl_tty_status - -INSTALL - - add note about compiling with gcc, same text as README + - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last + if readline is currently in vi mode lib/readline/display.c - - many changes and tweaks to make redisplay work better when the - prompt has invisible characters. These changes are non-optimal - in that the prompt is redrawn more than it needs to be, but - things are a hell of a lot better than they were - - 6/15 - ---- -documentation/Makefile - - make a variable NROFF that people can set to `groff -Tascii' if - they don't have real nroff - - changed the suffix rules to use $< + - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in + the code that decides whether the cursor is at the beginning of + an otherwise-empty line + 1/2 + --- support/bashbug.sh - - if rmail doesn't exist or fails, save the bug report in - ~/dead.bashbug - -execute_cmd.c - - in setup_async_signals, only ignore SIGINT and SIGQUIT if job - control is not active. If it is active and the job is restarted, - SIGINT remains ignored, and the now-foregrounded job is not - interruptible + - fixed a typo, thanks to eggert@twinsun.com -subst.c - - fixed up a problem with char_is_quoted that caused backslash- - escaped characters to cause incorrect results - -tests/run-dollars, tests/dollar-at.sh, tests/dollar-star.sh - - since the error messages produced by `cat' vary, changed `cat' - to `recho' and updated the correct answers file - -machines.h - - fixes to CRAY_STACKSEG_END definitions for different versions of - Unicos on the YMP (from Bill Jones) - - Motorola SVR4 machines have getcwd() and should not undef - HAVE_GETCWD - - on hpux 9.x, don't try to link with -lPW if compiling with gcc - (for alloca) - -parse.y - - an ugly fix for a compiler problem with structure assignment on - the cray - - 6/16 - ---- -builtins/wait.def - - replaced a call to sscanf with a validity check using all_digits() - and a call to atoi, since a pid_t is not necessarily an int, and - the sscanf clobbered the stack frame on systems where it is shorter - than an int (e.g., SCO) - -lib/readline/display.c - - since META_CHAR and the other macros only work with unsigned - chars, make rl_character_len convert its argument to an unsigned - char before testing it - -documentation/Makefile - - use $(INSTALL_DATA) instead of $(CP) to install the man pages and - info files - -cpp-Makefile - - use INSTALL_PROGRAM and INSTALL_DATA to install binaries and - documentation; pass both values to installs in subdirectories +aclocal.m4 + - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member + of struct dirent - 6/18 - ---- -builtins/ulimit.def - - compensate for systems which define RLIMIT_OFILE instead of - RLIMIT_NOFILE, or don't provide such a compatibility define - themselves +configure.in + - call BASH_STRUCT_DIRENT_D_FILENO -shell.c - - make maybe_execute_file check for directories and print an - appropriate error message, since it's doing an fstat anyway +config.h.in + - new #define for STRUCT_DIRENT_HAS_D_FILENO -support/mksysdefs - - added support for a `-s srcdir' option so it can find - cpp-Makefile if ansi-Makefile is to be created +lib/posixheaders/posixdir.h + - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined + and STRUCT_DIRENT_HAS_D_FILENO is not defined. This fixed the + problem of compiling getcwd.c on SunOS4.1.4 with cc -Makefile - - call mksysdefs with -s $(srcdir) + 1/3 + --- +lib/readline/complete.c + - fix a memory-used-after-freed bug reported by Andreas Schwab -jobs.c - - add the magic #undef lines to avoid redefinition warnings on - SunOS 4 only +configure.in + - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc + (ac_cv_func_getpeername = no) - 6/20 + 1/13 ---- -cpp-Makefile - - install `bashbug' with `make install' -trap.c - - make sure that `interactive' is set to 0 when running trap - commands +builtins/getopt.h + - change #define guard to _SH_GETOPT_H to avoid similar guards in + /usr/include/getopt.h (Dec OSF/1 4.x, for example) -builtins/umask.c - - fixed typo in usage error message +variables.h + - fix assign_array_from_string so that it rejects attempts to assign + to readonly variables subst.c - - fix process_substitute to set subshell_environment - -jobs.c, nojobs.c - - only mess with the terminal settings for an interactive shell - that is not in a subshell environment - - 6/21 - ---- -lib/readline/history.h - - add extern declaration of history_get - -builtins/fc.def - - make history replacement when using `r' or `fc -s' obey the - setting of HISTCONTROL - -general.c - - in canonicalize_pathname, preserve a double // at the start - of an absolute pathname, since that means something special - for the network directory system + - fix verify_substring_values to handle offsets that are past the + end or before the beginning (in the case of a negative offset) + of the expanded variable value -README, INSTALL - - updated information about submitting bug reports - -lib/readline/vi_mode.c, lib/readline/isearch.c - - make sure unistd.h is included before rldefs.h, if - HAVE_UNISTD_H is defined - - 6/24 - ---- -lib/readline/complete.c - - add `#' to the list of characters which cause a completed filename - to be quoted - -execute_cmd.c - - be more careful about closing pipe file descriptors in do_piping; - don't want to have `dup2(i, i); close(i);' problem - -lib/readline/{keymaps,readline}.h - - include local copies of include files if READLINE_LIBRARY is - defined, otherwise include the `official, installed' versions - using #include <readline/xxx.h> - -lib/readline/*.c - - define READLINE_LIBRARY before including any files - - include only `local' copies of include files using #include "xxx.h" - rather than #include <readline/xxx.h> - - 6/26 + 1/14 ---- -execute_cmd.c - - check for clobbering the bash input stream before closing a file - descriptor due to an r_close_this redirection - -lib/readline/history.c - - made history_expand inhibit history expansion if the history - expansion char is set to 0 +bashline.c + - fix a problem where any completion after a `cmd` command + substitution would inappropriately attempt command completion, + even if the previous command substitution was correctly closed -lib/readline/chardefs.h - - moved savestring() definition to rldefs.h - - changed lowercase_p, uppercase_p, to_lower, to_upper defines to - use <ctype.h> macros rather than assume ASCII +builtins/evalstring.c + - unwind_protect remember_on_history even if the shell is not + interactive, since history can now be used in scripts, and + `source' will turn off interactive_shell before calling + parse_and_execute -lib/readline/bind.c, general.c, general.h - - use strcasecmp, strncasecmp instead of str[n]icmp if - HAVE_STRCASECMP is defined +jobs.c + - new function get_job_by_pid(pid, block) to translate a pid to + a job number. The block argument says whether or not to block + SIGCHLD -cpp-Makefile - - pass -DHAVE_STRCASECMP to builds in the libraries, primarily - readline +jobs.h + - new extern declaration for get_job_by_pid -machines.h - - add HAVE_STRCASECMP to the entries for BSD/386, NetBSD, FreeBSD, - and 4.4 BSD +builtins/jobs.def + - call get_job_by_pid if an argument appears to be a pid rather + than a jobspec -builtins/hash.def - - add a fourth parameter to remember_filename, the initial value - of times_found (0 if we're just looking it up for `hash', 1 - for the command execution code) +configure.in + - configure --without-gnu-malloc automatically on MachTen 4.x -execute_cmd.c - - call remember_filename with an initial value of 1 for times_found +builtins/cd.def + - change to mindist() so that a best guess of `.' returns 3, + which means not reasonable -builtins/wait.def - - handle a null argument with an error message +lib/posixheaders/memalloc.h + - changed hpux_9 to __hpux, since the new config stuff doesn't + define hpux_9 -builtins/common.c - - parse_and_execute now takes a third parameter: the value for - `interactive' while it is executing commands +subst.c + - fix parameter_brace_patsub to handle null patterns (doesn't + do anything) -bashline.c, jobs.c, parse.y, shell.c, subst.c, trap.c, variables.c - - set the new third argument to parse_and_execute appropriately +oslib.c + - slight change to bzero replacement -builtins/eval.def, builtins/fc.def, builtins/source.def - - set the new third argument to parse_and_execute appropriately +support/bashbug.sh + - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char + file names -builtins/help.def - - changed a call to strnicmp to strncmp when trying to find what - to give help on; it seems more correct +doc/bashref.texi + - add note to POSIX Mode section that the output of `set' when + invoked without arguments is sorted when in POSIX mode - 6/27 + 1/15 ---- -machines.h - - cleaned up the SunOS section so it no longer relies on - HAVE_SHARED_LIBS being defined; it uses SunOS4 and SunOS5 - instead +support/recho.c + - a couple of changes prompted by a `gcc -Wall' -support/mksysdefs - - define SYSDEF to be SunOS4 or SunOS5 depending on the output - of uname rather than looking for ld.so +subst.c + - changed ASSIGN_RETURN macro to use the do...while(0) idiom to + avoid problems with its multiple statements - 6/29 - ---- -machines.h - - minor change to the ardent titan machine description - - move the ardent and stardent descriptions before the - mips riscos description +builtins/setattr.def + - a bad identifier given to readonly or export without an assignment + statement (e.g. `readonly a[5]') is an error, but not an assignment + error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN) -print_cmd.c - - ardent machines also need the extern declaration for printf +tests/{{array,new-exp}.,tilde-}tests + - added `set +o posix' at the beginning to disable POSIX mode, which + causes some of the tests to fail. Some systems (e.g. LINUX-FT), + set POSIXLY_CORRECT by default -make_cmd.c - - connect_async_list should do its work only if the lists to be - backgrounded are connected with `;'. This makes `;' bind tighter - than `&', so only the last job in the list is backgrounded. All - other lists should have the entire thing put in the background +tests/test-tests + - added a warning if $UID is 0 to the effect that the test suite + should not be run as root + - worked around the `noread' and `nowrite' tests failing when run + as root -parse.y - - added a function `print_prompt' to take care of displaying the - prompt string if readline is not being used. This fixes problems - with the prompt being displayed before the status of completed - jobs is printed +test.c + - began removing the remains of the STANDALONE code, since test is + included in GNU shellutils - 6/30 + 1/16 ---- -builtins/fg_bg.def - - `fg' and `bg' now print error messages if invoked when job control - is disabled - -lib/readline/rltty.c - - if not compiled into the shell, make get_tty_settings get and set - the window size. This noop stops the process if it is started in - the background +lib/readline/{readline,display}.c + - a couple of slight changes to build on Win95 using djgpp (reported + by x-aes@telelogic.se) -lib/readline/readline.c - - provide a function version of savestring, if not being compiled - into the shell, since the macro has been removed from the - `public' header files - -lib/readline/readline.h - - provide all extern function declarations without checking whether - VI_MODE or PAREN_MATCHING are defined. It does not hurt to define - them if they are not used and not in the library, and other - applications using readline can't tell whether or not VI_MODE was - defined when the library was compiled anyway - - 7/1 - --- -machines.h - - add #undef HAVE_DIRENT_H to the ardent titan description - - 7/2 - --- -lib/readline/chardefs.h - - removed META_P define, renamed CTRL_P to CTRL_CHAR - -lib/readline/bind.c, lib/readline/isearch.c - - changed instances of CTRL_P to CTRL_CHAR - -lib/readline/search.c - - include <unistd.h> before rldefs.h, if HAVE_UNISTD_H is defined - -lib/readline/readline.c - - declare PC, UP, and BC as extern rather than `local' to the - readline library +Makefile.in + - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap + library (if necessary) should work now - 7/5 - --- bashline.c - - implement command word completion inside of command substitution - with a new function: `command_subst_completion_function' - -subst.c - - new function to help with command subst completion: unclosed_pair - -lib/readline/complete.c - - new variable rl_filename_quoting_desired, which can be set to 0 - to inhibit the quoting of filenames after completion - -lib/readline/readline.h - - declare rl_filename_completion_desired and - rl_filename_quoting_desired - -builtins/bind.def - - don't save the old value of rl_outstream before initializing - readline -- it saves garbage values and screws up readline - -parse.y - - don't have private state telling whether or not readline has - been initialized -- use bash_readline_initialized like other - functions in bashline.c - -lib/readline/readline.c - - make the default 8-bit behavior be based on whether LC_CTYPE is - defined and its value (accept iso-8859-1 or iso_8859_1) - - 7/6 - --- -variables.c - - fix up the declaration of getenv() for convex machines - - 7/7 - --- -lib/readline/readline.c - - fixed up typos in the declaration of `savestring' - -lib/readline/history.c - - fixed an off-by-one error in the ADD_CHAR macro which caused one - extra character to be overwritten, causing the gnu malloc to abort - when that one character was at the end of an allocated block - - changed the ADD_STRING macro to avoid some unnecessary xreallocs - -lib/readline/display.c - - fixed a problem with move_cursor_relative -- function now returns - immediately if it has nothing to do - - fixed another problem with displaying prompts with invisible chars - -lib/readline/chardefs.h - - fixed the CTRL macro to be right (agree with the BSD kernel, for - example) + - new function: quote_word_break_characters(), to backslash-quote + characters in a filename that the readline completion code would + treat as word breaks + - change bash_quote_filename to call quote_word_break_characters if + the completion quoting style says to use backslashes + - add `:' to rl_filename_quote_characters, since it's part of + filename_word_break_characters + +lib/posixheaders/posixjmp.h + - new file, with half of bashjmp.h + - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file -cpp-Makefile - - fixed typo in the `install' recipe - - 7/8 - --- -support/srcdir - - fixed to handle srcdir when it begins with ./ or ../ to handle - $(srcdir) being a relative path better - -cpp-Makefile - - changed some include paths to $(BUILTIN_ABSSRC) when building in - `builtins' to handle $(srcdir) being a relative path - - change the `chmod' on bashbug to turn on read and execute for all - - added a couple of definitions to make it easier for a later - `configure' program +bashjmp.h + - include "posixjmp.h" for possible redefinitions of setjmp/longjmp + and procenv_t -support/mksysdefs - - added a -i option to specify an alternate set of directories to - search for include files + 1/17 + ---- +shell.c + - bad options now cause the standard shell usage message (a subset + of what `bash --help' prints) to be displayed on stderr -lib/readline/bind.c - - in rl_read_init_file, when skipping whitespace at the start of - the line, decrement `i' so that we don't jump past the start - of the next line +trap.c + - don't free the trap command for a DEBUG trap in + restore_default_signal if SIG_INPROGRESS is set -- there's already + a pointer saved to the old value in _run_trap_internal. This + makes bashdb run better, too -machines.h - - SCOv4 has a `robust' opendir that checks that you're actually - opening a directory +examples/bashdb/bashdb.{pre,fns} + - a couple of minor fixes; it actually has a chance of working now - 7/11 + 1/21 ---- -lib/readline/complete.c - - make sure a word break character is unquoted before using it to - separate out the current word for completing - -machines.h - - new machine description: NetBSD on motorola m68k machines like - the hp300 - - undef HAVE_GETWD in the generic svr4 machine description, like - other svr4 descriptions - -lib/readline/rltty.c - - make sure to fflush (rl_outstream) after toggling the setting - of the keypad and meta key +config.h.in + - add a define for <dlfcn.h>, HAVE_DLFCN_H -portbash/libc.sh - - add a test for OPENDIR_NOT_ROBUST +configure.in + - look for <dlfcn.h>, define HAVE_DLFCN_H if found -support/getcppsyms.c - - output __svr4__ if we find __uxps__ (this makes the Fujitsu port of - SVR4 to the sparc build OK) +builtins/enable.def + - include <dlfcn.h> only if HAVE_DLFCN_H is defined - 7/12 - ---- lib/readline/display.c - - more display-related fixes when the prompt has invisible chars; - this time for screen updates when moving between screen lines + - renamed clear_to_eol to _rl_clear_to_eol and made it global, so + other library files (readline.c) can use it + - new function _rl_clear_screen, to clear the screen with the right + termcap escape sequence -lib/readline/readline.c, lib/readline/display.c - - changes to make readline work with terminals that have auto-wrap - from Per Bothner (new function _rl_update_final, term_xn changes, - some efficiency speedups, new function space_to_eol) +lib/readline/readline.c + - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs + - extern declarations for _rl_clear_to_eol and _rl_clear_screen - 7/13 + 1/22 ---- -lib/readline/display.c - - after moving up screen lines using term_up in _rl_move_vert, if - the new screen line is 0, _rl_last_c_pos needs to be adjusted - to take invisible characters into account. This was the source - of many bugs +mailcheck.c + - fixed a problem in make_default_mailpath() where a slash was not + added between the default mail directory and the username - - 7/14 + 1/23 ---- -documentation/Makefile - - change instances of `groff' to `${GROFF}', GROFF is set to - `groff' by default - -general.c, variables.c - - moved `qsort_string_compare' from variables.c to general.c +stringlib.c + - added a fourth parameter to ansicstr: the length of the returned + string -general.h, variables.h - - moved declaration of `qsort_string_compare' from variables.h - to general.h +externs.h + - changed declaration of ansicstr -alias.c, lib/readline/funmap.c - - moved qsort auxiliary functions after their use and added - forward declarations to avoid warnings from ANSI C compilers +parse.y + - changed call to ansicstr -- saves a call to strlen -memalloc.h - - hpux_9 needs alloca declared as `extern void *' if __STDC__ - is defined +builtins/echo.def + - changed call to ansicstr + - if do_v9 is non-zero, use putchar to output the string instead + of printf, since there may be embedded NULL characters -support/mksysdefs - - removed HAVE_SHARED_LIBS entirely - - make a call to /bin/uname -X for SCO machines to avoid running - a different uname from the $PATH +doc/{bash.1,bashref.texi}, builtins/trap.def + - modified the `trap' documentation to make it clearer that trap + takes multiple signal specs as arguments -machines.h - - new descriptions: Intel i860 running SVR4, Tahoe running 4.3 BSD - - changed descriptions: Mips/RiscOS, DG AViiON, unknown machine +jobs.c, nojobs.c, jobs.h + - renamed initialize_jobs to initialize_job_control, added an + argument (force) jobs.c - - changes to how the shell handles foreground jobs dying of SIGINT: - an interactive shell using job control will no longer - act as if it received a SIGINT if the foreground job - dies from a SIGINT - - a non-interactive shell or shell without job control tries - to differentiate between SIGINTs it has seen (in - wait_sigint_handler) and a foreground job dying of a SIGINT - not sent from the keyboard, and runs the normal SIGINT code - only in the former case - - 7/15 - ---- -support/mksysdefs - - check for ${UNAME}${RELEASE} expanding to `SunOS4*' or `SunOS5*' - to set SYSDEF to SunOS4 or SunOS5, respectively. Apparently - this does not work for Solbourne + - set shell_tty to fileno(stderr) in initialize_job_control if + the shell is not interactive. This fixes the problem of bad + tty pgrps when monitor mode is turned on in a non-interactive + shell - 7/18 - ---- +sig.c + - made initialize_terminating_signals do only that; moved the rest + of the code that used to be there into a new function: + initialize_shell_signals, which calls initialize_terminating_signals + if the shell is interactive + - initialize_terminating_signals is now extern + - made reset_terminating_signals return immediately if + termsigs_intitialized is zero, meaning that + initialize_terminating_signals has not been called -lib/readline/rltty.c - - if output is being flushed on termios systems, loop until the - FLUSHO bit is no longer set in the termios struct +sig.h + - new extern declaration for initialize_terminating_signals -support/mksysdefs - - added a -A flag to force creation of ansi-Makefile +trap.c + - call initialize_terminating_signals from set_signal if sig is + EXIT_TRAP and the shell is not interactive. Since the terminating + signals do not need to be initialized until a trap on exit is + set, not doing that at startup should result in a speed increase + for scripts -machines.h - - new entry for Tandem machines running SVR3 +execute_cmd.c + - save and restore command->flags in time_command, so you can use + `time command' in a loop - 7/19 + 1/24 ---- -lib/readline/rldefs.h - - include <termcap.h> if HAVE_TERMCAP_H is defined - - use <termio.h> stuff if HAVE_TERMIO_H is defined and _POSIX_VERSION - is not defined - -lib/readline/rldefs.h, lib/readline/history.c - - include "config.h" if HAVE_CONFIG_H is defined - -lib/readline/{rldefs.h,signals.c,readline.c} - - WINSIZE_IN_IOCTL_H -> GWINSZ_IN_SYS_IOCTL for compatibility with - other GNU programs +lib/readline/display.c + - fix redisplay code to wrap correctly if the prompt is longer than + the screen width (reported by bos@Eng.Sun.COM) -lib/readline/doc/Makefile - - fixed up to create the readline and history manuals in dvi and - ps format +lib/readline/undo.c + - don't include <setjmp.h>, it's not needed + +lib/readline/{util,readline}.c + - include "posixjmp.h" instead of <setjmp.h> + - readline_top_level is now a `procenv_t' instead of a `jmp_buf' + (now readline uses the correct posix semantics for preserving + the signal mask and other things across longjmp) + +parse.y + - fixes to push_string/pop_string to make them more general -- they + now can be used generally, instead of having to be associated + with an alias being expanded + - fixes to the parser so that it parses (( ls abc; ls def); ls ghi) + as a nested subshell command for backwards compatibility. Broke + the double-paren expression parsing off into a new function: + parse_arith_cmd, called from read_token when a `((' is seen. If + it looks like an arithmetic command, return `let' and set things + up so that the expression is returned as a double-quoted string + by the next call to read_token. If it's a nested subshell, push + the text we parsed onto the list of strings for later consumption + and return `(' -lib/readline/Makefile - - changes inspired by the standalone readline-2.0 distribution +lib/glob/glob.c + - fix glob_vector so it doesn't short-circuit checking a filename if + it starts with a `.' and the pattern starts with `\.' (if + noglob_dot_filenames is set). This makes `".junk2"*' match + `.junk2.txt' correctly - 7/20 + 1/27 ---- -lib/readline/history.c - - new function, history_is_stifled (), returns history_stifled - - set history_state flags member in the history state functions - -lib/readline/history.h - - reorganized the function declarations, added missing declarations - - history_stifled is no longer exported by the library - - added a `flags' member to the HISTORY_STATE structure - -bashline.c - - use history_is_stifled () instead of history_stifled - -lib/readline/readline.c, lib/readline/vi_mode.c - - filled in correct argument declarations for functions called via - keymaps (count, key) +support/bashbug.sh + - ask for confirmation before sending the bug report -lib/readline/complete.c - - efficiency improvement for compare_strings +builtins/fc.def + - when editing and re-executing a multiline command, make sure + current_command_line_count is initialized and then incremented + for each line read from the file so that the lines added to + the history list by fc_replhist and fc_addhist obey the `lithist' + and `cmdhist' shopt options. Reported by tibbitts@pb.seflin.org - 7/21 + 1/28 ---- -examples/dirfuncs - - new directory functions from ksh book, contributed by - Ken Konecki (kenk@wfg.com) - -machines.h - - hpux_8 and hpux_9 should both #undef HAVE_ALLOCA unless gcc is - being used +lib/readline/readline.h + - added a couple of extern declarations for variables described in + the documentation but heretofore undeclared - 7/22 - ---- -bashline.c - - fixed up command_word_completion_function so that filenames with - leading tildes are completed correctly +builtins/ulimit.def + - try to catch some classes of integer overflows before calling + set_limit - 7/26 + 1/29 ---- -builtins/read.def - - if -r not given, make sure CTLESC is removed from input string - when reading \<newline> - -lib/readline/readline.c - - new function bind_arrow_keys, which binds vt100/ansi arrow key - escape sequences after reading the termcap definition and the - inputrc file - - new function rl_yank_last_arg, which does what insert-last-arg - does in bash - -lib/readline/emacs_keymap.c - - remove default bindings to rl_arrow_keys for M-[ and M-O - - rl_yank_last_arg is now bound to `M-.' and `M-_' in - emacs_meta_keymap - -subst.c - - when performing process substitution on systems with /dev/fd, - make sure the child clears the slot in dev_fd_list it gets - from its parent so the file descriptor does not get closed - inappropriately if reallocated by, e.g., pipe(2) - -bashline.c - - removed insert_last_arg and the calls to bind in to `M-.' and `M-_'. - `insert-last-argument' is now bound to rl_yank_last_arg for - backwards compatibility - -lib/readline/funmap.c - - `yank-last-arg' is now a named command for rl_yank_last_arg - - -documentation/bash.1, documentation/readline.3 - - add description of yank-last-arg as one of the readline user - commands +parse.y + - push and pop a `(' delimiter while parsing a $(...) construct, so + the history code doesn't try to inappropriately add a `;' when + a newline appears in the `...' -lib/readline/doc/rluser.texinfo - - added description of yank-last-arg +aclocal.m4 + - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize' + in <sys/ioctl.h> (or one of the files it includes) -builtins/getopts.def - - fixed a typo in the int-to-string code computing the value to set - OPTIND to: had '\0' instead of '0' - - made getopts handle the case where there are more than 9 dollar - variables (where rest_of_args is non-null) correctly +configure.in + - call BASH_STRUCT_WINSIZE + - slightly reorganized the calls to bash-specific macros - 7/28 - ---- -lib/readline/display.c - - fixes to the display code for single-line-display in the presence - of prompts containing invisible characters +config.h.in + - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL' -lib/readline/readline.c - - if we are using horizontal scrolling and we have term_xn, decrement - the screenwidth by 1, since we won't be doing any line wrapping +jobs.c, nojobs.c + - only look in sys/ptem.h for struct winsize if + STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp - 7/31 + 1/30 ---- -jobs.c - - new variable `freeze_jobs_list' to set when changes to the jobs - list or status of jobs in the list (other than calling something - like `jobs -n') are undesirable. This is set when execuing traps - on SIGCHLD - - 8/1 - --- -subst.c - - check that `~' is unquoted before performing tilde expansion in - an assignment statement +.{distribution,patchlevel} + - renamed to _{distribution,patchlevel} - 8/3 - --- -bracecomp.c - - keep brace completion from dumping core if there is only one - match - -lib/readline/chardefs.h - - add a define for digit_p, which returns the value of isdigit() - -lib/readline/readline.c - - added function equivalents for uppercase_p, lowercase_p, to_upper, - to_lower, pure_alphabetic, digit_p, and digit_value - - replaced calls to numeric () with calls to digit_p, removed - definition of numeric () - -lib/readline/history.c - - digit -> digit_p - -lib/readline/vi_mode.c - - replaced uses of the `isletter' define to use pure_alphabetic - from chartypes.h - - replaced uses of `numeric' with calls to digit_p - - added do...while(0) to `exchange' define - - - 8/4 - --- -execute_cmd.c - - make sure execute_function saves and restores the current loop - count with unwind_protect_int - -documentation/features.texi - - change the `Shell Command Line Options' section to `Invoking - Bash' to be closer to the GNU coding standards - - 8/5 - --- -builtins/read.def - - fixed up a memory leak and made behavior correct when no - variables given and backslash escaped at least one input char - - if we added CTLESC anywhere while reading the input string, - make sure we call dequote_string on each word of the input - before calling bind_variable with that string - - 8/6 - --- -lib/readline/readline.h - - removed definition of rl_show_star -- the variable no longer - exists - -lib/readline/readline.h, lib/readline/history.h - - reorganized to follow texinfo manual structure - -lib/readline/bind.c - - rl_function_dumper is now static - - rl_list_funmap names does not take any arguments - -builtins/bind.def - - rl_list_funmap names does not take any arguments - -lib/readline/readline.c, lib/readline/signals.c - - rl_init_argument ->_rl_init_argument +configure.in + - create a variable BASHVERS, from the contents of _distribution, + and a variable BASHPATCH, from the contents of _patchlevel, + (using m4 magic so we don't have to distribute .distribution + and .patchlevel) and substitute them into Makefile.in -lib/readline/rltty.c - - remove declaration and references to output_was_flushed +Makefile.in + - use Version and PatchLevel variables instead of the contents of + .distribution and .patchlevel, respectively. These are set by + configure + - removed `.machine' from targets and dependencies -support/getcppsyms.c - - if __uxps__ is defined, define __uxps__ and __svr4__ +support/mkversion.sh + - new shell script to handle updating version.h, replaces mkversion.c + (which is now overkill) - 8/9 - --- support/mkdist - - added a -r option to set the `root name' of the distribution - (e.g., `bash' or `readline') - - 8/10 - ---- -input.c - - if check_bash_input sees that default_buffered_input is about - to be the target of a redirection, but the buffered input stream - is not the current input stream (e.g. as the result of an - `eval' while in a script, change default_buffered_input to a - new fd and use a new variable `bash_input_fd_changed' to note - the change - -parse.y - - if pop_stream sees that default_buffered_input has changed while - a buffered stream was on the save stack (because - bash_input_fd_changed is non-zero), then make the popped stream - and the corresponding buffer use the new fd + - don't bother with writing .distribution and .patchlevel files, + since they're no longer distributed -test.c - - fixed an off-by-one error in test_stat when testing /dev/fd/n. +support/mknewvers.sh + - simple bash script to make new version files. It can increment + the major or minor version numbers or patchlevel, or take a + completely new version number (e.g., 2.01) as an argument -cpp-Makefile - - add -I$(incdir) to CPPFLAGS - - add `incdir = $(prefix)/include' assignment +doc/Makefile.in + - added support for the `install-info' command to update the info + directory file after installing bash.info - 8/11 + 1/31 ---- -lib/readline/signals.c - - changed some calls to signal () to call rl_set_sighandler() - - call _rl_redisplay_after_sigwinch from the sigwinch handler - to do better redisplay of wrapped command lines and multi-line - prompts - -builtins/suspend.def - - changed some calls to signal () to call set_signal_handler() - -lib/readline/*.c - - include config.h before anything else if HAVE_CONFIG_H is defined - -lib/readline/readline.c - - renamed rl_set_mark to _rl_set_mark_at_pos - - call _rl_vi_initialize_line from rl_initialize if the current - editing mode is vi mode - - only output a term_cr in crlf if term_cr is non-null - -lib/readline/readline.h - - added declarations for rl_vi_set_mark and rl_vi_goto_mark - -lib/readline/readline.c, lib/readline/readline.h - - added a new bindable command to set the mark, rl_set_mark - -lib/readline/funmap.c - - new bindable function with name `set-mark', bound to rl_set_mark - - new bindable vi-mode functions with names `vi-set-mark' and - `vi-goto-mark' - -documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo - - added documentation for `set-mark' (unbound) - -lib/readline/vi_mode.c - - new vi-command mode commands to save marks (the vi `m' command) - and go to saved marks (the ``' command) - - new function _rl_vi_initialize_line called from rl_initialize - to set up the line state in vi mode. Right now this just resets - all the marks +builtins/help.def + - fix core dump with `help --' -lib/readline/vi_keymap.c - - new vi command-mode bindings to set the mark (`m') and to go to - a saved mark (``') +susbt.c + - make call_expand_word_internal obey the convention that if + expand_word_internal returns &expand_word_{fatal,error}, then + w->word has already been freed + - return &expand_word_fatal from expand_word_internal if the shell + is not interactive and `set -u' has been executed -documentation/readline.3 - - added vi-set-mark and vi-goto-mark to list of key bindings for - vi command mode +test.c, general.c + - moved group_member from test.c to general.c -lib/readline/{readline.c,display.c} - - renamed term_xn to _rl_term_autowrap +externs.h, general.h + - moved extern declaration of group_member from externs.h to general.h -lib/readline/display.c - - new function _rl_redisplay_after_sigwinch to encapsulate the - necessary redisplay code after a SIGWINCH is received +general.c + - broke the code that initializes the group array out into a new + function, initialize_group_array() + - initialize_group_array() now initializes an array even if the OS + does not have getgroups(). If it does not, an array with one + element (the real gid) is created + - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and + _SC_NGROUPS_MAX is defined + - new function, char **get_group_list(int *), to return an array + of strings made from the groups list variables.c - - only call find_user_command on the shell name in shell_initialize - if shell_name is not an absolute program name - - call canonicalize_pathname on the full shell pathname after - calling make_absolute on it if the shell name starts with a `.' - -siglist.h - - FreeBSD does not need a definition of sys_siglist[] + - new dynamic array variable: GROUPS, expands to the group set as + obtained with getgroups() (or whatever initialize_group_array() + makes) - 8/12 - ---- -lib/readline/rltty.c - - don't try to use FLUSHO unless FLUSHO is defined +doc/{bash.{1,html},bashref.texi} + - added description of GROUPS variable -cpp-Makefile - - make sure to pass $(CC) to the make in the lib/malloc subdirectory +test/test-tests + - before modifying the setgid bit on /tmp/setgid, try to change its + group to ${GROUPS[0]} -lib/readline/readline.c - - don't declare PC, UP, and BC as extern; it causes too many problems + 2/3 + --- +aclocal.m4 + - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined + in <sys/types.h> - 8/13 - ---- -machines.h - - add -DNO_SBRK_DECL to SYSDEP_CFLAGS for SVR4.2 on i386 +configure.in + - call BASH_MISC_SPEED_T -support/mksysdefs - - new variable UNAME_S for the output of `uname -s' - - if uname -s does not output the same thing as uname, and uname -s - outputs UNIX_SV, then set UNAME to UNIX_SV. Some versions of i386 - SVR4.2 make `uname' equivalent to `uname -n' +config.h.in + - add `#undef SPEED_T_IN_SYS_TYPES' -lib/readline/memalloc.h - - removed from the library; not needed since readline does not use - alloca +lib/readline/tcap.h + - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but + SPEED_T_IN_SYS_STYPES is not, before including <termcap.h> -lib/readline/{history.c,isearch.c,search.c,rldefs.h}, lib/tilde/tilde.c - - no longer include memalloc.h +support/mksignames.c, siglist.c + - add support for 4.4 BSD SIGLOST -lib/readline/Makefile - - remove dependencies on memalloc.h +support/config.guess + - add support for recognizing QNX based on `uname' output -lib/readline/signals.c - - overhauled signal handling based on ideas from Bruno Haible - (haible@ma2s2.mathematik.uni-karlsruhe.de) so that readline - saves and restores the signal mask and flags on Posix systems - - don't include fcntl.h, sys/file.h, errno.h, or stdlib.h - - ignore SIGALRM during rl_signal_handler like SIGINT until the - old handler is installed, on non-Posix or non-BSD systems - - new define SIGHANDLER_RETURN, dependent on the value of - VOID_SIGHANDLER - - use RETSIGTYPE instead of `sighandler' as the signal handler - return type; it's the name autoconf uses. If not defined, - set up from VOID_SIGHANDLER - -lib/readline/rltty.c - - call control_meta_key and control_keypad from rl_deprep_terminal - before putting the terminal back into ICANON mode to avoid - messing up the tty driver - - 8/15 - ---- -cpp-Makefile - - changes so that fewer -Idir arguments are passed to the make - in ./builtins +Makefile.in + - make sure recho and zecho are compiled with the same set of CC + options as the rest of the sources - 8/16 - ---- lib/readline/bind.c - - use KEYMAP_SIZE instead of 128 in rl_invoking_keyseqs_in_map - -lib/readline/complete.c - - qsort the array of matches omitting matches[0], which must stay - in place no matter what, even if strcmp doesn't compare unsigned - chars correctly - - some fixes to the loop that prints the list of completions - -lib/readline/keymaps.c - - run the loop up to 127 when creating a new keymap in rl_make_keymap - -input.h, general.h, lib/readline/keymaps.h, lib/readline/tilde.h - - use _FUNCTION_DEF instead of __FUNCTION_DEF - -lib/readline/parens.c - - include "config.h" if HAVE_CONFIG_H is defined - - include <sys/select.h> if HAVE_SYS_SELECT_H is defined - - use HAVE_SELECT instead of FD_SET as the `configuring define'; - define HAVE_SELECT if it is not already defined but FD_SET is + - change calls to rl_generic_bind to cast the third argument to + (char *) where necessary -lib/readline/readline.c, lib/readline/rltty.c - - the __GO32__ include file is <pc.h> - -lib/tilde/tilde.c - - rewrote tilde_expand_word, eliminated static u_name array in - favor of using xmalloc - -lib/tilde/tilde.h - - use single leading underscore for file inclusion guard - -lib/readline/vi_mode.c - - use KEYMAP_SIZE rather than a literal 127 as the loop limit when - creating the overstrike keymap - -support/install.sh - - new file, from the make-3.71 distribution - - 8/17 - ---- -lib/readline/complete.c, lib/readline/readline.h - - new variable, rl_basic_quote_characters, used to see - if a word break character was a quoting character, so we can - do appropriate quoting after the completion - -lib/readline/parens.c - - use rl_basic_quote_characters when trying to find a matching - open paren - -lib/readline/doc/rltech.texinfo - - description of rl_basic_quote_characters - - 8/18 - ---- -newversion.c - - renamed to support/mkversion.c, which builds to mkversion - -cpp-Makefile - - changed to use support/mkversion - - removed instances of $< except in suffix rules -- some makes don't - handle those right - -lib/readline/rldefs.h - - make sure to #undef HAVE_DIRENT_H on NeXT machines - - - 8/19 - ---- -lib/readline/readline.h - - removed some duplicate function declarations - -trap.h - - define DEBUG_TRAP as NSIG for the last slot in trap_list - - define EXIT_TRAP as 0 - - declare trap_list as array of unknown size, since this is just a - header file - -trap.c - - extend trap_list and sigmodes to NSIG+1 - - initialize DEBUG_TRAP to do nothing; changes to functions to handle - DEBUG_TRAP - - let decode_signal return OK if NSIG is given, even though this will - vary between systems, for DEBUG_TRAP - - make reset_signal_handlers and restore_original_signals loop from - 1 to NSIG, not 0 to NSIG - - change GET_ORIGINAL_SIGNAL to try to get the original signal handler - only if `sig' is less than NSIG - - restore_default_signal just frees the trap string for both EXIT_TRAP - and DEBUG_TRAP - - run_debug_trap: new function to run traps on DEBUG - - free_trap_command: new function to free a trap string if it is - really a command and not one of the special trap values - - if a SIGINT trap resets the SIGINT trap string, free the old string - - new function: set_debug_trap(char *), which will reset the DEBUG - trap string, suitable for calling from an unwind-protect handler - -signames.c - - arrange things so that signal_names[NSIG] == "DEBUG" - -builtins/trap.def - - make sure traps on DEBUG are printed +command.h + - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR, + which means that this command should have its standard input + redirected from /dev/null if there are not any explicit redirections + to stdin execute_cmd.c - - call run_debug_trap at the end of the `cm_simple' case in - execute_command_internal - - change execute_function so that traps on DEBUG do not propagate - into the function - -documentation/bash.1, documentation/features.texi - - documented the new DEBUG trap - - 8/20 - ---- -shell.c, config.h - - made the name of the restricted shell configurable in config.h; - the option is RESTRICTED_SHELL_NAME - -shell.c - - if the shell is invoked as `sh', enter Posix.2 mode after running - /etc/profile and ~/.profile - -builtins/read.def - - added a -p option for a prompt string, which is displayed before - trying to read anything - -documentation/bash.1 - - description of `read -p' - - description of new -r and -s options to `jobs' - -documentation/features.texi - - description of new -r and -s options to `jobs' - -jobs.c - - new functions: list_running_jobs, list_stopped_jobs - - list_jobs -> list_all_jobs - - new function `print_job' to do the work for all of the list*jobs - functions - - list_one_job type now void, calls print_job to do the work - -jobs.h - - new declarations for list_running_jobs, list_stopped_jobs - - list_one_job now void - - list_jobs -> list_all_jobs - -builtins/jobs.def - - new options: -r to print only running jobs, -s to print only - stopped jobs + - a redirection of type r_inputa_direction is no longer added at the + beginning of the redirection chain for an async command; + CMD_STDIN_REDIR is set in the flags instead + - new function: stdin_redirects: returns the number of redirections to + stdin in a chain of redirections + - new functions: async_redirect_stdin() to open /dev/null and make it + file descriptor 0 + - changes to make CMD_STDIN_REDIR propagate to all of the necessary + functions (like execute_simple_command) + - execute_disk command now takes the flags from simple_command rather + than just the CMD_NO_FORK flag as its last argument + - various places after make_child is executed (in the child) check for + CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call + async_redirect_stdin + - stdin_redir is now global - 8/22 - ---- -lib/readline/readline.c - - don't try to expand a null prompt string +eval.c + - set stdin_redir to 0 just before calling execute_command so it + gets reset to a known value and doesn't persist across commands -subst.c - - remove special handling of hostname_completion_file and - history_control; HOSTFILE and HISTCONTROL are the acceptable - names - - new function sv_histignore; call if HISTIGNORE variable is - assigned to + 2/4 + --- +builtins/ulimit.def + - add a stub function for ulimit(2) on systems without HAVE_RESOURCE + or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 -- + QNX is one such system bashhist.c - - new functions and declarations for handling HISTIGNORE variable - and its specifications for command lines to ignore - - change maybe_add_history to call history_should_ignore if the - HISTCONTROL tests are passed - -documentation/bash.1, documentation/features.texi - - removed mention of history_control and hostname_completion_file - - added description of HISTIGNORE - - 8/23 - ---- -array.c, array.h - - promoted to the shell mainline code; the `array' subdir is now - gone - -variables.h - - include `array.h' for the ARRAY typedef + - pre_process_line needs to protect all occurrences of hist_verify + with #ifdef READLINE -variables.c - - changes to assignment() to handle array assignments a[x]=b - - split off the creation of new variables into a new function: - make_new_variable - - split off the construction of variable values for assignments and - bindings into a new function: make_variable_value - - new function: bind_array_variable, to handle the addition of - new array variables and indices - -subst.c - - changes to do_assignment_internal to handle a[x]=b: - parse the subscript out of the name and call evalexp() on it - call bind_array_variable to do the value assignment - - change the printing of assignment statements when -x is in effect - to before the variable binding is attempted, so any error messages - look better - - new functions for referencing indexed arrays and to find the length - of arrays or array indices - - 8/24 - ---- -expr.c - - fixed up error reporting to use get_name_for_error if not executing - a builtin - -subst.c - - everywhere evalexp() is called, use maybe_expand_string to expand - the expression (calls expand_string if necessary) - -subst.h - - extern declarations for array convenience functions exported to the - rest of the shell +builtins/shopt.def + - hist_verify needs to be protected with #ifdef READLINE, not + #ifdef HISTORY -variables.c - - more new convenience array functions: make_new_array_variable and - convert_var_to_array + 2/5 + --- +support/config.{guess,sub}, configure.in + - chages to better support the Harris Night Hawk -builtins/declare.def - - additions to declare_internal to add a -a flag which makes array - variables, and the requisite semantics (declare +a does not work, - declare -a name=value does not work, etc.) - - code to support the ksh-like declare a[] syntax to make array - variables +[many files] + - changes for things pointed out by gcc -Wall -builtins/setattr.def - - made set_or_show_attributes understand array variables and `-a' +lib/glob/Makefile.in + - make sure -DSHELL is included in CCFLAGS so that globbing is + interruptible -builtins/set.def - - changes to make `unset name' work, where name is an array variable - - changes to make `unset name[xxx]' work +lib/malloc/malloc.c + - extern declaration for botch: if botch is #defined, it should be + the name of a void function - 8/25 - ---- +configure.in,Makefile.in,builtins/Makefile.in, +lib/{glob,malloc,readline,tilde}/Makefile.in + - add a LOCAL_DEFS variable, substituted from configure into the + various Makefiles. It's set to -DSHELL, so that define gets + passed to all sub-makes without doing anything special lib/readline/readline.c - - make sure meta characters are added to a keyboard macro as - ESC-char if we are converting meta chars to ascii - - change rl_unix_word_rubout to handle repeat counts - - move the check of LC_CTYPE from rl_initialize to - readline_initialize_everything, where it should have been - all along + - change to rl_digit_loop to make it compatible with GNU emacs: + if a key bound to `universal-argument' is read after reading + some digits, it terminates the argument but is otherwise + ignored. This is how people can insert repeated digits -error.c - - make sure <sys/types.h> is included before <fcntl.h> +doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo + - changed description of `universal-argument' to describe how + to terminate a numeric argument -machines.h - - new entry for Bull DPX2 + 2/6 + --- +jobs.c + - changed kill_pid to diddle the job and process data structures + if we're sending SIGCONT to a stopped job with `kill' so that + the shell knows the job is running again. ksh93 does this -lib/tilde/tilde.c - - include <sys/types.h> before <pwd.h> + 2/7 + --- +unwind_prot.c + - changed bcopy to FASTCOPY -variables.c - - PS1 and PS2 are no longer non-unsettable +builtins/enable.def + - changed pointer arithmetic in delete_builtin to just subtract + the head of the builtins list (shell_builtins) from a pointer + to the builtin to be deleted (b) to find its index in the list + on ANSI C systems - 8/26 + 2/10 ---- -variables.c - - PPID, UID, and EUID, since they are read-only, need not appear on - the `non-unsettable' list - - PATH and IFS now have the `nounset' attribute set rather than use - a separate `non-unsettable' list - - the non-unsettable list and non_unsettable() are gone - -variables.h - - new define `non_unsettable_p' to test nounset attribute - -builtins/set.def - - `unset' now uses non_unsettable_p to tell whether a variable can - be unset even if it's not readonly - -builtins/read.def - - read -a arrayname will read a list of values from stdin and assign - them to the array `arrayname', splitting on " \t\n" (honoring - backslash quoting if -r is not supplied) - -builtins/declare.def - - print values of arrays when `display -a' is invoked +lib/readline/bind.c + - when using old-style keynames to bind to a new-style macro, + pass an array of type (unsigned char *) to rl_macro_bind -builtins/exit.def - - remove references to `bye' +builtins/getopt.c + - change sh_getopt to return EOF if nextchar is empty or NULL + and sh_optind is greater than argc. This can happen if a + script mixes calls to `getopts' with calls to `shift' - 8/28 + 2/11 ---- -lib/readline/rltty.c - - removed calls to control_keypad; they cause problems on some - machines and should not really be performed by an application - -cpp-Makefile - - support for optionally linking array.o into the shell - -lib/glob/glob.c - - when returning an error after glob_filename on the directory name - returns an error result, make sure to free `result'. This fixes - a memory leak for names passed to glob_filename which contain - globbing characters before the first `/' but do not match any - existing files +print_cmd.c + - fixed make_command_string_internal so that commands with the + CMD_TIME_POSIX flag set print `time -p' instead of `time' + - changed print_redirection_list so the here documents are + printed after all the other redirections, and followed by a + newline (rather than a possible semicolon) + - added a new variable, was_heredoc, to avoid adding a semicolon + at the beginning of an empty line after printing the heredoc + ending delimiter - 8/29 - ---- execute_cmd.c - - the `for' and `select' commands should expand their word lists - using expand_words_no_vars - -command.h, execute_cmd.c, general.c, make_cmd.c, print_cmd.c, subst.c,parse.y - - changed the `dollar_present', `quoted', and `assignment' members - of WORD_DESC to a single flags word - - 8/30 - ---- -variables.c - - make get_string_value return array[0] if called with a variable - that is an array + - don't put the gnu_argv_flags into the environment any more; it's + proven to be a bad idea - 8/31 - ---- -lib/readline/display.c - - don't take the value of _rl_term_autowrap into account when - computing which screen line the cursor should be on; it screws - up wrapping on terminals without the `xn' capability - -lib/readline/examples/rltest.c - - new file, test code moved here from readline.c - -documentation/features.texi, lib/readline/doc/hsuser.texinfo - - fixed up printing of some of the shell options and the history - commands and modifiers - -subst.c - - make sure $name, where `name' is an array variable, returns - ${name[0]} - -variables.c - - convert a variable to an array even if index 0 is being assigned to, - instead of leaving it a `normal' variable - - 9/1 - --- - -builtins/setattr.def - - make sure that array variables printed by `declare' single-quote - the value after the `=' so the statement can be reused as input - -variables.c - - make sure array variables can be exported (name=(assignments)), and - that the export code works. The code is commented out because of - the possible confusion between an array and a regular string that - looks like an array assignment string. - - 9/2 - --- -variables.c - - make sure there is an executable file with the same name as - `shell' name in the current directory before assigning it to - $BASH at startup. If there is not, just make $BASH the login - shell name - - 9/3 - --- -parse.y - - removed a reduction from the `list0' production that could cause - statements which require semicolons to be allowed without error - (like before a `}' in a group command) - -lib/readline/display.c - - new functions: _rl_save_prompt and _rl_restore_prompt to save and - restore prompt invisible character info - - if the redisplay code encounters a line shorter than the old one - and containing invisible characters, make sure that the cursor is - at the end of the new text before calling clear_to_eol - - new variable last_invisible containing the index in the prompt - string of the last invisible character. We only have to redraw - the prompt string of _rl_last_c_pos is < last_invisible - - new function _rl_make_prompt_for_search to take care of setting - up the prompt string for a non-incremental search when the prompt - contains invisible characters - - fix so that a prompt string with invisible characters is not - redrawn each time through update_line (don't tputs term_cr unless - the cursor is before the last invisible character in the prompt - and will be moving past the last invisible char of the prompt - -lib/readline/isearch.c - - call _rl_save_prompt and _rl_restore_prompt when changing the prompt - to do i-search - - 9/4 - --- -lib/readline/readline.c - - doing_an_undo -> _rl_doing_an_undo for use by the vi-mode code - - rewrote rl_do_undo to reformat and eliminate a clumsy goto - - new split the add-to-kill-ring code off into a separate function, - _rl_copy_to_kill_ring - - added a new bindable function rl_copy_region_as_kill - - added a new bindable function rl_kill_region - - moved _rl_char_search_internal to here from vi_mode.c - - new bindable function rl_char_search - -lib/readline/vi_mode.c - - made `.' work for the `cw' and `[Ss]' commands, which implicitly - put the editor into insertion mode after they run - - split rl_vi_char_search code that actually searches for a character - into a new function, _rl_char_search_internal - -lib/readline/emacs_keymap.c - - bind M-= to possible-completions for ksh compatibility - - bind M-* to insert-completions - - bind C-x C-x to exchange-point-and-mark - - bind C-] to character-search - - bind C-@ to set-mark - -lib/readline/funmap.c - - new bindable function names: exchange-point-and-mark, kill-region, - copy-region-as-kill, character-search - -lib/readline/readline.h - - declare rl_exchange_point_and_mark, rl_copy_region_to_kill, - rl_kill_region, and rl_char_search externally - -documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo - - document new exchange-point-and-mark bindable command - - documented M-* default emacs-mode binding to insert-completions - - documented new copy-region-as-kill and kill-region commands - - documented new character search emacs-mode command - - documented new binding for set-mark - -lib/readline/rldefs.h - - moved values for `dir' when searching for characters in the line - from vi_mode.c to here - - 9/6 - --- -general.c - - new function ansicstr, which decodes ANSI-C backslash-escaped - characters (with the addition of \e and \E to mean escape) and - returns a new string - -subst.c - - new expansion $'...' which translates ANSI-C backslash escapes - in `...' and expands to the result +configure.in + - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x] builtins/echo.def - - ifdefs for ANSI-C for \a and \v rather than just expanding to - literal ASCII values + - only call fflush() after printing each word on SunOS 5.5, since + that's the system with the bug that prompted its inclusion in + the first place -documentation/bash.1 - - documented new $'...' expansion - - 9/7 - --- -builtins/enable.def - - fixed up the help text - - added a -s flag to restrict operation to Posix.2 `special' builtins - - removed -all option; -a is the way to do it now - - converted to use the builtin getopt - -builtins/common.c - - changed builtin_address_internal to return a pointer to a - struct builtin, which makes it much more useful. Changed - find_shell_builtin and builtin_address accordingly - - new function find_special_builtin, which returns special builtins - ((flags & SPECIAL_BUILTIN) != 0) +support/mksignames.c + - added support for more system-specific signals from AIX 4.2, + changed initialization order so that system-specific signals + are done first, before the common signals + 2/12 + ---- execute_cmd.c - - in Posix.2 mode, find special builtins before shell functions - when performing command lookup - - in find_user_command_internal, return NULL if there is no $PATH - - in Posix.2 mode, failure of a special builtin causes a non- - interactive shell to exit - -variables.c - - allow $PATH to be unset + - broke the code that creates a file containing the text of a + here document out into a separate function: here_doc_to_fd + - create the temp file used for a here document with mode 600 + - open the temp file used for a here document with O_EXCL - 9/8 - --- -input.h - - added a new `input type': st_stdin, for use when using readline, - since readline is not properly a string +shell.h + - changed the uid members of struct user_info to be of type uid_t + and the gid members to be of type gid_t parse.y - - surgery on the grammar: - o added new `compound_list' production: a list that can end - without a newline, `;' or `&' (used in subshell commands - and case clause commands) - o removed shell_command_1, folded rules into command - o eliminated pattern_list_1; changed case_clause_sequence to - directly incorporate the SEMI_SEMI token (a pattern_list_1 - was just a pattern_list with a trailing SEMI_SEMI) - o new `for_command' and `case_command' productions - o redirections -> redirection_list - o newlines -> newline_list - o redid the code that attaches redirections to the function - command rather than the function definition and eliminated - all of the shift/reduce conflicts - - changed with_input_from_stdin in the readline case to set - bash_input.type to st_stdin - -print_cmd.c - - a couple of changes to the way functions are printed - -shell.c - - only execute the PROMPT_COMMAND if input is not coming from a - string (bash_input.type != st_string). This fixes the problem - of PROMPT_COMMAND being executed by `eval' commands in an - interactive shell - - 9/12 - ---- -shell.c - - all interactive shells SIGHUP running jobs when exiting due to - a SIGHUP, not just login shells - - 9/13 - ---- -config.h, config.h.mini - - changed the default primary prompt (PPROMPT) to "\s\$ " - - removed the INTERACTIVE_COMMENTS define - -flags.c - - interactive comments are now enabled by default, regardless of the - INTERACTIVE_COMMENTS define + - changed the type of the `type' argument to init_yy_io() to be + `enum stream_type', since that's what's always passed input.h - - a new enum: stream_type, used in the BASH_INPUT struct - -parse.y - - bash_input.type is now initialized to st_none - -bashhist.c - - command_oriented_history is now the default - -documentation/bash.1 - - removed description of `nolinks' variable, updated set -P - description - - removed description of `notify' variable, updated set -b - description - - removed description of `noclobber' variable, updated set -C - description - -variables.c - - IFS may now be unset - -builtins/read.def - - now does the right thing if IFS is unset (acts as if it is - set to " \t\n") + - changed the function prototype for init_yy_io so the third arg is + type `enum stream_type' -builtins/cd.def - - added a new parameter to change_to_directory () which says - whether or not to follow symlinks, instead of using the - global no_symbolic_links - - changed cd_builtin to accept a -P option to disable symlink - following temporarily - -builtins/ulimit.def - - instead of using a hardcoded `long' for the return type of the - rlimit functions, use RLIMTYPE, which defaults to long - - new defines string_to_rlimtype -> string_to_long and - print_rlimtype for systems which do not need `RLIMTYPE' defined - to something other than long - -general.c - - function replacements for string_to_rlimtype and print_rlimtype - for machines which have RLIMTYPE defined in the machine description - -general.h - - extern declarations for string_to_rlimtype and print_rlimtype - -shell.c - - don't source file named by $ENV at script startup if act_like_sh - is turned on - -machines.h - - new entry for amiga/netbsd - - change all the netbsd entries to add -DRLIMTYPE=quad_t to - SYSDEP_CFLAGS - -siglist.h - - define sys_siglist as _sys_siglist on the amiga only if USGr4 is - defined - -print_cmd.c - - change so that printf is not prototyped on LynxOS with gcc - -lib/readline/Makefile - - changed the `installdirs' target to not fail if the directories - do not need creating - -lib/readline/history.c - - fixed a bug in history_arg_extract which manifested itself when - !* was used after a command without arguments (e.g., pwd ; echo !*) - - 9/15 - ---- -subst.c - - expand_word_internal should preserve the flags (other than - W_QUOTED) from the word passed as a parameter on the word it returns - - expand_words_internal renamed to expand_word_list_internal - - expand_word_list_internal does not perform word splitting or - globbing on words with the W_ASSIGNMENT bit set - - removed special treatment of `notify', `command_oriented_history', - `history_control', and `nolinks' - - rewrote some of the sv_* functions to remove or avoid calls to - sscanf, one of the most expensive C library functions - -variables.c - - don't look for $command_oriented_history at startup, since it now - defaults to `on' - -general.h, general.c - - new function posix_initialize to do whatever is necessary to enable - `Posix mode' - -shell.c, subst.c - - call posix_initialize - -general.c - - rewrote replacements for strchr, strrchr to make them faster - -builtins/enable.def - - new -f option and necessary support to load builtins from a shared - object file on systems supporting both dlopen() and dlsym(). New - builtins loaded this way can replace existing shell builtins or - add completely new functionality - -builtins.h - - mkbuiltins.c creates `static_shell_builtins', which is a fixed - array, `shell_builtins' points to this array initially - - extern declaration for current_builtin - -builtins/mkbuiltins.c - - change to creat static_shell_builtins[] and declare shell_builtins - as a pointer to it - - change to declare `current_builtin' in created builtins.c - -builtins/source.def - - print an error message and return failure if no filename argument - is supplied - -builtins/common.c - - current_builtin is set by find_shell_builtin, find_special_builtin, - and builtin_address_internal - - new function builtin_usage, which prints the contents of - current_builtin->short_doc - -builtins/{bind,declare,enable,fc,getopts,hash,history,jobs,kill,read,set, - setattr,trap,ulimit,umask}.def - - changed the builtins in these files to use builtin_usage() to - print usage messages - -cpp-Makefile - - support for the HAVE_DLOPEN and HAVE_DLSYM defines - -machines.h - - added -ldl and -Bdynamic to the SunOS4 entry +externs.h + - added a prototype for getcwd, if HAVE_GETCWD is not defined -documentation/{bash.1,features.texi} - - documented new enable -f option to dynamically load builtins +builtins/umask.def + - changed all variables that are used as arguments to or save the + return value from umask(2) to be of type mode_t + - changed print_symbolic_umask to take an argument of type mode_t - 9/16 + 2/13 ---- -test.c - - added `==' as a synonym for `=' +jobs.c + - if old_sigint_handler is set to SIG_DFL, as it will be in a script + without a trap on SIGINT installed, call termination_unwind_protect() + directly from waitchld() - 9/18 + 2/14 ---- -bashline.c - - include readline/rlconf.h so that VI_MODE is defined if - appropriate - -shell.c - - removed `-nobraceexpansion' option - -flags.c, flags.h - - added new -B flag; enabled if brace expansion is turned on - -subst.c - - use brace_expand instead of !no_brace_expand - -builtins/set.def - - change set -o braceexpand to be equivalent to set -B +configure.in + - added a section before the call to BASH_CHECK_LIB_TERMCAP to + set a variable prefer_curses on some systems (AIX, for one) -parse.y - - in with_input_from_stdin, do nothing if bash_input.type already - is st_stdin or if there is already a stream with type st_stdin - on the saved stream stack - - new function stream_on_stack to find out if there is a saved - stream of a specified type +aclocal.m4 + - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses + is non-empty -documentation/bash.1, documentation/features.texi - - doeumented new set -B option - - removed -nobraceexpansion shell startup option +lib/readline/Makefile.in + - redid the dependencies - 9/19 + 2/17 ---- -builtins/reserved.def - - made `help select' work +hashlib.c, getcwd.c + - include `bashansi.h' instead of stdlib.h and string.h -cpp-Makefile - - removed references to the nonexistant `load.def' - - removed conditionals based on GETOPTS_BUILTIN +error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c, +builtins/{exec,exit,fg_bg,hash,history}.def + - include `bashtypes.h' instead of directly including <sys/types.h> -builtins/getopts.def - - no longer $DEPENDS_ON GETOPTS_BUILTIN - -config.h, config.h.mini, builtins/help.def - - made the `help' builtin dependent on the HELP_BUILTIN define - - removed GETOPTS_BUILTIN +builtins/fc.def + - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h + and posixstat.h builtins/mkbuiltins.c - - made the `$DEPENDS_ON' clause work for reserved words and - shell control structures in reserved.def by writing out - dependencies to builtext.h even if there is no `function' - - made the long_doc for each builtin and reserved word get - written out to builtins.c with #ifdef HELP_BUILTIN surrounding - the doc strings -- this makes the minimal shell much smaller - -shell.c, documentation/bash.1 - - removed `-quiet' long option - -parse.y - - make sure that word splitting is not performed on the prompt - string after expanding in prompt_string_decode by calling - expand_string_unsplit instead of expand_string - -lib/readline/bind.c - - new readline variable `mark-directories': if set, completed - directory names have a slash appended - -lib/readline/complete.c - - support for `mark-directories' - -documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo - - documented the new `mark-directories' variable - -builtins/bind.def - - new option `-r' to remove a binding for a specified key sequence - - make sure that a failure return from bind resets the keymap - correctly if a -m option was supplied - -documentation/{bash.1,features.texi} - - documented new bind -r option - - 9/20 - ---- -builtins/jobs.def - - new `disown' builtin - -documentation/{bash.1,features.texi} - - documented new `disown' builtin + - include ../posixstat.h instead of <sys/stat.h> -cpp-Makefile - - removed support for `MAKE_SHELL' cpp variable - - renamed endian.aux to mkendian, look for endian.c in support dir - - link in array.o, alias.o, braces.o, bracecomp.o - unconditionally, rely on cpp defines in the files to exclude code - - pass -DHAVE_SYS_SIGLIST if sys_siglist is defined - - pass -DHAVE_GETCWD if HAVE_GETCWD is defined in machines.h - - pass -DHAVE_VFPRINTF_EMUALTION through from machines.h to - compilation - -array.c - - don't compile in body of file unless ARRAY_VARS is defined - -braces.c - - don't compile in body of file unless BRACE_EXPANSION is defined - -alias.c - - don't compile in body of file unless ALIAS is defined - -bracecomp.c - - don't compile in body of file unless BRACE_EXPANSION and READLINE - are defined - -bashline.c - - don't compile in body of file unless READLINE is defined - -bashhist.c - - don't compile in body of file unless HISTORY is defined - -siglist.c - - don't compile in body of file unless HAVE_SYS_SIGLIST is not - defined - -getcwd.c - - don't compile in body of file unless HAVE_GETCWD is not defined - -vprint.c - - don't compile in body of file unless USE_VFPRINTF_EMULATION - is defined - -support/mksysdefs - - for SCO machines, define SYSDEF as SCO or SCOv4 - -lib/readline/readline.[ch] - - new function rl_push_macro_input (s), which makes s the current - macro input string +general.h + - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch + a definition of quad_t (or whatever) from <sys/types.h> before + using it in a function prototype -endian.c - - renamed to support/endian.c +Makefile.in, builtins/Makefile.in + - updated dependencies - 9/21 + 2/18 ---- -lib/readline/complete.c - - more file types for the VISIBLE_STATS code: - | FIFOs - % character special devices - # block special devices - -lib/readline/isearch.c - - made RETURN an alternate search string terminator - -builtins/read.def - - removed use of stdio -- unbuffered stdio on a dup of fd 0 is - a big loss - builtins/set.def - - new function: minus_o_option_value, returns 1, 0, or -1 given - a -o option name (-1 means a bad name) - - reorganized list_minus_o_options to be more efficient + - new function, set_posix_mode, called when `set [-+]o posix' + or `shopt -[su] -o posix' is executed. It sets or unsets + $POSIXLY_CORRECT and calls sv_strict_posix -execute_cmd.c - - when expanding a here document, use maybe_expand_string rather - than a simple expand_string to try a speed things up a bit - -input.c - - don't compile in the body of the file unless BUFFERED_INPUT - is defined in config.h - - 9/22 - ---- -jobs.h, siglist.h - - replaced instances of Solaris with SunOS5 +subst.c + - in sv_strict_posix, call posix_readline_initialize only if + the shell is interactive (interactive_shell != 0) shell.c - - changed long option parsing code so that --arg is equivalent - to -arg, when `arg' is one of the recognized multichar options - -builtins/history.def - - rewrote to regularize the option parsing and use internal_getopt - - now allows only one of -awrn to be specified - - added a new -p option that adds each of its arguments to the - end of the history list, and deletes the `history -p' history - entry - -builtins/trap.def - - added new -p option to display specified trap values, or all - trap values if no other arguments supplied - -documentation/{bash.1,features.texi} - - documented new history -p option - - documented new trap -p option - - 9/25 - ---- -lib/readline/display.c - - fixed up the calcluation of the correct cursor line number (a `+' - and `-' were transposed in the calculation of `nleft') - - 9/26 - ---- -general.c - - moved isint() here from test.c, renamed to legal_number - -general.h - - extern declaration of legal_number - -test.c - - only compile isint() if SHELL is not defined, define it as - legal_number otherwise - -trap.c - - use legal_number in decode_signal instead of sscanf() - -builtins/common.c - - moved list_sigs to here from trap.def, renamed to - display_signal_list - - changed get_numeric_arg to use legal_number instead of doing - the parsing and calculation itself - -builtins/common.h - - extern declaration for display_signal_list + - if we are acting like `sh', call posix_readline_initialize + if the shell is interactive + - moved the code that does posix.2 mode initialization after + interactive_shell is set, and call posix_readline_initialize + if interactive_shell is non-zero -builtins/{trap.def - - changed to use display_signal_list for trap -l - -builtins/kill.def - - changed to use display_signal_list for kill -l - - added new kill -n signum option - -documentation/bash.1 - - added description of new kill -l signame functionality - - added description of new kill -n signum feature - - added description of new enable -d option - -builtins.h - - added a char *handle member to `struct builtin' for later use - - new flags value: BUILTIN_DELETED - -builtins/mkbuiltins.c - - added code to inintialize the `handle' member to null in the - static builtin array definition - -builtins/common.c - - don't `find' a builtin if the BUILTIN_DELETED flag is set in the - flags word of the struct builtins array - -builtins/enable.def - - new option -d to remove a builtin loaded with -f, depends on - HAVE_DLCLOSE - -cpp-Makefile - - pass -DHAVE_DLCLOSE through from machines.h to compilation - -machines.h - - change SunOS4 machine description to define HAVE_DLCLOSE - - 9/27 - ---- -shell.c - - split shell exit code off into a separate function: exit_shell(status) +bashwait.h + - renamed to unionwait.h, since that is what it defines -builtins/exec.def - - rewrote for clarity and speed and to use the builtin getopt() - - added new -a, -c, and -l options - - now calls exit_shell if shell_execve fails and the shell is not - interactive +posixwait.h + - moved the POSIX 1003.1 job control defines here from jobs.h -documentation/bash.1 - - documented the new options to `exec' +jobs.h + - include `posixwait.h' - 9/28 + 2/19 ---- -builtins/exec.def - - if the execve fails and the shell is not going to exit, reinitialize - traps and signals - - only call end_job_control if subshell_environment != 0 - - exec should exit unconditionally if the execve fails and - subshell_environment != 0 +braces.c + - if SHELL is defined, pass the contents of new-style command + substitution through without expanding brace constructs between + the parens -- let the subshell do it subst.c - - if valid_brace_expansion_word fails, make sure `temp' is set to - NULL before trying to free it after the `goto bad_substitution' + - when brace-expanding words, preserve the flags (word->flags) if + brace expansion does not change the word. This fixes the problem + of things like -cpp-Makefile - - add $(CPPFLAGS) to the compilation flags when making `mksignames' + local -a avar=( ${PATH//: } ); -documentation/features.texi - - fixed a typo in the tilde expansion section - - 9/29 - ---- -machines.h - - DEC OSF/1 has the dlopen/dlsym/dlclose set of library functions - -shell.c - - don't execute /etc/profile if -noprofile given - -builtins/pushd.def - - new file, pushd/popd/dirs split off from cd.def - - replaced calls to sscanf with calls to legal_number - -builtins/Makefile, cpp-Makefile - - changes for pushd.def - -config.h, config.h.mini - - ALLOW_RIGID_POSIX_COMPLIANCE is no longer used - -subst.c, variables.c - - GETOPTS_BUILTIN is no longer used - -variables.c - - if the first character of argv[0] is not a `/', search the path - and canonicalize the result to find out how to set $BASH - - 10/2 - ---- -builtins/enable.def - - changed enable_shell_builtin to use builtin_address_internal to find - the builtin rather than searching the list itself - - list_some_builtins skips a builtin if flags & BUILTIN_DISABLED != 0 - - rewrote dyn_load_builtin to take a list of names to load from a - single filename - - don't dlclose the shared object in dyn_unload_builtin unless its - reference count drops to 0 - -builtins/test.def - - don't bother making new copies of everything in the argument list - when constructing the argc and argv for test_command; just make - sure not to free anything but ARGV - - 10/3 - ---- bashline.c - - remove C-e binding in vi movement mode which switches into emacs - mode + - have shell_expand_line pass a copy of rl_line_buffer to expand_string + in case there are substitution errors and the string gets freed -general.c - - make xfree only try to call free on non-null strings - - 10/4 + 2/20 ---- -builtins/read.def - - new `-e' option that uses readline to read the line - - if one of the arguments is not a legal variable name, print an - error message and return failure - -builtins/reserved.def - - changed the `Variables' to `variables' so `help variables' works +expr.c + - make sure that expland and explor set `lasttok' to LAND and LOR, + respectively, if they parse `&&' or `||'. This makes the + precedence code work right subst.c - - set startup_state to 2 in child of command substitution to try to - avoid some unneeded forks + - changes so that non-interactive shells exit immediately when a + parameter that is unset is referenced after `set -u' has been + executed causes the shell to exit immediately -trap.c - - removed call to reset_terminating_signals in restore_original - signals; callers are now required to take care of that themselves, - if necessary - -execute_cmd.c, subst.c - - added necessary calls to reset_terminating_signals before calls - to restore_original_signals - -execute_cmd.c - - when executing a null command in a subshell, don't bother passing - a string to make_child; just pass NULL - - in execute_builtin_or_function, don't add so many unwind-protects - if `subshell' == 1 - - in command_substitute, call cleanup_the_pipeline to discard the - old pipeline, so pipeline_pgrp does not get set to 0 in - start_pipeline, which is called by make_child via making_children - -jobs.c, nojobs.c - - new function, ignore_tty_job_signals, to set SIGTTIN, SIGTTOU, and - SIGTSTP to SIG_IGN - - new function, default_tty_job_signals, to set those signals - to SIG_DFL - - new function, cleanup_the_pipeline to free up the_pipeline and - set it to NULL - - 10/5 + 2/21 ---- -builtins/history.def - - the history -p option is now -s (to sort of parallel the ksh - print -s option) - - the -s option now combines all of its arguments into a single - string and appends the string to the history list - - new history -p option to history expand each argument and print - the result without modifying the history list - -documentation/bash.1, documentation/features.texi - - documented the new -e option to read - - documented the new history -s and -p options - - documented the new cd and pwd -L options - -builtins/cd.def - - changed cd and pwd to use internal_getopt - - added the -L option to cd and pwd to follow symlinks (like if - set +P were issued) - -builtins/pushd.def - - added text for dirs +N and dirs -N to the dirs builtin long doc - - added -v option to dirs to print dirstack one dir per line with - stack index prepended +flags.c + - if `set -r' is executed, call maybe_make_restricted so that $PATH + and $SHELL are made read-only - 10/6 - ---- execute_cmd.c - - split the command searching code into a new function: - search_for_command - - removed a bunch of dead code from shell_execve - - removed call to reset_terminating_signals when executing a function - or builtin in a subshell (either via (xxx) or xxx &) - - don't add unwind protects at all in execute_function if subshell == 1 + - if `set -e' has been executed, and we're inverting a pipeline's + return status with `!', set CMD_IGNORE_RETURN so a failing + command does not inadvertently cause the shell to exit before + the exit status can be inverted. This is probably only a problem + with the `eval' builtin. -lib/readline/chardefs.h - - new macro ALPHABETIC(c), returns 1 if c is a letter or digit - -lib/readline/readline.c - - don't call abort() in rl_change_case(); it's impolite in a - library function - - new macro, SWAP, used to swap values of two integers - - changed alphabetic to use ALPHABETIC, made it slightly faster - - modified rl_change_case() so that word capitalization is the - same as GNU Emacs - -lib/readline/search.c - - in noninc_dosearch, don't reset the history positition to what - it was if we're currently in vi editing mode (as per Posix.2 - `/' and `?' vi-mode editing commands) - - 10/7 - ---- -builtins/common.c - - changed single_quote and double_quote to use char pointers - rather than string indexing - - new function backslash_quote(string), which quotes special - characters in STRING using backslashes - - 10/8 + 2/24 ---- -alias.h - - added an extern declaration for alias_expand_word - -parse.y - - broke the alias expansion code off into a function - alias_expand_token; its return value says whether to re-read - a token or go on - - changed the alias expansion code to handle aliases that expand - to nothing better - - broke the code that does special-case token recognition off into - a function: special_case_tokens - - used the new functions to make sure that the special-case tokens - can be the expansion of an alias - - made sure that if in `posix mode' that reserved words cannot be - aliased and that all reserved words can be the values of aliases - and be recognized after expansion - - 10/10 - ----- -lib/readline/complete.c - - replaced #ifdef SHELL code with two new exported readline interfaces: - rl_filename_quoting_function and rl_filename_dequoting_function. - Both return a pointer to char. - - new extern variable rl_filename_quote_characters, containing a list - of characters that cause a word to be quoted by the completer if - they appear in a file name - -bashline.c - - new functions for rl_filename_quoting_function and - rl_filename_dequoting_function. - - initialize rl_filename_quoting_function and rl_filename_dequoting_function - in initialize_readline - - initialize rl_filename_quote_characters - -lib/readline/readline.h - - extern declarations for new public interfaces - rl_filename_quoting_function and rl_filename_dequoting_function - - added declarations for NO_MATCH, SINGLE_MATCH, and MULT_MATCH for - use by the filename quoting functions - - new extern declaration for rl_filename_quote_characters - -lib/readline/history.c - - made a version of single_quote be compiled in if SHELL is not - defined - - the `q' and `x' modifiers are now compiled in by default, not - just if SHELL is defined - - 10/11 - ----- -subst.c - - string_quote_removal was being a little overzealous in stripping - things within embedded quoted strings when `quoted' was == 1. - Only remove one level of quotes each time through the function - This fixes the problem of quotes being stripped incorrectly in - var="The text \"hello\" should show up inside double quotes." - -lib/readline/history.c - - made the behavior of single quotes inhibiting history expansion - configurable with a variable: history_quotes_inhibit_expansion, - not just shell-specific - - added a new variable: history_search_delimiter_chars, which is a - list of characters that can also delimit a history search string - -lib/readline/history.h - - extern declaration of history_quotes_inhibit_expansion - - extern declaration of history_search_delimiter_chars - -bashhist.c - - set history_quotes_inhibit_expansion to 1 in bash_initialize_history - - initialize history_search_delimiter_chars to ";&()|<>" - -lib/readline/doc/{rltech,hstech}.texinfo - - documented new readline and history library interfaces - -parse.y - - split the part of read_token that reads a single word off into - a new function: read_token_word - -lib/readline/chardefs.h - - include <string.h> by default; only check HAVE_STRING_H if - HAVE_CONFIG_H is defined - - 10/12 - ----- -parse.y - - moved the `RESET' code out of read_token into reset_parser - - rewrote some of decode_prompt_string to make it more efficient - - rewrote more of read_token_word to make it more efficient - - make shell_getc cast its result to `unsigned char' before - returning it. This fixes the problem of \255 appearing in a - line - -machines.h - - new entry for m68k machines running Linux - - 10/13 - ----- -builtins/exec.def - - use search_for_command rather than find_user_command to look up - the path to exec, so the hash table and temp environment are used - -variables.c - - don't rebuild the export environment after binding a shell - function unless that function is exported - - make sure that copy_variable copies arrays correctly, using - dup_array() - - in assign_in_env, only call tilde_expand if a `~' appears somewhere - in the value - -execute_cmd.c - - if we found $PATH in the temp environment in search_for_command, - call find_user_command_in_path instead of find_user_command, so - we don't try to search the temporary env again. Call - find_user_command as normal if PATH is not in the temp environment - -subst.c - - char_is_quoted should not be compiled in if READLINE is not - defined - -lib/readline/complete.c - - add a new external interface: Function *rl_char_is_quoted_p, - which is called to find out whether a word break character is - quoted and should be skipped over when breaking words for - the completer - -lib/readline/readline.h - - extern declaration for rl_char_is_quoted_p - -bashline.c - - initialize rl_char_is_quoted_p to char_is_quoted - -lib/readline/doc/rltech.texinfo - - documented rl_char_is_quoted_p - -lib/readline/readline.c - - extend the undo records so that a `start' or `end' value of -1 - means rl_point and a value of -2 means rl_end. This is a start - to better support for undoing vi-mode commands like `C' - -lib/readline/vi_mode.c - - don't save what's entered in insert mode after a `C' command - for later insertion when doing a `redo' - - 10/16 - ----- -test.c - - rewrote unop() to use a switch statement instead of a call to - strchr - - remove #ifdef SHELL blocks by defining getuid, geteuid, getgid - and getegid as references to current_user.{uid,euid,gid,egid} - respectively - - change group_member to only fetch the group list once and to use - NGROUPS_MAX or NGROUPS to find the maximum number of groups - -documentation/bash.1 - - fixed description of ${#@} expansion - - 10/17 - ----- -support/bashbug.sh - - add a `From:' line to the mail message handed to rmail - - 10/18 - ----- -test.c - - rewrote binary_operator for speed and clarity - - removed age_of, added arithcomp(), filecomp() to support new - binary_operator - - removed support for `-l string' - -documentation/bash.1 - - removed mention of `-l string' from `test' description - - 10/19 - ----- -cpp-Makefile - - pass PROGRAM as the double-quoted shell name to compilation of - shell.c and error.c - - 10/20 - ----- -support/bashbug.sh - - don't try to use ${word:-expansion}; ultrix sh doesn't understand it - -hash.c - - new function: flush_hash_table (table, free_data) to delete the - contents of a given hash table. *free_data is called to free - each item's data, if free() is inappropriate - builtins/hash.def - - new functions free_hashed_filenames and free_filename_data to - flush the table of hashed filenames - -subst.c - - change sv_path to call flush_hashed_filenames directly - -variables.c - - only sort arrays of variables or functions for the environment or - `set' output if `posixly_correct' is set. sh does it; ksh does - not, and there's no real requirement to do so - - rewrote delete_all_variables so it looks like flush_hash_table - -trap.c - - two new flag values for the `sigmodes' array: SIG_INPROGRESS, - which is set for sigmodes[sig] while a trap handler for sig - is executing, and SIG_CHANGED, which is set if a new trap - value is set when SIG_INPROGRESS is set. This should obviate - the need to set the trap value to IMPOSSIBLE_TRAP_HANDLER while - the trap handler is executing - -alias.c - - rewrote delete_all_aliases so it looks like flush_hash_table - - 10/21 - ----- -alias.c - - changed delete_all_aliases to call flush_hash_table directly - and use free_alias_data as the `free function' argument - -variables.c - - changed delete_all_variables to call flush_hash_table directly - -tests/run-test, tests/test-tests - - new scripts to run tests of the `test' builtin as part of the - regression test - - 10/24 - ----- -bashline.c - - initialize_hostname_list needs to look for HOSTFILE first - - hostname list is no longer sorted - - replaced binary search in hostnames_matching with a simple - linear search - - made the code that reads hostnames skip over the first word on - a line only if its first character is a digit, assuming it's - an Internet address - -copy_cmd.c - - removed copy_select_command; overload copy_for_command, since the - select and for command structs are exactly the same - -make_cmd.c - - combined make_for_command and make_select_command into a new - function, make_for_or_select - - rewrote make_here_document to remove the unneeded `switch' statement - -builtins/common.c, builtins/hash.def - - moved remove_hashed_filename from common.c to hash.def - -builtins/common.c - - remove the \r from error message printed by get_working_directory - - change parse_and_execute to call dispose_fd_bitmap directly then - discard the `pe_dispose' unwind-protect frame rather than running - the frame - -builtins/set.def - - changed how set -o options are set and retrieved, using set and get - functions to avoid all that special-case inline code - - 10/26 - ----- -test.c - - added unary operator `-o', which returns true of the shell option - name given as an argument is set - -lib/readline/readline.c - - added a definition of set_lines_and_columns to be called if the - library is not compiled -DSHELL - -shell.c - - added a --verbose startup long option - - renamed `--nolineediting' to `--noediting' - - 10/27 - ----- -lib/readline/util.c - - new file, for readline utility functions - -lib/readline/readline.c - - moved a bunch of functions to util.c - -subst.c - - make sure set_sigint_handler is called only by the subshells doing - command and process substitution - -builtins/read.def - - make sure that rlbuf is initialized to null - -trap.c - - new flag for sigmodes[] members: SIG_IGNORED, set when signal is - ignored, even if it's special or untrappable - - new function: signal_is_ignored (sig), which returns 1 if SIG - has been ignored with trap '' - -builtins/trap.def - - changed to use the builtin getopt - -shell.c - - added a check to sigint_sighandler for whether or not SIGINT has - been ignored with trap '' in an interactive shell. This fixes - the problem with `read' being interruptible in an interactive - shell even if SIGINT is being ignored - - 11/8 - ---- -lib/readline/Makefile - - added definition of INSTALLED_HEADERS, just in case - - 11/11 - ----- -variables.c - - change assign_in_env so that it doesn't use savestring ("") to - set `value' to a dummy value; don't call strcpy if there's - nothing to copy + - add a missing argument of 0 to add_hashed_command - 11/15 - ----- -general.h - - new defines, legal_variable_starter and legal_variable_char - - new define SIGRETURN(n) which encapsulates the VOID_SIGHANDLER - differences when returning from a signal handler - -general.c, variables.c, subst.c, expr.c - - use legal_variable_starter and legal_variable_char - -shell.c, nojobs.c, trap.c, jobs.c, builtins/suspend.def - - change to use SIGRETURN macro - -subst.c - - massive changes to clean up the code and remove unused code and - variables - - expanded the ${#param} code so that all of the shell special - variables may have their length taken - -tests/run-tilde - - new test for tilde expansion - -bashline.c - - fix a bug in command_subst_completion_matches: make sure that - `matches' is static - -parse.y - - don't print a prompt when not using readline if the current - input type is st_string - -machines.h - - add -DINT_GROUPS_ARRAY to SYSDEP_CFLAGS on ultrix - - fixes to the cray machine description from Bill Jones - -braces.c - - fixed a bug in brace_gobbler that prevented a backslash from - escaping an open brace - - 11/16 - ----- -tests/braces-tests, tests/run-braces - - new regression tests for brace expansion - -builtins/pushd.def - - new -p option for `dirs' that prints dirstack on per line - without numbers - - 11/17 - ----- -command.h - - move redirection error values here from execute_cmd.c - - new defines INPUT_REDIRECT and OUTPUT_REDIRECT - -shell.c - - make the default MAINTAINER `bash-maintainers@prep.ai.mit.edu' - -execute_cmd.c - - many changes to clean up the code and remove unused variables and - functions - - new functions: redirection_error, find_in_path_element, - find_absolute_program - - fixes to redirection error reporting, so things like exec 4<&y* - and exec 4<&$FOO are displayed correctly - - removed the `lexical_scoping' code - -flags.c, flags.h - - removed the lexical_scoping code and variable - -documentation/{bash.1,features.texi} - - removed the description of the `-l' option to `set' +builtins/kill.def + - job identifiers can be used in non-interactive shells as long as + job control has been turned on with `set -m' jobs.c - - don't try to open /dev/tty to get the controlling tty, use - fd 2 like other job control shells - -lib/readline/vi_mode.c - - when using `d%', make sure the matching character found by - the `%' is deleted by the `d'. Ditto for `c%'. - - stub function for vi undo: rl_vi_undo. Right now it just - calls rl_undo_command - -lib/readline/vi_keymap.c - - change to call rl_vi_undo instead of rl_undo_command - -lib/readline/readline.h - - extern declaration for rl_vi_undo - - 11/21 - ----- -execute_cmd.c - - fix to print_select_list to avoid a possible divide-by-zero error - and subsequent core dump - - fix to execute_select_command to just return 0 if there is no - select list - -parse.y - - remove `in' from the list of tokens that cannot take trailing - semicolons - -builtins/read.def - - make sure that leading IFS whitespace is removed before calling - get_word_from_string the first time. This matters when IFS is - not " \t\n" but non-null - - make sure the array code uses IFS to split the input string - before assigning it to the array - - 11/22 - ----- -parse.y - - make sure that if \nnn expands to CTLESC or CTLNUL, the char - is protected by a CTLESC - - new variable `promptvars', which, if non-zero, causes all the - variable expansions to be performed in decode_prompt_string. - If zero, only quote removal is performed. - -builtins/source.def - - new variable: `source_uses_path', set to 1 by default. If - non-zero, the `.' builtin uses $PATH to find the script to - source - -builtins/getopt.h - - cut out everything not needed by bash - -builtins/getopt.c - - cut out everything not needed by bash - -builtins/getopts.def - - removed the call to getopt_set_posix_option_order, which is no - longer necessary + - we want to be notified of stopped jobs if job_control is non-zero, + even if the shell is not interactive execute_cmd.c - - split the code that writes out here documents to files out into - a separate function + - make sure shell_execve returns EX_NOTFOUND if execve fails and + errno is set to ENOENT + - makes sure execute_builtin saves the temporary environment to + builtin_env for the `eval' builtin, since it can destroy the + temporary environment when it calls parse_and_execute - 11/23 - ----- -builtins/getopt.c, builtins/getopt.h, builtins/getopts.def, subst.c - - prefix all of the getopt variables and functions with `sh_' - (that is, optind becomes sh_optind and getopt becomes sh_getopt) - to avoid confusion with a system's getopt(3) implementation - -subst.c - - new functions: parameter_brace_substring and verify_substring_values - and changes to expand_word_internal to support the ksh-93 - ${var:exp1:exp2} substring syntax - -documentation/bash.1 - - documented the new ${var:exp1[:exp2]} syntax - - 11/25 - ----- -builtins/setattr.def - - don't allow readonly -n at all - -array.c - - split array_to_string into two parts; a new function - array_to_string_internal does the real work - - new function array_subrange () to return a subset of the elements - in an array - -subst.c - - augmented the substring code to handle the positional parameters - and array variables - - made quote_list and dequote_list return their WORD_LIST * - arguments so they can be used like - - z = string_list ((quoted ? quote_list (l) : l), xxx); - - - augmented the ${xxx} expansion code to do indirect variable - references if the first character of the variable name is `!' - -tests/new-exp.tests - - added regression tests for substring expansion - - added regression tests for indirect variable references - - 11/28 - ----- -builtins/set.def - - added set -o hashfunc and set -o onecmd, synonyms for set -h - and set -t, respectively - -builtins/shift.def - - changed shift so that the positional parameters are not changed - if the argument is > $# (this is ksh and Posix.2, unlike sh) - -documentation/bash.1 - - documented true behavior of `shift' - -lib/readline/kill.c - - split the kill ring management code and the kill commands out - from readline.c into this file - -lib/readline/undo.c - - split the code that does undoing out of readline.c into this file - -shell.c - - force the shell to exit with status 127 if a longjmp back to - run_one_command occurs with bash -c - - force the last command exit status to 1 if a - longjmp (top_level, DISCARD) is performed - -builtins/read.def - - don't throw away partial lines after reading EOF - -subst.c - - command substitution should not inherit the -e flag - -builtins/source.def - - make sure to set the exit status correctly when in posix mode - and the filename argument to `.' does not exist - - 11/29 - ----- -lib/readline/input.c - - split the input buffering and character input code out of - readline.c to here - -lib/readline/macro.c - - moved the keyboard macro management code to here from readline.c - -lib/readline/readline.c - - removed the STATIC_MALLOC code - -lib/readline/rltty.c - - return -1 in POSIX get_tty_settings if tcgetattr returns -1 and - errno != EINTR, even if output is being flushed +bashhist.c + - new variable: hist_last_line_added, set to 1 if the last command + line was added to the history successfully as a separate entry. + Used by `history' and `fc' - 12/1 + 2/25 ---- -machines.h - - fixes to the hpux_8 and hpux_9 machine descriptions - trap.c - - make run_exit_trap return the right exit status - (last_command_exit_value) - - run_exit_trap no longer preserves the value of last_command_exit_value - around the execution of the trap commands - - run_exit_trap now turns off SIG_TRAPPED and sets SIG_INPROGRESS - and will not try to run anything if SIG_INPROGRESS is set - -trap.h - - change definition for run_exit_trap - -shell.c - - call run_exit_trap only if trap[0] is set and not ignored - -builtins/exit.def - - make sure we only source the .bash_logout file once, even if it - contains a call to `exit' + - save line number before executing trap command, because + parse_and_execute resets it to 1 and the trap command might + want it execute_cmd.c - - if we run an exit trap in a (...) user subshell, allow it to - override the exit status of the subshell - -lib/readline/readline.c - - made rl_delete_text bounds check its `to' argument, and limit - it at rl_end - -lib/readline/vi_mode.c - - make rl_vi_subst call `rl_delete_text' directly for the `s' - command - -support/mksysdefs - - define a new variable for the sysdefs.h file for ISC machines: - ISC_release, which can be ISC_2, ISC_3, or ISC_4 - -machines.h - - don't `#undef' HAVE_GETCWD on ISC 4.x machines - - `#undef' HAVE_RESOURCE on ISC 4.x machines - -support/mkversion.c - - include "posixstat.h" rather than <sys/stat.h> for the benefit - of ISC machines + - change to executing_line_number to return trap_line_number if + the shell is currently running a trap - 12/5 - ---- -lib/readline/complete.c - - changed username_completion_function so that a null username - generates a list of all users as possible completions - -lib/readline/readline.h - - added definitions for STREQ, STREQN - -lib/readline/{search.c,isearch.c,kill.c} - - removed private definitions of STREQ, STREQN - -execute_cmd.c - - in find_user_command_internal, just return a copy of the pathname - passed as an argument if there is no PATH - - 12/6 - ---- -siglist.h - - NetBSD 1.0 does not need a define for strsignal() - - 12/8 - ---- -subst.c - - removed assignment_name, word_list_quote_removal, word_quote_removal, - and sub_append_number -- unused functions - - removed some unexecuted code from expand_word_internal - - 12/9 + 2/26 ---- execute_cmd.c - - if PATH is set to the empty string, find executables in the - current directory - -shell.c, parse.y, trap.c - - before setting the SIGINT sighandler unconditionally to one of - sigint_sighandler or termination_unwind_protect, check that it - is not ignored. Now trap '' 2 really sets the SIGINT signal - handler to SIG_IGN. [In 1.14.3] - -trap.c - - rewrote set_sigint_handler to use SIG_IGNORED rather than checking - against IGNORE_SIG - - changed ignore_signal, run_exit_trap, maybe_call_trap_handler, and - run_trap_internal to check SIG_IGNORED - -shell.c - - removed the check for signal_is_ignored(SIGINT) in sigint_sighandler - - 12/11 - ----- -sig.c, sig.h - - new files, moved signal-related definitions and code here from - shell.c, general.h, general.c, jobs.c, jobs.h, externs.h - -unwind_prot.c, shell.h, nojobs.c - - include sig.h - - 12/12 - ----- -jobs.c - - only break out of loops if SIGTSTP was used to stop a job in the - loop, the shell is currently interactive, and job control is on. - SIGSTOP does not break loops. [In 1.14.3] - - 12/13 - ----- -expr.c - - bases < 2 or > 36 are now accepted without silently being reset - to 10 - -braces.c - - make sure array_concat copies the array it returns if one of - the arguments is null [In 1.14.3] - - 12/14 - ----- -subst.c - - split the ${...} expansion code out into a separate function, - static char *parameter_brace_expand() - - changes to array_value so that any variable can be referred to - as an array with an integer subscript. The value will be - returned if a non-array variable is referred to as ${var[0]}; - if the subscript is > 0 a null string is returned - - 12/15 - ----- -machines.h - - fixes to freebsd description for FreeBSD 2 [In 1.14.3] - -support/bashbug.sh - - changed to use /usr/lib/sendmail if present or /usr/sbin/sendmail - if present, defaulting to rmail [In 1.14.3] - -bashhist.c - - HISTFILESIZE now controls how large the history file is after - it is written. After saving the shell history, sv_histfilesize - will truncate it if necessary. history -w can override this. - -documentation/bash.1 - - documented change to treatment of HISTSIZE when saving history - -lib/malloc/malloc.c - - removed the calls to sigsetmask() in malloc(). This should - result in a speed improvement - - 12/19 - ----- -builtins/enable.def - - don't allow -f or -d in a restricted shell - -builtins/alias.def - - rewrote alias and unalias to use the internal getopt - - added -p option to print the alias list to alias - - fixed up the documentation for `alias' - -documentation/{bash.1,features.texi} - - updated the documentation for `alias' - - updated the documentation for $_ - -array.c,array.h - - new function `empty_array (ARRAY *a)' removes all of the - elements in a without destroying the array variable in - preparation for overwriting it. Used by read -a. - -builtins/read.def - - call empty_array() before assigning list of values with read -a - - changed dispose_array to use empty_array to destroy the - array elements - -variables.c - - set $_ to argv[0] at variable initialization time - - 12/20 - ----- -subst.c - - broke the pattern removal code into a few separate functions: - getpatspec to get the pattern specifier, getpattern to do the - necessary word expansions and return the pattern to be matched - - new function: parameter_list_remove_pattern(), which implements - the ${param[#%][[%#]]pattern} where param is `@' or `*' - -documentation/bash.1 - - documented new pattern removal functionality for the positional - paramters - -general.c - - new function strsub (s, pat, rep, gflag) replaces PAT with REP - in S. All occurrences are replaced if GFLAG != 0; the first is - replaced otherwise - - changed strindex() to avoid multiple calls to strnicmp by - checking first character of the string - -builtins/fc.def - - changed to use builtin_getopt with a check for fc numbers as - arguments - - some code rearranging for efficiency and clarity - - fc_dosubs now just calls strsub(); fc_replace is gone - - 12/21 - ----- -subst.c - - new function, match_pattern, which matches a shell globbing - pattern anywhere in a string and returns the boundaries of the - match - -lib/readline/readline.h - - declarations for rl_insert_command and rl_backward_char_search - -lib/readline/readline.c - - new function rl_insert_comment, no longer vi-mode-specific - - new function rl_backward_char_search - -lib/readline/bind.c - - comment-begin now sets the comment char for emacs and vi modes - - variable holding the value is now _rl_comment_begin - -lib/readline/vi_mode.c - - move the `comment-begin' stuff to readline.c and bind.c - -lib/readline/funmap.c - - vi-comment is now insert-comment - - new bindable command character-search-backward - -lib/readline/vi_mode.c - - command mode `#' now invokes rl_insert_comment - -lib/readline/emacs_keymap.c - - M-# now bound to insert-comment - - M-space now bound to set-mark - - M-^] now bound to character-search-backward - -bashline.c - - posix_readline_initialize now calls rl_variable_bind to set the - value of comment-begin rather than directly modifying - _rl_comment_begin - -documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo - - added description of new bindable `insert-comment' command - - documented new M-space emacs mode binding - - documented new character-search-backward command and default - emacs mode binding to M-C-] - -shell.c - - only call posix_initialize if posixly_correct is set - - 12/22 - ----- -cpp-Makefile - - make $(Program) depend on $(srcdir)/.distribution, for the - benefit of systems where `make' does not have VPATH support - [In 1.14.3] - -jobs.c - - if a foreground job is killed by SIGINT while job control is - active, print a newline to compensate for the kernel printing - ^C without one [in 1.14.3] - -bashline.c - - make sure bashline_reinitialize resets rl_completion_entry_function - to NULL, as the comment says it should [In 1.14.3] - - 12/23 - ----- -test.c - - fix a problem that caused core dumps if a `)' was missing in a - parenthesized expression [In 1.14.3] - -jobs.c - - broke the code the manages the manipulation of the job table and - process status out of flush_child into a new function waitchld() - - flush_child now just calls waitchld() with a parameter that tells - it not to block - - wait_for calls waitchld() with the pid it's looking for and tells - it to block (don't call it with WNOHANG) - - cleaned up wait_for considerably -- turned the wait_loop: label - stuff into a do-while loop and removed the setting of job status - (that's now done only by waitchld). wait_for now calls - waitchld continuously until the job it is interested in is - marked JDEAD. - - 12/28 - ----- -subst.c - - fixed expand_word_internal so that any word that expands into - nothing and contains a double-quoted $@ is removed, like sh - and ksh - - new function: expand_string_for_rhs, which calls expand_word_internal - with a variable that lets it find out whether or not a $@ appeared - in the WORD in ${paramOPword} when expanding it, so that "$@" - and various other things are handled correctly on the rhs - - added params for parameter_brace_expand to tell expand_word_internal - if a quoted $@ was processed as part of the rhs (or even the lhs); - these new params are passed along to parameter_brace_expand_rhs - - pass the right value of quoted to parameter_brace_expand_rhs from - parameter_brace_expand. expand_string_for_rhs doesn't need to know - whether the brace expression is quoted - - 12/31 - ----- -support/printenv - - now an official part of the distribution, moved from CWRU/misc - [in 1.14.3] - -cpp-Makefile - - copy support/printenv into the `tests' directory when making tests - [in 1.14.3] - - change to understand GCC_STANDARD [in 1.14.3] - -support/bashbug.sh - - fixed a typo that caused it to not parse correctly [in 1.14.3] - -machines.h - - define GCC_STANDARD if the standard `cc' is gcc and you don't want - to use the compiler named `gcc' for some reason [in 1.14.3] - - 1/2 - --- -general.h - - added FS_DIRECTORY to the list of flags that file_status returns - -execute_cmd.c - - changed find_in_path_element to return null if the flags argument - specifies FS_EXEC_ONLY and the file is not executable - - return FS_DIRECTORY from file_status if the argument specifies a - directory - - new function, is_directory (char *), which returns non-zero if the - filename argument is a directory - -execute_cmd.h - - extern declaration for is_directory - -flags.c, flags.h - - hashing_disabled and locate_commands_in_functions were removed, - hashing_enabled added - -execute_cmd.c, builtins/common.c. builtins/hash.def - - use hashing_enabled instead of hashing_disabled, and reverse - the sense of tests of it - -documentation/bash.1, documentation/features.texi - - changed description of `set -h/set -o hashcmds', removed - set -d/set -o nohash - -bashline.c - - changed command_word_completion_function to return matches if names - are directories as well as if they are executable files - -support/mksysdefs - - look for `ranlib' in $PATH before searching the file system; - look in /usr/gnu/bin for it; default to `:' if not found - -general.c - - change ansicstr to accept a second argument telling it whether to - recognize \c and to pass back a non-zero value in it if \c is - seen - -general.h - - changed extern declaration of ansicstr - -subst.c - - call ansicstr with an extra argument + - change to time_command so that a `real' value of 0 does not + cause a divide-by-zero error when computing cpu percentage - 1/3 - --- -builtins/echo.def - - rewrote to use ansicstr() with the new argument - - 1/4 - --- -trap.c - - changed instances of signal() to set_signal_handler() [in 1.14.4] - - combined reset_signals and restore_signals into a single function, - since they were essentially identical - -subst.c - - if set -u is set, references to the positional parameters now - generate errors if that parameter is not set [in 1.14.4] - -lib/*/Makefile, builtins/Makefile - - since RANLIB can be just `ranlib', just try to run it without - checking that the file exists [in 1.14.4] +lib/readline/signals.c + - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH + handler in rl_handle_sigwinch builtins/set.def - - changed `hashcmds' to `hashall' - -documentation/{bash.1,features.texi} - - changed `hashcmds' to `hashall' + - `unset' now rejects attempts to unset names that are not valid + shell identifiers as errors + - add a description of `-o history' option to help text - 1/5 - --- -trap.c - - make the loop that restores signal handlers run from signal 0 to - make sure user subshells don't inherit traps on `exit' (to fix - for 1.14.3, change restore_original_signals so that the loop - starts from 0) [in 1.14.4] - -variables.c - - don't import exported function definitions at startup if the - shell is restricted - -builtins/source.def - - don't allow use of pathname arguments containing `/' in a - restricted shell - -execute_cmd.c - - when a shell is spawned to execute a shell script without a - #! line, turn off the -r flag if the shell is restricted - -shell.c - - added a new long option `--restricted' - -documentation/bash.1 - - added a section on the restricted shell, and documented the - new `--restricted' long invocation option - - 1/7 - --- -shell.c - - when using bash -c command, make run_one_command return - last_command_exit_value if a throw_to_top_level with value - EXITPROG occurs [in 1.14.4] - -print_cmd.c - - make sure to initialize arg_index in the non-varargs implementation - of cprintf [in 1.14.4] - -jobs.c - - don't try to change the state of the SIGCHLD handler before - calling waitchld() from wait_for, since SIGCHLD is blocked - while this code is executing [in 1.14.4] - - 1/11 - ---- -lib/readline/rltty.c - - call control_keypad iff the value of a new variable, - _rl_enable_keypad, is non-zero - -lib/readline/bind.c - - new readline variable `enable-keypad' to control whether readline - tries to manipulate the application keypad - -documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo - - documented new `enable-keypad' variable - - 1/12 - ---- -lib/readline/search.c - - make sure to call rl_unix_word_rubout and rl_unix_line_discard - with the correct arguments [in 1.14.4] - -make_cmd.h - - make sure make_select_command is declared even if SELECT_COMMAND - is not defined - -parse.y - - make sure the \[ and \] escape sequences are not recognized if - READLINE is not defined [in 1.14.4] - -config.h - - make sure HISTORY is defined if READLINE is; code moved here - from bashhist.c [in 1.14.4] - -bashhist.c - - removed check for READLINE being defined without HISTORY; now - in config.h - - new function, bash_history_reinit - -flags.h, flags.c, builtins/set.def - - the -H/-o histexpand flag should be compiled into the shell - only if BANG_HISTORY is defined [in 1.14.4] - -subst.c - - don't include sv_histchars unless BANG_HISTORY is defined - [in 1.14.4] - - if QUOTED is true in parameter_brace_expand_rhs, pre-process the - word on the rhs of the parameter expansion by a call to - string_extract_double_quoted with the STRIPDQ parameter set to 1 - - new arg for string_extract_double_quoted; causes it to strip - double quotes and alter its backslash handling behavior; designed - to be called from parameter_brace_expand_rhs - - changed all other instances of string_extract_double_quoted to - call it with STRIPDQ set to 0, to get old behavior - -shell.c - - call bash_history_reinit rather than manipulating history - variables directly - -variables.c - - don't auto-export $BASH [in 1.14.4] - -tests/rhs-exp.tests - - new test script to check for behavior fixed by changes to - string_extract_double_quoted and parameter_brace_expand_rhs - -parse.y - - `for' and `select' must now take non-empty lists between - `in' and `;' - - 1/16 - ---- -subst.c - - fixed string_quote_removal to do double-quoted string processing - itself rather than call string_extract_double_quoted, which - assumes that a call to expand_word_internal or the equivalent - will follow immediately and leaves some backslashes in place, - inappropriately for quote removal - - 1/23 - ---- -subst.c - - make sure to set `temp' to NULL after it's freed by sub_append_string - in expand_word_internal to keep it from pointing to newly-allocated - memory that will be subsequently freed, causing a `memory freed - twice' error [in 1.14.4] - -trap.c - - handle the EXIT_TRAP specially in reset_or_restore_signal_handlers, - since in both cases we simply want to free up the trap string and - mark the signal as not trapped - -shell.h - - added \n to the list of characters in slashify_in_double_quotes - - 1/26 - ---- -subst.c - - make string_extract_single_quoted and string_extract_double_quoted - `inline' - - new function skip_single_quoted, used when we used to call - string_extract_single_quoted and just throw the returned string - away - - new function skip_double_quoted for the same purpose - - 1/28 - ---- subst.c - - fixed expand_word_internal so that if an assignment word - is expanded, no word splitting is performed [in 1.14.4] + - in parameter_brace_patsub, we want backslash removal done on + the replacement if (mflags & MATCH_QUOTED), since the code + in expand_word_internal will not do it. We need to call + expand_string_unsplit directly, since maybe_expand_string does + not do the right thing -builtins/ulimit.def - - some systems lack RLIMIT_CPU; so `#ifdef' its use [in 1.14.4] - - some versions of cpp expand parameters like \n if `n' is an - argument to the macro; change `n' to `num' in the definition - of print_rlimtype to compensate [in 1.14.4] - -builtins/read.def - - make sure the read loop sets `saw_escape' to note that an - escape character was read if CTLESC or CTLNUL is read [in 1.14.4] - -shell.c, sig.c - - only test interactive_shell before calling maybe_save_shell_history - [in 1.14.4] -shell.c - - include <locale.h> if HAVE_LOCALE_H is defined - - call setlocale(LC_ALL, "") at the beginning of main() if - either _POSIX_VERSION or HAVE_SETLOCALE is defined - -support/mksysdefs - - look for <locale.h>, define HAVE_LOCALE_H if found - -cpp-Makefile - - pass HAVE_LOCALE_H through from sysdefs.h to the build process - -bashhist.c - - remove test against interactive_shell in maybe_save_shell_history - [in 1.14.4] - -variables.c - - moved definition of DEFAULT_MAIL_PATH to config.h - -config.h, config.h.mini - - now has definition of DEFAULT_MAIL_PATH [in 1.14.4] - - changed default value of PATH to - `/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.' - [in 1.14.4] - -documentation/bash.1 - - updated the example of the default path in the description of - the PATH variable - -lib/readline/readline.c - - set up a table of `legal' LC_CTYPE values and match the value of - $LC_CTYPE against it when deciding whether or not to default to - eight-bit input and output - - check for LC_ALL, LC_CTYPE, and LANG, in that order, for names to - check against the legal_lc_ctype_values table - -lib/readline/bind.c - - moved strindex, stricmp, and strnicmp to lib/readline/util.c, - added _rl_ prefix to names - - some miscellaneous code cleanups and speedups - -lib/readline/rldefs.h - - define _POSIX_VDISABLE as _SVR4_VDISABLE if there is a define - for the latter and not the former [in 1.14.4] - - moved defining _rl_stricmp and _rl_strnicmp as strcasecmp and - strncasecmp, respectively, here from bind.c, since the functions - are now defined in util.c and used in two files - -builtins/common.c - - removed the \n case in double_quote, so a backslash is not added - before an existing newline. The \<newline> pair is removed by - the parser before anything else in the shell gets hold of it - except within single quotes [in 1.14.4] - - 1/30 + 2/28 ---- -general.c - - make sure the string index in canonicalize_pathname never goes - < 0 (it can, in some cases, result in `start' being -1, and `i' - being set to that) [in 1.14.4] - - 2/1 - --- execute_cmd.c - - fix a typo in a call to `access' in AFS-specific code [in 1.14.4] - - 2/3 - --- -builtins/shopt.def - - finally added new `shopt' builtin - -builtins/umask.def - - converted to use builtin_getopt - -bashhist.c - - support for storing literal newlines in the history list when - command_oriented_history is enabled, rather than using semicolons - -builtins/Makefile - - changed rule to make a .o file from a .def file to remove the - .c file if the compilation fails - - 2/6 - --- -bashhist.c - - added new variable `force_append_history' that will force the - history list to be appended to the history file at shell exit - - new function, maybe_append_history, to append any history lines - from the current session to the history file. Used by history -a - -builtins/bind.def - - changed the `-d' option to -p - -builtins/set.def - - added `allenv' as a -o synonym for `set -k'. Now all of the - single-letter shell options have -o equivalents - -builtins/shopt.def - - added -p option to display shell options, like other builtins - - added `interactive_comments' as a shell option, like set -o - -builtins/bind.def, builtins/history.def, builtins/enable.def - - changed use of multiple variables to hold option flag settings to - one variable with bits representing flag values - -documentation/bash.1, documentation/features.texi - - changed the description of the `bind' builtin for the new -p option - - changed the description of the `set' builtin for the new - `-o allenv' option - - updated the description of the `shopt' builtin - -builtins/history.def - - changed -a option to use maybe_append_history - -subst.c - - changed the substring/subarray code to make negative offsets - count backwards from the end of the string or array + - if execute_for_command finds that the iteration variable is readonly, + decrement loop_level before returning -builtins/bashgetopt.c - - added option modifiers `;' (argument is optional) and `#' - (argument is optional, but if present must be numeric) +builtins/break.def + - if the break count is <= 0, display an error message and break out + of all loops -builtins/hash.def - - converted to use builtin_getopt - - broke code out into a new function: add_hashed_command +builtins/command.def + - if PATH is unset, and we're using command -p, we don't want PATH + to be set to the empty string when `command' completes - 2/7 - --- -builtins/getopt.c - - changed to save state to avoid relying on `nextchar' staying the - same across calls to sh_getopt [in 1.14.4] - - added a function to restore `nextchar' from this saved state - [in 1.14.4] - - removed some dead code +builtins/common.c + - POSIX.2 says `kill -l signum' prints the signal name without the + leading `SIG' prefix, so check for this_shell_builtin == kill_builtin + in display_signal_list builtins/getopts.def - - call function to restore sh_getopt state when parsing explicitly - supplied arguments rather than the positional parameters [in 1.14.4] + - when invoked without any arguments, `getopts' now prints a usage + message -lib/readline/vi_mode.c - - fixed an off-by-one error in _rl_vi_done_inserting that put the - \0 in vi_insert_buf at offset `len' instead of `len - 1' - -lib/readline/complete.c - - print_filename now filters out control characters and displays - them in printable format, rather than relying on the tty driver - to do the right thing [in 1.14.4] - - 2/8 + 3/3 --- -lib/posixheaders/stdc.h - - test for each special keyword being defined individually, rather - than just testing on `const' [in 1.14.4] - -lib/readline/util.c - - new function _rl_abort_internal; rl_abort just calls this - -nojobs.c - - include error.h for extern function definitions [in 1.14.4] - -builtins/ulimit.def - - include <unistd.h> if HAVE_UNISTD_H is defined - - use HAVE_LIMITS_H to decide whether or not to include <limits.h> - -variables.c, subst.c, builtins/set.def - - removed special handling of `noclobber' variable - -builtins/set.def - - new function set_shellopts to set up the $SHELLOPTS variable - based on the values of the set -o options; `set' calls this - function whenever one of the options is changed - - new function parse_shellopts to take the value of SHELLOPTS and - turn on each option found therein - - new function initialize_shell_options to parse any inherited - value of $SHELLOPTS and set up $SHELLOPTS - -shell.c - - call initialize_shell_options at the end of shell_initialize() - -execute_cmd.c, general.c - - moved extract_colon_unit from execute_cmd.c to general.c - -execute_cmd.h, general.h - - moved extern declaration of extract_colon_unit from - execute_cmd.h to general.h - -documentation/{bash.1,features.texi} - - documented SHELLOPTS - - 2/18 - ---- -builtins/{shopt,pushd,jobs,umask}.def - - removed the `longjobs', `longdirs', `pushd_home' and `symbolic_umask' - options - -lib/readline/{histexpand,histsearch,histfile}.c, lib/readline/histlib.h - - new files, split off from old history library history.c - -lib/readline/history.c, lib/readline/history.h - - new function clear_history() to clear the history list - -lib/readline/doc/hstech.texinfo - - documented clear_history () - -builtins/pushd.def - - new function clear_directory_stack() to delete all elements of - the dir stack - - new -c option for `dirs' to clear directory stack - - new function get_dirstack_index for dirs -N and dirs +N to use - - new function get_dirstack_element(i, dir) for use by other parts of - the shell that want the functionality of dirs -N and dirs +N - (dir is 1 for dirs +N, -1 for dirs -N) - - new function set_dirstack_element(i, dir, val) for use by other - parts of the shell to change values in the dirstack (dir is -1 - for dirs -N, +1 for dirs +N). Used when assigning to $DIRSTACK. - -builtins/history.def - - new -c option to clear the history list - -documentation/bash.1, documentation/features.texi - - removed no-longer-valid shopt options - - documented new dirs -c option - - documented new history -c option - - documented new \T and \H prompt escape sequences - - documented new $DIRSTACK dynamic array variable - - documented the new expand-glob and list-glob readline commands - -variables.c - - set PS4 to its default value of `+ ', so that unsetting it will - disable the tracing characters [in 1.14.4] - - new framework for dynamic array variables -- each place an - array index is assigned to, a test is made. if a dynamic - assignment function exists, it is called with args `self', - the index being assigned to, and the new value - - new variable `$DIRSTACK', a dynamic array variable that holds - the current contents of the directory stack. You can even - change the stack by assigning to thie variable - -shell.c - - changed indirection_level_string to return the null string if - $PS4 is unset or null [in 1.14.4] - -parse.y - - new \H prompt escape for hostname up to first `.'; changed \h - to return full hostname (like \w/\W) - - new \T prompt escape for 12-hour time - -bashline.c - - new readline functions to expand glob patterns and insert or - list the expansions (special completion functions) - - - 2/20 - ---- -builtins/pushd.def - - new code for `pushd -n' and `popd -n' to inhibit cd when - adding or removing directories from the stack - - broke functionality off into separate functions for use by the - $DIRSTACK manipulation functions - - 2/21 - ---- -lib/readline/kill.c - - new functions to copy words to the kill ring, backward or - forward - -lib/readline/readline.h - - extern declarations for rl_copy_{backward,forward}_word +builtins/common.c + - add a second argument to get_numeric_arg: if non-zero, the shell + exits on a bad argument; if not, the shell jumps to top_level + with a DISCARD argument, which aborts the current command +builtins/{break,exit,history,return,shift}.def + - change calls to get_numeric_argument lib/readline/funmap.c - - new bindable readline commands: copy-backward-word and - copy-forward-word to copy portions of the line to the kill - ring without deleting them - -documentation/{bash.1,readline.3}, lib/readline/doc/hsuser.texinfo - - documented the new copy-backward-word and copy-forward-word - readline commands - -mailcheck.c, config.h - - the declaration of DEFAULT_MAIL_PATH is now only in config.h - and used by mailcheck.c and variables.c. There is no need to - use DEFAULT_MAIL_PATH_LEN; `sizeof' does the job [in 1.14.4] - - 2/22 - ---- -support/mksysdefs - - changes to fix `RELEASE' if it ends up being set to the empty string - [in 1.14.4] - - check for amdahl UTS [in 1.14.4] - - check for SGI Irix version 6.x [in 1.14.4] - -machines.h - - new entry for Amdahl UTS [in 1.14.4] - - changes to the SGI entry for Irix 6.x [in 1.14.4] - - 2/23 - ---- -machines.h - - changes for BSD/OS 2.0 (M_OS now set to `BSD_OS') [in 1.14.4] - -support/mksysdefs - - change to recognize BSD/OS 2.0 and set SYSDEF to BSDI2 [in 1.14.4] - -siglist.h - - don't declare sys_siglist on BSD/OS 2.0 [in 1.14.4] - - 2/24 - ---- -parse.y - - if reset_parser is called while the prompt command is being - executed because of a syntax error in $PROMPT_COMMAND, an - infinite loop results. set token_to_read back to 0 at the - end of execute_prompt_command to stop the looping [in 1.14.4] - - 2/25 - ---- -mailcheck.h - - new header file for mail-checking and related definitions - - declaration of DEFAULT_MAIL_PATH is now here - -mailcheck.c - - new function, make_default_mailpath, which constructs a default - $MAILPATH string from DEFAULT_MAIL_PATH [in 1.14.4] - - change remember_mail_dates to call make_default_mailpath - [in 1.14.4] - -externs.h - - moved function declarations for functions in mailcheck.c to - mailcheck.h - -variables.c - - change initialize_shell_variables to call make_default_mailpath - [in 1.14.4] - - removed some unneeded variables in initialize_shell_variables - - 2/26 - ---- -lib/readline/callback.c - - new file with readline callback function interface - -lib/readline/rlconf.h - - new READLINE_CALLBACKS define for the readline callback code to - be compiled in and available - -lib/readline/readline.c - - broke readline_internal into three functions: readline_internal_setup, - readline_internal_charloop, and readline_internal_teardown - - changes for READLINE_CALLBACKS + - add `dump-macros' to list of bindable names lib/readline/readline.h - - extern declarations for the readline callback code - -cpp-Makefile - - added lib/readline/callback.c to the list of readline files - -lib/readline/input.c - - added a layer of indirection to allow the user to specify the - function that reads a character from rl_instream. The variable - name is rl_getc_function, set by default to rl_getc - - 2/27 - ---- -lib/readline/display.c - - added a variable rl_redisplay_function to allow an application- - specified redisplay function, for those apps that want to control - redisplay + - added extern declaration for rl_prompt (it was apparently missing) lib/readline/readline.c - - extern declarations for rl_getc_function and rl_redisplay_function - -lib/readline/{readline,display,isearch,search,parens}.c - - changed to call through rl_redisplay_function rather than - rl_redisplay directly - -parse.y - - try to avoid some work in reset_readline_prompt and prompt_again - if the prompt is the empty or null string [in 1.14.4] + - new internal function, _rl_init_line_state, which sets rl_point + and rl_end to 0, sets the_line to point to _rl_line_buffer, and + clears the line -lib/readline/readline.c - - call rl_expand_prompt unconditionally [in 1.14.4] +lib/readline/callback.c + - if a user's callback function does not clear the line, clear it + for him by calling _rl_init_line_state -lib/readline/display.c - - short-circuit out of rl_expand_prompt if the prompt string is null - after clearing out the saved local prompt values. This allows - $PS2 to be set to "" [in 1.14.4] + 3/4 + --- +alias.c + - made the readline support functions #ifdef READLINE, so they're + not compiled into the shell unless readline is -lib/readline/doc/rltech.texinfo - - documented the callback code and functions - - documented rl_getc_function and rl_redisplay_function +lib/readline/bind.c + - new function _rl_untranslate_macro_value, to expand meta-prefixes + and other special characters in a macro value for printing by + _rl_macro_dumper_internal + - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to + get a printable version of the macro value -lib/readline/{callback,readline,rltty,signals}.c - - added layer of indirction for terminal prep and deprep, with - rl_term_prep_function and rl_term_deprep_function. These are - set by default to rl_prep_terminal and rl_deprep_terminal, - respectively +lib/readline/readline.c + - new variable, rl_dispatching, set to 1 when we call a function + from _rl_dispatch lib/readline/readline.h - - make rl_term_prep_function and rl_term_deprep_function available - to callers + - extern declaration for rl_dispatching - 3/1 - --- lib/readline/complete.c - - broke the (long, complicated) rl_complete_internal code into a - number of separate functions: - - find_completion_word - gen_completion_matches - remove_duplicate_matches - display_matches - insert_text - insert_match - append_to_match - insert_all_matches - - - made some efficiency improvments to filename_completion_function - - the completion ignore function is now called no matter what type - of completion is being performed (as it should have been all along) - -lib/readline/rldefs.h - - use #defines for the possible values ORed into `found_quote' by - the completion code - - 3/2 - --- -make_cmd.c, general.c - - moved make_word_array from make_cmd.c to general.c, renamed to - word_list_to_argv, extended it to optionally not malloc all of - the strings and to reserve space at the start of the array - -execute_cmd.c - - changed to use word_list_to_argv, not mallocing space for the - strings - -builtins/common.c, builtins/common.h - - new function make_builtin_argv, which uses word_list_to_argv - and reserves 1 slot at the beginning for the command name + - make sure S_ISCHR and S_ISBLK are defined before using them -builtins/exec.def - - changed to use word_list_to_argv +lib/readline/terminal.c + - add a new #define NEED_EXTERN_PC. Define this if the termcap + or curses libraries need `extern' before declarations of PC, + BC, and UP -builtins/{getopts,test}.def - - changed to use make_builtin_argv +lib/readline/{readline,terminal,histfile}.c + - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally + sent by ilya@math.ohio-state.edu -subst.c - - new function match_pattern_char, to see if the first char of - a string has a chance to match a given pattern (test against - the first char of the pattern); used by match_pattern in the - MATCH_ANY case +builtins/set.def + - fixed a bug in set_shellopts that caused the shell to crash if + there were no shell options set - 3/3 + 3/5 --- -jobs.c - - renamed flush_child to sigchld to capture the functionality better +configure.in,Makefile.in + - choose run-all or run-minimal as the test script based on whether + the --enable-minimal-config option was given to configure -array.c - - new function array_pat_subst, to do pattern substitution on each - element in an array - -array.h - - extern declaration for array_pat_subst - -subst.c - - new function pat_subst to do pattern matching and substitution on - a string - - new function parameter_brace_pat_subst to implement - ${v/[/]pat[/sub]}; calls pat_subst for simple vars, - pos_params_pat_subst to do substitution on the positional params, - and array_pat_subst for things like ${v[@]/p/r} - -subst.h - - extern declaration for pat_subst so array.c can find it +builtins/setattr.def + - fixed `export -p' and `readonly -p' so that they output `export' + or `readonly' when in POSIX mode, as POSIX.2 specifies 3/6 --- -parse.y - - <>filename now dups filename to file descriptor 0 for both input - and output even when not in posix.2 mode +builtins/setattr.def + - make `readonly -a var=(...)' work just like `declare -ar var=(...)', + since the two logically mean the same + - `readonly -f' and `export -f' don't print the function definition + for each readonly or exported function, respectively, when in + POSIX mode -bashline.c - - add the globbing characters to the list of characters that need - to be quoted by filename completion +jobs.c, nojobs.c + - don't report status for processes killed by SIGPIPE if + DONT_REPORT_SIGPIPE is defined -jobs.h - - new convenience macros: - RUNNING, STOPPED, DEADJOB - to test a job's state - IS_FOREGROUND, IS_NOTIFIED, IS_JOBCONTROL - flags +config.h.top + - added a commented-out define for DONT_REPORT_SIGPIPE -jobs.c, builtins/{kill,fg_bg}.def - - changed to use new jobs.h macros +execute_cmd.c + - `time' can now be used to time background pipelines, and reports + the timing statistics when the pipeline completes - 3/7 - --- -array.c, array.h - - new function dup_array_subrange(a, s, e) to make a new array - out of the elements of array A between S and E, inclusive - - add `quoted' parameters to array_subrange and array_pat_subst - to preserve proper quoting of elements when expanding things - like "${av[@]/xx/yy}" - - new function array_quote to quote the members of an array like - the functions in subst.c +[bash-2.01-alpha1 frozen] + 3/12 + ---- subst.c - - pass the quoted flag to array_subrange and array_pat_subst - - quote_string is no longer static - -subst.h - - extern declaration for quote_string - -builtins/hash.def - - added a -p pathname option to specify a pathname for the command - name to be hashed. With -p, no path search is performed. - -lib/readline/histexpand.c - - broke history_tokenize off into history_tokenize_internal and - added two arguments: a character index and a word index. If - the char index is >= 0, the word index will be modified to point - into the returned array of strings to the word surrounding that - particular character index - - new function history_find_word(line, ind) to return the word - containing the character at index IND in LINE - - new variable search_match, found by history_find_word, to hold the - word last matched by a !?string? search - - corrected a problem with the `%' modifier: it should insert the - word last matched, not the last search string - - 3/8 - --- -cpp-Makefile - - changed INSTALL_PROGRAM and INSTALL_DATA to use support/install.sh - - changed `install' target to not explicitly save the old version of - bash in `bash.old'; let install take care of it + - move the parent end of the pipe file descriptor used for process + substitution to a high, unused file descriptor to avoid clashes + with redirections performed explicitly by a script -shell.c - - new static variable `running_under_emacs', set to 1 if the - variable `EMACS' is in the startup environment, and to 2 if - we're running under the `eterm' terminal emulator - - send an escape sequence to eterm if running_under_emacs is 2 - after executing any $PROMPT_COMMAND to tell it the current - directory - - 3/9 - --- -builtins/ulimit.def - - made getting -u work for systems that have a MAXUPRC define. - it still cannot be set without RLIMIT_NPROC - -shell.c - - include trap.h for sig definitions - -builtins/common.h, subst.h, general.h, externs.h - - more extern function declarations - -bashhist.c - - new function, bash_history_disable(), to turn off history and - history expansion - - bash_history_disable now sets history_expansion_inhibited - -bashline.h - - new file with extern declarations from bashline.c +configure.in + - added a `--with-curses' argument so curses can be forcibly chosen + over libtermcap (some Unix versions ship lousy termcap databases) -parse.y, bashhist.c, builtins/bind.def, subst.c, sig.c - - include bashline.h +support/mkconffiles + - new script to create _distribution and _patchlevel from values + contained in `configure' - 3/10 - ---- -lib/glob/glob.h - - new file with extern declarations for local glob library - -shell.c - - include glob.h, mailcheck.h - -cpp-Makefile - - changes to dependencies due to mailcheck.h, bashline.h, glob.h +doc/bashref.texi + - updated installation instructions 3/13 ---- -execute_cmd.c - - new function execute_connection to execute commands of type - cm_connection - - new function execute_pipeline, to execute pipelines - -lib/readline/rltty.c - - add a `tty' argument to the set_winsize function/macro, the - non-shell version needs it +general.c + - if `getgroups' returns 0, make sure we add the primary group id + as GROUPS[0]. + - if we have getgroups, and the primary gid is not in the array + getgroups returns, add it as group_array[0] and shuffle everything + up one element. This ensures that current_user.gid == group_array[0] + all the time + +tests/builtins.tests + - changes to avoid stray variables in environment when the shell + version of printenv is used with bash as /bin/sh, running the + `exec -c' tests. 3/14 ---- -parse.y - - added \a (bell) and \e (escape) prompt string escape sequences - - 3/16 - ---- -lib/readline/display.c - - fixed bug in update_line that caused stray characters to be left on - lines after the first if characters are deleted so that the first - line becomes exactly as long as the screen width [in 1.14.4] - -lib/readline/doc-support - - brought in the GNU getopt because texindex needs it +builtins/cd.def + - spelling correction is no longer enabled by default -documentation/Makefile - - adopted the BSD convention of a suffix of `.0' for formatted - manual pages +support/bashbug.sh + - if the shell's release status is alpha or beta, offer the option + of sending the bug report to the bash-testers mailing list as + well as to chet 3/17 ---- -support/inpath - - a script to find out if a particular command name appears in - a directory in $PATH [in 1.14.4] - -support/mksysdefs - - changed to use inpath to find `ranlib' [in 1.14.4] - - 3/18 - ---- -bashline.c - - include bashline.h - - removed the DYNAMIC_HISTORY_COMPLETION define; that code is now - included unconditionally - - renamed ETCHOSTS to DEFAULT_HOSTS_FILE; moved definition to - bashline.h - - moved definition of BRACE_COMPLETION to config.h - -config.h - - conditional definition of BRACE_COMPLETION is now here - -pathnames.h - - new file with defines that are absolute pathnames - -shell.h - - include pathnames.h - -mailcheck.h - - def of DEFAULT_MAIL_PATH now moved to pathnames.h - -shell.c - - def of SYS_PROFILE moved to pathnames.h - -alias.h - - removed a bunch of extra definitions - -lib/readline/{vi_mode.c,bind.c} - - removed superfluous STATIC_MALLOC code - -variables.c - - removed SHADOWED_ENV code - - 3/20 - ---- -machines.h - - don't define USG or USGr3 for linux machines [in 1.14.4] - - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf - compatibility - -shell.c - - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf - compatibility - -support/mksysdefs, maxpath.h - - change HAVE_SYS_PARAM to HAVE_SYS_PARAM_H for autoconf - compatibility - -support/mksysdefs, jobs.h - - use HAVE_SYS_WAIT_H - -machines.h, error.c - - change HAVE_VFPRINTF to HAVE_VPRINTF for autoconf compatibility - -test.c - - replace UID_T and GID_T with GETGROUPS_T, the size of the elements - of the array returned by getgroups - -general.c - - define HAVE_KILLPG if killpg() is present; compile in a replacement - killpg if not - -machines.h, jobs.c - - change BSD_GETPGRP to HAVE_BSD_PGRP +configure.in + - configure --without-gnu-malloc by default on *-sgi-irix6* because + their code needs 8-byte alignment -sig.c - - don't call initialize_siglist if HAVE_SYS_SIGLIST is defined, no - longer use INITIALIZE_SIGLIST +support/bashbug.sh + - ``' needs to be quoted with a backslash in double-quoted strings -machines.h, lib/malloc/malloc.c - - change NO_SBRK_DECL to SBRK_DECLARED +aclocal.m4 + - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or + 1 from strcmp(3) but a numeric collation order difference from + strcoll(3) - 3/22 + 3/18 ---- -machines.h - - BSD/OS 2.0 does not need INT_GROUPS_ARRAY in SYSDEP_CFLAGS - -lib/readline/rldefs.h - - don't check `Linux'; just include <termcap.h> if HAVE_TERMCAP_H - is defined - -builtins/command.def - - changed get_standard_path to use HAVE_CONFSTR +command.h + - new redirection error code: HEREDOC_REDIRECT execute_cmd.c - - execute_simple_command no longer uses alloca - - don't check RISC6000 anymore when deciding whether to use - #pragma alloca - -execute_cmd.c, shell.c - - check for ultrix instead of Ultrix when calling alloca(0) - -jobs.h - - check HAVE_UNISTD_H to see whether to declare fork, getpid, - and getpgrp + - return HEREDOC_REDIRECT from do_redirection_internal when + here_document_to_fd cannot create the temp file for a here document + - changed redirection_error to print a meaningful message when + here document temp file creation fails (HEREDOC_REDIRECT) -builtins/common.c - - include <signal.h> for NSIG - -sig.h - - don't define SIGABRT as SIGIOT unless SIGIOT is defined + 3/19 + ---- +subst.c + - changes to match_pattern_char: return 1 if the first char of the + pattern is `?' only if the string is non-null; just return 1 if + the first char of the pattern is `[' and the string is non-empty + rather than try to re-implement the brace matching code from fnmatch -jobs.c - - check for ultrix instead of Ultrix +lib/glob/fnmatch.c + - some changes from glibc-2.0.1 posix/fnmatch.c - 3/23 + 3/21 ---- -general.c, general.h - - new function check_dev_tty, which makes sure we can open - /dev/tty +variables.c + - only do the initialization of `ignoreeof' if the shell is + interactive + - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and + don't call itos, since we don't need its generality + - new function, initialize_shell_level, just calls adjust_shell_level + with argument of 1. If $SHLVL is unset, adjust_shell_level will + deal with it correctly + - change initialize_shell_variables to not malloc a copy of each + environment variable, just keep two pointers into the env string: + one for the name, one for the value + - broke the code that computes the value of $BASH out into a separate + function: get_bash_name + - get_bash_name special-cases shell_name with a `./' prefix when + initializing $BASH + - new function: set_home_var, sets $HOME to current_user.home_dir if + it's not already set, calling get_current_user_info if + current_user.home_dir is NULL + - new function: set_shell_var, sets $SHELL to current_user.shell if + it's not already set, calling get_current_user_info if + current_user.shell is NULL + - changed places that reference information in current_user to check + for NULL values of the member they're interested in and call + get_current_user_info if necessary shell.c - - call check_dev_tty instead of having the code inline - -posixstat.h - - removed references to isc386 - -general.h - - code to define one of TERMIOS_TTY_DRIVER, TERMIO_TTY_DRIVER, - or NEW_TTY_DRIVER + - moved the code that sets up the information in current_user that + comes from the password file into a new function, + get_current_user_info + - shell_initialize calls get_current_user_info only if the shell is + interactive -jobs.c, nojobs.c - - use the general.h code to define the tty driver types +externs.h + - new extern declaration for get_current_user_info(), so variables.c + can use it 3/24 ---- -builtins/declare.def - - new -p option to display variables and their values and attributes - `declare -p xxx' displays attribs and value of var `xxx' - -builtins/setattr.def - - new function to display the attributes and value of a particular - variable; used by set_or_show_attributes - - new function to look up a variable by name and show that name's - attributes and value - -builtins/common.c - - declarations for new functions in setattr.def - -variables.c - - don't set a default value for MAILPATH in initialize_shell_variables; - let remember_mail_dates take care of it [in 1.14.4] - -mailcheck.c - - fixed an off-by-one bug in make_default_mailpath [in 1.14.4] +lib/tilde/tilde.c + - if SHELL is defined, user the current_user struct info to find + the user's home directory rather than calling getpwuid - 3/28 + 3/25 ---- -[changes for autoconf-generated config files] - -lib/malloc/malloc.c - - use HAVE_GETPAGESIZE, HAVE_BSD_SIGNALS, HAVE_POSIX_SIGNALS - -trap.c - - remove tests for USG and USGr4 - - test on HAVE_POSIX_SIGNALS rather than _POSIX_VERSION - - use MUST_REINSTALL_SIGHANDLERS define to decide whether trap_handler - should call signal again - -getcwd.c - - redid the directory includes for autoconf compatibility - - use HAVE_LSTAT instead of testing for S_ISLNK - - use STRUCT_DIRENT_HAS_D_INO - - include memalloc.h for alloca define - -general.h - - cleaned up strchr, strrchr definitions - - removed tests against USG - - use HAVE_MEMMOVE instead of MEMMOVE_MISSING - -jobs.c - - use HAVE_WAIT3, MUST_REINSTALL_SIGHANDLERS, GETPGRP_VOID - -mailcheck.h - - removed definition of DEFAULT_MAIL_DIRECTORY; now set by - autoconf in config.h - -shell.c - - remove checks on USG, just check for HAVE_GETPW_DECLS - - use C_ALLOCA define - - redid the isnetconn() code using HAVE_SYS_SOCKET_H, - HAVE_GETPEERNAME, SVR4 and SVR4_2 - -general.c - - use HAVE_KILLPG, HAVE_RESTARTABLE_SYSCALLS, HAVE_UNAME, - ULIMIT_MAXFDS, HAVE_TIMEVAL, HAVE_TIMES - -lib/readline/rldefs.h - - redid the tty driver definitions using HAVE_TERMIOS_H, etc. - - don't define anything having to do with signal type - -lib/glob/glob.c - - redid the DIRENT defines and includes - - redid other includes to remove dependencies on USG and system - type (e.g., NeXT) - -builtins/times.def - - changed to use HAVE_GETRUSAGE, HAVE_TIMEVAL, HAVE_TIMES, and - the autoconf way to include <sys/time.h> and <time.h> - -builtins/ulimit.def - - changed to use HAVE_GETRLIMIT - - removed test of USG being defined - -siglist.h - - changed to use SYS_SIGLIST_DECLARED, HAVE_UNDER_SYS_SIGLIST, and - HAVE_STRSIGNAL - -print_cmd.c - - use PRINTF_DECLARED - -builtins/command.def - - use HAVE_CONFSTR along with _CS_PATH to get the standard path - -execute_cmd.c - - only compile in execute_shell_script if HAVE_HASH_BANG_EXEC is not - defined - nojobs.c - - use HAVE_SIGINTERRUPT, HAVE_KILLPG, HAVE_POSIX_SIGNALS, - MUST_REINSTALL_SIGHANDLERS, HAVE_WAITPID, *_TTY_DRIVER defines + - don't try to open /dev/tty when getting or setting the tty state + and window size; use shell_tty instead + - initialize shell_tty to standard error in initialize_job_control + - only fetch the tty state initially if the shell is interactive -test.c - - set up a new `getmaxgroups' define, moving the code out of inline - - eliminate use of GETGROUPS_T +general.c + - open /dev/tty with the O_NONBLOCK flag variables.c - - use CAN_REDEFINE_GETENV - -sig.c, sig.h - - use HAVE_POSIX_SIGNALS, MUST_REINSTALL_SIGHANDLERS - -pathnames.h - - removed the default mail directory defines; now set by autoconf - -oslib.c - - new file, functions from general.c that are unix-version variable - -general.h - - slightly changed function declarations for use by oslib.c - -support/bashbug.sh - - changed @xxx@ to !xxx! for sed substitutions to avoid conflicts - with autoconf substitutions in the Makefile - - added MACHTYPE variable - -mailcheck.c - - changed DEFAULT_MAIL_PATH to DEFAULT_MAIL_DIRECTORY, since that - more clearly defines its function - -lib/readline/rltty.h - - new file, to include the correct tty driver #include file - -lib/readline/rltty.c - - include rltty.h - -lib/malloc/malloc.c - - make systems with Posix signals block all signals while malloc - is executing - - 3/29 - ---- -input.c - - use off_t as the type of a seek offset, rather that int or long - -variables.c, oslib.c - - moved `getenv' from variables.c to oslib.c - - 3/31 - ---- -sig.c, sig.h - - new function, jump_to_top_level, which just calls longjmp with - top_level as an argument -- here to isolate calls to longjmp - -subst.c - - replaced calls to longjmp with jump_to_top_level - -bashjmp.h - - new file with setjmp/longjmp defines and declarations - -shell.h, nojobs.c - - include bashjmp.h in place of setjmp.h - -shell.c, sig.c, execute_cmd.c, unwind_prot.h, expr.c, -builtins/{return,source}.def - - change to use new defs in bashjmp.h - -subst.c - - make sure PAT and REP in pattern substitution are run through - expand_string_unsplit + - changed all_vars so that it sorts its output all the time, not + just when in POSIX mode. This means that the output of `set' + and `export' will be sorted builtins/set.def - - don't try to blindly dereference the value returned by - find_flags in set_shellopts - - 4/2 - --- -aclocal.m4, config.h.in, config.h.top, config.h.bot, configure.in, -support/install.sh, support/config.guess, support/config.sub - - new files for (now official) autoconf-based configuration - -Makefile.in, builtins/Makefile.in, -lib/{doc-support,malloc,glob,termcap,tilde,readline}/Makefile.in - - new Makefiles for autoconf - -[additionally, all source files now include config.h] - - 4/3 - --- -array.c, array.h - - index_t --> arrayind_t, because some systems define index_t in - <sys/types.h> - - 4/4 - --- -aclocal.m4 - - fix test for broken dup2 - -lib/*/Makefile.in - - make all object files depend on $(BUILD_DIR)/config.h - - 4/5 - --- -array.c - - fixed problems in empty_array: need to reset max_index - and max_size, and remove the links in the element chain - after freeing them - -jobs.c - - new functions to save an array of status values for each - foreground job that exits (degenerate case is to have a - single-process job exit and have a 1-element array) - - new function to set a shell array variable `PIPESTATUS' - which holds the status values from each member of the - last-executed pipeline that spawned children - -documentation/bash.1 - - documented $PIPESTATUS - - 4/6 - --- -configure.in - - added new --with-afs argument to #define AFS for execute_cmd.c - - 4/10 - ---- -builtins/ulimit.def - - use sysconf(_SC_CHILD_MAX) to find the maximum number of child - proceeses per user if HAVE_SYSCONF and _SC_CHILD_MAX are both - defined and RLIMIT_NPROC is not - - 4/12 - ---- -lib/readline/undo.c - - new variable, local to library, to keep track of the number of - `open' undo groups (UNDO_BEGIN without corresponding UNDO_END) - - new function _rl_fix_last_undo_of_type to modify start and end - bounds of last undo record of a specified type - -lib/readline/vi_mode.c - - _rl_vi_done_inserting now calls rl_end_undo_group if the count - of unclosed groups is > 0 - - fixed rl_vi_change_to to save an undo record when redoing and - to fix the buffer corruption when doing `u' undo after a `.' - redo of `C' - - 4/13 - ---- -unwind_prot.h - - changed to use a union { char *s; int i; } when unwind-protecting - integers to force correct alignment on machines where ints and - pointers differ in size + - in initialize_shell_options, only call parse_shellopts if we + inherited $SHELLOPTS from the environment + - make sure we call parse_shellopts from initialize_shell_options + with a copy of the value of SHELLOPTS, in case one of the functions + called while setting one of the variables modifies $SHELLOPTS lib/readline/readline.c - - new variable Keymap rl_executing_keymap, which is set to the - keymap the last function was invoked out of + - make sure that digit arguments don't change the state of + rl_last_func -lib/readline/bind.c - - new variable Keymap rl_binding_keymap, which is set to the last - keymap a function and key sequence were bound in +support/printenv.c + - new file, printenv(1) clone, used to avoid environment variables + that might be set automatically when using printenv.sh - 4/17 +lib/tilde/tilde.c + - if SHELL is defined, don't call getenv to get the value of $HOME, + call get_string_value () directly + + 3/26 ---- -general.c - - removed xmalloc, xrealloc, xfree to xmalloc.c +lib/readline/histexpand.c + - abstracted the `#ifdef SHELL' stuff that checked for special cases + that should not be history expanded ([!...], ${!...}) into a call + to a function that is the value of the + new history_inhibit_expansion_function variable -lib/malloc/Makefile.in - - MALLOC and ALLOCA are both set by autoconf - - need to provide some empty stub file to make up the library - in case neither malloc.c and alloca.c are compiled into the - shell +lib/readline/history.h + - extern declaration for history_inhibit_expansion_function -lib/malloc/gmalloc.c - - new file, GNU libc malloc code +bashhist.c + - new function, bash_history_inhibit_expansion, which checks for + the special cases in which history expansion should be inhibited + - changes to the various history initialization functions to + set history_inhibit_expansion_function -Makefile.in - - new source file, xmalloc.c, new object file, xmalloc.o +lib/readline/doc/hstech.texinfo + - documented history_inhibit_expansion_function -general.h - - changed type of size argument to xmalloc, xrealloc to `size_t' +lib/readline/shell.c + - new file, containing versions of the functions that are provided + by bash when readline is linked as part of bash + - new function: get_env_value(). If SHELL is defined, this calls + get_string_value(). If SHELL is not defined, this calls getenv() -configure.in - - changes for new argument `--with-glibc-malloc' that includes - gmalloc.o in libmalloc.a +lib/readline/histexpand.c + - moved single_quote() to shell.c - 4/18 - ---- -xmalloc.c - - if malloc or realloc return null, report in the error message - how many bytes have been allocated +lib/readline/util.c + - moved savestring() to shell.c -lib/readline/display.c - - changed redisplay code to use an array of positions in the visible - and invisible lines at which to break lines instead of simply - calculating based on the screenwidth and number of invisible - characters. In the future, this will allow newlines embedded in - the lines to display to be handled better +lib/readline/terminal.c + - moved set_lines_and_columns() to shell.c -[Bash-1.14.4 released to net] +lib/readline/Makefile.in, Makefile.in + - added shell.c and shell.o to the appropriate variables that contain + the files comprising the readline and history libraries - 4/19 - ---- lib/readline/signals.c - - changed last call to signal() to call rl_set_sighandler() - - 4/20 - ---- -lib/readline/display.c - - changed some ascii-specific code to use CTRL_CHAR and UNCTRL - - finished up the changes that keep an array of line breaks - -shell.h - - moved #define constants for parameter pattern substitution here - from subst.c + - introduced two new cpp defines: HANDLE_JOB_SIGNALS and + HANDLE_SIGTERM. When HANDLE_JOB_SIGNALS is defined, SIGTSTP, + SIGTTIN, and SIGTTOU are caught and handled. When HANDLE_SIGTERM + is defined, SIGTERM is caught and handled. These are both + defined automatically if SHELL is not defined -subst.c - - changed the pattern substitution functions to take a `flags' - parameter, which subsumes the match type, global replacement - flag, and quoted variables - - changed the pattern substitution functions to handle the `#' - and `%' match qualifiers, which anchor the match at the - beginning and end of the string, respectively +lib/readline/{bind,histfile,nls,readline,terminal}.c + - call get_env_value instead of getenv(). This should remove the + dependency on being able to redefine getenv() in oslib.c shell.c - - moved the code that turns off privileged mode into a function - named `disable_priv_mode' - - if the shell is running setuid or setgid and `-p' is not - supplied, turn off privileged mode and reset the effective - uid/gid + - added a missing argument of -1 to the call to list_minus_o_opts. + Now `bash -o' lists all options, not just random ones depending + on what's on the stack - 4/21 - ---- -subst.c - - added a `quoted' paramter to parameter_brace_remove_pattern; - Posix.2 says that the pattern is parsed differently if the - entire expression is double-quoted - - `getpattern' now takes a second argument, `quoted' - - fixed `getpattern' to correctly handles a pattern spec when - the whole expression is double-quoted. Posix.2 says that - quote characters inside the pattern spec don't quote any - special pattern chars if the whole thing is double-quoted. - For example, the `*' in "${foo#'*'}" is not quoted, and the - single quotes must appear literally. - -Makefile.in - - add `documentation' as a dependency of `.made' - - 4/24 - ---- -Makefile.in - - added `installdirs' target that makes bindir, infodir, mandir, - and man3dir [in 1.14.5 cpp-Makefile] - - 4/25 + 3/28 ---- -builtins/fc.def - - fixed problem with `fc -l' that occurred when fewer than 16 lines - were in the history list [in 1.14.5] +builtins/ulimit.def + - change RLIM_INFINITY to the hard limit only if the hard limit is + greater than the current (soft) limit - 5/1 - --- -Makefile.in, {builtins,documentation}/Makefile.in, lib/*/Makefile.in - - fixed up the various `clean' targets to agree with Gnu coding - standards +hashlib.c + - return immediately from flush_hash_table if the hash table passed + is NULL - 5/2 + 4/1 --- -lib/readline/complete.c - - made insert_all_matches correctly quote each of the filenames - inserted into the line, if necessary +shell.c + - remove call to initialize_filename_hashing -- initialize the hash + table the first time a hashed command has to be remembered -config.h.top - - surround definitions of DEFAULT_PATH_VALUE and STANDARD_UTILS_PATH - with #ifndef/#endif to allow them to be overridden from the command - line +hashcmd.c + - new file, with functions to perform filename hashing and lookup + taken from builtins/hash.def and builtins/common.c + - change to remember_filename -- call initialize_filename_hashing + if hashing_initialized is 0 -builtins/set.def - - changed set -o allenv to set -o keyword for ksh88 compatibility +hashcmd.h + - new file, mostly from builtins/hashcom.h, with extern function + declarations added -documentation/{bash.1,features.texi} - - changed set -o allenv to set -o keyword +execute_cmd.c, builtins/{hash,type}.def + - include hashcmd.h for hash function and type definitions -builtins/setattr.def - - added a `nodefs' attribute to set_or_show_attributes, - show_var_attributes, and show_name_attributes to inhibit printing - of definition as well as name +builtins/{common.{c,h},hash.def} + - moved hashing functions and declarations to hashcmd.c/hashcmd.h -builtins/declare.def - - changed calls to set_or_show_attributes, and show_var_attributes - accordingly +Makefile.in, builtins/Makefile.in + - changed source and object file definitions and dependencies because + of addition of hashcmd.h and hashcmd.c - 5/3 - --- -Makefile.in - - LIBPATH -> LIBSUBDIR +builtins/hash.def + - return immediately from print_hashed_commands if hashed_commands + is empty, indicating that the hash table has not been initialized - 5/4 + 4/2 --- lib/readline/bind.c - - renamed readline variable meta-flag to be input-meta - -documentation/bash.1, lib/readline/doc/rluser.texinfo - - changed meta-flag to input-meta - -documentation/Makefile.in - - use groff -Tascii to convert .1 -> .0 - -subst.c - - new function, strip_trailing_ifs_whitespace, does the obvious - -builtins/read.def - - call strip_trailing_ifs_whitespace before assigning last - variable to remainder of input string [in 1.14.5] - - 5/5 - --- -builtins/hashcom.h - - changed check_dot member of the PATH_DATA struct to flags, and - added a HASH_CHKDOT define to replace the check_dot semantics - - add HASH_RELPATH define for flags value + - fixed translation of ESC in rl_untranslate_keyseq and + rl_untranslate_macro_value -builtins/hash.def, builtins/common.c - - instead of xxx->check_dot, use (xxx->flags & HASH_CHKDOT) - -builtins/hash.def - - if the full pathname to which a command is being hashed does - not begin with a `/', set the HASH_RELPATH flag for it - -builtins/common.c - - if a hashed filename as HASH_RELPATH set, check ./filename, - returning null if that filename is not executable - -execute_cmd.c, general.c, execute_cmd.h, general.h - - moved same_file and check_binary_file from execute_cmd.c to - general.c - -hashlib.c, Makefile.in - - renamed hash.c to hashlib.c - -hashlib.h, Makefile.in, builtins/Makefile.in, alias.h, variables.h, -execute_cmd.c, hashlib.c, builtins/hashcom.h - - renamed hash.h to hashlib.h - -variables.c, alias.c - - removed inclusion of `hash.h'; header files already include - correct file +lib/readline/{readline,kill}.c + - added an argument to _rl_fix_point telling it whether or not to + fix up the mark also; changed calls to _rl_fix_point to add the + appropriate argument Makefile.in - - new rule to remake all the Makefiles (`make Makefiles') - - more changes to adhere to GNU coding standards for the various - flavors of `clean' targets - - 5/8 - --- -documentation/Makefile.in - - use `texi2dvi' to make dvi files rather than tex and texindex - [in 1.14.5] - - don't install `bash_builtins.1' [in 1.14.5] + - changed the substitution delimiter in the `sed' commands that + create bashbug from `:' to `%' to avoid conflicts with options + containing `:' -Makefile.in - - removed instances of doc-support/texindex - - 5/9 + 4/3 --- -make_cmd.c - - new function make_bare_word, to make a WORD_DESC from a string but - not to set any of its flags - - broke make_word into make_bare_word and make_word_flags - - fixed a bug in make_word_flags to make backslash-quoting a quoting - character work right to not set the W_QUOTED flags - -subst.c, array.c, execute_cmd.c - - call make_bare_word instead of make_word in situations where we - don't want the flags set inadvertently - - 5/11 - ---- -subst.c - - removed special handling of $POSIX_PEDANTIC - - 5/12 - ---- -shell.c - - broke the code that fetches the uids and gids into a new - function, uidget() - -subst.c - - EUID and UID are no longer handled specially, since they're - readonly - - removed sv_uids function - - merge sv_histfilesize into sv_histsize - -variables.c - - instead of calling sv_uids from initialize_shell_variables, - call uidset() instead - - sv_uids -> uidset with mods to make it faster and avoid an - extra call to free, malloc, and itos - -bashhist.c - - call sv_histsize instead of sv_histfilesize - - 5/13 - ---- -pathexp.c - - moved setup_ignore_patterns here from bashline.c, so GLOBIGNORE - works even when readline is compiled out of the shell - - changed the ignore data structure to a `struct ignorevar', - defined in pathexp.h - - added functions to implement GLOBIGNORE - -bashline.c - - setup_ignore_patterns now in pathexp.c - - renamed _ignore_names to ignore_completion_names - -subst.c - - new function sv_globignore to be called when GLOBIGNORE changes - value - -documentation/{bash.1,features.texi} - - documented GLOBIGNORE - - 5/15 - ---- -documentation/texinfo.tex - - upgraded to version 2.145 from autoconf-2.3 distribution - - 5/16 - ---- -lib/readline/display.c - - delicate surgery on rl_redisplay, update_line, and _rl_update_final - to convert to using the line breaks array instead of assuming that - lines wrap because they're too long and using absolute buffer - positioning calculated from the screen width. Now the `lithist' - shopt option works right - -lib/readline/complete.c - - make sure insert_match doesn't double an opening quote character - after make_quoted_replacement adds an opening quote [in 1.14.5] - - make sure append_match doesn't double a closing quote character - [in 1.14.5] - -quit.h - - new macros: SETINTERRUPT, CLRINTERRUPT, ADDINTERRUPT, DELINTERRUPT - to manipulate the value of interrupt_state - -trap.c, sig.c, jobs.c - - changes to use the new macros from quit.h - -jobs.c - - make an a job that exits due to SIGINT make the shell act as if - it received the interrupt itself, but only if SIGINT is not - trapped [in 1.14.5] - - 5/18 - ---- -builtins/common.c - - fix up find_hashed_filename and the HASH_RELPATH code. still need - to use `shopt -s checkhash' to check the hashed pathnames. could - fix this up more to make that unnecessary in the HASH_RELPATH case - -subst.c - - new function get_array_value that does array subscripting for - things like aa[1], for use by other parts of the shell like the - expression evaluator - -expr.c - - changes to make things like $(( aa[1] + aa[2])) work without - using ${aa[1]} - -bashhist.c - - converted the HISTIGNORE code to use the `struct ignorevar' - framework, with a callback function histignore_item_func to - set the HIGN_EXPAND flag if needed - -pathexp.c - - made the `globignore' variable static - - redid the code that removes ignored names from the `names' array - in ignore_globbed_names to make it more efficient - -bashline.c - - made the `fignore' variable static - - 5/20 - ---- -Makefile.in - - made the `distclean' target remove the Makefiles in subdirectories - created by autoconf - - 5/22 - ---- -builtins/command.def - - don't allow `command -p' if the shell is restricted - -documentation/bash.1 - - documented the restriction on command -p for rbash - - 5/23 - ---- -aclocal.m4 - - add a new macro BASH_CHECK_TYPE, based on AC_CHECK_TYPE, that - allows the caller to specify the header files to be included - in the test program and provides for a default value to be - defined if the type is found in the system files - -configure.in - - check for getrusage and gettimeofday functions/syscalls - - use BASH_CHECK_TYPE to check for clock_t in sys/types.h and - sys/times.h - - use BASH_CHECK_TYPE to check for sigset_t instead of a special - BASH_TYPE_SIGSET_T - - use BASH_CHECK_TYPE to check for quad_t instead of BASH_QUAD_T - - new argument --enable-command-timing to compile in the `time' - reserved word and command timing - -general.c - - print_time_in_hz takes a `clock_t', not a `time_t' - -execute_cmd.c - - support for timing pipelines with a new function time_command - - execute_command_internal calls time_command if it is passed a - command with the CMD_TIME_PIPELINE bit set in command->flags - - new functions difftimeval and addtimeval to do arithmetic on - timeval structs with overflow - -parse.y - - new production: pipeline_command, used by list1 and simple_list1 - - pipeline_command includes rules to handle `!' and time - - code to recognize `time' as a reserved word - print_cmd.c - - new code to print `time ' before a command if the CMD_TIME_PIPELINE - flag bit is turned on - -builtins/test.def - - added description of string1 < string2 and string1 > string2 to - the long doc - -test.c - - added `<' and `>' string binary operators - -documentation/bash.1 - - documented the `time' reserved word and command timing - - documented the new test `<' and `>' binary operators - -documentation/features.texi - - documented the `time' reserved word and command timing - - added more to the section detailing the differences between bash - and sh - - added descriptions of LINENO and ENV to the Ksh variables section - - added description of echo to bash builtins section - - added PPID, BASH, SHLVL to the Bash variables section + - made the initial value and the default growth value for the + printed command somewhat smaller -- we don't really need to + allocate 4096 bytes for the printed command + - added stdarg support to xprintf if PREFER_STDARG is defined -subst.c - - added a `quoted' parameter to extract_dollar_brace_string; changed - all calls to it - - 5/24 - ---- -builtins/let.def - - wrote code for an `exp' builtin that treats all of its arguments - as an expression, concatenates them like `eval', and runs the - expression evaluator - -expr.c - - added code to do the Posix.2 conditional operator: expr?expr:expr - - added a `noeval' flag to suppress evaluation. currently it only - suppresses assignment - - added code to the && and || functions so that evaluation is - suppressed in the part of the statement that is not supposed to - be executed (a && b: set noeval if a is false; a || b; set - noeval if a is true) - - 5/25 - ---- -documentation/{bash.1,features.texi} - - documented new `expr?expr:expr' conditional expression syntax - now arithmetic evaluation is Posix.2-conformant - -lib/readline/readline.c - - added several more locale names to the list of legal $LANG - values +stringlib.c + - changed strip_trailing to take the index of the last character + as the second argument, saving a (useless) call to strlen, since + the caller already knows where the end of the string is subst.c - - fixed a bug in parameter_brace_patsub: when replacing a string - with nothing, rep was set to "", and the code attempted to - free "", which the GNU malloc upchucked on - -bashhist.c - - just add a line to the history if command_oriented_history is - set to 1 and the current line in the command is > 1; don't - even bother checking history_ignore + - change call to strip_trailing in command_substitute to add the + new second argument -parse.y - - new variable `two_tokens_ago' to remember the token read before - `token_before_that' - - fix to history_delimiting_chars to make sure that no semicolon - is added after `()' (assume its a function definition), but that - a semicolon is added after other `)' (assume its a parenthesized - command) - - 5/31 - ---- -tests/run-all - - put `.' first in $PATH and don't export ENV - - set THIS_SH to ../bash if it's unset - -lib/readline/complete.c - - only try to find a word break character in rl_complete_internal - if we hit the end of the input string and found_quote == 0 - (the opening quote could have been the last character in the - string) +externs.h + - changed extern declaration for strip_trailing - 6/2 + 4/4 --- -subst.c - - changed make_quoted_char to return CTLNUL\0 if passed a \0 - (this is what quote_string does, too) [in 1.14.5] - - changed list_string to use make_quoted_char when adding a quoted - null argument due to a null field when ifs != ' \t\n' - - added an `expandpat' argument to getpattern, which tells it to - call string_extract_double_quoted if the pattern expression is - double-quoted, and changed all calls to initially pass `1' as - its value - -jobs.c - - changed start_job so that an attempt to start a job marked as - JDEAD elicits an error message [in 1.14.5] - -Makefile.in - - fixed `distclean' target so that it removes Makefiles in subdirs - *after* descending into them to do submakes (!) - - fixed `realclean' target to remove everything that distclean does +Makefile.in, configure.in, lib/malloc/Makefile.in + - changed the strategy for picking which `malloc' to include by + having configure define a `malloc target' and the Makefile in + lib/malloc implementing rules for that target - 6/5 + 4/5 --- -builtins/declare.def - - fixed a typo that made `declare +r var' turn off read-only status - for a variable [in 1.14.5] - - added -p option to short doc and long doc - - added code to allow `declare -f -options name' to set and unset - attributes for the named functions. Only when no other options - are supplied will the named and value of the function be displayed - [in 1.14.5] - -variables.h - - new SETVARATTR macro to set or unset attributes for a specific - SHELL_VAR * - -builtins/setattr.def - - use SETVARATTR +Makefile.in + - slightly changed the rules for remaking `parser-built': it is + now a copy of y.tab.h, updated only when the contents of y.tab.h + change + - everything that used to depend on y.tab.h now depends on + parser-built - 6/7 + 4/6 --- -execute_cmd.c - - moved the retrieval of $PS3 inside the loop in execute_select_command - so that PS3 can be modified in the select command's body - [in 1.14.5] - -execute_cmd.c - - changed execute_builtin and execute_function to not set - builtin_env and function_env, respectively, to NULL if there is - no temporary env. This makes the temp env persist across calls - to functions from other functions [in 1.14.5] - -configure.in - - Linux needs LOCAL_LDFLAGS set to -rdynamic +execute_cmd.c, print_cmd.c + - use #include <y.tab.h> so we pick up y.tab.h from the build + directory instead of the source directory if it happens to be + recreated in the build directory - 6/8 + 4/7 --- -general.c - - canonicalize_pathname should not attempt to interpret backslash - quoting `/', since Unix doesn't really allow it [in 1.14.5] - -bashline.c - - added `\', `!', and `)' to the list of characters which - cause filenames to be quoted - - changed bash_quote_filename to use any of the three shell - quoting styles based on the value of a variable, - completion_quoting_style - - if *qcp is not 0 when passed to bash_quote_filename, adjust the - type of completion we're doing based on its value (i.e., - *qcp == '"' forces double quoting, *qcp == '\'' forces single) - - bash_quote_filename now leaves the quotes intact in the filename - it returns. The readline completion code takes care of avoiding - doubled open quotes - - if a filename containing a `!' is passed to bash_quote_filename - without an opening quote character, and we are performing history - expansion, use single quoting as the quoting style - -bashhist.c - - changed bash_history_disable to not call bash_history_reinit(0), - but do what it needs to directly - - new function bash_history_enable - - make history_expansion_inhibited exist only if BANG_HISTORY - is defined - -bashhist.h - - extern declaration for bash_history_enable - -lib/readline/complete.c - - make make_quoted_replacement set should_quote to 1 if the quote - character is `'' as well as if it's `"' - -test.c - - added the csh-like `=~' and `!~' pattern-matching binary operators - which match the string on the lhs against the shell pattern on - the rhs. PATTERN_MATCHING must be defined for this to work; it is - undefined and undocumented by default - -jobs.c - - broke the code that gets the new window size and sets $LINES and - $COLUMNS out of sigwinch_sighandler into a new function, - get_window_size, which sigwinch_sighandler calls - - 6/12 - ---- -parse.y - - new function, pop_expansion, to remove the top string on the - expanded token stack - - renamed save_expansion to push_expansion - -lib/readline/complete.c - - fixed a bug in find_completion_word that tested found_quote - instead of quote_char when trying to decide if we have an unclosed - quoted string [in 1.14.6] - - 6/26 - ---- -subst.c - - fixed expand_word_internal to remove all traces of $*, even if - it's quoted, if there are no positional parameters and there are - other characters in the expansion - bashline.c - - don't attempt hostname completion if multiple consecutive `@' - characters appear + - fixed another problem with `pwd`/[TAB] thinking that the `/ + started an unclosed command substitution, generating errors - 6/27 - ---- -shell.c - - initialize top_level early, and exit if a longjmp sends us there - before we reinitialize - -subst.c - - more fixes to expansion of quoted $* when no positional parameters - - broke the code that assigns a value to an array element (and parses - the array element reference) into a new function, - do_array_element_assignment - -builtins/read.def - - new function, bind_read_variable, to allow binding simple variables - and array elements to strings read (uses do_array_element_assignment) - - changed occurrences of bind_variable to bind_read_variable where - it matters - -variables.c - - tentative change to bind_variable to make x=y the same as x[0]=y - if x is already an array variable. This works for `read' as well. - This is what ksh does. - - 6/28 - ---- -alias.h - - added a `flags' member to the ASSOC struct and renamed it to - `alias_t' - -alias.c, bashline.c, builtins/alias.def, builtins/type.def - - changed ASSOC to alias_t - -alias.c - - changed add_alias to set the AL_EXPANDNEXT flag when the alias is - inserted into the hash table - -parse.y - - added a third parameter to push_string: a pointer to the alias_t - that is being expanded - - push_string marks the alias it's passed as being expanded - (AL_BEINGEXPANDED) - - pop_string marks the alias being popped as no longer being - expanded - - changed shell_getc to defer popping an alias expansion until - the parser has had a chance to catch up, since the parser reads - ahead and would cause the expansion to be popped before it - fully parsed the expanded string - - changed alias_expand_word to check the AL_BEINGEXPANDED flag - instead of the expanded_token_stack when checking whether an - alias is already being expanded - -oslib.c - - make the definition of bzero be surrounded by #ifdef HAVE_BZERO - rather than lumping it in with bcopy - -configure.in - - add a test for bzero - -config.h.in - - add a template for HAVE_BZERO - - 7/3 - --- -builtins/set.def - - added new meaning for `set +o' without options, as per the latest - draft of Posix.2. It means to list -o options as a series of set - commands to recreate the current settings - -documentation/bash.1 - - augmented description of the `set' builtin - - 7/6 - --- -jobs.c - - make sure that temp_handler is not set to SIG_DFL before calling - it from waitchld - -builtins/cd.def - - rewrote cd_builtin to make the code flow clearer - - broke full directory name construction out into a separate - function: mkpath - - cd_builtin now tests that a directory constructed from a $CDPATH - entry is actually a directory before trying to chdir to it - - added an error message if $HOME is not set - - added a descriptive error message if `cd -' used and OLDPWD unset - - changed the error messages to use builtin_error, not file_error - - moved the code at the bind_and_exit label into a function, - bindpwd (no_symlinks) - - Posix.2 says that when using $CDPATH, the resultant value of PWD - should have no symlinks - - 7/7 - --- -input.c - - if fd_to_buffered_stream fails in some way and returns a NULL - buffered stream, with_input_from_buffered_stream uses a function - that does nothing but return EOF as the `getter'. This keeps - the shell from crashing if invoked with fd 0 closed - -subst.c - - made the `quoted' parameter to expand_word_internal into a flags - word with flag values defined in shell.h. Each place where - `quoted' is tested for a non-zero value was changed to test - (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 instead - -mailcheck.c, shell.c, parse.y - - change calls to the expand_string* functions to pass an explicit - Q_DOUBLE_QUOTES where appropriate - - 7/9 + 4/8 --- -subst.c - - getpattern now passes Q_NOQUOTE to expand_word_internal, indicating - that quotes in the pattern spec are not to be treated specially - - 7/12 - ---- -jobs.c - - fixed up the MUST_UNBLOCK_CHILD code in wait_for so that it now - unblocks all signals and sets the signal handler for SIGCHLD to - SIG_DFL. pre-v4 SCO machines seem to require this [in 1.14.5] - -[Bash-1.14.5 released to net 7/16] - - 7/17 - ---- -documentation/features.texi - - changed the Bourne Shell builtins section to have the same format - as the bash builtins section, with usage synopses - - added a section on the restricted shell - - 7/18 - ---- -documentation/features.texi - - changed the name of this document to the Bash Reference Manual - - added sections on POSIX mode and restricted shell - -lib/readline/doc/hsuser.texinfo - - added the text from the bash manual page about the bash history - facilities if BashFeatures is set - - 7/19 - ---- -documentation/features.texi - - added more stuff to the bash basics section - -lib/readline/doc/rluser.texinfo - - added a sample inputrc file - - 7/20 - ---- -documentation/features.texi - - added section on shell expansions to bash basics section - -builtins/Makefile.in, lib/glob/Makefile.in, lib/malloc/Makefile.in, -lib/readline/Makefile.in, lib/termcap/Makefile.in, lib/tilde/Makefile.in - - ar is now called with flags `cr' when building libraries - - 7/21 - ---- -lib/readline/complete.c - - fixed a bug in find_completion_word that resulted in the found_quote - flag and the delimiter character not being passed back to the - caller (tested (*fp) instead of (fp) before assigning found_quote; - similarly for dp). With this fix, the filename dequoting function - is properly called - - 7/25 - ---- general.c - - renamed bash_tilde_expand to bash_tilde_expansion_failure_hook - - new function, bash_tilde_expand, that just sets interrupt_immediately - and calls tilde_expand, returning what tilde_expand returns + - renamed bash_tilde_expansion_failure_hook to be + bash_special_tilde_expansions, since that more accurately reflects + its function + - changed tilde_initialize so that there is no failure hook -- the + special expansions are handled first with the preexpansion hook -subst.c, general.c, shell.c, execute_cmd.c, variables.c, bashline.c, -builtins/cd.def - - changed calls to tilde_expand to calls to bash_tilde_expand instead - - 7/27 - ---- -builtins/set.def - - added a -o history option to enable and disable command history - saving. This uses bash_history_enable() and bash_history_disable() - It's keyed off of remember_on_history. With this, shell scripts - can use the command history - -bashhist.c - - bash_history_enable now calls sv_history_control and sv_histignore +lib/tilde/tilde.c + - new variable: tilde_expansion_preexpansion_hook -- if non-null, it + points to a function that is called before standard tilde expansion + is attempted -builtins/fc.def - - if history_list() returns a null pointer, immediately return - [in 1.14.6] +lib/tilde/tilde.h + - extern declaration for tilde_expansion_preexpansion_hook -documentation/{bash.1,features.texi}, lib/readline/doc/hsuser.texinfo - - added a description of the `set -o history' option and changed - text to refer to it rather than strictly interactive shells +doc/{bash.{1,html},bashref.texi} + - added optional open paren to description of `case' command syntax - 8/1 + 4/9 --- variables.c - - new builtin variable $HOSTNAME, initialized to current_host_name - as set in shell.c - -documentation/bash.1, documentation/features.texi - - documented $HOSTNAME - - 8/3 - --- -support/texi2html - - new program, a texinfo-html converter - -documentation/Makefile.in - - added directives to produce features.html from features.texi - -MANIFEST.doc - - added features.html and features_toc.html to the doc distribution - - 8/10 - ---- -lib/readline/bind.c - - new functions rl_variable_dumper and rl_dump_variables to print - readline variables and their values to rl_outstream - - new functions rl_get_keymap_name and rl_get_keymap_name_from_edit_mode - to get the name of the current keymap for the variable dumper - -lib/readline/readline.h - - extern declarations for rl_variable_dumper, rl_dump_variables, and - rl_get_keymap_name - -builtins/bind.def - - added -V flag to print variable names and bindings - - added -P flag to print variable names and bindings in the syntax - of the inputrc file - -lib/readline/funmap.c - - added new bindable `dump-variables' readline command - -documentation/{bash.{1,html},readline.3,features.html}, -lib/readline/doc/rluser.texinfo - - documented new `dump-variables' readline command - -documentation/{bash.{1,html},features.{texi,html} - - documented new bind -P and -V options - -documentation/bashbug.1 - - new manual page - -documentation/Makefile.in - - changes to build and install bashbug.1 - - 8/15 - ---- -print_cmd.c - - new function `xprintf' that just calls vfprintf(stdout, ...) - to avoid having to declare printf - -parse.y - - slight change in how read_token_word computes `all_digits' - - 8/21 - ---- - -subst.c - - new function dequote_escapes to remove CTLESC escaping - CTLESC and CTLNUL in a string, returning a new string + - on qnx, set and export a variable `NODE' which contains the QNX + `node id' - 8/25 - ---- -shell.c - - execute the file SYS_BASHRC for interactive shells if SYS_BASHRC - is defined, before executing ~/.bashrc - -config.h.top - - add a dummy commented definition for SYS_BASHRC, defaulting to - /etc/bash.bashrc - -lib/readline/input.c - - added code to call select() in rl_gather_tyi() and return - immediately if it indicates that there is nothing to read on - the readline input fd (#ifdef HAVE_SELECT) - -lib/posixheaders/posixdir.h - - new file to localize the <dirent.h>/<sys/dir.h> and dirent/direct - mess - -posixdir.h, lib/readline/posixdir.h - - symlinks to lib/posixheaders/posixdir.h - -lib/readline/rldefs.h - - removed the posix dir includes and defines - -lib/readline/complete.c, getcwd.c - - include posixdir.h rather than having the code inline - -builtins/cd.def - - new code to do spelling correction on the directory name - modified from patch sent by Neil Russell (caret@c-side.com) - - 8/29 - ---- -builtins/shopt.def - - new option `cdspell' to toggle cd directory name spelling - correction - -documentation/{bash.{1,html},features.texi} - - documented new shopt `cdspell' option - - 9/5 - --- -subst.c - - $'' should expand to the same thing as '' (a quoted null string) - -shell.h - - changed CTLNUL to '\177'; some scripts use ^B for things like IFS - [in 1.14.6] - - 9/7 - --- -support/config.guess - - added code to identify a PPC running Solaris 2 - -doc - - new directory replacing documentation - -Makefile.in, MANIFEST, MANIFEST.doc, configure.in - - replaced `documentation' with `doc' - - 9/8 - --- -lib/readline/display.c - - fixed the code in _rl_update_final that decides whether or not the - cursor is at character position 0 on an otherwise-empty line and - adjusts _rl_vis_botlin accordingly - - 9/13 - ---- general.c - - fixed canonicalize_pathname to make sure that intermediate - results correspond to directories before blindly chopping - off the last component when we see a `..'. This fixes the - `cd ../.../..' being equivalent to `cd ..' problem - -subst.c - - fixed make_named_pipe so that mkfifo is called with mode 0600 - for security reasons [in 1.14.6] - - changed the /dev/fd version of add_fifo_list to zero out new - entries to the fifo_list when it resizes it larger [in 1.14.6] - - changed make_dev_fd_filename to use DEV_FD_PREFIX - -aclocal.m4 - - changed BASH_HAVE_DEV_FD to check for /proc/self/fd and define - DEV_FD_PREFIX to either "/dev/fd/" or "/proc/self/fd/" as - appropriate - - 9/14 - ---- -lib/readline/display.c - - when displaying the first line of a multiline prompt, make sure - that the final \n is followed by a \r (outputting one if necessary) - so that we know we are starting at column 0 - -variables.h - - new attribute: att_local - -variables.c - - changed make_local_variable to set the att_local attribute - - changed makunbound to just make variables marked as `local' in - the current context invisible. This makes the local variable - persist throughout the function even if it is unset, so a - subsequent assignment preserves the `local' attribute - - changed kill_all_local_variables to unset the att_local attribute - before calling makunbound - - 9/18 - ---- -lib/readline/complete.c - - make sure the cursor is on the last line of a possibly-multiple- - line command line before listing the completions in - display_matches - - 9/19 - ---- -braces.c - - fixed the non-SHELL case in brace_gobbler so the loop exits when - it should - -lib/readline/bind.c, lib/readline/readline.h - - added functions to dump key sequences bound to macros and their - values - -builtins/bind.def - - added -S and -s options to dump the readline macros and their values - - changed the options so that -p and -P dump functions, -v and -V - dump variables, and -s and -S dump macros (s for string) - -doc/{bash.{1,html},readline.3,features.texi}, lib/readline/doc/rluser.texinfo - - added documentation for the new `bind' options - - added documentation for the new readline functions to dump macros - and the key sequences that output them - - 9/22 - ---- -print_cmd.c - - new function xtrace_print_word_list (WORD_LIST *) to print the - words of a simple command when set -x is on. This prints '' - when it encounters an empty string - -externs.h - - new extern declaration for xtrace_print_word_list - -execute_cmd.c - - call xtrace_print_word_list in execute_simple_command - - 9/25 - ---- -builtins/getopts.def - - make sure that the loop counter stops at 10 when stepping through - the dollar_vars array to count the number of positional parameters - [in 1.14.6] - - 9/30 - ---- -lib/readline/histsearch.c - - fixed history_search_internal to bail immediately if it gets a - null or empty search string. This fixes the !? core dumps. - [in 1.14.6] - - 10/3 - ---- -lib/readline/histexpand.c - - if there is a null string given with a !? search specifier, use - a previous search string if one exists, else fail immediately - -trap.c - - made run_exit_trap preserve $? around the call to execute the - trap string, unless the trap string contains an `exit' - command, in which case it can set the shell's exit status - [in 1.14.6] - - In other words: - - touch /tmp/z - trap 'rm /tmp/z ; exit 5' 0 - exit 1 - - exits with status 5; while - - touch /tmp/z - trap 'rm /tmp/z' 0 - exit 1 - - exits with status 1 - -subst.c, parse.y - - moved the $'...' code from subst.c to parse.y, more like ksh - does it - -doc/bash.1, doc/bash.html, doc/features.texi - - moved the description of $'...' from the expansion section to - the quoting section - - 10/4 - ---- -command.h - - added a `line' member to the function struct for the source line - the function definition starts on - -make_cmd.c - - initialize the `line' member in Function_def to 0 - - make_function_def takes a third parameter telling which line the - function definition started on and a fourth telling which line - the function body started on - -make_cmd.h - - changed prototype for make_function_def - -parse.y - - new variable `function_dstart', set by read_token and read_token_word - to keep track of where a function definition begins - - new variable `function_bstart' to keep track of where function - body begins - - pass function_dstart and function_bstart to make_function_def - - new function strtrans to do the $"..." locale-specific translation - of `...' - - call strtrans() to translate $"string". The translated string is - double-quoted - -doc/bash.{1,html} - - updated the description of LINENO now that line numbers within - functions are correct + - QNX system can now handle pathnames with a leading `//' configure.in - - look for the `gettext' library function + - added `-Dqnx' to LOCAL_CFLAGS on QNX machines -config.h.in - - define HAVE_GETTEXT if gettext(3) exists in a findable library +lib/malloc/getpagesize.h + - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size; + added code to check for it - 10/5 + 4/10 ---- -builtins/common.c - - changed backslash_quote so that `#' is only quoted at the start - of a word - - new function contains_shell_metas returns 1 if the argument - string contains one or more shell meta-characters that require - quoting - -builtins/common.h - - extern declaration for contains_shell_metas - print_cmd.c - - changed xtrace_print_word_list to print words containing - shell metacharacters within single quotes + - include the prototype for cprintf only if PREFER_STDARG is defined, + otherwise just have a K&R-style forward function declaration -lib/termcap - - upgraded to GNU termcap version 1.3 +hashlib.h + - reduced the default number of buckets in a hash table to 53 - 10/9 - ---- -lib/readline/readline.c - - call setlocale(LC_CTYPE, ...) after finding a legal value for - one of LC_ALL, LC_CTYPE, or LANG - - 10/11 - ----- -lib/readline/search.c - - make rl_history_search_internal just do previous-history or - next-history as appropriate when given a null search string - (rl_point == 0) +lib/tilde/tilde.c + - prime the result string in tilde_expand by allocating a new string + that's as long as the input string (+16 if a tilde appears in + the string to be expanded). This should reduce the number of + reallocs - 10/24 - ----- subst.c - - fixed an off-by-one error in char_is_quoted that skipped a - characters after calling skip_single_quoted or skip_double_quoted - [in 1.14.6] - - fixed an off-by-one error in string_extract_verbatim so it - leaves *sindex at the separator character if the separator - character is "'" [in 1.14.6] - - 10/27 - ----- -parse.y - - in CHECK_FOR_RESERVED_WORD, make sure that reading a `}' - decrements open_brace_awaiting_satisfaction if it is non-zero - [in 1.14.6] - -shell.c - - don't run the shell startup files if the shell is running - setuid - - don't source $ENV if the shell is running setuid - -variables.c - - new parameter to initialize_shell_variables: no_functions. If - non-zero, don't import functions from the environment + - broke the code that reads the output of a command substitution + through the pipe to the subshell out into a separate function: + read_comsub(). This does not use stdio, but rather reads + directly from the pipe into a local 128-character buffer -variables.h - - change to function prototype for initialize_shell_variables - -lib/readline/complete.c - - fix for the code that decides whether or not a char is quoted for - applications that don't supply a value for rl_char_is_quoted_p - - fixed insert_match to not remove a user-supplied opening quote - character if make_quoted_replacement does not return a string - beginning with that quote character - - 11/2 - ---- -general.c - - new function ungetc_with_restart that handles the local buffering - [in 1.14.6] - -parse.y - - changed yy_stream_unget to call ungetc_with_restart if the OS - does not have restartable syscalls [in 1.14.6] - - 11/3 - ---- -bashline.c - - rewrote _ignore_completion_names to actually free and remove - names from the array if more than one names in the array - passed is acceptable, instead of just bailing [in 1.14.6] - - 11/7 + 4/11 ---- -bashline.c - - if no matches are acceptable to _ignore_completion_names, - free the entries in NAMES, set NAMES[0] == 0, and let the - caller clean up [in 1.14.6] - - fixed a problem with backslash-quoted characters in - bash_dequote_filename that caused the character after the - backslash to be interpreted - - bash_dequote_filename now takes a quote_char parameter that, - if non-zero, gives the quote character (`'' or `"') that - delimits the filename. Used to initialize the quoting state - -lib/readline/complete.c - - if the completion ignore function returns with MATCHES == 0 - or MATCHES[0] == 0, ring the bell and quit the completion - attempt [in 1.14.6] - - pass quote_char to gen_completion_matches so it can pass it - along to the app-specific filename dequoting function - - have gen_completion_matches pass quote_char to whatever function - is pointed to by rl_filename_dequoting_function +execute_cmd.c + - some systems need both <sys/time.h> and <time.h>, so include both + if it's possible, otherwise include <sys/time.h> (if present) -pathexp.c - - rewrote ignore_globbed_names to be more like _ignore_completion_names +lib/readline/rl{tty,defs}.h + - moved includes of <sys/stream.h>, <sys/ptem.h>, etc. to rltty.h -lib/readline/doc/rltech.texinfo - - updated documentation for rl_filename_dequoting_function +lib/readline/terminal.c + - include rltty.h after rldefs.h - 11/10 - ----- -subst.c - - fixed remove_quoted_nulls so that it is now a full function that - removes unquoted CTLNUL chars from the string it is passed - [in 1.14.6] - - fixed expand_word_internal to avoid generating some unneeded - quoted nulls (if the string is partially quoted, note that we - have seen a quoted null and add one if the rest of the string - doesn't expand to anything) - - 11/13 - ----- variables.c - - bind HOSTTYPE, OSTYPE, and HOSTNAME unconditionally - -pathexp.c - - new function quote_globbing_chars, adds `\' before globbing - chars in its string argument, returns new string - -pathexp.h - - extern declaration for quote_globbing_chars + - changes to make environment creation faster and use less memory + (fewer malloc/free calls, too): + + o two new variables: export_env_index (how many environment + strings are in export_env) and export_env_size (the + number of slots for strings allocated in export_env) + o added new function add_to_export_env, since adding the + exported shell variables and shell functions does not + need to search the export_env for a definition to supersede + (we just cleared it out!) + o renamed add_or_supersede to add_or_supersede_exported_var, + since it always works on export_env, and changed the second + argument to a flag saying whether or not to allocate a new + copy of the string placed into the environment + o changed calls to add_or_supersede to the new + add_or_supersede_exported_var with the appropriate flags + o don't free and reallocate export_env in maybe_make_export_env, + just free the strings and start anew + o prime the size of export_env from the total number of shell + variables and shell functions -- this will always be enough + for the exported shell functions and variables, and big + enough most of the time for the entire environment -bashhist.c - - if the previous line contains globbing chars, run it through - quote_globbing_chars before trying to match. This affects - only HISTIGNORE patterns containing `&' +builtins/cd.def + - efficiency hack in bindpwd(): if PWD is exported, we will have to + rebuild the entire exported environment after every time we change + directories. What we do is see if array_needs_making changes value + from 0 to 1 after bind_variable ("PWD", dirname) is called, and + that PWD is exported. If that happens, we just replace the value + of PWD in the exported environment with a call to + add_or_supersede_exported_var + +bashline.c, parse.y + - check calls to pre_process_line to make a fresh copy of the line + if pre_process_line returns what it was passed, in preparation + for future changes - 11/14 - ----- bashhist.c - - if the history line to be added contains globbing chars, quote - them with backslashes by calling quote_globbing_chars in - history_should_ignore before comparing them against the - patterns in HISTIGNORE - -bashline.c - - make sure that we erase the current readline line after running - fc on it and executing the resultant commands in - vi_edit_and_execute_command, so the original readline line - doesn't get returned [in 1.14.6] - -jobs.h - - added a new job listing format: JLIST_NONINTERACTIVE -- like - JLIST_LONG, but does not print the job number - -jobs.c - - added code to pretty_print_job to handle JLIST_NONINTERACTIVE - - call notify_and_cleanup() from wait_for even if the shell is - running a script (interactive_shell == 0) - - changed notify_and_cleanup to call notify_of_job_status if - interactive or interactive_shell == 0, so scripts report - about jobs they run - - changed notify_of_job_status to call pretty_print_job with a - JLIST_NONINTERACTIVE format if interactive_shell is 0 and a - job is marked JDEAD, after printing the script name and line - number. This message is printed only if the job dies due to - a fatal signal - -support/mkversion.c - - added support for a `-status status' argument to set the - `release status' of the shell (alpha, beta, or release). It - defines `RELSTATUS' in version.h and changes the definition - of SCCSVERSION, if present - -Makefile.in - - set a RELSTATUS variable that is included when printing the build - message and passed to mkversion with the -status option - - make RELSTATUS one of the variables sed sets when it creates - bashbug from support/bashbug.sh - -version.c - - added a `release_status' variable that's set to RELSTATUS if - it's defined - -support/bashbug.sh - - added the `RELSTATUS' variable to the report with heading - `Release Status' - - set the bug address to chet@po.cwru.edu if the release status - is `alpha' or `beta' - - 11/15 - ----- - -shell.c, execute_cmd.c - - new variable expand_aliases to control alias expansion. For now, - this is set to the same value as interactive_shell when that is - set - -parse.y - - perform alias expansion if expand_aliases is non-zero rather than - checking the value of interactive_shell - - 11/16 - ----- -builtins/shopt.def - - new option `expand_aliases' to control the value of expand_aliases - -doc/bash.1, doc/bash.html - - updated the description of `shopt' with the `expand_aliases' option - - 11/28 - ----- -bashline.c - - if there is only one completion in _ignore_completion_names, see - if it is acceptable and return right away [in 1.14.6] + - pre_process_line now returns its argument if it did not make + any changes to it -configure.in - - change to define WAITPID_BROKEN on SCO 3.2v5 +alias.c + - free the bucket entry holding the alias to be removed in + remove_alias, as well as the data - 12/6 + 4/14 ---- -parse.y - - call prompt_again in read_token_word if a newline is read in an - interactive shell and bash_input.type is either st_stdin or - st_stream - - remove superfluous call to reset_readline_prompt in yy_readline_get +unwind_prot.c + - if an unwind-protect frame is being discarded, and its cleanup + function is `restore_variable', the `arg' member points to a + SAVED_VAR that must be freed. This change is made in + remove_unwind_protect_internal and unwind_frame_discard_internal - 12/7 - ---- parse.y - - combine delimiters, delimiter_depth, and delimiter_space into a - single structure of type `struct dstack' - - replace all references to delimiter* with dstack.delimiter* - - include parser.h for struct dstack - - new define pop_delimiter(), analogous to push_delimiter - - current_delimiter, push_delimiter, and pop_delimiter defines now - include the delimiter stack struct as the first parameter - -parser.h - - now includes definition of struct dstack - -bashline.c - - include parser.h for struct dstack - - refer to dstack.delimiter_depth instead of delimiter_depth - - 12/12 - ----- -execute_cmd.c - - before doing a longjmp(subshell_top_level,...) when executing a - shell script without a leading #!, set history_lines_this_session - to 0 to forget about the history and not save it on an exec - (we don't free the memory with clear_history(), though -- that - would slow bash down) - - 12/14 - ----- -jobs.c, nojobs.c - - cause the sigwinch handling code to be compiled into the shell - even if READLINE is defined - - new functions: set_sigwinch_handler and unset_sigwith_handler - to enable and disable catching of SIGWINCH and adjusting $LINES - and $COLUMNS - - changed initialize_job_signals to install a signal handler for - SIGWINCH with set_sigwinch_handler - -jobs.h - - extern declarations for set_sigwinch_handler and - unset_sigwinch_handler - - 12/20 - ----- -doc/bash.{1,html}, doc/readline.3, lib/readline/doc/rluser.texinfo - - documented the readline `visible-stats' variable + - need to free memory allocated by parse_arith_cmd if it is an + arithmetic command, after using it to make a new word - 12/21 - ----- -trap.c - - new global variable `running_trap' incremented and decremented - around running a trap command in _run_trap_internal - -execute_cmd.c - - new variable currently_executing_command, set to the COMMAND * - currently being processed by execute_command_internal, unless a - trap command is being run (running_trap != 0) - - new function executing_line_number, which returns the line number - of the currently executing command (which may not be the same as - line_number) - - don't run the debug trap if it was not set before the current - simple command was executed, since we don't want to run it after - the trap command that sets the DEBUG trap - -variables.c - - new function assign_lineno, to assign a value to line_number - when LINENO is set - - changed get_lineno to call executing_line_number() rather than - returning line_number - -parse.y - - new argument for push_stream telling it whether or not to reset - line_number to 0 +subst.c + - fixed some memory leaks caused by not freeing the argument to + make_bare_word, which duplicates its string argument + - need to dispose list generated by list_rest_of_args in + paramter_list_remove_pattern + - make sure the return value from getpattern() is freed + - make sure array_value_internal always returns newly-allocated + memory + - get_var_and_type returns a new type: VT_ARRAYMEMBER if the + string passed is of the form var[index] + - make sure parameter_brace_substring frees the memory allocated + by get_var_and_type if verify_substring_values returns 0 -builtins/common.c - - change to parse_and_execute to call push_stream with an argument +hashlib.c, hashlib.h + - new function, dispose_hash_table (table), which frees the + table's bucket array and the table itself - 12/29 - ----- -subst.c - - set subshell_environment in command_substitute and process_substitute - for the child process +alias.c + - call dispose_hash_table from delete_all_aliases instead of just + freeing the table - 1/2 - --- -trap.c - - made decode_signal recognize signal names case insensitively +pathexp.c + - make sure to free `newnames' (but *not* its contents) before + returning from ignore_globbed_names -shell.c - - make the shell exit on a longjmp (DISCARD, ...) if - subshell_environment is non-zero +builtins/exec.def + - make sure the argv created to pass to shell_execve is freed if + the execve fails and we're not exiting on failed execs - 1/16 - ---- -lib/readline/histexpand.c - - let the `!' in ${!xxx} pass through without error +expr.c + - broke evalexp into two functions: evalexp, which sets up the + jmp_buf that errors jump to, and subexpr, which does the + evaluation and pushing and popping of contexts + - readtok now calls subexpr to evaluate subexpressions in + parentheses + - evalexp now takes an additional paramter, a pointer to an int. + If the expression contains errors, the location to which this + points gets 0, otherwise it gets 1 to show that the value + returned may be used. This plugs up memory leaks that were + the result of evalexp() longjmping back to top_level + - fixed a memory leak: expr_stack[0] was not being freed -shell.c - - new --help long option - - new function show_shell_usage() for use by --help +externs.h + - changed extern declaration for evalexp - 1/19 - ---- -parse.y - - changes to shell_getc to make sure that lines consisting of only a - newline get added to the history correctly when they are part of - a quoted string +variables.c, subst.c, builtins/let.def + - changed calls to evalexp appropriately. They either cause a + longjmp (top_level, DISCARD) (which is what the old stuff in + expr.c did) or are handled by returning an appropriate error + value (e.g., &expand_word_error in subst.c) - 1/24 + 4/16 ---- -aclocal.m4, configure.in - - added a check for -lsocket (and -lnsl) to fix solaris problems - with isnetconn() - shell.c - - rearranged the code in isnetconn to check for a socket using - getpeername() first, before any SVR4 or SVR4.2-specific checks - - added checks for ttys (isatty) and FIFOs (S_ISFIFO) to the - SVR4/SVR4.2 case of isnetconn() - -general.h - - new macro RESIZE_MALLOCED_BUFFER to check and see whether there - is enough room in a string to add a given number of characters - and to resize it if there is not + - make sure to free dollar_vars[0] before assigning it the first + argument following `-c command' - 1/25 - ---- -parse.y, general.c, subst.c, bashhist.c, alias.c, array.c, variables.c - - use RESIZE_MALLOCED_BUFFER where appropriate +variables.c + - if unsetting a local variable with a previous context, make sure + to free the hash table element used to store the local variable - 1/26 - ---- -support/config.{guess,sub} - - merged in latest changes from GNU master copies +lib/readline/terminal.c + - rearrange the includes so <sys/ioctl.h> is included before rltty.h, + as it is in rltty.c - 1/30 + 4/17 ---- +flags.c + - new function: reset_shell_flags, which resets all of the flags + back to their initial values -jobs.c - - make sure to freeze the jobs list when calling a trap handler - for SIGINT - - added code to waitchld() so that a SIGINT trap handler is called - if the shell is running a shell script and a SIGINT is received - while waiting for a foreground job, even if that job does not - die from the SIGINT +flags.h + - extern declaration for reset_shell_flags -jobs.c, nojobs.c - - make get_tty_state reset $LINES and $COLUMNS after each process - exits if the variable `check_window_size' is non-zero +builtins/set.def + - new function: reset_shell_options, which resets all of the -o + options that are not also shell flags back to their initial values builtins/shopt.def - - new variable `checkwinsize', which controls the value of - check_window_size - -doc/{bash.{1,html},features.texi} - - updated description of `shopt' to include `checkwinsize' - -execute_cmd.c, lib/readline,complete.c - - some changes from the GNU WIN32 project for the bash port to - Windows NT and Windows 95 - -bashwait.h - - new file, with `union wait' defines from jobs.h - -jobs.h - - include `bashwait.h' if <sys/wait.h> is not present and - _POSIX_VERSION is not defined - - removed define of pid_t for non-Posix systems; now provided by - autoconf in config.h - - 1/31 - ---- -parse.y - - new temporary delimiter stack, used when decoding prompt strings. - This is needed so command substitutions in the prompt strings - (especially PS2) don't screw up the parser's quoting state + - new function: reset_shopt_options, which resets all of the shopt + options that are not also shell flags or -o options back to their + initial values -lib/readline/complete.c - - new variable for readline library users: - rl_completion_append_character. The value of this variable is - the character appended to a completion when it occurs at the - end of a line. Setting it to '\0' causes nothing to be - appended. - -lib/readline/readline.h - - declaration for rl_completion_append_character - -lib/readline/doc/rltech.texinfo - - documented rl_completion_append_character as int variable available - to library users - -subst.c - - new code for maintaining a string array saying which words in the - output of expand_word_list_internal are the result of globbing - -variables.c - - new function put_gnu_argv_flags_into_env (pid, flags_string) - to put Roland's GNU getopt helper variable into the export_env +builtins/common.h + - extern declarations for reset_shell_options and reset_shopt_options execute_cmd.c - - in execute_disk_command, after forking the child, put the GNU - getopt helper environment variable into the child's export_env - -unwind_prot.c - - changed unwind_protect_var and restore_variable to do the - bcopy of the variable's value if it's shorter than the size of - an int, as well as if it's longer. This keeps stray data - from being copied if a short is being unwind-protected - -unwind_prot.h - - new define, unwind_protect_short, to protect variables smaller - than an int + - broke the code that reinitializes things when an executable script + without a leading `#!' is found out into a new function: + initialize_subshell + - initialize_subshell now calls the reset_* functions that reset the + shell flags and options -jobs.c - - in the code that handles SIGCHLD traps, call unwind_protect_short - if that is the size of a pid_t (for last_made_pid) - - 2/5 - --- -Makefile.in - - only try make distclean in HIST_LIBDIR if Makefile exists -- could - have already been removed if HIST_LIBDIR is the same as RL_LIBDIR - -general.c - - make canonicalize_pathname be more careful about what it checks - for being a directory name when processing a full pathname - -Makefile.in, configure.in, doc/Makefile.in - - small changes to get bash to build better in a directory not the - source directory - - 2/12 - ---- -Makefile.in - - added `install-strip' target +general.c, general.h + - move_to_high_fd now takes a third argument: the highest fd at which + to start looking. If that's less than 20, the maximum number of + open files as returned by getdtablesize() is used (which is what + it did before this) - 2/14 - ---- -doc/bash.{1,html}, doc/features.texi - - documented the `--verbose' startup option +jobs.c, shell.c, subst.c + - changed calls to move_to_high_fd appropriately -lib/readline/complete.c - - fix to gen_completion_matches to fix a memory leak - - fix to rl_complete_internal to fix a memory leak +[bash-2.01-beta1 frozen] - 2/15 + 4/18 ---- -bashwait.h - - changed to use WORDS_BIGENDIAN instead of LITTLE_ENDIAN or - BIG_ENDIAN - -configure.in, config.h.in - - call AC_C_BIGENDIAN, define WORDS_BIGENDIAN - -Makefile.in - - remove all references to mkendian.c, mkendian, and bash_endian.h - - added a `symlinks' target that just runs support/fixlinks - -MANIFEST - - mkendian.c is no longer in the distribution +general.c + - itos now uses a local char buffer to do its conversion, but still + returns newly-allocated memory - 2/16 + 4/21 ---- -execute_cmd.c - - include <sys/times.h> if HAVE_SYS_TIMES_H and HAVE_TIMES are - defined - -bashline.c - - fix to bash_directory_completion_hook to compensate for - canonicalize_pathname returning NULL - variables.c - - fix to initialize_shell_variables to compensate for - canonicalize_pathname returning NULL - - 2/22 - ---- -tests/test-tests, tests/test.right - - changes to avoid writing in the source directory -- all temp files - are created in /tmp - -[First alpha release at Thu Feb 22 15:59:51 EST 1996] + - be a little more careful when checking for backwards-compatibility + with exported function definitions - 2/23 + 4/22 ---- -lib/readline/rldefs.h - - work around SVR4.2 bug including <sys/ptem.h> and <termios.h> - -lib/readline/chardefs.h - - fix to CTRL_CHAR macro for chars > 128 on systems with signed - characters - builtins/ulimit.def - - protect more of the RLIMIT_* defines with checks - - new macro RETINVALID() to set errno and return the correct - value for an invalid request - -doc/Makefile.in - - add a definition for INSTALL, set by autoconf - - 2/26 - ---- -support/bashbug.sh - - if USER is unset, assign it the value of $LOGNAME or `whoami` - -Makefile.in,{lib/*,doc,builtins}/Makefile.in - - use `test' instead of `[' to conform to GNU coding standards - - `incdir' -> `includedir' as per latest GNU coding standards - -lib/readline/Makefile.in, lib/glob/Makefile.in - - use $(srcdir)/ instead of $(srcdir) in the CSOURCES variable - -general.h - - new define, FS_NODIRS, to not find directory names when searching - $PATH - -execute_cmd.c - - fix to find_in_path_element so it does not return directories - - executable_file() no longer returns directories as executable + - translate RLIM_INFINITY to limit.rlim_max if the current limit is + less than or equal to the hard limit, not just strictly less than + (the change of 3/28 was too drastic) - 2/27 - ---- -jobs.h - - new flag value: J_NOHUP - -jobs.c - - new function: nohup_job(job). Sets J_NOHUP flag for specified - job - - change hangup_all_jobs so that jobs marked J_NOHUP are not - sent SIGHUP. If stopped, the job still gets SIGCONT. - - changed calls to report_error to call internal_error, which will - not exit the shell - - changed FIND_CHILD define to call internal_error, restore the - SIGINT handler, set termination_state to 127 and return, rather - than aborting the shell - -builtins/jobs.def - - new option for disown: `-h'. Marks the specified jobs J_NOHUP. - -doc/{bash.{1,html},features.texi} - - added description of `disown -h' - -jobs.c, nojobs.c - - include some files needed for struct winsize by SCO - -lib/readline/input.c - - added some #ifdefs to avoid including <sys/time.h> on systems - with select but without <sys/select.h> - -configure.in - - check for <stdarg.h>, define HAVE_STDARG_H in config.h if found - -config.h.bot - - define USE_VARARGS and either PREFER_STDARG or PREFER_VARARGS - if one of <stdarg.h> or <varargs.h> is present - -aclocal.m4 - - moved default mail directory check here from configure.in, macro - name is BASH_DEFAULT_MAIL_DIR - - rewrote BASH_CHECK_DEV_FD to cache the value - - minor fixes from Bruno Haible - -shell.c - - no longer includes <varargs.h> - -builtins/Makefile.in - - add -I$(topdir)/builtins to list of includes - -execute_cmd.c, lib/glob/glob.c - - include memalloc.h for correct alloca definitions - -error.[ch], print_cmd.c, builtins/common.[ch] - - changes to include new ANSI-C stdargs code if PREFER_STDARG is - defined - - 2/28 - ---- -aclocal.m4 - - more minor fixes from Andreas Schwab - -doc/Makefile.in - - change TEXINPUTS makefile variables to TEXINPUTDIR to avoid - conflict with shell variable of the same name - -builtins/pushd.def - - fix to avoid a bad call to free after a call to - polite_directory_format does not change its argument string - -lib/readline/bind.c - - fixes to _rl_macro_dumper_internal so that it prints whatever - prefix it's passed, if any - - 2/29 - ---- -Makefile.in - - slight change to the rule for `stamp-h': it should be created by - running `config.status', not explicitly by the makefile rule - -builtins/Makefile.in - - replace `..' in the dependencies with `$(topdir)' - - replace `.' in the dependencies with `$(srcdir)' - - 3/1 - --- -Makefile.in - - add a rule to build builtins/builtext.h for the benefit of - deficient makes like the SunOS one - -variables.c - - fix to assign_in_env so that values in the environment are - properly null-terminated - -builtins/Makefile.in - - added dependencies for object files made from .c files in this - directory: common.o, getopt.o, bashgetopt.o. SunOS /bin/make - doesn't seem to be able to handle anything else - -support/mkclone - - new script to replace clone-bash that works from MANIFEST to link - only those files contained in a distribution - -support/mkversion.c - - change so that it doesn't try to get `.build' from the source - directory when that's different from the build directory - - 3/4 - --- -bashjmp.h - - #undef setjmp and longjmp before redefining them as sigsetjmp and - siglongjmp, respectively - -bashhist.c - - fixed an uninitialized variable problem in expand_histignore_pattern - -builtins/set.def - - used `on_or_off' where `value' was needed in minus_o_option_commands - -builtins/common.h - - added extern declaration for set_var_attribute - -print_cmd.c - - include `bashansi.h' instead of just string.h or strings.h - -builtins/*.def, builtins/common.c - - include `../bashansi.h' where appropriate - -parse.y - - fixed a parenthesization problem in alias_expand_token - -general.h - - added extern declaration for `ungetc_with_restart' - -lib/readline/readline.c - - renamed LibraryVersion to rl_library_version, made it extern, - assigned `2.1' to it - -lib/readline/readline.h - - extern declaration for `rl_library_version' - -lib/readline/doc/rltech.texinfo - - added description of `rl_library_version' - -lib/glob/glob.c - - changed call to sprintf in glob_dir_to_array to a couple of - calls to strcpy, since we keep the length of the first string - we copy - - 3/7 - --- -aclocal.m4 - - added new macro `BASH_FUNC_LSTAT' to check for lstat on Linux, - which defines it as an inline function in <sys/stat.h> - -configure.in - - call BASH_FUNC_LSTAT if $ac_cv_func_lstat has value `no' - - 3/8 - --- -parse.y - - changed the occurrences of `list' in the if command productions - to use `compound_list' instead - - 3/11 + 4/23 ---- -parse.y - - changed the occurrences of `list' in the while and until command - productions to use `compound_list' +oslib.c + - fixed definition of to_lower on machines without strcasecmp -lib/readline/complete.c - - fix to filename_completion_function -- off-by-one error when - expand-tilde is enabled and a filename to be completed begins - with `~/' +trap.c + - don't free the trap command in change_signal if the SIG_INPROGRESS + is set in the signal's flags -- it will cause memory to be freed + twice if a trap command resets the signal handler more than once, + and _run_trap_internal keeps a pointer to the trap command so it + can free it, so there will be no leaks - 3/12 + 4/24 ---- -builtins/cd.def - - made the POSIX.2 behavior of PWD not containing symlinks after - using $CDPATH part of `posix mode', not default shell behavior - -lib/readline/display.c - - fix to update_line to handle update problems when using - horizontal scroll mode. This is a dumb update solution -- it - should use a better one +aclocal.m4,configure.in + - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality - 3/14 - ---- -examples/functions/csh-compat - - replaced the defintion for `alias' with a better one posted to - usenet by Mohit Aron <aron@cs.rice.edu> +shell.c, externs.h + - get_current_user_info is now a void function - 3/15 - ---- -jobs.c - - fix to wait_for_background_pids to keep `wait' from hanging +bashline.c + - alias_expand_line_internal was removed + - new function, alias_expand_line, performs alias expansion on + rl_line_buffer and either replaces rl_line_buffer or signals + an error + - new bindable commands: alias-expand-line and + history-and-alias-expand-line, available if ALIAS is defined - 3/19 + 4/25 ---- -lib/readline/input.c - - new function `_rl_input_available()' returns > 0 if there is - input available on the readline input file descriptor. Only - works if select(2) or FIONREAD are available +Makefile.in, lib/malloc/malloc.c + - changed the define that turns on malloc range checking from + `rcheck' to `RCHECK' lib/readline/isearch.c - - slight change to the isearch termination behavior -- ESC still - terminates the search, but if there is pending input or if input - arrives within 0.1 seconds (on systems with select(2)) it is - used as a prefix character with rl_execute_next - -shell.c - - the GNU coding standards say to write the output generated by - the --help command line option to stdout, not stderr - - show_shell_version now takes an `extended' option that displays - copyright information if non-zero - - show_shell_version now prints the value of `MACHTYPE' by default - - the `--version' option now causes the shell to exit successfully - after printing the extended version information - -externs.h - - changed prototype for show_shell_version - -shell.c, bashline.c, builtins/help.def - - changed calls to show_shell_version to add appropriate argument - -Makefile.in - - pass a `MACHTYPE' define to the compiler - - 3/22 - ---- -general.c - - changed print_timeval() and print_time_in_hz() to output three - fractional digits after the decimal point - -examples/loadables/sleep.c - - changed to an implementation that will sleep fractional portions - of seconds if select() is available - - 3/25 - ---- -builtins/shopt.def - - fixes to shopt -o from Andreas Schwab. Use FLAG_ON/FLAG_OFF - instead of SETOPT/UNSETOPT - - 3/26 - ---- -Makefile.in, builtins/Makefile.in - - use `@includedir@' instead of `@incdir' for autoconf 2.9 + - fixed a couple of places where rl_search_history would try to + free a NULL pointer -Makefile.in - - the `info', `dvi', and `ps' targets do not depend on `texindex' - - add a `dist' target that just prints a message describing how - distributions are constructed - -support/mkdirs - - replace uses of [...] with `test' - - 3/28 + 4/29 ---- -parse.y - - fix for a problem with \@ prompt expansion from Tim Mooney - -jobs.c - - broke the code that prints a pipeline out into a separate - function: print_pipeline(). This gets called by - pretty_print_job and can be used for debugging - - two new functions to save and restore the_pipeline around calls - to make_child that you don't want to disturb the current pipeline, - for example in process substitution - -subst.c - - changed process_substitute to call save_pipeline and - restore_pipeline in the appropriate places +unwind_prot.c + - fixed a problem with saving a variable that is a null pointer + in unwind_protect_var. It happens only on machines where the + size of a pointer is not the size of an int. The old FASTCOPY + code would copy the eight bytes at memory location zero, which + did not necessarily make a null pointer - 3/29 + 4/30 ---- -general.c - - ansicstr now takes an additional parameter, the length of the - string to be translated. It's the second paramter. - -builtins/echo.def - - changed call to ansicstr to pass strlen(list->word->word) - -parse.y - - redid the $'...' expansion so it works like it's supposed to: - the quoted strings may appear anywhere in a token, and multiple - ansi-c quoted strings may appear in a token - - redid the $"..." expansion so it works like it's supposed to - -tests/nquote.{tests,right}, tests/run-nquote - - tests for the $'...' and $"..." quoting stuff -- simple-minded - -subst.c - - on systems without /dev/fd, open the named pipe for a `reading - in child' process substitution (>(...)) with O_NONBLOCK - -lib/posixheaders/filecntl.h - - add code to make sure the O_NONBLOCK is defined to O_NDELAY if - it is present and O_NONBLOCK is not defined by <fcntl.h> - -general.c - - don't bother handling both O_NONBLOCK and O_NDELAY in - unset_nodelay_mode, since filecntl.h defines O_NONBLOCK as - O_NDELAY for non-Posix systems +shell.c + - run_startup_files should turn off job control, since the startup + files should be run without job control enabled -- this makes + SIGINT interrupt startup file execution again + - if we get a SIGINT or other longjmp to top_level while executing + the startup files, re-enable job control for interactive shells + before setting locally_skip_execution - 4/1 + 5/2 --- -lib/readline/funmap.c - - made `vi-fetch-history' a bindable command name - -doc/readline.3 - - many cleanups, updated the list of default bindings +lib/readline/nls.c + - if we have setlocale(3), don't bother with checking the + environment variables for valid values; just use setlocale() + to set the locale categories from the environment variables + directly and go into eight-bit mode if the current locale is + not C or POSIX - 4/4 + 5/5 --- -doc/bash.1, doc/readline.3 - - fixed up use of \-; now it is not used unless the text is being - printed in bold or italic +sig.c + - make sure that the handler for SIGPROF is not changed if it has + been set to something other than SIG_IGN or SIG_DFL -- this makes + profiling work after the terminating signals have been initialized -configure.in, config.h.in - - add a configuration option, --enable-usg-echo-default, to turn - on DEFAULT_ECHO_TO_USG and make `echo' expand backslash-escaped - characters by default +bashline.c + - if a filename containing `!' is completed, and the user has started + the string with a `"', change the completion style to backslash- + quoting, since there's no way to use `!' with double quotes (this + requires more changes to readline to really work right) - 4/8 + 5/6 --- -parse.y - - another small change to localeexpand to handle backslash-escaped - double quotes in the double-quoted string +lib/readline/complete.c + - changes to make_quoted_replacement, insert_all_matches, and + insert_match and their callers to allow the application-specific + filename quoting function to change the quote character (e.g., for + bash to change a filename containing a `!' and started with a + double quote by the user into a filename with the `!' quoted by + a backslas and no double quote) - 4/9 + 5/8 --- -shell.c - - add the value of MACHTYPE to the text output by `--help' - - 4/11 - ---- -parse.y - - more changes to the $"..." and $'...' code to move it into - read_token - - don't try to check token[token_index - 1] unless token_index - is greater than 0 - - 4/12 - ---- -trap.c - - new function run_trap_cleanup to clean up after _run_trap_internal - in the event that parse_and_execute does not return normally - (e.g., if a `return' is executed in the trap command) - - set running_trap to the number of the signal whose trap is being - run plus one in _run_trap_internal - -trap.h - - extern declaration for run_trap_cleanup - jobs.c - - new function `unfreeze_jobs_list' to set freeze_jobs_list back to 0. - called from parse_and_execute_cleanup so a `return' while running - an interrupt trap does not leave the jobs list frozen + - new function: nohup_all_jobs(), calls nohup_job for each entry in + the jobs list + - delete_all_jobs is now global jobs.h - - new extern declaration for unfreeze_jobs_list - -builtins/common.c - - if running_trap is non-zero in parse_and_execute_cleanup, indicating - that parse_and_execute was running a trap command when it got a - `return', call run_trap_cleanup (running_trap - 1) - - parse_and_execute_cleanup now calls unfreeze_jobs_list - - 4/16 - ---- -Makefile.in - - don't try to make `doc' as a dependency of `install' - -doc/Makefile.in - - make `info' a dependency of `install' to make sure the info - document is present and up to date before installing it - - make the `install' target install the documents with a $(srcdir)/ - prefix in case we're building in another directory - -lib/glob/glob.c - - fixed an off-by-one error in glob_dir_to_array - -shell.c - - removed an extra increment of arg_index when setting up the - arguments for -c command - - 4/17 - ---- -pathexp.c - - made quote_globbing_chars backslash-quote backslashes as well as - `?*[]'; changed it to be a little faster + - new extern declarations for delete_all_jobs() and nohup_all_jobs() -bashhist.c - - call quote_globbing_chars to quote backslashes in the previous - history line even if no other globbing chars are present. This - is done only if we're matching against a HISTIGNORE pattern of `&' - - don't bother quoting globbing characters in the current history - line in history_should_ignore -- fnmatch ignores special chars in - its `string' argument - -[bash-2.0-alpha2 frozen] +builtins/jobs.def + - `disown' without any jobspec arguments means the current job. Fix + a core dump printing the error message when there is no current job - 4/18 + 5/12 ---- -command.h - - new flag value for a word: W_NOSPLIT. A word with this bit set - in its flags will not have word splitting performed - -parse.y - - turn on the W_NOSPLIT flags for assignment statements appearing - where an assignment statement is acceptable (words that would - return ASSIGNMENT_WORD rather than WORD). This means that, for - the time being, assignment statement arguments to builtins like - `declare' or `alias' will be split unless they are quoted - subst.c - - don't split a word in expand_word_internal if the W_NOSPLIT flag - is set, rather than checking W_ASSIGNMENT; do the same thing in - expand_word_list_internal - -builtins.h - - a new flag, ASSIGNMENT_BUILTIN, indicating that this builtin takes - assignment statements as arguments - - rearranged the values of the builtin flags, so the BUILTIN_* flags - come first, then the *_BUILTIN flags + - process an expansion like $((foo); bar) as a command substitution, + not as an arithmetic expansion. An arithmetic expansion must have + a closing `))' -builtins/makebuiltins.c - - added code for an array of `assignment builtins' -- builtins that - take assignment statements as arguments -- and to add the - ASSIGNMENT_BUILTIN flag for those builtins - -execute_cmd.c - - added a hack function `fix_assignment_words', which checks the - first word of a builtin command to see if it is a builtin that - has the ASSIGNMENT_BUILTIN flag set, and adds W_NOSPLIT to the - flags for all words with the W_ASSIGNMENT bit set. This means - that word splitting is not done for any of the assignment - statements in commands like `declare z=$a' - - 4/19 + 5/14 ---- -execute_cmd.c - - fixed a memory-freed-twice error in find_in_path_element - -lib/readline/rltty.c - - include <sys/ioctl.h> if GWINSZ_IN_SYS_IOCTL is defined and - SHELL is not defined - -lib/readline/input.c - - changed a stray HAVE_FIONREAD to FIONREAD - - include <sys/ioctl.h> if FIONREAD_IN_SYS_IOCTL is defined - -aclocal.m4 - - new macro, BASH_HAVE_FIONREAD, to check for a #define of - FIONREAD in <sys/ioctl.h> or one of the files it includes; - defines FIONREAD_IN_SYS_IOCTL if present - -config.h.in - - new line for FIONREAD_IN_SYS_IOCTL - -configure.in - - call BASH_HAVE_FIONREAD - - 4/22 - ---- -builtins/cd.def - - fixed a memory-freed-twice error in mkpath() - -jobs.c - - don't print a job termination message for a non-interactive shell - with startup_state == 2 (those shells are started to run commands - when bash is invoked with `-c command') - - 4/23 - ---- -general.h - - definition for a `generic pointer' type PTR_T -- `void *' on ANSI - C systems, `char *' otherwise - -jobs.h - - new members of job struct: `j_cleanup', a function to call when the - job is marked JDEAD, and `cleanarg', argument to pass to j_cleanup - -jobs.c - - initialize j_cleanup and cleanarg to NULL in stop_pipeline - - call j_cleanup from waitchld() when a job is marked JDEAD - -test.c - - fixed binop() so it recognizes `<' and `>' as binary operators - - fixed a bug in binary_operator so `<' works correctly - -tests/test-tests - - fixed the tests so they no longer rely on the modes of files in - the file system to test -u, -g, -r, -x, -w, and so on, except - for a few `standard' files like /dev/tty and /dev/null - - added tests for string < string and string > string - -xmalloc.c - - include <unistd.h> if HAVE_UNISTD_H is defined for a prototype - for sbrk - - add an extern declaration for sbrk if SBRK_DECLARED is not defined - - use PTR_T to cast the return value of sbrk() when finding out where - the break is and how many bytes of memory have been allocated - -lib/malloc/malloc.c - - added code to write 0xcf into memory as it's freed, to uncover - callers that try to refer to freed memory, and writes 0xdf into - newly-allocated memory, to uncover callers that assume something - about new allocations (e.g., that newmem[0] == 0) - -lib/malloc/gmalloc.c - - latest version from GNU sources - - 4/25 - ---- -doc/bash.1 - - changed the description of `unset' to include a description of - the `-v' option - -parse.y - - fixed a problem with conversion to 12-hour time in - decode_prompt_string that made 12:00pm show up as 00:00pm - - 4/26 - ---- -builtins/common.c, subst.c - - a couple of fixes from Andreas Schwab - -configure.in - - set up the minimal configuration after checking for - --enable-minimal-config with AC_ARG_ENABLE, before checking any - of the other options, instead of after checking all options. - This makes `--enable-minimal-config --enable-prompt-string-decoding' - work as documented - - changed AC_PREREQ to require autoconf version 2.8 or higher - - added some code to disable gnu malloc by default on the systems - listed in NOTES - - set MALLOC_SRC to have the $(ALLOC_LIBSRC)/ prefix to avoid having - a directory in the dependencies when making without the gnu - malloc - -lib/malloc/Makefile.in - - make gmalloc.o depend on $(BUILD_DIR)/config.h - - 4/30 - ---- -COMPAT - - new file listing user-visible incompatibilites between bash-1.14 - and bash-2.0 - -parse.y - - new prompt expansions, \v (version) and \V (version + patchlevel) - -config.h.top - - the default value of PS1 is now '\s-\v\$ ' - -doc/{bash.{1,html},features.texi} - - added descriptions of \v and \V prompt expansions - - changed default value of PS1 - -Makefile.in - - added dependencies on config.h.top for files that use definitions - included there - -builtins/exec.def - - removed reference to `no_exit_on_failed_exec' from the help text - - 5/3 - --- -builtins/cd.def - - fixed a typo in fix from 4/22 - - 5/7 - --- -builtins/common.c - - new function `no_options (WORD_LIST *)' to be called by builtins - that do not take options to check for options and -?. It returns - 0 on success, non-zero if an unwanted option is supplied +builtins/evalstring.c + - the third argument to parse_and_execute() is now a flags word. + The caller can control the value of `interactive' and whether + or not history is disabled while parse_and_execute() runs builtins/common.h - - extern declaration for no_options - -builtins/return.def - - corrected the error message to include returning from a sourced - script - -builtins/{getopts,eval,wait,source,fg_bg,help}.def - - changed the following builtins to either call no_options or test - explicitly for options and return EX_USAGE if any are found: - - getopts eval wait source . fg bg help - -builtins/help.def - - error messages are now printed using builtin_error - - 5/8 - --- -builtins/jobs.def - - fixed an unitialized variable problem - -tests/more-exp.tests - - added additional tests for IFS problem uncovered by `iffe' - - 5/9 - --- -lib/malloc/Makefile.in - - use $(ALLOCA_SOURCE) instead of $< in rule that builds alloca.o. - Some makes don't expand the $< in non-suffix rules - -lib/readline/rldefs.h - - fix workaround for SVR4.2 bug - -shell.c - - even though SVR4.2 has getpeername(), isnetconn() should not use it - -maxpath.h - - rework to make sure PATH_MAX and NAME_MAX are defined, and remove - the BUILDING_MAKEFILE code - -general.c, parse.y, oslib.c, jobs.c, builtins/common.c, builtins/cd.def - - change uses of MAXPATHLEN to PATH_MAX - -examples/loadables/{{log,base,dir}name,tty,pathchk,tee}.c - - new loadable builtins: - - logname basename dirname tty pathchk tee - -configuure.in, config.h.in - - look for tzset(3), define HAVE_TZSET if found - -subst.c - - new special variable function, sv_tz, which calls tzset when - TZ is changed, if tzset(3) exists and the shell is compiled - to do prompt string decoding - -subst.h - - extern declaration for sv_tz - - 5/10 - ---- -builtins/echo.def - - only call printf if the string to print is non-null - - add an fflush(stdout) after the printf call to work around a - bug in SunOS 5.5 - - 5/16 - ---- -shell.c - - moved some variable declarations out of this file to more - logical places - -support/config.guess - - small fixes from rfg@monkeys.com - -version.c - - moved functions for getting, setting, and displaying shell version - information here from shell.c - -general.c - - moved set_lines_and_columns to variables.c - - moved getc_with_restart and ungetc_with_restart to input.c - - new function argv_to_word_list(), converts an array of strings - into a WORD_LIST - - renamed find_name_in_list to find_name_in_array to match rest - of functions that operate on arrays of strings + - new #defines for the flag values for parse_and_execute() -configure.in, Makefile.in, jobs.c, nojobs.c - - changes so that jobs.c no longer includes nojobs.c, and the correct - object file (jobs.o or nojobs.o) is selected by configure - and substituted into the Makefile +{bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c, +builtins/{eval,fc}.def + - changed calls to parse_and_execute appropriately -list.c - - new file, list manipulation functions from general.c - -externs.h, general.h - - moved extern declarations for functions defined in oslib.c and - list.c to externs.h from general.h - - 5/17 - ---- -locale.c - - new file, with locale code from parse.y and shell.c - -shell.c - - don't turn off job control if act_like_sh is set - - if an unknown option is supplied at startup or if -c is - supplied without an argument, exit with EX_USAGE - - call posix_initialize after parsing all the options, to - catch `bash -o posix' - - new functions: init_interactive(), init_noninteractive() - - exit with EX_NOTFOUND if a script argument is not found - - exit with EX_NOINPUT if a script file cannot be opened for - some reason - -shell.h - - new define for EX_NOINPUT exit status (126) - - 5/18 - ---- -lib/readline/bind.c - - fixed _rl_get_keyname() so that it properly handles C-\ and outputs - it as \C-\\ and C-" as \C-\". This fixes the improper binding - commands written by `bind -p' that caused weird things to happen - when people used the output of `bind -p' as a start for their - own inputrc files - - new function _rl_init_file_error to print error messages encountered - while parsing the inputrc file - - print out an error message if parsing an inputrc line and no closing - double quote is found for a key binding - -lib/readline/complete.c - - in rl_complete_internal, if the completion function results in - multiple matches, but none match up to even the first character, - use what the user typed in (which is presumably a glob pattern - that expanded into multiple files) as matches[0]. This makes - things like show-all-if-ambiguous work right, too - -oslib.c - - if we are providing our own version of getenv(), provide a function - _getenv() as well, which just calls getenv() - -builtins/ulimit.def - - #define _KERNEL before including <sys/resource.h> if HPUX is - defined. This makes the full set of limits available on hpux - version 8 and above +builtins/evalfile.c + - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg, + don't pass SEVAL_NOHIST to parse_and_execute + - new function: fc_execute_file, which sets FEVAL_HISTORY in the + flags argument to _evalfile() bashline.c - - new function, enable_hostname_completion, sets up readline to - perform or not perform hostname completion. Hostname completion - is on by default. - - don't attempt hostname completion in attempt_shell_completion() - unless perform_hostname_completion is set - -builtins/shopt.def - - add a `set_func' member to the shopt options structure, to provide - a hook for those variables that require a little more than just - toggling a variable on or off - - new shopt variable `hostcomplete', turns hostname completion on and - off - -doc/{bash.{1,html},features.texi} - - added description of new shopt `hostcomplete' variable - - 5/21 - ---- -sig.c - - don't try to save the shell history in termination_unwind_protect - if we're dying due to SIGABRT + - call bash_add_history instead of add_history from + vi_edit_and_execute_command so the bash state variables get + updated properly. This keeps the `v' command from operating + on an empty command when the history list is stifled bashhist.c - - new functions: last_history_entry (static), last_history_line + - bash_add_history is now global bashhist.h - - extern declarations for new functions in bashhist.c - -error.c - - have programming_error() report the last command in the history - before aborting + - extern declaration for bash_add_history builtins/fc.def - - if the editor returns a non-zero exit status when using `fc -e', - return immediately without trying to execute the commands, as - per Posix.2, 5.12.2 - - when using `fc -s', echo the command to be executed to stderr, - not stdout - -lib/readline/terminal.c - - new file, with all code related to termcap/terminfo - -lib/readline/{readline,rltty,display,util}.c - - moved functions dealing with termcap to terminal.c - -lib/readline/readline.c - - readline_initialize_everything now calls _rl_enable_meta_key() - to turn on the meta key, based on the value of _rl_enable_meta - (on by default) - -lib/readline/rltty.c - - do not enable and disable the meta key each time readline is - called; do it once at initialization - - 5/23 - ---- -bashhist.c - - when `hist_verify' is set, call re_edit with the expanded line, - not the original one, and do not print the results of the - expansion before re-editing - - 5/24 - ---- -support/config.guess - - recognize linux/sparc - -configure.in - - don't use GNU malloc on linux/sparc - -variables.c - - initialize a new $MACHTYPE variable to the value of MACHTYPE as - set by autoconf - -doc/{bash.{1,html},features.texi} - - documented $MACHTYPE - - 5/30 - ---- -builtins/ulimit.def - - allow the max vm size to be set via setrlimit() if RLIMIT_VMEM - is defined - - 5/31 - ---- -shell.h - - changed EX_USAGE to 258, EX_BADUSAGE is now 2 - - added a number of execution failure statuses, so that builtins - can indicate various failures. All are greater than 256, so - they cannot be returned by other utilities - -execute_cmd.c - - new function, builtin_status(), to translate the new return - status codes to something the shell can export - - changed execute_simple_command to call builtin_status after - execute_builtin_or_function to translate error codes if a - builtin is invoked. If a function or regular builtin is - invoked, all return values greater than EX_SHERRBASE get - translated to EXECUTION_FAILURE, with the exception that - EX_USAGE gets translated to EX_BADUSAGE. If a special - builtin failed with a status > EX_SHERRBASE, special_builtin_failed - is set to cause the shell to exit in POSIX mode - - changed execute_builtin_or_function to return EX_REDIRFAIL if - redirections fail - - changed execute_subshell_builtin_or_function to translate - EX_USAGE to EX_BADUSAGE if a builtin is executed - - set this_command_name to NULL in execute_for_command before binding - each member of the word list to the loop variable, to avoid - garbled error messages if the variable has the integer attribute - -builtins/{set,unset}.def - - return EX_USAGE instead of EXECUTION_FAILURE if a bad option is - supplied - -builtins/source.def - - return EX_USAGE instead of EXECUTION_FAILURE if the required - filename argument is missing - -builtins/setattr.def - - return EX_BADASSIGN if any assignment statements given as arguments - to readonly, export, etc. return failures (assignment to - non-identifier, assignment to readonly variable) - -builtins/declare.def - - don't allow `declare var=value' to assign value to a readonly - variable - -lib/readline/rldefs.h - - include <stdarg.h> if we're going to be using stdarg instead of - varargs - -lib/readline/display.c - - added `stdarg' version of rl_message - -lib/readline/readline.h - - changed extern declaration for rl_message to be in ANSI-C format - if __STDC__ is defined and we're using stdarg - -variables.c - - make sure this_command_name is set to null before calling - make_variable_value in assign_array_var_from_string so any - error messages are not garbled - - 6/2 - --- -builtins/common.c - - don't execute the command in parse_and_execute if -n has been - enabled and the shell is not interactive - - include flags.h for read_but_dont_execute - -[bash-2.0-alpha3 released] - - 6/5 - --- -subst.c - - array_length_reference and parameter_brace_expand_length now - return -1 on errors - - parameter_brace_expand now returns &expand_param_error if - paramter_brace_expand_length returns something < 0 - -variables.c - - assign_in_env now checks for assignments to readonly shell - variables and disallows them - - 6/6 - --- -xmalloc.c - - only do pointer arithmetic on pointers cast to (char *), since - it's not required that compilers support arithmetic on void * - -shell.c - - make sure <sys/socket.h> is included with the same conditions - used to call getpeername(2) in isnetconn() + - call fc_execute_file instead of maybe_execute_file in the + edit-and-re-execute case (fc -e ...) + - don't manually insert the commands from the file created by `fc -e' + into the history list, just set remember_on_history and let + fc_execute_file take care of telling parse_and_execute to do the + right thing. This makes compound commands and the `cmdhist' + and `lithist' settings work better. This supersedes the fix of + 1/27. This was reported again by rchen@fractal.eng.yale.edu. parse.y - - added a new function, paren_match, to parse the contents of $(...) - constructs. This function correctly handles embedded quoted - strings, embedded command substitutions, embedded command - substitutions with embedded quoted strings, etc. The implementation - is much closer to that described in POSIX.2, section 3.6.3. - - changed read_token_word to call paren_match where appropriate - -subst.c - - rewrote extract_delimited_string so that it correctly understands - quoted strings inside command substitutions, a la paren_match - in parse.y. Corrected the description of the function's output - in the code. extract_delimited_string is now very recursive, and - does not try to do everything in one pass without recursion - - 6/7 - --- -test.c - - fixed three_arguments() to test the second argument for a valid - binary operator before checking whether or not the first argument - is `!'. This is what POSIX.2 says to do. - -lib/malloc/malloc.c - - don't compile in the memory scrambling code (#define MEMSCRAMBLE) - if NO_MEMSCRAMBLE is defined. + - the body of a `for' command (the commands between do...done or + {...}) should be a `compound_list' instead of a `list'. Problem + reported by cpg@research.bell-labs.com -configure.in - - define NO_MEMSCRAMBLE in LOCAL_CFLAGS for SCO 3.2v[45] - - 6/9 - --- -parse.y - - renamed paren_match to parse_matched_pair - - call parse_matched_pair to parse <(...) and >(...) constructs, - since those should be treated the same as $(...) for the purposes - of matching parens and skipping embedded quoted strings - - 6/13 + 5/19 ---- -parse.y - - augmented parse_matched_pair - o fixed up backslash quoting and CTLESC handling after - backslashes - o match pairs of ${...} and $[...] inside double-quoted - strings or `` strings - o keep track of line number quoted string starts on for - better error messages - o push and pop delimiters when parsing quoted strings - inside $(...), ${...}, and $[...] for use by the - history code - o set EOF_Reached to 1 if we get an EOF before finding the - match closer - - rewrote read_token_word from scratch to use parse_matched_pair: - o shell quote characters use parse_matched_pair to find - the matching quote - o fixed up backslash parsing code - o compound array assignments use parse_matched_pair - o corrected all_digits and dollar_present computations, so, - for instance, 2''>/dev/null is no longer accepted as - identical to 2>/dev/null - o converted ${...} parsing to use parse_matched_pair - o removed printing of error messages about unmatched quotes; - now handled by parse_matched_pair - o converted $'...' and $"..." to use parse_matched_pair - o removed all of the delimited_xxx and dollar_xxx variables - and embedded_quoted_string - - modified report_syntax_error to regularize error messages: - o non-interactive shells and interactive shells running - scripts with `.' now always report line numbers - o unexpected EOF is always reported when EOF_Reached is true - o non-interactive shells no longer duplicate the script name - in error messages (e.g., `./z3: ./z3: line 3: syntax error') - -bashline.c - - make sure `newnames' is freed in _ignore_completion_names - lib/readline/complete.c - - don't insert the first match on TAB completion in - rl_complete_internal() if matches[0] is the empty string -- - that will overwrite whatever the user has typed, if dequoting - what the user typed results in the empty string + - in filename_completion_function, if we find that the directory + pointer (return value from opendir(3)), is not null when state + is 0 (indicating that this is the first time the completion + function has been called for the current completion), call + closedir on it, assuming that it was left open by a previous + (interrupted) completion -execute_cmd.c - - include <limits.h> if HAVE_LIMITS_H is defined for ARG_MAX - - only put the special environment variable for GNU getopt into - the environment if ARG_MAX exceeds 10240 +[bash-2.01-beta2 frozen] -subst.c - - rewrote extract_dollar_brace_string so that it fully obeys - the POSIX.2 rules for finding the closing `}' and uses - skip_{single,double}_quoted rather than trying to do it with - inline delimiters - - removed the INC_NEST and DEC_NEST defines - - 6/14 - ---- -jobs.c - - don't print status messages for background jobs that complete - successfully when running shell scripts - -builtins/shopt.def - - when using shopt -o as a synonym for set -o, make sure $SHELLOPTS - is updated - - make sure to update $SHELLOPTS when using shopt to set or unset - interactive comments - -execute_cmd.c - - fixed find_in_path_element to not return non-executable files - when FS_EXEC_PREFERRED is one of the flags, after saving such - a file as file_to_lose_on (fix from william@nscs.fast.net) - - 6/17 - ---- -lib/readline/complete.c - - after printing possible completions, all lines of a multi-line - prompt are redisplayed using rl_forced_update_display() - -subst.c - - in expand_word_internal, only do tilde expansion on words where - (flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT (unquoted - assignment statements) and contain unquoted `=~' or `:~', and - only if posixly_correct is off. POSIX.2 says that only the - assignments preceding the command name should be tilde-expanded. - - 6/18 - ---- -support/config.guess - - recognize the new Pyramid DC-OSx as `mips-pyramid-sysv4' - -configure.in - - set LOCAL_CFLAGS to -Xa for mips-pyramid-sysv4 as per - Peter Chubb - -subst.c - - variable assignment errors when there is not a command name - after the assignments now causes a non-interactive shell to - exit in POSIX.2 mode - -execute_cmd.c - - if the iteration variable in a for statement is a read-only - variable, a variable assignment error occurs. This causes - non-interactive shells to exit in posix mode, and a failure - status to be returned for other non-interactive shells and - interactive shells - - if the selection variable in a select statement is a read-only - variable, a variable assignment error occurs, with the same - consequences as a for statement variable assignment error - -doc/bashref.* - - renamed features.* to bashref.*, since that more accurately - reflects the current contents - - 6/19 - ---- -test.c - - changed three_arguments() to do one-argument tests on $1 and - $3 and return the appropriate values if -a or -o is given as - the second argument - - changed three_arguments() to perform a one-argument test on - $2 if $1 == '(' and $3 == ')' and return that result - - make sure test_stat translates /dev/fd/xx to DEV_FD_PREFIX/xx - so /dev/fd/0 always means the same thing, even on linux, - which uses /proc/self/fd - -aclocal.m4 - - added a check for libncurses in BASH_CHECK_LIB_TERMCAP - -configure.in - - added an initial message saying we're configuring for bash-2.0 - -lib/glob/fnmatch.c - - made a small change to fnmatch() to fix a bug matching patterns - with multiple consecutive `*'s - - 6/20 - ---- -parse.y - - inhibit history expansion when calling pre_process_line() from - shell_getc() if the current delimiter is a single quote, even - if we're on a different line than the opening quote - - make sure read_a_line prints a prompt if we're interactive and - not using readline, and make sure we call clearerr() if we - get EOF when interactive and not using readline - -bashhist.c - - new function history_expansion_p(char *) returns 1 if the string - passed contains the history expansion or history substitution - characters - - pre_process_line() now calls history_expansion_p and calls - the history expansion code only if that returns 1 - - 6/26 - ---- -lib/readline/isearch.c - - swap the behavior of ^J and ^M when i-searching. ^J now terminates - the search without accepting the line. ^M terminates the search - and accepts the line, executing the command - -examples/loadables/sprintf.c - - new `sprintf' builtin: sprintf var format [args...] - -lib/readline/readline.c - - added a line in _rl_dispatch that sets _rl_suppress_redisplay if - the function is rl_insert and there is input available - - 6/27 - ---- -builtins/getopts.def - - new function, getopts_bind_variable(), used when assigning a value - to the user-supplied variable passed to getopts(). It makes sure - that that variable name is legal and prints an error message if it - is not - -builtins/getopt.c - - don't increment sh_optind until after we've checked whether or not - the current option character appears in the list of options passed - to getopts by the user - - 6/28 - ---- -variables.c - - added a new parameter to print_var_value: QUOTE. If it's non-zero - and the variable's value contains shell metacharacters, quote the - value so it can be read back in - -variables.h - - changed extern declaration for print_var_value - -siglist.h - - if SYS_SIGLIST_DECLARED is not defined, but HAVE_UNDER_SYS_SIGLIST - is, only declare sys_siglist as extern char *sys_siglist[] if - sys_siglist is not `#define'd - -parse.y - - make sure a reserved word is acceptable before returning `}' as - a token from special_case_tokens, even if the token read so far - is "}" - - make reset_parser set allow_open_brace to 0 - - 7/1 - --- -test.c - - fixed binop to not try to read s[3] if s[2] == '\0'. There are - no one-character binary operators that begin with `-' - -variables.c - - fixed kill_all_local_variables to do nothing if variable_context - is >= local_variable_stack_size (indicating that we do have some - local variables, but not at this level of function nesting, and - we are beyond the end of the array allocated the last time we - had local variables) - - 7/2 - --- -execute_cmd.c - - non-interactive shells in posix mode should exit if the variable - in a for command is not a valid identifier. This should really - be caught by the parser - - non-interactive shells in posix mode should exit if a function - name is not a valid identifier. This should also be caught by - the parser - - 7/3 - --- -jobs.c - - non-interactive shells should ignore stopped children, so - waitchld() should set waitpid_flags to WUNTRACED only if the - shell is interactive and it's not a subshell environment - -lib/readline/signals.c - - if not being compiled as part of the shell, readline should - catch SIGTERM and clean up - -shell.c - - change to isnetconn: on Solaris 2.5, getpeername() can return - EINVAL rather than ENOTSOCK if the fd passed as the first - argument is not a socket - - 7/5 - --- -lib/readline/complete.c - - new variable, available to library users, to inhibit completion - and cause the completion character to be inserted into the - line with self-insert: rl_inhibit_completion. Set to 0 by default. - -lib/readline/readline.h - - extern declaration for rl_inhibit_completion - -lib/readline/doc/rltech.texinfo - - documented rl_inhibit_completion - -lib/readline/bind.c - - new readline user variable: disable-completion. This provides - users a way to toggle the value of rl_inhibit_completion - -doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo - - documented disable-completion variable - -lib/readline/doc/Makefile - - added `html' target to create html from rlman.texinfo and - hist.texinfo - - 7/8 - --- -builtins/cd.def - - only try cd spelling correction if the shell is currently - interactive, regardless of value of `cdspell' option - -lib/posixheaders/alloca.h - - AIX 4.2 needs `#pragma alloca' if gcc is not being used - - 7/9 - --- -builtins/getopts.def - - return EXECUTION_FAILURE from getopts if it's trying to assign - to a read-only variable - - reset sh_badopt to zero in getopts_reset() - -builtins/getopt.c - - new variable, sh_badopt, set to 1 if we find an illegal option - - do the increment of sh_optind if sh_badopt is non-zero and we're - at the end of the option string at the beginning of sh_getopt(). - The increment is deferred until the next call so $OPTIND is - correct - -builtins/getopt.h - - extern declaration of sh_badopt - - 7/10 + 5/27 ---- Makefile.in - - don't pass ALLOCA_SOURCE or ALLOCA_OBJECT to the make in lib/malloc - - don't make libmalloc.a depend on ALLOCA_DEP -- it causes some - compilers to build alloca.o in the top directory, and if ALLOCA - is not defined, makes the malloc library depend on a directory - -aclocal.m4 - - some small changes to make the output look better + - make sure that `make distclean' (and other clean targets) remove + the `printenv' executable -memalloc.h - - made some small changes suggested by the autoconf documentation +tests/execscript, tests/redir.tests + - make sure to set LANG=C and LC_ALL=C so the messages show up in + English - 7/11 - ---- -parse.y - - swapped meanings of \h and \H in prompt_string_decode for - bash-1.14.6 compatibility - -doc/{bash.{1,html},bashref.texi} - - updated prompt string decoding section with swap of \h and \H - -general.c - - print_timeval and print_time_in_hz now accept a FILE * as the - first argument, so `times' can print to stdout while `time' - prints to stderr - -execute_cmd.c - - changed time_command to print the timing statistics to stderr - -builtins/times.def - - added the FILE * argument to the calls to print_timeval and - print_time_in_hz - -support/texi2html - - upgraded to version 1.50 - -error.c - - include bashhist.h if HISTORY is defined for declarations of - last_history_line() and remember_on_history - -lib/glob/glob.c - - add a `#pragma alloca' as the first thing in the file if we're - not using gcc and _AIX is defined - -lib/posixheaders/memalloc.h - - remove the `#pragma alloca' stuff; it is done in the C source - files now, to avoid problems with other AIX header file - declarations - - 7/12 - ---- -lib/readline/rltty.c - - some changes to work around AIX 4.2 bugs (sometimes OPOST is unset - in termios, sometimes FLUSHO is inexplicably set in termios, etc.) - - 7/15 - ---- -lib/readline/rltty.c - - make SETATTR use TCSADRAIN on POSIX machines. This setting is - supposed to be used for changes that affect output - -[bash-2.0-alpha4 released] +tests/run-func + - add a warning about exported functions in the environment - 7/16 + 5/29 ---- -trap.c - - changed reset_or_restore_signal_handlers to honor traps before - special signals, so that `trap "" 2' works right and causes - children to ignore SIGINT - -locale.c - - added lc_all variable to track the value of LC_ALL - - added new functions: set_default_locale_vars, set_locale_var, - set_lang, get_locale_var, removed get_current_messages_locale - -subst.h - - added extern declaration for sv_locale - -subst.c - - LC_ALL, LC_CTYPE, LC_MESSAGES, and LANG are now special variables; - sv_locale() is called when they are assigned a value - -shell.c - - call set_default_locale_vars after initializing the shell variables - in main(), so LC_CTYPE and LC_MESSAGES (if present) have values - - shell.c does not need to include <locale.h> - -general.c - - changed print_timeval and print_time_in_hz to format their output - as Posix.2 specifies for `time -p' if the new POSIX_TIME argument - is non-zero - -parse.y - - new grammar production: timespec, to handle `time' and `time -p' - - change to special_case_tokens so that -p after `time' returns - TIMEOPT - -execute_cmd.c - - set posix_time in time_command if the command's flags include - CMD_TIME_POSIX - - call print_timeval and print_time_in_hz with posix_time as - the new third argument - - use a space to separate the word (`real') and the time if we're - in posix mode. This is what POSIX.2 defines for `time -p' - -builtins/times.def - - call print_timeval and print_time_in_hz with 0 as the new third - argument - -command.h - - new flag: CMD_TIME_POSIX, used to handle `time -p' - -doc/{bash.{1,html},bashref.texi} - - documented `time -p' - - 7/17 - ---- -support/mkversion.c - - include `config.h' before any other include files - -parse.y - - initialize was_dollar to 0 in parse_matched_pair - -configure.in - - removed duplicate check for <sys/file.h> from call to - AC_HAVE_HEADERS - -sig.c - - include siglist.h so we can find out if it defines HAVE_SYS_SIGLIST - -siglist.h - - define HAVE_SYS_SIGLIST if we end up defining sys_siglist as - _sys_siglist (Solaris 2.[45]) - -siglist.c - - include "siglist.h" before testing whether or not HAVE_SYS_SIGLIST - is defined; it may be defined in there (Solaris 2.[45]) - - 7/19 - ---- -examples/misc/alias-conv.sh - - updated, now uses code from examples/functions/csh-compat to do - the alias conversion, uses `command' builtin in functions it - creates, does some substitution of csh special variables to - bash equivalents - -examples/misc/cshtobash - - a more ambitious script that attempts to convert csh aliases, - environment variables, and local variables to bash equivalents - - 7/22 - ---- -bashline.c - - added `:' to the set of completion word break characters so that - individual directories in $PATH assignments can be completed - -aclocal.m4 - - added a new macro, BASH_CC_WORKS, that aborts configuration if - ${CC} can't compile a simple program successfully - -configure.in - - call BASH_CC_WORKS before doing anything else - - 7/23 - ---- -execute_cmd.c - - fixed select_query to print the prompt ($PS3) to stderr - -support/bashbug.sh - - workaround for bug in SunOS 5.x /bin/sh that causes it to - not ignore interrupts while waiting for a foreground process - to exit - - 7/24 - ---- -general.c - - added new functions to decompose `timeval's and `clock_t's into - seconds and thousandths of seconds: timeval_to_secs and - clock_t_to_secs - - changed print_timeval and print_time_in_hz to call timeval_to_secs - and clock_t_to_secs, respectively - - removed no-longer-used third argument for print_timeval and - print_time_in_hz -- `time' output is now done in execute_cmd.c - -general.h - - new extern declarations for timeval_to_secs and clock_t_to_secs - -builtins/times.def - - changed calls to print_timeval and print_time_in_hz, removing the - no-longer-used third argument +builtins/hash.def + - if one of the arguments passed to `hash' is an absolute pathname, + just continue the loop, don't do list=list->next first. This + fixes the `hash a/b' -> core dump bug -execute_cmd.c - - changed the way time_command prints its output: it now interprets - a format string, replacing several escape sequences prefixed with - a `%' with the real, user, and system times. There are options in - the format string to ask for the `long' format that `times' uses - as well as to specify the number of places after the decimal point, - and whether to output fractional seconds at all - - time_command now uses the value of the `TIMEFORMAT' variable, if - present, to format the timing output. This is flexible enough to - encompass the bash default, posix `time -p', BSD, and SV time - formats - - 7/25 + 5/30 ---- -Makefile.in - - `make clean' should delete the files listed in $(CREATED_SUPPORT); - `make mostlyclean' should not - -doc/{bash.{1,html},bashref.texi} - - fixed an error in the description of the effect that setting and - unsetting GLOBIGNORE has on the setting of the `dotglob' option - -doc/bashref.texi - - updated the section listing the major differences between bash - and the SVR4.2 shell - -lib/readline/readline.c - - removed the setting of _rl_suppress_redisplay, since it doesn't - really do anything yet - -oslib.c - - new function get_clk_tck (void), returns the value of _SC_CLK_TCK - if sysconf(3) is available, otherwise returns the value of - CLOCKS_PER_SEC (default 60) - general.c - - moved CLOCKS_PER_SEC defines to oslib.c - - changed clock_t_to_secs to call get_clk_tck once to get the - right value to use + - change canonicalize_pathname to leave a leading `/' alone, as + POSIX requires -externs.h - - extern declaration for get_clk_tck - -execute_cmd.c - - changed print_formatted_time so that a `%' at the end of the string - is output literally - - changed print_formatted_time to output a newline after the - translated format string, so it does not need to be included in - the format - - changed BASH_TIMEFORMAT (the default time format) to have a leading - newline to match ksh93 - -configure.in - - use `shlicc2' on BSD/OS machines - - 7/26 - ---- -doc/bash.html - - major overhaul, cleaned up text, corrected some minor HTML errors - -variables.c - - call sv_optind and sv_opterr to initialize the getopts stuff in - initialize_shell_variables - - 7/29 - ---- -shell.c - - don't let maybe_execute_file try to read files that are not - `regular files' - - 7/30 - ---- -parse.y - - cast `string' in yy_string_get() to unsigned char * to avoid - sign extension bugs. For example, bash -c $'ls\377who' - - -builtins/reserved.def - - add help text for the `time' reserved word - - deleted description of `HISTCONTROL' - - added descriptions for HISTIGNORE, PWD, HOSTNAME, GLOBIGNORE, - MACHTYPE - - 7/31 - ---- -builtins/common.c - - parse_and_execute saves and restores the line number around - calls, and resets it to 0 when pushing the string onto the - input stack - -parse.y - - added code that parses `` within a double-quoted string as a - single word - - 8/6 - --- -configure.in, config.h.in - - look for `textdomain' as well as `gettext' for internationalization - -locale.c - - when LC_MESSAGES is set, call textdomain as well as setlocale - - new variable `default_domain', used to track the value of - $TEXTDOMAIN - -subst.c - - call sv_locale when TEXTDOMAIN changes - - 8/7 - --- -error.c - - new function, sys_error(), which prints a formatted string followed - by a colon and strerror(errno) to stderr - -error.h - - extern declaration for sys_error - -jobs.c, nojobs.c, input.c, execute_cmd.c, subst.c - - changes to use sys_error() - -[many files] - - changes to many of the literal strings in the code for consistency - and easier potential translation - - 8/8 + 6/2 --- -parse.y - - new function debug_parser(int) to toggle the value of yydebug - if YYDEBUG != 0 +support/xenix-link.sh + - shell script for linking bash under Xenix - 8/9 + 6/3 --- -oslib.c - - don't use CLOCKS_PER_SEC, just try to get CLK_TCK (60 by default) - bashline.c - - set saved_history_line_to_use to -1 when it's not going to be used - rather than 0. A value of 0 can be confused with the first - history line - -builtins/evalstring.c - - moved parse_and_execute and auxiliary functions here from - builtins/common.c - -builtins/evalfile.c - - moved maybe_execute_file here from shell.c - -Makefile.in, builtins/Makefile.in - - changes necessitated by the new files - - 8/12 - ---- -builtins/common.c - - fixed an off-by-one bug in single_quote that could make bash - run off the end of a string if it consisted entirely of single - quotes - - 8/13 - ---- -shell.c - - moved code from main() to a new function: open_shell_script - - don't try to fclose(default_input) if BUFFERED_INPUT is defined - - moved argument binding code out of two places in main() and - open_shell_script() to a new function: bind_args(). This takes - an additional argument telling whether to bind starting at $0 - or $1 - - moved the code that calls the with_input_from_* functions into - a new function: set_bash_input - - moved the normal shell command-line option parsing code out of - main() into a new function: parse_shell_options - - moved the long option parsing code out of main() into a new - function: parse_long_options() - -general.c - - new function: move_to_high_fd(fd), which tries to move FD to a - file descriptor close to the allowed maximum, returning the new - fd and closing the old one (or returning the old one if something - goes wrong) - -general.h - - new extern declaration for move_to_high_fd - -variables.c - - moved indirection_level_string() here from shell.c - -jobs.c - - change initialize_jobs to use move_to_high_fd() instead of the - inline code to do the same thing - - 8/14 - ---- -lib/readline/readline.c - - add `en_US.ISO8859-1' to the list of legal LANG values that turns - on readline's 8-bit mode - - 8/15 - ---- -builtins/evalfile.c - - combined source_file and maybe_execute_file into a new function - _evalfile(fname, flags), where the flags select the appropriate - behavior - -eval.c - - moved the functions that perform the read-eval loop here from - shell.c - -execute_cmd.c - - changed CPU calculation for printing timing statistics using - ideas and code from Deven Corzine (deven@ties.org) - -eval.c, builtins/evalstring.c - - make sure we dispose of global_command if set -n is on and the - shell is not interactive - - 8/16 - ---- -variables.c - - make a new array variable, BASH_VERSINFO, with version information: - - BASH_VERSINFO[0] = release (2) - BASH_VERSINFO[1] = version (00) - BASH_VERSINFO[2] = patch level (0) - BASH_VERSINFO[3] = build version (1058) - BASH_VERSINFO[4] = release status (beta1) - BASH_VERSINFO[5] = $MACHTYPE (sparc-sun-sunos4.1.4) - -doc/{bash.{1,html},bashref.texi} - - Documented BASH_VERSINFO - -configure.in, config.h.in - - look for bindtextdomain(), set HAVE_BINDTEXTDOMAIN if found - -subst.c - - call sv_locale if TEXTDOMAINDIR is set or changes - -locale.c - - handle TEXTDOMAINDIR in set_locale_var; call bindtextdomain if - it is present - -tests/array.tests - - added calls to egrep to filter out BASH_VERSINFO and PIPESTATUS, - which can vary from system to system - - 8/19 - ---- -shell.c - - moved line_buffer_stream from here to oslib.c, made it into a - replacement for setlinebuf() if that is not available - -externs.h - - extern declaration for setlinebuf() - -lib/readline/input.c - - in rl_gather_tyi, punt if chars_avail < 0 after checking input fd - - 8/20 - ---- -builtins/suspend.def - - send SIGSTOP instead of SIGTSTP - - 8/21 - ---- -builtins/colon.def - - added true and false as builtins (undocumented) - -CWRU/POSIX.NOTES, doc/bashref.texi - - note that process substitution is not available in posix mode - -bashintl.h - - new header file for internationalization, included by locale.c - - 8/22 - ---- -subst.c - - in command_substitute, set istring to NULL before trying to - make the pipe, so if that fails, the code at error_exit: - doesn't try to free it - -execute_cmd.c - - when executing a shell script without a leading `#!' internally, - and the shell is not interactive, close the fd to the script - we're reading. If this is called by the exec builtin, the shell - will not have forked, and the fd will not have been closed, even - though it's marked close-on-exec - - if subshell_argv is non-null, free its members (except 0) and - subshell_argv in shell_execve before reassigning it - - dispose of currently_executing_command before jumping back to - subshell_top_level - -builtins/hash.def - - use a sentinel variable so we only initialize the hash table - once in initialize_filename_hashing - -shell.c - - don't flush the filename hash table in shell_reinitialize - - free dollar_vars[0] in set_shell_name before assigning it - - don't fetch the current hostname more than once - - don't fetch the current user information more than once unless - the uid changes - -parse.y - - initialize_bash_input should free bash_input.name if it is - non-null before zeroing it + - fixed a memory leak in command_word_completion_function, courtesy + of a.pfaller@pop.gun.de - 8/23 - ---- -aclocal.m4 - - changed BASH_CHECK_SOCKLIB: if -lsocket is present, check for - and cache the existence of -lnsl. Define LIBS appropriately - based on the values of the cache variables rather than relying - on the autoconf tests to do it - - 8/26 - ---- -parse.y - - fix up yy_readline_get and yy_stream_get to fix the sign - extension problem - -shell.c - - move the setjmp(top_level) that catches early SIGINTs to the - first statement in main() - -Makefile.in - - added a `strip' target to strip the binary - -[bash-2.0-beta1 frozen] - - 8/27 - ---- -parse.y - - replaced several static state variables with a single flags word: - parser_state - - 8/28 - ---- -parse.y - - in read_token_word, combined the ${...} case with the other - expansion cases -- the code was identical - - added code to handle ksh-style ((...)) -- equivalent to - `let "..."'. In fact, the above construct is translated internally - into `let "..."', so error messages output by the evaluator - will contain `let' - -expr.c - - changed evalerror to call internal_error so the name of the - shell script is prefixed to the message, if necessary - -Makefile.in - - changed RELSTATUS to `beta2' - -tests/{arith,new-exp}.{tests,right} - - changed the expected error message because of the change in format - of the arithmetic evaluation error messages in expr.c - -builtins/pushd.def - - changed pushd_builtin so `pushd -' is equivalent to `pushd $OLDPWD' - -externs.h - - changed the extern declaration for setlinebuf() to avoid having - to include stdio.h before externs.h everywhere - - 8/29 - ---- -error.c - - new function, parser_error, for use by parts of the parser that - don't want to call report_syntax_error - -error.h - - extern declaration for parser_error - -parse.y - - changed some parts of the parser to use parser_error - - made the ((...)) code #ifdef'd on DPAREN_ARITHMETIC - -shell.c - - added a line to the --help output saying to use `bashbug' to - report bugs - -configure.in - - added new option: --enable-dparen-arithmetic; it controls - the DPAREN_ARITHMETIC define in config.h - - changed $host_os check for SCO to only enable -DWAITPID_BROKEN - for sco3.2v5; all other SCO versions enable -DMUST_UNBLOCK_CHILD - -config.h.in - - added line for DPAREN_ARITHMETIC, modified by configure - -doc/{bash.{1,html},bashref.texi} - - documented new ((...)) command and new configuration option - -execute_cmd.c - - shell_execve should not try to close default_buffered_input unless - it is >= 0. Other code that closes it and deallocates the buffer - should set default_buffered_input to -1 - - 8/30 - ---- -configure.in - - more changes to LOCAL_CFLAGS for sco machines - -error.c - - changed parser_error to handle all cases of the shell being - interactive, not interactive, reading from a script, and reading - from some other file - -parse.y - - changed report_syntax_error to call parser_error for consistent - messages - -dispose_cmd.c - - change dispose_command to use programming_error instead of - report_error - -execute_cmd.c, input.c, general.c - - changed calls to report_error to internal_error, since we don't - want to possibly exit in any of those cases - - 9/3 - --- -input.c - - changed the `localbuf' type to `unsigned char' - -parse.y - - changed yy_stream_get to use feof to test for end of file when - not using getc_with_restart - - 9/6 - --- -config.h.top - - added a commented-out define for SYS_BASH_LOGOUT, which is a - system-wide .bash_logout file, run when a login shell exits - - added /sbin to STANDARD_UTILS_PATH - -builtins/exit.def - - added support for SYS_BASH_LOGOUT - - 9/10 - ---- -lib/readline/{{chardefs,histlib}.h,{bind,histexpand,readline,util,vi_mode}.c} - - changed to_upper to _rl_to_upper and to_lower to _rl_to_lower - - changed digit_value to _rl_digit_value - - changed digit_p to _rl_digit_p - - changed uppercase_p and lowercase_p to _rl_uppercase_p and - _rl_lowercase_p respectively - - changed pure_alphabetic to _rl_pure_alphabetic - -support/zecho.c - - new file, implements a bare-bones echo (no -n, no \-escapes), - to be used by tests - -tests/rhs-exp.tests - - changed calls to echo to use recho to avoid errors when bash is - configured with --enable-usg-echo-default - -tests/more-exp.tests - - changed some calls to echo to use zecho to avoid errors when bash - is configured with --enable-usg-echo-default - - 9/11 - ---- -lib/readline/histexpand.c - - fixed a possible off-by-one error in history_expand_internal when - deciding whether or not to reallocate `result' - -expr.c - - fixed expcond() so that an assignment may be supplied as the - token after the `?' - - illegal bases now cause an evaluation error - - multiple base specifications now cause an evaluation error - -tests/arith.tests - - added more tests for conditional operator and associativity - -tests/{run-heredoc,heredoc.{tests,right}} - - new set of tests for here-documents - -builtins/common.c - - print out the name returned by get_name_for_error in - builtin_error() - -subst.c - - set this_command_name to NULL before processing command-line - assignment statements so arithmetic evaluation errors don't - print garbage - - according to POSIX.2, echo ${foo?$x} should print the expanded - value of $x, even when it doesn't expand into anything - - 9/12 - ---- -shell.c - - changed the execution of startup files so that $ENV is never - run by a non-interactive shell and an interactive shell begun - as `sh' reads and executes $ENV, as posix specifies - -doc/{bash.{1,html},bashref.texi} - - updated description of startup file behavior - -doc/Makefile.in - - make sure references to bashref.texi are preceded by $(srcdir)/ - so we can build the documentation in another directory just by - typing `make'; e.g. after giving configure the --srcdir option - -subst.c - - change to array_remove_pattern to avoid evaluating the `param' - part of the ${param#word} spec twice when doing things like - echo ${A[x=(i+=1)]#${A[y=(i+=2)]}} - - 9/13 - ---- -builtins/bashgetopt.c - - fixed a problem with `;' option specifier (optional argument) - -support/config.{sub,guess} - - added cases to recognize CRAY C90 and T90 - -builtins/ulimit.def - - rewritten almost from scratch to use internal_getopt and to not - mask the return value from getrlimit/setrlimit, and to make it - easier to maintain - - added `-l' option for systems with RLIMIT_MEMLOCK (4.4 BSD) - -doc/{bash.{1,html},bashref.texi} - - documented new `-l' option to `ulimit' - - 9/24 - ---- -parse.y - - added `in' to the list of tokens that should not be followed by - a semicolon when combining history lines - - removed the special-case code in history_delimiting_chars that - tried to be smart about `()' - - 9/25 - ---- -print_cmd.c - - fixes to print_group_command from Andreas Schwab - - rewrote indent() to use a single malloced string for the spaces - to print, rather than calling cprintf multiple times - -shell.c - - make sure to set the strings in current_user to NULL after freeing - their contents in uidget(). - -parse.y - - make sure decode_prompt_string quotes the values inserted by the - \w and \W escape sequences using backslashes if the string will be - expanded later because promptvars is set - -support/mkdirs - - removed leading `^' from regular expressions to be matched by - `expr' on the advice of meyering@appaloosa.asic.sc.ti.com - - 9/26 - ---- -parse.y - - added a few more possible flag values for parser_state - - changed history_delimiting_chars to not add a semicolon after a - right paren if we're parsing a case statement - - 9/27 - ---- -builtins/ulimit.def - - a few minor cleanups - - 10/1 - ---- -builtins/trap.def - - make sure first_arg is non-empty before calling signal_object_p() - -[bash-2.0-beta2 frozen] - - 10/2 - ---- -bashintl.h - - if we have setlocale(), but don't have a definition for LC_ALL, - undefine HAVE_SETLOCALE - -configure.in - - set LOCAL_LDFLAGS on AIX 4.2 to allow dynamic loading of builtins - -builtins/enable.def - - use correct flags for AIX 4.2 in dlopen call if _AIX is defined - -examples/loadables/Makefile - - add sample commands for AIX 4.2 - - 10/3 - ---- -variables.c - - new functions: merge_temporary_env(), merge_builtin_env(), to - take temporary_env and builtin_env, respectively, and create - shell variables from them - -variables.h - - new extern declarations for merge_temporary_env() and - merge_builtin_env() - -execute_cmd.c - - if variable assignments preceds a posix special builtin, and the - shell is in posix mode, those assignments should persist in the - shell environment after the builtin completes - -doc/bashref.texi - - modified description of what's changed by posix mode to include - the persistance of assignment statements preceding special builtins - -doc/mkposix - - new script to create CWRU/POSIX.NOTES directly from the `Bash - POSIX Mode' node of bashref.texi, like INSTALL is created - - 10/4 - ---- -lib/{malloc,glob,readline}/Makefile.in, builtins/Makefile.in - - don't have autoconf substitute LOCAL_CFLAGS into the CFLAGS - assignment so people on SCO 3.2v[45] can still build with - NO_MEMSCRAMBLE even when they run `make CFLAGS=...' - -test.c - - renamed eaccess() to test_eaccess() to avoid conflict with SCO - -config.h.bot - - #undef HAVE_GETCWD if GETCWD_BROKEN is defined, so we use the - replacement in getcwd.c - -general.c - - fixed a small memory leak in full_pathname that occurs if - getcwd() returns NULL - -oslib.c - - new constant string variable: bash_getcwd_errstr, to use when - getcwd() returns NULL - -{general,jobs}.c, parse.y, builtins/{cd.def,common.c} - - change calls to getwd() to use getcwd() instead - -general.c, builtins/common.c, builtins/cd.def - - changed error behavior when getcwd() returns NULL to use - bash_getcwd_errstr, sys_error(), and strerror(errno) where - appropriate - -sig.c - - change a couple of calls to signal to set_signal_handler - -aclocal.m4 - - added definitions of _popen and _pclose to the BASH_FUNC_GETCWD - macro - -configure.in - - added -DPATH_MAX=1024 to LOCAL_CFLAGS for sco3.2v[45] on the - advice of <grog@lemis.de> - - removed check for getwd(3) - -externs.h - - removed extern declaration for getwd(), added extern declaration - for getcwd() if HAVE_GETCWD is not defined - -oslib.c - - removed definition of getwd(); it is no longer used - -lib/readline/rltty.c - - changed SETATTR macro for SCO POSIX systems to call tcsetattr - with TCSANOW, on advice of <wbader@nacs.fast.net> - - 10/7 - ---- -support/mkdirs - - slight change to work around a bug in the HP-UX `expr' - - 10/8 - ---- -lib/readline/vi_mode.c - - changes so that the text inserted with an `i' command is available - to be reinserted with `.' - -examples/functions/autoload.v2 - - new implementation: uses arrays, keeps a list of autoloaded - functions, allows autoloaded functions to be removed, allows - autoloaded functions to be listed - -execute_cmd.c - - when freeing the members of subshell_argv in shell_execve(), free - only the members up to subshell_argc - - 10/9 - ---- -configure.in - - replaced calls to AC_HAVE_FUNCS with AC_CHECK_FUNCS - - replaced calls to AC_FUNC_CHECK with AC_CHECK_FUNC - - replaced calls to AC_HAVE_HEADERS with AC_CHECK_HEADERS - - added additional code to check for libintl.{a,so} for the - internationalization functions if bindtextdomain is not found - in libc - - define HAVE_WAIT3 if AC_FUNC_CHECK(wait3,...) succeeds, rather - than HAVE_FUNC_WAIT3, which is not used in the source - - added a call to AC_FUNC_STRCOLL to check for the presence of a - working strcoll(3) - -config.h.in - - removed HAVE_FUNC_WAIT3 - - added HAVE_STRCOLL - -variables.c, stringlib.c - - move sort_char_array from variables.c to stringlib.c - -variables.h, externs.h - - move extern declaration of sort_char_array from variables.h to - externs.h - -variables.c - - don't sort the exported environment, even when we're not in - posix mode - -stringlib.c - - changed qsort_string_compare to use strcoll(3) if it is available - (HAVE_STRCOLL is defined). This means that the results of glob - expansions are now sorted in the per-locale collation order - -locale.c - - track the value of $LC_COLLATE and call setlocale(LC_COLLATE,...) - when it changes. Also, set its default value - -subst.c - - LC_COLLATE is now a special variable; call sv_locale when it is - assigned to or unset - -lib/readline/util.c - - move compare_strings here from complete.c; renamed it - _rl_qsort_string_compare; made it use strcoll(3) if it's - available; made it global so other library files can use it - -lib/readline/complete.c - - use _rl_qsort_string_compare instead of static compare_strings. - This means that completions are now sorted in a locale-specific - collation order - -lib/readline/funmap.c - - removed static declaration of qsort_string_compare; qsort now - uses _rl_qsort_string_compare instead - -oslib.c - - rewrote stricmp, strnicmp; renamed them strcasecmp and - strncasecmp, since they're only compiled in if HAVE_STRCASECMP - is not defined - -externs.h - - removed extern declarations of strnicmp, stricmp, replacing them - with declarations of strcasecmp and strncasecmp if HAVE_STRCASECMP - is not defined; removed #defines of stricmp and strnicmp to - strcasecmp and strncasecmp - -trap.c - - changed calls to stricmp to direct calls to strcasecmp - -Makefile.in - - bumped RELSTATUS to `beta3' - -doc/bash.{1,html} - - added mention of LC_COLLATE - -doc/bashref.texi - - removed item about sorting environment from the section on posix - mode - - 10/16 - ----- -subst.c - - fixed array_length_reference to return 0 for an unbound variable - and 1 for a variable that is not an array - -examples/scripts.v2/cdhist.bash - - package with functions to replace cd and maintain a cd directory - stack +hashcmd.c + - fixed find_hashed_filename to always return a newly-allocated + string -examples/scripts.v2/pmtop - - a `poor man's top' for SunOS 4.x and BSD - -examples/scripts.v2/bashrand - - a script to return a random number within a specified range, with - an optional seed - -examples/scripts/zprintf - - printf(1) replacement that uses gawk to do the output - -doc/{bash.{1,html},bashref.texi}, lib/readline/doc/hsuser.texinfo - - several small corrections - - 10/17 - ----- -variables.c - - changed the calls to list_string_with_quotes and then - expand_words_no_vars in assign_array_var_from_string to a single - call to expand_string. This behaves more rationally, and closer - to ksh93 - -subst.c - - commented out list_string_with_quotes -- it is no longer used - -lib/readline/terminal.c - - new function, _rl_set_screen_size(int rows, int cols), to set - readline's idea of the screen size - -jobs.c, nojobs.c - - make sure that window size changes are propagated back down to - the readline code, by calling _rl_set_screen_size with the - new sizes. This happens when bash gets a SIGWINCH or if - `checkwinsize' is set with `shopt' - - 10/18 - ----- -support/config.guess - - added code to recognize the various NetBSD ports - -lib/readline/signals.c - - don't install a handler for SIGALRM if the containing application - has installed a handler with SA_RESTART as part of the flags. - This is in effect, obviously, only for systems with POSIX signals. - -subst.c - - make parameter_brace_expand_length expand variables in a double- - quoted environment so it takes spaces in the variable value into - account - - 10/21 - ----- -command.h - - flags for possible values of subshell_environment telling what - caused the subshell - -builtins/command.def - - the `command' builtin should not be setting CMD_NO_FORK at all; - it doesn't know enough about the execution context to do so - -execute_cmd.c, subst.c - - set subshell_environment to one of the values in command.h rather - than to `1', so we know what kind of subshell it is (just for - informational purposes; nothing actually uses this yet) - - - 10/22 - ----- execute_cmd.c - - just return EXECUTION_SUCCESS immediately in execute_command_internal - if read_but_dont_execute is set - - 10/23 - ----- -general.c - - fixed check_dev_tty to return immediately if ttyname() returns NULL - -builtins/suspend.def - - SIGSTOP cannot be caught, so there's no reason to try to do so - -examples/loadables/{finfo,pathchk,print}.c - - minor fixes - -pathexp.c - - fix to off-by-one error in setup_ignore_patterns - -jobs.c - - try to set the tty pgrp to our pgrp if we change our pgrp to our - pid and become a process group leader. If it doesn't work, - reset our pgrp to what it was originally and disable job control - -aclocal.m4 - - new test, BASH_STRUCT_TERMIO_LDISC, to test for a c_line member - of struct termio - -config.h.in - - add a new preprocessor variable, TERMIO_LDISC, undefined by default - -configure.in - - call BASH_STRUCT_TERMIO_LDISC after BASH_STRUCT_TERMIOS_LDISC - - 10/25 - ----- -lib/readline/terminal.c - - increased the size of the termcap buffers to 4096 - - 10/29 - ----- -parse.y - - include memalloc.h for uses of alloca that the code in the - generated bison parser does not catch (e.g., HP-UX 10.10) - -aclocal.m4 - - new test, BASH_KERNEL_RLIMIT_CHECK, to check whether a given - HP-UX machine needs _KERNEL defined for the RLIMIT_* defines in - <sys/resource.h> (9.05, 10.01 yes, 10.10,10.20 no) - -configure.in - - call BASH_KERNEL_RLIMIT_CHECK if $host_os begins with `hpux' - -config.h.in - - new #undef for RLIMIT_NEEDS_KERNEL - -builtins/ulimit.def - - only define _KERNEL before including <sys/resource.h> if HPUX - and RLIMIT_NEEDS_KERNEL are both defined - -[bash-2.0-beta3 frozen] - - 11/1 - ---- -locale.c - - if setting LC_ALL to a null value (as is done when `unset LC_ALL' - is run), call setlocale() to set LC_ALL back to default_locale - -lib/readline/readline.c - - moved i18n code from here to nls.c - -lib/readline/Makefile.in, Makefile.in - - new readline library member, nls.c - -lib/readline/nls.c - - new file, with internationalization code from readline.c (such as - it is) - - updated legal_lang_values to just contain a list of codesets - - added code modified from a diff sent by Ulrich Drepper - <drepper@cygnus.com> to parse a locale specification and isolate - and normalize the codeset part, for checking against the values - in legal_lang_values - - 11/4 - ---- -builtins/setattr.def, locale.c, aclocal.m4, oslib.c - - minor cleanups - - 11/5 - ---- -lib/readline/complete.c, test.c, trap.c - - more minor cleanups - - 11/6 - ---- -parse.y - - added a `flags' parameter to parse_matched_pair, currently unused - - 11/7 - ---- -configure.in, config.h.in - - add a check for time_t, defaulting to `long' if it's not - defined in <sys/types.h> - -builtins/fc.def - - use `time_t *' instead of `long *' in call to time() - - 11/8 - ---- -configure.in - - removed check for getpwent in libsun.a; it's not necessary for - recent versions of irix (irix[56].?) - - 11/11 - ----- -test.c - - used `&&' where `||' was needed when testing if HAVE_LSTAT and - S_IFLNK are both defined - -[bash-2.0-beta3 net release version frozen] - - 11/12 - ----- -builtins/getopt.c - - when sh_getopt detects that a required argument is not present, - set sh_optarg to "" so that getopts does the right thing - - 11/15 - ----- -builtins/ulimit.c - - made the default (without -H or -S) report the soft limit and set - both soft and hard limits (like sh and ksh) - -expr.c - - changed the maximum base in base#num constants to 64, implemented - just like ksh93 - -doc/{bash.{1,html},bashref.texi} - - updated description of ulimit builtin to new behavior when - neither -H nor -S is supplied - - updated arithmetic evaluation section with new maximum base and - explanation of how numbers between 10 and 63 are represented - -lib/readline/vi_mode.c - - in rl_vi_done_inserting, don't try to save the text entered while - in insert mode unless rl_undo_list is non-null (indicating that - there was actually some text to be saved) - - 11/19 - ----- -lib/readline/tcap.h - - new file, for termcap library definitions. Uses <termcap.h> if - it is available - -lib/readline/rldefs.h - - remove inclusion of termcap.h; now included in tcap.h - -lib/readline/{terminal,display,readline}.c - - include tcap.h - -lib/readline/Makefile.in - - update dependencies to include tcap.h - - 11/21 - ----- -lib/readline/complete.c - - broke the code that computes the lcd of the list of completion - matches out into a separate function, compute_lcd_of_matches() - -lib/readline/complete.c - - call compute_lcd_of_matches after calling the application-specific - completion ignore function, since it may have eliminated some - names from the match list - -builtins/cd.def - - replaced instances of MAXNAMLEN in the spelling correction code - with PATH_MAX - -lib/readline/terminal.c - - new termcap capabilities: kh (sent by Home key) and kH (sent by - End key) automatically bound to beginning-of-line and end-of-line - respectively in emacs_standard and vi_movement maps - -mailcheck.c - - fix to remember_mail_dates so any message following the - filename is saved correctly - - 11/22 - ----- -lib/readline/bind.c - - fixed extern declaration of _rl_parsing_coditionalized_out - to match declaration in readline.c - - 11/25 - ----- -doc/{bash.{1,html},bashref.texi} - - fixed a gross documentation error in the description of - ${parameter:offset:length} (offset and length were transposed) - - slight changes to the description of output redirection - -subst.c - - new function, quoted_substring, to return substrings of variables - when the expression is within double quotes and the value has - CTLESC characters embedded within it. Called by - parameter_brace_substring - - get_var_and_type should return VT_POSPARMS if `*' is passed as - the variable name - - added a new first parameter for pos_params -- the variable name - - changed pos_params to obey the rules for "$*" wrt using the - first character of IFS as the separator in the result - - if an unquoted $* or $@ is expanded, call quote_escapes on the - result to protect any special characters from inadvertently - causing quoting - - 12/3 - ---- -builtins/ulimit.def - - corrected a misspelling of `unlimited' - - added support for linux RLIMIT_AS resource limit for -v option - and changed the block multiplier to 1024 if we have RLIMIT_VMEM - or RLIMIT_AS - - 12/5 - ---- -lib/readline/readline.c - - fix rl_insert to handle a count of exactly 1024 - -shell.c - - new function: unbind_args(), which removes all the positional - parameters. Just calls remember_args(NULL, 1) - -execute_cmd.c - - call unbind_args when executing a subshell, after setting up - subshell_argX - -bashintl.h - - include <libintl.h> if HAVE_LIBINTL_H defined - -config.h.in - - add HAVE_LIBINTL_H define - -configure.in - - add call to AC_CHECK_HEADERS for libintl.h - -doc/Makefile.in - - added infodir and various mandir defines for completeness - -Makefile.in - - changed some of the *dir defines to use the autoconf values - (e.g., bindir = @bindir@) - - changed manroot to mandir, removed old mandir and manext variables - - added `manpfx' variable; should be either `man' or `cat' - - 12/6 - ---- -lib/readline/readline.c - - fixed rl_digit_loop so it once again displays the argument count - as it's being entered (added calls to _rl_save_prompt and - _rl_restore_prompt) - - 12/7 - ---- -support/config.guess - - recognize netbsd/vax - - recognize openbsd on all supported platforms - - recognize tenon's machten running on powerpc and macintosh - - 12/9 - ---- -support/config.guess - - added all sorts of systems from config.guess distributed with - autoconf-2.12 - - 12/10 - ----- -subst.c - - new function quoted_strchr(); does the same thing as strchr but - honors shell backslash and CTLESC quoting conventions - - parameter_brace_patsub now calls quoted_strchr - - 12/11 - ----- -shell.c - - if the shell is named `-su', run the normal login shell startup - files, even if the shell is not interactive. This handles the - case of `su - username -c command' compatibly - -lib/readline/readline.c - - minor change to rl_digit_loop so that M-- and M--1 are equivalent, - as the prompt for digit arguments has always implied - -lib/malloc/malloc.c - - added definitions of calloc() and cfree(), compiled in unless - NO_CALLOC is defined to cpp - - - 12/16 - ----- -parse.y - - protect uses of history_expansion_inhibited with #ifdef - BANG_HISTORY - -[bash-2.0-release candidate frozen] - -builtins/common.c - - changed backslash_quote to quote a tilde if it's the first - character in the string - - 12/17 - ----- -aclocal.m4 - - changed BASH_CC_WORKS to provide a cross-compiling default for - better error messages - -configure.in - - generated configure using autoconf-2.12 - - changed the default value of CFLAGS to `-g -O2' - - 12/18 - ----- -aclocal.m4 - - look for /var/spool/mail before /usr/spool/mail when checking - for the default mail directory - -jobs.c, builtins/shopt.def - - fixed a couple of `macro replacement within a string literal' - problems - -Makefile.in - - removed `realclean' target - -shell.c - - changed the first line ouput by bash --version to conform to - the latest GNU coding standards (replace space between version - and machtype with a hyphen) - - 12/19 - ----- -execute_cmd.c - - when looking at the debug trap in execute_function and - execute_command_internal, make sure it's trapped and not - ignored before trying to save the value of the trap string - - 12/20 - ----- -trap.c - - changed set_signal and ignore_signal to handle EXIT_TRAP and - DEBUG_TRAP specially, so we don't try to fetch signal handlers - or do other unnecessary things - - 12/22 - ----- -builtins/ulimit.def - - if the current euid is not 0, and we're trying to set the hard - limit of a resource to RLIM_INFINITY, set it to the current hard - limit to avoid error messages + - since find_hashed_filename returns newly-allocated memory, don't + call savestring() on it, and free it if the data is stale (in + search_for_command()). Another memory leak fixed courtesy of + a.pfaller@pop.gun.de -builtins/read.def - - fix for bug that caused core dump if line read had leading white - space and IFS was set to '' +builtins/type.def + - free the value returned by find_hashed_filename -[bash-2.0-release frozen] +[bash-2.01-release frozen] |