[code made available via ftp -- first redistributable version] 9/3 --- lib/readline/history.c - removed stray extern declaration of strrchr() - made get_history_word_specifier a static function lib/readline/readline.c - removed redundant declaration of rl_visible_stats execute_cmd.c - make sure that the subshell forked to execute ( xxx yyy ) & sets original_pgrp to -1 so that ( exec xxx yyy ) & does not make the exec builtin restore the original process group 9/4 --- builtins/read.def - free `t' *only if* it was assigned the value from string_list_dollar_star when more words are read than variables supplied variables.c - moved some external function declarations to file scope test.c - changed the unary_advance and advance macros to use the do { ... } while (0) idiom rather than the comma operator 9/5 --- builtins/getopts.def - if __GNU_LIBRARY__ is defined, change getopt_set_posix_option_order to a macro, because getopt.c will not be compiled in 9/7 --- subst.c - support $POSIX_PEDANTIC as a synonym for $POSIXLY_CORRRECT builtins/set.def - added support for `set -o posix' - changed list_long_opts to use a define (`MINUS_O_FORMAT') for the format argument to printf bashline.c, execute_cmd.c, jobs.c, nojobs.c, print_cmd.c, subst.c, test.c, variables.c - moved extern declarations from function scope to file scope, or removed extern function declarations already appearing in bash header files bashline.c - include alias.h if ALIAS defined lib/readline/history.h - added extern declaration for history_tokenize shell.c - changed run_startup_files to use the global value of posixly_correct instead of the posix_env argument, which was eliminated lib/readline/readline.c - changed alphabetic() so we're not casting the return value from strchr() to an int 9/8 --- builtins/ulimit.def - disable the getrlimit stuff if GETRLIMIT_MISSING is defined machines.h - define GETRLIMIT_MISSING for the Sequent Symmetry - change the M_OS define to `Dynix_ptx' for the Sequent Symmetry - take HAVE_ALLOCA out of the Symmetry definition - removed extra HAVE_ALLOCA define from linux machine description cpp-Makefile - add $OSTYPE to HOSTTYPE_DECL, defining it as ${OS_NAME} variables.c - make a variable $OSTYPE analogous to $HOSTTYPE, set from the OSTYPE define from cpp-Makefile documentation/bash.1 - added description of $OSTYPE parse.y - changed report_syntax_error so that syntax errors set $? to 2 like sh and ksh do lib/readline/funmap.c - added bindings for the non-incremental `search again' functions like those that vi uses expr.c, general.c, builtins/trap.def, builtins/common.c - removed some extraneous extern function declarations 9/9 --- jobs.h - added some more extern function declarations exported by jobs.c parse.y, bashline.c, shell.c, builtins/common.c - removed some extraneous extern function declarations builtins/common.h - fixed the extern declaration of parse_and_execute_cleanup lib/readline/readline.h - added more extern function declarations for functions in bind.c and complete.c - include tilde.h instead of redeclaring the tilde variables and functions parse.y - made with_input_from_stream and with_input_from_stdin void functions - made the yy_*_get and yy_*_unget functions static shell.c - made all the initialize functions static void trap.h - added extern declarations for the rest of the functions defined in trap.c trap.c - made initialize_traps a void function, since it has no return value externs.h - new file, with function declarations not mentioned in other header files. Included by shell.h. cpp-Makefile, builtins/Makefile - updated the dependencies to include new header files bashline.c, execute_cmd.c, jobs.c, general.c, mailcheck.c, make_cmd.c, nojobs.c, parse.y, print_cmd.c, shell.c, subst.c, test.c, trap.c, variables.c, builtins/common.c, builtins/bind.def, builtins/declare.def, builtins/exec.def, builtins/hash.def, builtins/let.def, builtins/source.def, builtins/trap.def, builtins/type.def, error.c - removed extern function declarations already in externs.h lib/tilde/tilde.h, jobs.h - protect against multiple inclusion with #ifdef __XXX_H__ jobs.h - added extern declaration of job_control general.c - include and remove all of the extern declarations for the tilde variables lib/readline/history.h - added extern declarations for variables exported by history.c execute_cmd.c - don't bother trying to free the string passed to make_child in the child if the command is not found bashhist.c, bashhist.h - new files with bash interface to the history library. Moved code from parse.y, shell.c, subst.c to here. parse.y, bashline.c, shell.c, subst.c, variables.c - include bashhist.h error.c, bashhist.c, bracecomp.c - added copyright comment machines.h - changed hpux_8 and hpux_9 entries to #undef USE_GNU_MALLOC because they have the same YP bug as SunOS 9/10 ---- print_cmd.c - fixed the printing of functions declared within functions by making print_function_def and named_function_string responsible for printing the open and close braces and printing the `inside' command rather than overloading print_group_command builtins/fc.def, builtins/history.def - fixed up to use bashhist.h and removed extra declarations of history stuff nojobs.c - restore the top-level signal mask on Posix.1 systems after forking in make_child - make all children set the job control signals to SIG_DFL in make_child 9/12 ---- documentation/texi2roff-2.0.shar - removed from the source tree 9/13 ---- lib/doc-support - new directory for building texindex lib/doc-support/texindex.c - upgraded to version 1.45 from the texinfo-3.1 distribution documentation/Makefile - fixed so that features.dvi would build correctly variables.c, subst.c, braces.c, flags.c, jobs.c, mailcheck.c, parse.y, builtins/cd.def, builtins/common.c, lib/readline/history.c, lib/readline/isearch.c, lib/readline/readline.c - removed instances of `index' being used as a variable or structure member cpp-Makefile - pass HAVE_LIMITS_H through to the rest of the build in SYSTEM_FLAGS and LIBRARY_CFLAGS maxpath.h - removed inclusion of `sysdefs.h', since the only reason it was included was to pick up HAVE_LIMITS_H 9/14 ---- bashhist.h - add extern declaration of history_expansion_inhibited, dependent on BANG_HISTORY execute_cmd.c, builtins/common.c, subst.c, variables.c, parse.y, jobs.c, error.c, bashline.c - moved all extern variable declarations to beginning of file, giving them file scope execute_cmd.c - changed the code so that /dev/null is used as fd 0 for async jobs if the shell itself is not interactive (!interactive_shell) rather than currently interactive (!interactive) builtins/break.def, builtins/cd.def, builtins/declare.def builtins/exit.def, builtins/fc.def, builtins/fg_bg.def builtins/hash.def, builtins/kill.def builtins/read.def, builtins/return.def, builtins/setattr.def builtins/source.def, builtins/type.def, builtins/wait.def - moved all extern variable declarations to beginning of file, giving them file scope 9/15 ---- support/mksysdefs - change the test to set SCOREL so that it handles SCO v4.2 and above (everything above and including 4.0) machines.h - changed M_OS define of `Solaris' to `SunOS5'; added -DSolaris to SYSDEP_CFLAGS for Solaris 2 systems 9/16 ---- print_cmd.c - make sure cprintf() null-terminates the_printed_command correctly test.c - changed the last two stray stat() calls to test_stat() - made test_stat handle emulation of /dev/fd for systems that don't have it: /dev/fd/x returns the result of fstat(x, finfo) documentation/bash.1 - added -b to the usage line for the `set' builtin - added description of `set -o posix' - added -u, -v to the usage line for the `ulimit' builtin - added text describing key bindings in ~/.inputrc to the READLINE section documentation/texinfo.tex - upgraded to the latest version from the texinfo-3.1 distribution documentation/features.texi, lib/readline/doc/rluser.texinfo, lib/readline/doc/hsuser.texinfo - a major overhaul and expansion 9/17 ---- bashline.c - set rl_vi_comment_begin to "#" when in Posix.2 mode lib/readline/vi_mode.c - set vi mode comment begin character string to "#" by default 9/18 ---- lib/readline/bind.c - added `set keymap' command to the init file variable setting code documentation/bash.1, documentation/features.texi - added description of `set keymap' command lib/readline/doc/rluser.texinfo - completed description of init file and keybinding syntax 9/20 ---- variables.c - if POSIXLY_CORRECT or POSIX_PEDANTIC are in the initial shell environment, enter `Posix.2 mode' machines.h - define SCO REQUIRED_LIBRARIES as `-lc_s -lc -lPW' to pick up the functions in libc and libPW from libc (e.g. rename) 9/21 ---- execute_cmd.c - fixed X_BIT macro to protect its argument with parens in the macro body maxpath.h - include sys/param.h on Dynix machines if MAXPATHLEN is not defined after including limits.h general.c - moved the inclusion of on Posix.1 systems up with the rest of the includes shell.c, lib/readline/complete.c, lib/tilde/tilde.c - don't extern declare getpwuid on Dynix machines lib/readline/history.c - make sure strlen() is cast to int whenever used in a comparison 9/23 ---- lib/readline/readline.c - changed rl_call_last_kbd_macro to disallow recursive macro execution 9/26 ---- bashline.c - free rl_vi_comment_begin before assigning to it; make sure to savestring() what we assign to it 9/28 ---- lib/readline/search.c - in noninc_search, make the ^W and ^U bindings closer to what Posix.2 specifies. (The ^W binding still uses unix_word_rubout, which uses whitespace as the word boundary. This is what ksh-88 does, too. Posix.2 says to use punctuation characters as word boundaries also.) lib/readline/vi_mode.c - fixed a bug in rl_vi_delete_to which caused c[wW] to delete one extra character when there were multiple spaces between words. Made the same change to rl_vi_change_to() and rl_vi_yank_to(). lib/readline/complete.c - fixed quoted substring completion so that `\' can quote the quote character - fixed the quoted string completion mechanism by doing the following: o quoted word break characters do not break words for the completer, so `"abcde"/xhy' no longer sends `/xhy' to the rest of the completion code o quotes are stripped after the application-specific completion function is attempted if filename completion is about to be performed. If needed, they are added back later. This has the benefit of removing unneeded quotes. 9/29 ---- siglist.h - ICL DRS6000s need sys_siglist to be defined as _sys_siglist machines.h - take the define of sys_siglist out of the DRS6000 entry - added summary of available definitions for SYSDEP_CFLAGS - added new SYSDEP_CFLAGS variable: HAVE_GETPW_DECLS to isc386, sgi, Linux, Dynix descriptions - changed isc386 description: added ISC_SYSDEPS to make the SYSDEP_CFLAGS lines a little cleaner shell.c, lib/tilde/tilde.c, lib/readline/complete.c - now uses HAVE_GETPW_DECLS define lib/tilde/tilde.c - removed references to getpwent(), since it's not called - add extern declaration for getpwnam() lib/readline/complete.c - add a __STDC__ definition for getpwnam() for isc386 machines cpp-Makefile - updated the dependencies: bashhist.h, bashansi.h, dependencies on the library include files 9/30 ---- mailcheck.c - cleaned up the name space by making functions not used by other files static - took out redundant test in check_mail after the goto next_mail_file variables.c - cleaned up the code a bit by removing unnecessary { ... } pairs enclosing some code blocks - check for $IGNOREEOF at startup, call sv_ignoreeof if imported parse.y - new variable `ignoreeof', non-zero if we are ignoring EOF, used in handle_eof_input_unit -- keeps us from looking up $IGNOREEOF and $ignoreeof on every EOF character subst.c - sv_ignoreeof now sets or clears `ignoreeof' flags.h - changed flags_alist `name' member to be a char, since we only ever use one character - added FLAG_UNKNOWN to be returned by find_flag, since (int *)-1 is not portable, and (int *)0 is just as good a value flags.c - changed find_flag, change_flag_char, change_flag, to take a char as a parameter rather than a char * because we only use one char and this is faster builtins/set.def - changed calls to find_flag to pass a char instead of a char * shell.c, jobs.c, builtins/set.def - changed instances of change_flag_char to change_flag, since the two are now equivalent cpp-Makefile - added BUILTIN_OBJS, made BUILTINS_LIB depend on them - added dependencies for builtin objects on builtin .def files - otherwise tightened up the dependencies 10/1 ---- support/mksysdefs - handle SGI Irix 5.x by making SYSDEF="Irix5" parse.y - made init_yy_io a void function input.h - moved extern function declarations for parse.y and input.c to this file from externs.h shell.c - include input.h unconditionally, now that it has extern function declarations - check for $POSIX_PEDANTIC at shell startup, set posixly_correct if found make_cmd.c - include input.h for the extern function declarations execute_cmd.h - new file, with extern declarations from execute_cmd.c subst.c, builtins/type.def, variables.h, builtins/exec.def, builtins/hash.def, shell.c, buitlins/common.c, execute_cmd.c, mailcheck.c - include execute_cmd.h cpp-Makefile, builtins/Makefile - updated the dependencies as a result of the new and changed include files execute_cmd.h, externs.h, input.h - changed to use the __P(()) method of using prototypes for extern functions nojobs.c - include command.h 10/5 ---- bashline.c - make sure test_for_directory frees the filename if stat(2) fails lib/readline/vi_mode.c - fixed the `c' command when used with the following motion commands: `^', `0', `%', `b', `B'. The cursor was being moved one position too far, resulting in too much erasure parse.y - changed redirection_needing_here_document into a stack of such redirections (redir_stack), indexed by need_here_doc, to handle command lines with >1 redirection, e.g. cat <word being non-null in dispose_word before trying to free it 10/8 ---- variables.c - made new_shell_variable static - made set_var_read_only, set_func_read_only, set_var_auto_export, set_func_auto_export, sort_char_array, maybe_make_export_env, put_command_name_into_env void functions variables.h - added declarations for all the missing extern functions builtins/hash.def - include posixstat.h for definition of struct stat to use in function prototype declarations expr.c - renamed local function `assignment' to `expassign' to avoid clashing with the global `assignment' defined in variables.c builtins/source.def - include `execute_cmd.h' to pick up extern function declarations trap.h - protected against multiple inclusion with __TRAP_H__ define - added prototypes with __P 10/11 ----- support/mksysdefs - check in /usr/include/ansi and /usr/include/bsd for NeXT 3.x machines lib/readline/vi_mode.c - include rldefs.h 10/12 ----- test.c - changed the `-x' test to call access(2) when AFS is defined, since `stat' doesn't work with AFS builtins/cd.def - added code to dirs_builtin to implement dirs -n and dirs +n documentation/bash.1, documentation/features.texi - updated description of `dirs' builtin 10/14 ----- lib/readline/bind.c - new function _rl_bind_if_unbound, which binds a key sequence to a readline function if that key sequence is unbound lib/readline/readline.c - use _rl_bind_if_unbound to try to bind the arrow keys in init_terminal_io 10/15 ----- lib/readline/display.c - laid the groundwork for expanding special characters in readline prompt strings: new function expand_prompt - rl_redisplay now has static local prompt variables: local_prompt: expanded prompt string after last newline local_prompt_prefix: expanded prompt string before last newline visible_length: number of visible chars in local_prompt prefix_length: number of visible chars in local_prompt_prefix changed when rl_display_prompt changes 10/18 ----- lib/readline/display.c - new function: rl_expand_prompt, expands the prompt and sets the local display variables to the right values for redisplay. - changed rl_redisplay to use the values computed by rl_expand_prompt if rl_display_prompt == rl_prompt and the old expansion code if otherwise (for instance, if rl_display_prompt is set by rl_message) lib/readline/readline.c - new function: rl_get_termcap to retrieve the value of any termcap attribute that readline retrieves - made readline_internal static, added appropriate declarations - new global library variable: rl_visible_prompt_length - added call to rl_expand_prompt in readline() before call to rl_initialize lib/readline/search.c - use rl_visible_prompt_length instead of strlen(rl_prompt) in noninc_search () 10/19 ----- execute_cmd.c - in execute_command_internal, mark an async job with a forced subshell `( xxx ) &' as no longer an interactive shell, no matter whether or not the original shell was interactive. This allows jobs to be reaped without notification and fixes a mem `leak' (not really a leak, but the shell keeps increasing the size of the jobs table) 10/21 ----- machines.h - updated the NEC EWS description with hints from Jim Blandy 10/23 ----- lib/readline/display.c - changed expand_prompt so that it understands `escape' characters to mark the beginning and end of a sequence of non-visible characters, and takes these into account when returning the length of the prompt string lib/readline/readline.h - new defines: RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE 10/24 ----- parse.y - removed check for $NO_PROMPT_VARS from decode_prompt_string() documentation/bash.1 - removed reference to $NO_PROMPT_VARS 10/25 ----- machines.h - add -lc_s to the AIX/PS2 REQUIRED_LIBRARIES definition lib/readline/readline.c - removed the extra space that rl_yank_nth_arg adds before the yanked string 10/26 ----- trap.c - set_sigint_handler now sets the SIGINT handler to sigint_sighandler only if `interactive' is set, rather than interactive_shell. This fixes the `". x", then sigint' bug reported by Vasco Pedro. general.c - removed `register' from variable declarations in function prologues - some functions now take slightly different arguments: delete_element takes a `char *' as the third argument find_name_in_list takes a `char **' as the second argument general.h - changed definition of REVERSE_LIST to cast the argument of the call to reverse_list() - added prototypes for all extern functions defined in general.c - definition of BCOPY for use in general.c and elsewhere shell.c - changed some calls to reverse_list to REVERSE_LIST shell.h, make_cmd.c, unwind_prot.c, input.c, builtins.h, error.c - include command.h before general.h for declaration of WORD_LIST execute_cmd.c, expr.c, general.c, input.c, shell.c, unwind_prot.c, parse.y - changed calls to bcopy to call xbcopy instead, and cast the first two arguments to char * copy_cmd.c - changed calls to bcopy to call BCOPY instead machines.h - new machine definition for IBM AIX/ESA (OSF/1) from Sergio Gelato support/mksysdefs - If `uname -m' returns `ESA', the machine is an IBM ESA lib/posixheaders/memalloc.h - new file, to unify the code to include if necessary and declare alloca() config.h, config.h.mini, lib/readline/rldefs.h, lib/readline/history.c, lib/readline/isearch.c, lib/readline/search.c, lib/tilde/tilde.c - changed to include "memalloc.h" builtins/getopt.c - don't include #pragma alloca line on IBM ESA systems - include malloc.h rather than alloca.h for AIX/ESA support/getcppsyms.c - new defines to support AIX/ESA cpp-Makefile, builtins/Makefile, lib/readline/Makefile - updated dependency information to include memalloc.h lib/readline/vi_keymap.c - `\' in vi insertion mode should be mapped to self-insert rather than quoted-insert 10/27 ----- nojobs.c - added variable `already_making_children', made a function start_pipeline called from make_child to set it, value cleared in stop_pipeline. This is how jobs.c treats it. execute_cmd.c - in the `subshell' code in execute_command_internal, we need to handle a possible `return' if in a function: f() { echo x | ( read b ; return 1 ) return 0 } and treat it like an `exit' - already_making_children is no longer a job-control only variable - made the code that decides whether or not to wait for a child process in the simple_command case of execute_command_internal be the same for job control and non-job control shells, since already_making_children has been put into nojobs.c lib/readline/display.c - changed the display code to handle invisible characters in the prompt and still wrap lines at the correct column. wrap_offset is the variable used to keep track of the number of invisible characters in the buffer - changed rl_redisplay to use `screenchars' from readline.c so we don't have to compute (screenwidth * screenheight) on each redisplay lib/readline/readline.c - new variable `screenchars', set to the total number of characters on the screen we can use (screenwidth * screenheight) - changed rl_refresh_line so that it computes the line that the cursor is on correctly, taking invisible characters into account 10/28 ----- general.h - changed declaration of vfree to xfree general.c - renamed vfree to xfree, since some systems already have a vfree() in libc execute_cmd.c, jobs.c, builtins/read.def, builtins/common.c - changed vfree to xfree shell.c - for systems that don't define USG and define ENOTSOCK, try to use getpeername() in issock() to find out whether or not an fd is a socket documentation/bash.1, documentation/features.texi - documented the new \[ and \] prompt string escape sequences documentation/bash.1, lib/readline/doc/rluser.texinfo - documented the new `show-all-if-ambiguous' readline variable lib/readline/complete.c - changed rl_complete to call rl_complete_internal with `!' if the variable `_rl_complete_show_all' is non-zero - changed rl_complete_internal to show all matches if there is more than one and what_to_do is `!' lib/readline/bind.c - new variable `show-all-if-ambiguous' to control the value of _rl_complete_show_all - changed a call to alloca() in rl_parse_and_bind to a malloc/free pair (`seq' variable), since some systems do not allow alloca'd memory to be passed to a function - did the same alloca -> xmalloc/free in rl_generic_bind (`keys' variable) 10/29 ----- dispose_cmd.h, make_cmd.h, command.h - added prototypes for the extern function declarations variables.c - BSD/386 needs getenv to have a `const char *' argument make_cmd.c - changed make_until_or_while to a static function command.h - removed extern declarations for functions in make_cmd.c; those are in make_cmd.h 11/1 ---- input.c - make sure that sync_buffered_stream returns a value test.c - make sure that binary_operator returns a value 11/2 ---- cpp-Makefile - added a definition of GCC_LINT_FLAGS and GCC_LINT_CFLAGS to generate lint-like warnings from gcc siglist.h - cast references to sys_siglist[] in the `strsignal' macro for the benefit of Linux jobs.c, nojobs.c - changed all absolute references to sys_siglist to call the strsignal macro instead lib/readline/{readline.c,display.c,signals.c} - _rl_output_character_function is an int lib/readline/rltty.c - outchar should return an int general.c - use %ld to printf longs builtins/trap.def - reordered code and eliminated some brace groups builtins/ulimit.def - open_files() should return a long shell.h - include if HAVE_VARARGS_H is defined, not simply if HAVE_VFPRINTF is defined parse.y, execute_cmd.c, subst.c, trap.c, jobs.c - make sure that all function parameters are declared explicitly and not defaulted to int builtins/fg_bg.def - fixed a bug where last_asynchronous_pid could be set to a random value if an unknown job or a non-job-control job was selected test.c - added a missing `%s' to a call to test_syntax_error cpp-Makefile - renamed `endian.h' to `bash-endian.h'; it seems that linux and gnu libc use it in /usr/include. What a pain in the ass. 11/4 ---- machines.h - add `#define HAVE_VARARGS_H' to the Linux machine description; the auto-configuration process is unable to find it in the gcc private include directories 11/5 ---- cpp-Makefile - COMPRESS_EXT should be `.gz' general.h - have the BCOPY define for USG machines use `memmove' rather than `memcpy', since that handles overlapping objects correctly lib/readline/display.c - fixed the line updating code that checked whether a new line was shorter or had fewer invisible characters that the visible line, and called clear_to_eol with the right value and only in the right cases machines.h - added separate machine descriptions for NetBSD and FreeBSD builtins/command.def - don't try to call confstr() on NetBSD 11/6 ---- machines.h - define HAVE_BCOPY for sgi - define HAVE_GETHOSTNAME for Linux and HPUX machines later than hpux 6.2 general.h - remove the `if defined (sgi) from the clause that defines BCOPY general.c - use new HAVE_BCOPY and HAVE_GETHOSTNAME defines instead of the OS-specific symbols used before 11/8 ---- machines.h - for i386 machines running aix/ps2, use USE_TERMCAP_EMULATION, since the terminfo database is more up-to-date than termcap lib/readline/complete.c - make sure that X_OK is defined for the VISIBLE_STATS code config.h, builtins/echo.def - added a DEFAULT_ECHO_TO_USG option for the echo builtin lib/readline/rldefs.h - Xenix 2.2 systems, while mostly USGr3, do not have `sighold' and related functions lib/readline/isearch.c - added a variable `prev_line_found' to keep the incremental searches from finding the same line two or more times in a row support/getcppsyms.c - recognize `_M_XENIX' and `mc68k32' symbols from cpp tests/run-dollar-at-star-test - use `../bash' to point at the bash executable rather than `../../sun4/bash' general.h - some systems have a `strerror' define, so we need to protect the extern function declaration trap.h - use SIG_DFL rather than NSIG as the test of whether or not to include , since Posix.1 does not require NSIG 11/9 ---- subst.c - new function get_word_from_string to slice a field off the front of a string and skip trailing separators according to $IFS builtins/read.def - changed read_builtin to use get_word_from_string to `incrementally' do word splitting on the line read so that if fewer variable names are given than words read, the separators in the original line are preserved. This makes `read' Posix.2 compliant. 11/10 ----- cpp-Makefile - add a sentinel file `parser-built' for y.tab.c and y.tab.h to depend on, since there's no rule for telling make how to build y.tab.h shell.c - removed the #ifdef AUX code that sets up a 4.2 compatible environment in favor of using the -ZP option to cc to create a Posix executable (AUX 3.0) jobs.c - changed sigwinch_sighandler so that it saves the window size struct with the new values in shell_tty_info.c_winsize on AIX PS/2 Since readline calls the old sigwinch handler, this code should be called no matter when the signal is received support/mksysdefs - add code to define AIX_13 on AIX PS/2 version 1.3 machines machines.h - there are different SYSDEP_CFLAGS and REQUIRED_LIBRARIES for AIX PS/2 1.2 and 1.3, so use the AIX_13 define to differentiate 11/11 ----- execute_cmd.c - speedups and fixes for here document processing in do_redirection_internal: don't do string processing we can avoid, use stdio to help with write buffering if we're expanding the document, close some file descriptor leaks make_cmd.c - speed up gathering here documents: avoid expensive calls to strncmp when possible, avoid a stupid strcpy when stripping leading tabs, use BCOPY instead of strcpy print_cmd.c - made varargs and non-varargs versions of cprintf() as similar as possible - redid the_printed_command_resize() to be a little smarter about allocating memory subst.c - sped up string_list_internal by allocating all the necessary space before copying rather than using xrealloc, using BCOPY and an `end ptr' instead of strcat, trying not to call strlen to get the separator length - sped up sub_append_string by using BCOPY instead of strcat, being smarter about memory allocation, and cutting down calls to strcpy - sped up expand_string_internal by not calling the make_word/dispose_word pair, but by filling in a local WORD_DESC, short-circuiting if the string is null or empty - don't bother trying to split words in expand_string_leave_quoted if expand_string_internal returns a null list - ditto for dequoting in expand_string_unsplit lib/readline/vi_mode.c - removed `w' and `W' from the list of characters that do not require the point to be moved after a call to rl_vi_domove in rl_vi_delete_to (`d') and rl_vi_yank_to (`y'). Only the `c' command (rl_vi_change_to) requires this behavior 11/12 ----- subst.c - make sure all places which call expand_word_internal are prepared to deal with error returns (expand_word_error and expand_word_fatal) by adding a convenience function call_expand_word_internal that performs the call and deals with the possible error returns. This keeps the shell from dumping core on some errors lib/readline/vi_mode.c - make sure is included before rldefs.h parse.y - changed read_a_line to use and re-use a static line buffer make_cmd.c - no longer need to free full_line, since read_a_line (called from read_secondary_line), does not allocate a new one on each call builtins/psize.c, alias.c - need to include command.h before general.h 11/15 ----- documentation/features.texi, lib/readline/doc/{hsuser,rluser}.texi - fixed some spelling errors and typos endian.c - include for size_t Makefile.inc - new file, included in cpp-Makefile, providing biolerplate Gnu make definitions cpp-Makefile - include Makefile.inc - added `distclean', `realclean' targets as per Gnu coding standards 11/17 ----- cpp-Makefile - `make install' now installs the documentation in $(mandir) and $(infodir) - `make documentation' now passes $(MFLAGS) to the sub-make documentation/Makefile - now has an `install' target config.h - RESTRICTED_SHELL is no longer automatically defined support/mksysdefs - Intel paragons (uname -m = paragon) need MAKE_ANSI set to true lib/readline/history.c - create the history file with mode 0600, since it's supposed to be private information builtins/fc.def - make sure we put in the tab and `*' only if the line is actually being listed to stdout rather than to a file for reexecution 11/17 ----- machines.h - fixed a typo in the hpux machine description - added some SYSDEP_CFLAGS to the __BSD_4_4__ description README - corrected mail address for bash-maintainers jobs.h - don't declare fork (), getpid (), and getpgrp () on __BSD_4_4__ 11/18 ----- subst.c - fix to string_list_internal to make it return a null string if handed a null list parse.y - fix to find_reserved_word: `word' is declared as the argument, but `token' is what's used in the body lib/malloc/alloca.c - Crays need to define _getb67() as CRAY_STACKSEG_END machines.h - ISC machines should be using USE_TERMCAP_EMULATION 11/19 ----- lib/readline/Makefile, lib/tilde/Makefile, lib/glob/Makefile, cpp-Makefile - change instances of `make' in recipes to `$(MAKE) $(MFLAGS)' machines.h - SunOS4 needs `OPENDIR_NOT_ROBUST' - recognize a Motorola M88100 if m88k and USGr4 are defined, since support/mksysdefs sets SYSDEF to USGr4 rather than M88100 for the Motorola V.4 - changes to the ISC entry to handle ISC version 4 as well as version 3 using cc and gcc to compile shell.c - fixed a typo (__POSIX_VERSION -> _POSIX_VERSION) - fixed a problem with reset_terminating_signals which caused the wrong signal numbers to be checked for being trapped or handled specially lib/readline/vi_keymap.c - ^H in movement mode should by default be mapped to rl_backward - delete (^?) should be unbound in the default movement mode keymap lib/readline/vi_mode.c - rl_vi_last_arg should insert a space before inserting the last argument, according to Posix.2 getcwd.c - correctly declare the second argument as a size_t if __STDC__ is defined 11/20 ----- builtins/fc.def - go back to the ad-hoc option parsing style, because the builtin getopt does not handle things like `fc -l -10' correctly support/mksysdefs - fixed a typo problem defining $UnicosMachine that left a comment unclosed lib/malloc/alloca.c - bug fix from Bill Jones for CRAY_STACKSEG_END define config.h, execute_cmd.c - fix for CRAY and defining `word' machines.h - Crays need to define OPENDIR_NOT_ROBUST bashtypes.h - sys/types.h with handling for multiple inclusion and Cray peculiarities execute_cmd.c, make_cmd.c, parse.y, subst.c - include `bashtypes.h' rather than 11/22 ----- machines.h - add definitions of CRAY_STACKSEG_END for Cray XMP and YMP - removed OLD_CRAY_DESCRIPTION stuff lib/readline/rldefs.h - encapsulate CRAY peculiarities with casting pointers to ints inside two defines: FUNCTION_TO_KEYMAP and KEYMAP_TO_FUNCTION lib/readline/bind.c, lib/readline/readline.c - change code to use FUNCTION_TO_KEYMAP and KEYMAP_TO_FUNCTION maxpath.h - include on the convex, but not on bsdi newversion.c - overhauled and cleaned up - added the `-patch' argument to set the patch level of the shell - look in `.patchlevel' for the patch level and write it out as PATCHLEVEL version.c - new variable patch_level shell.c - the version string is now `dist.patch(build)' - new function shell_version_string returns a pointer to the version string, show_shell_version changed to use it variables.c - bind $BASH_VERSION to the value of shell_version_string () 11/23 ----- machines.h - SCO machines now include -DPGRP_PIPE in the SYSDEP_CFLAGS define - HPUX_9 needs an #undef HAVE_RESOURCE; it appears that they've finally removed getrusage trap.c - signal_name should return an error when passed NSIG parse.y - add AND_AND and OR_OR to the list of tokens which are not followed by a semicolon - decrement current_command_line_count if pre_process_line returns a null or empty string, otherwise the next input line may be combined with the previous line inappropriately 11/24 ----- machines.h - the KSR/1 section should be delimited by `__ksr1__', added some SYSDEP_CFLAGS to that description support/mksysdefs - quote all the arguments to expr support/getcppsyms.c - recognize and pass on `__ksr1__' lib/readline/bind.c - new inputrc variable `output-meta', which means output meta chars without converting them to M- sequences lib/readline/readline.c - new variable `_rl_output_meta_chars' to hold value of `output-meta', initially off - slight efficiency improvement to rl_insert_text, rl_forward, rl_backward - changed the order of args to rl_kill_text in rl_unix_word_rubout so that multiple words can be killed and yanked out in the `right' order lib/readline/display.c - changes to use the value of `_rl_output_meta_chars' to decide how to output characters with the eighth bit set documentation/bash.1, lib/readline/doc/rluser.texinfo - documented new readline `output-meta' variable lib/readline/complete.c - make the replacement of typed text by a completion match be a single undoable event builtins/type.def - call user_command_matches specifying FS_EXEC_ONLY as the search criteria. This keeps test from finding directories bashhist.c - changed maybe_save_shell_history so that if the history has been stifled then the history file is replaced with the current history list 11/29 ----- builtins/exec.def - if the shell is restricted, exec is not allowed cpp-Makefile - more changes for GNU standards: VPATH, libdir, srcdir jobs.h - remove machine-specific undefining of HAVE_WAIT_H machines.h - cadmus systems need to #undef HAVE_WAIT_H - hpux_usg and hpux_6 systems need to #undef HAVE_WAIT_H - added a section for `Irix5' to the sgi section documentation/Makefile - fixed up the install for bash_builtins.1 so that it sets the .so path correctly shell.c - renamed issock to isnetconn and made its inclusion unconditional - added a check for S_ISCHR for SVR4 and SVR4.2 systems to isnetconn subst.c - added code so that `history_control=ignoreboth' works documentation/bash.1, documentation/features.texi - added a description of `ignoreboth' to the text describing `history_control' 11/30 ----- input.c - don't print an error message in check_bash_input if the fnctl to dup the file descriptor fails unless the file descriptor is already active jobs.c, nojobs.c - set bash_input.location.buffered_fd to -1 when setting default_buffered_input to -1 in make_child. This fixes the `( echo hi 1>&3 ) 3>&1 >/dev/null' spurious error message shell.c, error.c - removed the automated bug report code support/bashbug.c - is no more Makefile - added GNU boilerplate definitions support/bashbug.sh, support/mkbashbug - new files for a BSD sendbug-like bug reporting shell script cpp-Makefile - changes to use $(SUPPORT_SRC) instead of $(SDIR) under some circumstances - removed references to support/bashbug.c - new target to make bashbug from $(SUPPORT_SRC)/bashbug.sh using $(SUPPORT_SRC)/mkbashbug - bashbug is now created by default - don't build endian.aux or create bash-endian.h if HAVE_WAIT_H is defined, because it will end up being unused anyway machines.h - add OPENDIR_NOT_ROBUST to the isc386 description signames.c - make the signal_names array 2 * NSIG long to hack around HP/UX misfeature builtins/test.def - fixed the help text for -t to note the the fd argument is not optional 12/1 ---- builtins/common.c - changed parse_and_execute so that it no longer unconditionally sets `interactive' to 0. It is now the responsibility of callers of parse_and_execute to set it how they want, and reset it if necessary shell.c, subst.c, builtins/source.def - changed the functions that call parse_and_execute to manage the value of `interactive' shell.c - changed maybe_execute_file so that it takes a second argument saying whether or not to force the value of `interactive' to 0 - changed all calls to maybe_execute_file to add a second arg builtins/fc.def, builtins/exit.def - changed all calls to maybe_execute_file to add the second arg Now background jobs re-run with `fc -s' echo the job number externs.h - changed the function prototype for maybe_execute_file 12/2 ---- execute_cmd.c - rewrote the auto-resume code in execute_simple_command for clarity - added the `substring' value for auto_resume to cause a command that matches a substring of a stopped job to restart that job documentation/bash.1, documentation/features.texi - added a description of the possible values for `auto_resume' and their effects on the shell's behavior machines.h - added a generic desription for SVR4 running on the sparc from Ian Stewartson Makefile - added a command to the bash-Makefile target that will remove bash-Makefile and (hopefully) stop the make if something happens and bash-Makefile is created with zero length 12/3 ---- machines.h - add -DOPENDIR_NOT_ROBUST to the SYSDEP_CFLAGS for SCO - if compiling with gcc on SCO, link with -lc_s and -lc in REQUIRED_LIBRARIES 12/6 ---- builtins/source.def - new variable `sourcelevel' which is incremented each time `.' is called and decremented before source_builtin returns variables.c - find_variable should call find_variable with a second parameter of 1 if `builtin_env' is non-null, so it will search it. This ensures that all builtins inside a script read with `.' with a temporary environment will get the right values subst.c - fix for get_word_from_string: white space should be removed from the beginning of the string if $IFS is " \t\n" execute_cmd.c - in `Posix.2 mode', redirections should not perform filename expansion when the shell is not interactive 12/7 ---- support/getcppsyms.c - recognize `__i386__' lib/readline/bind.c - only free and reassign `last_readline_init_file' if it has changed (`filename' points to something different) in rl_read_init_file builtins/ulimit.def - add a `$DEPENDS_ON !MINIX' line so that this won't be built under MINIX config.h - Minix machines need JOB_CONTROL undefined cpp-Makefile - don't define libraries with absolute pathnames; use -llibname instead - make sure MALLOC_LIBRARY is defined even if the Gnu malloc is not being used for the benefit of `LD_HAS_NO_DASH_L' general.c - use a `TIMEVAL_MISSING' define to decide whether or not to try to print a struct timeval * rather than simply `USG' lib/readline/parens.c - don't try to include unless FD_SET is defined lib/readline/vi_keymap.c - fix incorrect cast of rl_abort in vi_movement_keymap signames.c - make sure NSIG is defined siglist.c - include `trap.h' to pick up definition of NSIG if it's undefined siglist.h - minix uses _sys_siglist and does not need an external declaration for it 12/8 ---- lib/readline/readline.c - add `ks' and `ke' to the termcap attributes that readline retrieves lib/readline/rltty.c - new function `control_keypad' to enable and disable keypad keys. Some systems need this before the arrow keys will work - call control_keypad to enable and disable the keypad from the terminal prep and deprep code 12/9 ---- support/mksysdefs - added code a la trn `Configure' to search a list of include directories for each .h file of interest. Done by defining a variable containing the code fragement we want to execute and calling `eval' on this string for each file lib/readline/bind.c - slightly changed the filenames used by rl_read_init_file. Now the filename used is the first non-null file from this list: 1. the filename used for the previous call 2. the value of the shell variable `INPUTRC' 3. ~/.inputrc documentation/bash.1 - added descriptions of INPUTRC to the shell variables and readline sections documentation/features.texi - added a description of INPUTRC to the shell variables section lib/readline/doc/rluser.texi - added description of the INPUTRC environment variable - changed instances of ~/.inputrc to the more generic `init file' or `inputrc file' lib/readline/complete.c - added #defines for the possible values of `do_replace' rather than relying on magic numbers - if a completion that needs double quotes starts with a tilde, rl_complete_internal now performs tilde expansion before quoting the string, since the shell allows double quotes to inhibit tilde expansion 12/10 ----- lib/readline/readline.c - new function to kill the whole line no matter what point is: rl_kill_full_line () lib/readline/readline.h - extern declaration for rl_kill_full_line () lib/readline/funmap.c - rl_kill_full_line is available as `kill-entire-line' cpp-Makefile - remove `.machine' when `make clean' run subst.c, subst.h - made expand_string_leave_quoted static again 12/14 ----- shell.c - use HAVE_SOCKETS define to decide whether to include and call getsockname(); defined automatically for non-USG systems if ENOTSOCK is defined 12/15 ----- bashline.c, flags.c, flags.h, jobs.c, subst.c, builtins/common.c, builtins/cd.def - changed `follow_symbolic_links' to `no_symbolic_links', with an opposite meaning flags.c, flags.h - new shell option, -P/-o physical set if no_symbolic_links is set - changed a sequence of `if' statements into a switch statement in change_flag documentation/bash.1, documentation/features.texi - added documentation for the -P/-o physical option builtins/cd.def - follow_symbolic_links is now declared in flags.c and declared extern here builtins/set.def - code to set and get the value of -P/-o physical - fixed up the help text and short documentation string - made `set -?' print a usage message subst.c - made sv_nolinks set the new variable `no_symbolic_links' 12/17 ----- machines.h - add -DUSG to HPUX_CFLAGS - hpux 9 does not need -lPW and can use the gnu malloc if gcc is being used config.h - remove the code that defines USG for HPUX, Xenix, and UNIXPC in favor of putting it into the machines.h entry 12/19 ----- flags.h - added prototypes for the extern function declarations from flags.c *.h - added copyrights to the include files which were missing them lib/readline/vi_mode.c - rl_vi_yank_nth arg inserted the space in the wrong spot before yanking the last argument - removed the call to rl_vi_insertion_mode because of changes to rl_yank_nth_arg lib/readline/readline.c - changed rl_yank_nth_arg so that vi mode inserts a space in the right spot - fixed rl_yank_nth_arg so that yanking into an empty line does not corrupt the buffer lib/readline/search.c - fixed noninc_search so that ^H and RUBOUT call rl_rubout explicitly bashline.c - fix for operate_and_get_next to make ^O work on the most recent line even if the history is unstifled. From Seth Robertson. XXX - may not be right parse.y - set interactive to 0 before calling parse_and_execute in execute_prompt_command to stop infinite recursion through this function shell.c - moved the code that executes PROMPT_COMMAND to parse_command parse.y - removed the code that executes PROMPT_COMMAND from read_token to avoid confusing non-reentrant versions of yacc - made execute_prompt_command global, not static input.h - new declaration for execute_prompt_command jobs.c - made give_terminal_to return -1 if tcsetpgrp fails - initialize_jobs now prints a message if job_control ends up being set to 0 support/mkmachtype - shell script stolen from emacs 19 that attempts to output the `GNU-style' machine type, e.g. sparc-sun-sunos4.1.2. Named `mkmachtype' because I envision people assigning its output to a MACHTYPE variable 12/20 ----- execute_cmd.c - if a command is found in the temporary $PATH, don't add it to the hash table error.c - changed report_error so that the script name is echoed instead of the shell name if the shell is not interactive 12/22 ----- machines.h - made the Sun description unconditionally #undef USE_GNU_MALLOC because memory access bugs are legion in libc in SunOS 4.x and 5.x jobs.c - disabled printing an error message when the tcgetattr in get_tty_state() fails 12/27 ----- cpp-Makefile, jobs.h - renamed bash-endian.h to bash_endian.h machines.h - NeXT machines need to #undef HAVE_DIRENT_H, since it requires ANSI/POSIX defines that make the rest of the compilation fail - SGI irix 5.x machines need -DNO_SBRK_DECL in SYSDEP_CFLAGS - machine descriptions for OSF/1 running on i386 and MIPS machines from Michael Meissner 12/28 ----- expr.c - fixed so that blank expressions evaluate to 0 rather than an error ($[ ] or $(( ))) lib/readline/readline.c - new variable `_rl_bell_preference' replacing _rl_prefer_visible_bell - changed ding() to use _rl_bell_preference lib/readline/rldefs.h - definitions for NO_BELL, AUDIBLE_BELL, and VISIBLE_BELL lib/readline/bind.c - changed rl_variable_bind to parse the `bell-style' variable and its possible values (`none', `audible', or `visible'), keeping `prefer-visible-bell' for backwards compatibility documentation/bash.1, lib/readline/doc/rluser.texinfo - added descriptions of the `bell-style' and `expand-tilde' readline variables general.c - changed set_signal_handler for posix systems to attempt to restart all interrupted system calls execept for SIGALRM trap.c - changed restore_signal to use set_signal_handler() instead of signal() - added a new function set_signal_ignored to set the SIG_HARD_IGNORE flag for a particular signal execute_cmd.c - call set_signal_ignored for SIGINT and SIGQUIT in the child if the command is asynchronous after calling restore_original_signals, since restore_original_signals will undo work done by make_child done in a new function setup_async_signals execute_cmd.h - extern declaration for setup_async_signals subst.c - call setup_async_signals when making the child for process substitution jobs.c, nojobs.c - removed code from make_child that sets SIGINT and SIGQUIT to SIG_IGN, since setup_async_signals now does that shell.c - let throw_to_top_level call longjmp with DISCARD if the shell is an interactive shell, but not yet initialized 12/29 ----- config.h - define PROCESS_SUBSTITUTION if HAVE_DEV_FD is defined, even if MKFIFO_MISSING is also defined execute_cmd.c - close pipes created using /dev/fd for process substitution at the same time as the pipes for conventional piping are closed subst.c - when the /dev/fd list is initialized, clamp the total number of file descriptors at 256, but make sure there is room enough to store a bit for the fd passed to add_fifo_list 12/30 ----- lib/readline/readline.c - change a strncpy() in rl_delete_text to a for loop, since some versions of strncpy can't handle overlapping arguments lib/readline/chardefs.h - definition for digit_value(x) lib/readline/history.c - changed calls to sscanf followed by an empty for loop that consumes the digits to a for loop that computes the value as it goes along in get_history_word_specifier() - added `x*' and `x-' history word designators from csh - added new `&' modifier to repeat previous substitution - experimental implementation of `q' modifier to quote substituted words by calling single_quote on the substituted string lib/readline/history.c, builtins/fc.def - changed a loop using strncmp() to find one string in another for substitution to test the current character against the first character of the pattern before calling strncmp() documentation/bash.1, lib/readline/doc/hsuser.texinfo - documented the new history word designators - documented new `&' and `q' history modifiers 1/1 --- parse.y - broke the code that parses `( ... )' subshells out into its own grammar production lib/readline/history.c - rearranged some code to get rid of gotos and make the intent clearer - fixed a bug in history_truncate_file that tried to write to a file opened O_RDONLY - changed a stat-open in history_truncate_file into an open-fstat pair - removed gotos in history_search_internal - changed straight strncmp() calls trying to find history line matches to check the first character before calling strncmp in history_search_internal - changed a call to stat after an open (!) to fstat on the returned file descriptor - cleaned up the code in get_history_event - cleaned up some code in get_history_word_specifier - cleaned up some code and removed extra function calls in history_arg_extract - changed history_arg_extract to malloc enough space for the entire string at one time, instead of doing xrealloc in a loop - cleaned up the code in history_tokenize, removing gotos and other spaghetti constructs - replaced a call to sprintf with assignment statements and a call to strcpy in history_expand cpp-Makefile - changed the `INDEX' target to a `TAGS' target lib/readline/emacs_keymap.c - added a default binding for ESC-ESC to rl_complete, like ksh emacs mode editing 1/3 --- machines.h - make sure ISC_POSIX is defined as nothing when using gcc on isc386 parse.y - made token_to_read, current_token, last_read_token, token_before_that, EOF_reached, shell_input_line, shell_input_line_*, token, token_buffer_size all static vars - made prompt_again return immediately if the shell is not currently interactive - made yylex call prompt_again only if there is no token_to_read and the shell is currently interactive jobs.c - changed the NeXT || alliant define to use RLOGIN_PGRP_BUG - use TERMIOS_LDISC define for systems with line discipline field in struct termios shell.c - use RLOGIN_PGRP_BUG instead of NeXT to fix machines that get started without a controlling terminal machines.h - added -DRLOGIN_PGRP_BUG to SYSDEP_CFLAGS for NeXT and alliant - added -DTERMIOS_LDISC to SYSDEP_CFLAGS for Ultrix, Sun OS 4, and aixpc support/mksysdefs - look for sys/param.h, define HAVE_SYS_PARAM if found cpp-Makefile - pass -DHAVE_SYS_PARAM via SYSTEM_FLAGS if it's found by mksysdefs maxpath.h - include if HAVE_SYS_PARAM is defined lib/readline/history.c - got rid of the get_which label in get_history_event - got rid of the event_not_found label in history_expand - new function hist_error, which takes care of printing history expansion errors 1/4 --- lib/readline/history.c - split the actual history expansion code out of history_expand into history_expand_internal - got rid of the do_add and add_char labels in history_expand - history_expand now returns 2 if the `p' modifier was given and the caller should just print the results - new function `quote_breaks' to implement the `x' modifier bashhist.c - if history expansion fails, make sure the error message is printed in a standard way by calling internal_error - print the results of history_expand and return NULL if history_expand returns 2 1/5 --- lib/readline/history.c - rearranged some code in the `s' and `&' cases of the switch in history_expand_internal, added the GET_SUBST_PATTERN macro 1/6 --- tests/* - cleaned up the directory, made a runnable regression test suite cpp-Makefile - added a `tests' target that runs all of the tests with a newly- built bash subst.c - made process substitution work only when unquoted bashhist.c - new function history_number to return the history number of a command bashhist.h - extern declaration for history_number parse.y - changed the `!' and `\!' code in decode_prompt_string to use history_number - replaced calls to sprintf/savestring with calls to itos() variables.c - new dynamic variable $HISTCMD is current history number (what you get with \! in a prompt string) documentation/bash.1 - description of $HISTCMD 1/7 --- execute_cmd.c - new variable stdin_redir, incremented for subshells if stdin has been redirected, saved for children so we don't redirect /dev/null to fd 0 if it has already been the subject of a redirection. Makes bash more sh-compatible, but I'm not sure it's the right thing. - more changes to file_status for systems with AFS test.c - changed calls to eaccess to EACCESS (not to be confused with the EACCES error). EACCESS is defined as access on AFS machines, eaccess on all others siglist.h - don't declare sys_siglist on NetBSD 1/11 ---- lib/readline/history.c - if `&' appears in the rhs of a history substitution, it is replaced with the matched lhs. A single backslash protects the `&' from lhs interpolation - fixed ADD_CHAR macro to properly terminate the target string - changed GET_SUBST_PATTERN so that a single backslash can quote the substitution delimiter - changed GET_SUBST_PATTERN so that subst_lhs is not changed if the lhs pattern is empty - if the lhs is empty and there is no previous substitution, the last string used in a !?string? search is used - turned the GET_SUBST_PATTERN macro into a real function, get_subst_pattern() - changed get_subst_pattern() so that backslashes quoting the search delimiter are removed - fixed get_history_word_specifier so that x- returns x-$ without the last word documentation/bash.1, lib/readline/doc/hsuser.texinfo - changes for the new history substitution features 1/13 ---- make_cmd.c - new function fixup_async_list() which traverses a command list and makes the last command asynchronous (`&'). This is to fix up a problem with the yacc grammar productions parse.y - call fixup_async_list if a list is followed by a bare `&' without a second list builtins/fc.def - fixed a bug in fc_gethnum that caused negative history specifications (< 0) to be off by 1 when indexing against the current history index lib/readline/funmap.c - kill-entire-line -> kill-whole-line - tilde-expand is now a bindable command that calls rl_tilde_expand - added emacs-editing-mode as a bindable command - added more bindable vi-mode readline commands: vi-redo, vi-tilde-expand lib/readline/emacs_keymap.c - M-C-H is now bound to backward-kill-word lib/readline/vi_keymap.c - `0' is now bound to beginning-of-line in vi-movement-mode documentation/bash.1, lib/readline/doc/rluser.texinfo - added documentation for some of the new readline functions test.c - added definitions for whitespace, digit, and digit_value when compiling -DSTANDALONE 1/14 ---- make_cmd.c, make_cmd.h, parse.y - fixup_async_list -> connect_async_list parse.y - have the productions for all async lists call connect_async_list, even when followed by another async list - don't save and restore the buffered stream in buffers[] in push_stream and pop_stream if the default input fd is -1 (like command substitution sets it to, for instance) cpp-Makefile - added $(PURIFY) the final cc line, make PURIFY=purify to build a `purified' bash builtins/read.def - fixed a memory leak -- `input_string' was not being freed variables.c - fixed a memory leak in assign_in_env -- free value subst.c - process substitution and command substitution now call make_child with a null first argument -- no need to save a string for the call; it's never used 1/17 ---- lib/readline/{readline.h,complete.c} - renamed rl_symbolic_link_hook to rl_directory_completion_hook, which much more accurately reflects its purpose. Left a define of the old name there is readline.h bashline.c - use rl_directory_completion_hook instead of rl_symbolic_link_hook - bash_symbolic_link_hook -> bash_directory_completion_hook - bash_directory_completion_hook is now an `int' returning function - bash_directory_completion_hook now tries to to variable expansion and command and arithmetic substitution if the directory name contains `$' or ``' - fixed a bug in bash_directory_completion_hook which made it remove the trailing slash on a directory name - bash_directory_completion returns 1 if variable expansion is performed, 0 otherwise - when doing bash filename-specific completion, don't do any kind of directory name expansion - removed ``' and `$' from the completer word break characters; they're not word break chars lib/readline/complete.c - changed semantics for rl_directory_completion_hook -- if a non-zero value is returned, the return value is put into the expanded filename, replacing the directory name that the user typed - changed filename_completion_function to quote a replacement if it contains `$' or ``' in addition to characters appearing in rl_completer_word_break_characters (#ifdef SHELL) 1/18 ---- shell.c - take out different code for USG and BSD and mail checking. The shell always calls remember_mail_dates on startup. 1/19 ---- execute_cmd.c - changed executable_file into a simple return statement support/mksysdefs - look for bison, define HAVE_BISON if found cpp-Makefile - do not unconditionally define HAVE_BISON, let mksysdefs do the work 1/20 ---- machines.h - added -DNO_SBRK_DECL to hpux_8, hpux_9, and Solaris descriptions lib/malloc/malloc.c - removed the code that defines NO_SBRK_DECL for some machines cpp-Makefile - removed the definitions of PPROMPT and SPROMPT and their inclusion as defines in CFG_FLAGS - added definitions for man3dir and man3ext and passed them to make install in the documentation directory config.h - PPROMPT and SPROMPT are now defined here builtins/mkbuiltins.c - plugged up a number of memory leaks (~35K worth) documentation/Makefile - made readline.3 and readline.ps standard targets - make install now installs readline.3 documentation/readline.3 - new manual page documenting the readline library general.c - don't define TIMEVAL_MISSING on USG systems if HAVE_TIMEVAL is defined 1/21 ---- machines.h - define HAVE_SOCKETS in HPUX_SYSDEP_CFLAGS for hpux_8 and hpux_9 Makefile - add a `tests' target that just runs `make -f bash-Makefile tests' general.c - include config.h before any other include files so gets included if present 1/24 ---- cpp-Makefile - make `bashbug' by using sed with multiple -e options rather than a separate `mkbashbug' program 1/25 ---- machines.h - sgi machines need HAVE_SOCKETS defined to make isnetconn() work lib/readline/isearch.c - rewrote lots of rl_search_history to eliminate spaghetti and increase speed lib/readline/history.c - added defines for STREQ and STREQN to clean up the search code lib/readline/complete.c - compare the first characters of the name and returned value from getpwent when attempting username completion to avoid all those calls to strncmp 1/26 ---- lib/readline/readline.h - move definition of VISIBLE_STATS here so all files can see it - extern definitions of rl_history_search_forward() and rl_history_search_backward () lib/readline/search.c - implementations of rl_history_search_forward() and rl_history_search_backward (), which search through the history list for lines beginning with the string of characters between the beginning of the line and rl_point (history lines with a common prefix) - added definitions of STREQ and STREQN lib/readline/funmap.c - added `history-search-forward' and `history-search-backward' as bindable commands (names compatible with tcsh) lib/readline/complete.c - make stat_char use lstat if S_ISLNK is defined to pick up symbolic links - split some common code out into auxiliary functions: printable_part and print_filename - expand filenames before calling stat_char if visible-stats is active documentation/bash.1, documentation/readline.3, lib/readline/doc/rluser.texinfo - documented new `history-search-forward' and `history-search-backward' readline commands, by default unbound error.c - changed get_name to get_name_for_error and made it externally visible error.h - extern declaration for get_name_for_error test.c - call get_name_for_error in test_syntax_error if the shell is not interactive 1/27 ---- lib/readline/emacs_keymap.c - add M-~ as a binding for rl_tilde_expand, it's more intuitive lib/readline/bind.c, lib/readline/readline.h - exported rl_invoking_keyseqs_in_map as a public interface lib/readline/rldefs.h - don't include memalloc.h if PRAGMA_ALLOCA is defined lib/readline/readline.c, lib/readline/isearch.c, lib/tilde/tilde.c, lib/readline/complete.c, lib/readline/search.c - replaced all calls to alloca with xmalloc/free pairs or array declarations lib/readline/history.c - replaced some calls to alloca variables.c, subst.c, mailcheck.c, alias.c, parse.y, builtins/cd.def - replaced all calls to alloca with xmalloc/free pairs or array declarations builtins/source.def - replaced call to alloca with xmalloc/free/unwind_protect - replaced stat/open sequence with open/fstat 1/28 ---- lib/readline/history.c - print an error message for an unrecognized history modifier instead of just ignoring it - replaced remaining calls to alloca() execute_cmd.c - added a #pragma alloca at the head of the file if AIX and RISC6000 are defined and __GNUC__ is not 1/31 ---- support/recho.c - now a standard part of the distribution, needed for `make tests' cpp-Makefile - make sure recho is built before the tests are run 2/1 --- builtins/command.def - If subshell_environment is 1, we've already forked and are in a subshell, so add CMD_NO_FORK to the flags of the command to be executed and see if we can get away without forking 2/9 --- support/mksysdefs - write the name of the maintainer to sysdefs.h surrounded by double quotes cpp-Makefile - removed the now-unnecessary double quotes around the MAINTAIN_DEFINE variable value lib/readline/readline.h - new variable rl_attempted_completion_over, set in the completion attempt function to suppress the normal filename completion lib/readline/complete.c - if rl_attempted_completion_over is set after the program-specific completion function is called, don't do filename completion general.h - new FREE and STRLEN convenience defines subst.c - code cleanups, use of FREE and STRLEN 2/10 ---- execute_cmd.c, parse.y, jobs.c, variables.c, test.c - changed code to use FREE, STRLEN, other code cleanups - removed, wherever possible, calls to strncmp and strcmp builtins/set.def - changed the `unset' builtin to use internal_getopt builtins/set.def, builtins/test.def, builtins/fg_bg.def, builtins/type.def, builtins/enable.def, builtins/exec.def, builtins/declare.def, builtins/ulimit.def, builtins/cd.def, builtins/fc.def - removed calls to strcmp, strncmp wherever possible, replacing them with incline builtins/common.h - new define ISOPTION, to test whether a string s is setting a specific option builtins/kill.def, builtins/read.def, builtins/trap.def, builtins/umask.def, builtins/enable.def, builtins/alias.def, builtins/hash.def - changed to use ISOPTION builtins/read.def - moved option processing before all of the code that sets up the input stream 2/11 ---- Makefile - added `distclean' target to mirror one in cpp-Makefile 2/14 ---- documentation/bash.1, documentation/features.texi - noted that `=' was not a valid character for an alias name 2/17 ---- builtins/common.c - if parse_and_execute gets an interrupt during execution, make sure that `interactive' is restored to the correct value (the same value as `interactive_shell' before throwing control back to the top level with throw_to_top_level so the shell does not exit in throw_to_top_level builtins/reserved.def - cleaned up the variables section, removing some and correcting the descriptions 2/18 ---- cpp-Makefile - provide alternate defintions for build_builtins_in_dir depending on whether __STDC__ is defined and > 0. The `stdc' version uses `##' to concatenate tokens machines.h - new machine description for QNX 4.2 from pt@flard.ocunix.on.ca jobs.c, nojobs.c - changed some calls to report_error to calls to internal_error test.c - some systems may not define S_IFMT, so use an #ifdef to work around print_cmd.c - combined the code for print_word_list and command_print_word_list into an internal function that takes a pointer to a function to use to print the words variables.c - don't call savestring in bind_variable on the value if it's an empty string nojobs.c - changed wait_for to call waitpid with -1 for pid value on Posix systems so all processes in a pipeline get reaped at the same time (or at least most of them) 2/21 ---- lib/readline/{complete.c,display.c,readline.c,rltty.c,signals.c} - changed _GO32_ to __GO32__ machines.h - SunOS5 needs to add /usr/ccs/lib to the library search path for the right termcap library 2/22 ---- shell.c - make sure that a subshell sets sourced_env to 0 after longjmp so that $ENV is sourced by subshells forked to execute scripts without a leading `#!' line bashhist.c, bashhist.h - make maybe_add_history a global interface -- new function to add a line to the history file depending on the value of history_control builtins/fc.def - call maybe_add_history in fc_addhist rather than add_history machines.h - new entry for concurrent machines in att universe from geoffl@vallista.ca.boeing.com (Geoffrey A. Lowney) 2/23 ---- general.c, general.h - new function string_to_long, which basically does the same thing as atol(), which I don't believe is universal builtins/ulimit.def - replaced a call to sscanf with calls to all_digits and string_to_long - non-root users can only raise a resource up to the hard limit, even if they specify `unlimited', so shell_ulimit translates RLIM_INFINITY into limit.rlim_max if euid != 0 2/25 ---- shell.c - make the default behavior of bash when invoked with -c command to make the first argument after the command string $0 and the rest $1...$N documentation/bash.1 - document the change in -c behavior 3/2 --- mailcheck.c - made add_mail_file return the index in the list of mail files, so an immediate call to find_mail_file need not be made and we are guaranteed that the index returned is never -1 - added the check back in that changes the message to note that *new* mail has arrived -- the test was not redundant after all - fixed an off-by-one error in free_mail_files - replaced an sprintf() in get_mailpaths with two calls to strcpy general.c - changed getc_with_restart to do local buffering to reduce the number of read(2) system calls subst.c - changed do_assignment_internal to check for expansion and quoting characters and only call expand_string when something needs expansion, string_quote_removal when quotes appear, and savestring for simple assignment statements 3/3 --- builtins/exit.def, documentation/bash.1 - removed `bye' as a synonym for `exit' shell.h - new exit value: EX_USAGE builtins/{bind,command,declare,fc,getopts,histctl,history,inlib,jobs,read, setattr,trap,ulimit}.def - changed to return EX_USAGE when a usage message is printed builtins/declare.def - removed the `no_modifiers' code, changed argument name to local_var command.h, make_cmd.h - declarations for the select command, inside #ifdef SELECT_COMMAND copy_cmd.c - declarations for copying select commands dispose_cmd.c - code to dispose of select command structures execute_cmd.c - code to execute select commands make_cmd.c - code to construct select command structures - removed `coerce_to_word()' parse.y - code to parse select commands in the grammar. The SELECT token is returned by read_token only if SELECT_COMMAND is defined print_cmd.c - code to print select commands config.h, config.h.mini - make SELECT_COMMAND the #define that controls whether or not the `select' command is compiled in documentation.bash,1, documentation/features.texi - documented the `select' command and $PS3 3/4 --- builtins/getopts.def - removed a call to sprintf() in favor of expanding a number manually builtins/getopt.c - make sure that we set nextchar to NULL when incrementing optind so that it does not end up pointing to stale memory (freed, then later reallocated) 3/7 --- builtins/common.c - fixed parse_and_execute not to be overzealous in marking a command as NO_FORK -- make sure there's nothing left in the string to be executed before doing so machines.h - change the string check for BSD/386 to __bsdi__ - add INT_GROUPS_ARRAY to BSDI, SunOS4, 386bsd, FreeBSD, and NetBSD descriptions test.c - change to use INT_GROUPS_ARRAY execute_cmd.c - tightened up the execution loop in execute_for_command and removed a couple of unneeded variables lib/posixheaders/memalloc.h - make sure to check for sun being defined when checking for sparc; there are ICL DRS6000 machines running SVR4.2 out there that do not have the file 3/8 --- execute_cmd.c - make sure close_fd_bitmap is called before do_redirections, lest the bitmap override some of the redirections cpp-Makefile - supply an explicit suffix list, so make understands the .def.o suffix rule as such 3/9 --- jobs.h - added extern declarations for rest of global functions in jobs.c - added prototypes jobs.c - made delete_job, terminate_current_pipeline, kill_current_pipeline, describe_pid, notify_and_cleanup, reap_dead_jobs, initialize_job_signals , without_job_control void functions 3/10 ---- execute_cmd.c, execute_cmd.h - moved check_identifier to general.c, general.h general.c - check_identifier has acquired a second parameter; when set to 1 this causes the word to be checked by legal_identifier - for and select commands call check_identifier with a second arg of 1, function names are checked with legal_identifier when in Posix.2 mode general.h - add second argument to extern declaration of check_identifier CWRU/POSIX.NOTES - added description of new function name behavior lib/readline/readline.h - include sys/ioctl.h on FreeBSD and NetBSD lib/readline/rlconf.h - new file, with readline configuration variables - included in rldefs.h lib/readline/{readline.c,readline.h,complete.c,display.c} - took configuration defines out and put them into rlconf.h lib/readline/Makefile - updated dependencies to include rlconf.h 3/14 ---- lib/readline/Makefile - remove VI_MODE from the CFLAGS lib/readline/rlconf.h - made VI_MODE a definable configuration option lib/readline/vi_mode.c - include rlconf.h before testing whether or not VI_MODE is defined lib/readline./funmap.c - include `rlconf.h' before `readline.h' lib/readline/keymaps.c - include `rlconf.h' before `vi_keymap.c' and `keymaps.h' lib/readline/readline.c, lib/readline/vi_mode.c - rl_vi_set_last -> _rl_vi_reset_last - new function _rl_vi_set_last to set the vi-mode last command information - renamed vi_done_inserting to _rl_vi_done_inserting lib/readline/vi_mode.c - _rl_vi_last_command, _rl_vi_last_repeat, _rl_vi_last_arg_sign, and _rl_vi_doing_insert are now static 3/15 ---- bashline.c - unbind C-M-m in emacs_meta_keymap so people don't accidentally switch into vi editing mode 3/21 ---- builtins/cd.def - `pwd' now follows the setting of nolinks/set -o physical; there is an undocumented -P option to get the `real' working directory 3/28 ---- make_cmd.c - only follow the command chain to the end of a list in connect_async_list if the list is not being executed in the background as a unit with CMD_WANT_SUBSHELL support/mksysdefs - removed the define of HAVE_CSH - added an additional check for SVR4 on i[34]86 machines from mkmachtype lib/readline/vi_mode.c - fix up rl_vi_delete_to so that cw deletes the character under the cursor no matter what, as per Posix.2 - any text modifying command that calls rl_vi_insertion_mode needs to explicitly set the `last command' info for `.' - rl_vi_movement_mode() no longer resets the `last command' info so that things like `cw' can be redone with `.' 3/29 ---- general.h - a new define MEMMOVE_MISSING to specify to use memcpy in the define for BCOPY - the defines for BCOPY don't need a trailing `;' machines.h - isc386 needs -DMEMMOVE_MISSING in SYSDEP_CFLAGS 3/30 ---- bashline.c - fix to set_saved_history to simplify the code by using rl_get_previous_history 3/31 ---- error.c - change the bug report message support/mksysdefs - removed `WHOAMI' junk for setting the `maintainer' cpp-Makefile - hardcode the maintainer to `bug-bash@prep.ai.mit.edu' subst.c - call rl_reset_terminal in sv_terminal if interactive_shell is nonzero - split the code that checks whether or not expand_string_unsplit needs to be called from do_assignment_internal into a separate function that takes a function pointer to call as an additional parameter trap.c - make sure that set_signal_ignored also sets original_signals[sig] to SIG_IGN bashline.c - `{' is not a word break character for the completion functions 4/2 --- [first beta distribution of bash-1.14.0] 4/5 --- builtins/cd.def - fixed a problem with CDPATH processing (used `dirlen' instead of `pathlen') subst.c - make sure that get_word_from_string updates `stringp' even if it's nothing but separators builtins/read.def - after the call to get_word_from_string, set *e to 0 only if t is not null and a word was actually returned machines.h - remove the NO_SBRK_DECL declaration for sgi machines from all but Irix 5.x machines - sgi needs __STDC__ defined if __EXTENSIONS__ is defined lib/posixheaders/stdc.h - moved the #if defined (__P) inside the check for __STDC__, so the other things get defined even if __P is already defined - don't redefine const, inline, etc. if `const' is already defined cpp-Makefile - add dependencies on stdc.h - pass -DHAVE_SYS_STREAM_H through to builds in subdirs support/mksysdefs - redirect error messages from subshell attempting to find and invoke bison - look for , define HAVE_SYS_STREAM_H if found lib/readline/rldefs.h - include only of HAVE_SYS_STREAM_H is defined externs.h, print_cmd.c - made print_command and print_simple_command void functions builtins/common.c, builtins/common.h - builtin_error now a void function - dispose_saved_dollar_vars now a void function - bad_option now a void function - initialize_shell_builtins now a void function variables.c - initialize_shell_variables now a void function - adjust_shell_level now a void function - delete_all_variables now a void function jobs.c - inserted some returns into `int'-valued functions lacking them hash.c - initialize_hash_table now static void externs.h - added declarations for functions from mailcheck.c 4/6 --- lib/readline/readline.c - added missing function arguments lib/readline/complete.c - get_y_or_n now accepts space for `y' and rubout/del for `n' to be more emacs-like lib/readline/history.c - fixed an off-by-one error in history_expand_internal: checking the wrong character for the history event or word specifier 4/7 --- lib/readline/complete.c - make sure `max' is intialized to 0 when displaying the possible completions, even if we've done `goto display_matches' lib/posixheaders/stdc.h - if __STDC__ is defined but we're not using gcc (__GNUC__ not defined), make `inline' expand to nothing lib/readline/isearch.c - use STREQN to match the search string against the history line, since we're not interested in exact matches, only matches of the search string 4/8 --- machines.h - description for a sparc running netbsd 4/11 ---- lib/readline/vi_mode.c - make sure we're starting an undo group when we implicitly enter insertion mode after a command like c[motion], so we can get to the characters that were inserted - new variable: vi_continued_command, set to 1 if we enter insert mode implicitly 4/12 ---- machines.h - generic entry for MIPS machines running SVR4, SVR4.2 - changed sony entry to handle M_MACHINE already being defined lib/malloclib/malloc.c - fixes for malloc stats, from kboyce@bnr.ca 4/13 ---- machines.h - changed the u370/USGr4 description: added -DNO_SBRK_DECL to SYSDEP_CFLAGS lib/readline/readline.c - add a call to rl_set_keymap_from_edit_mode after reading the inputrc file in readline_initialize_everything to override the effect of any `set keymap' assignments in the inputrc file support/mksysdefs - added a check for MIPS RISCos machines - set the value of `dirlist' to /bsd43/usr/include if we're building on a RISCos machine lib/readline/bind.c - skip leading whitespace in lines read from the inputrc file in rl_read_init_file - call rl_set_keymap_from_edit mode after reading the inputrc file in rl_re_read_init_file 4/14 ---- documentation/Makefile - change bash_builtins.1 to builtins.1 in the recipe for `install' - remove the dependency on texindex from features.dvi builtins/kill.def - remove explicit inclusion of machines.h - Xenix requires -DMEMMOVE_MISSING - Xenix 2.3 requires -DLD_HAS_NO_DASH_L - added #undef HAVE_RESOURCE to xenix descriptions just to be sure cpp-Makefile - make sure texindex is built before trying to build the documentation lib/doc-support/texindex.c - fixes for portability and to fit into the bash configuration scheme support/mksysdefs - fixed the Xenix section to make sure that sysdefs.h defines `i386' for machines.h -- apparently the default xenix cc does not predefine it 4/16 ---- shell.c - regularized parsing of `-c' option so it can be bundled with other options - if bash is started with a `-o' without an argument, list the long options with list_minus_o_opts builtins/set.def - renamed `list_long_opts' to `list_minus_o_opts', made it global builtins/common.c - builtin_error now calls get_name_for_error if this_command_name is null or empty hash.c, hash.h - made hash utility functions able to cope with being passed a null hash table 4/18 ---- lib/readline/history.c - changes to history_expand, history_expand_internal to allow modifiers to be used with `!#' - changes to get_history_event so that only `?' or newline can terminate a substring search string. This is more csh-like. builtins/common.c - get_working_directory now uses get_name_for_error when for_whom is null and it needs to print an error message shell.c - set no_rc and no_profile in shell_reinitialize to clarify our intent about not running the .bashrc for shell scripts 4/19 ---- lib/readline/vi_mode.c - change rl_vi_possible_completions to fix an inadvertent infinite loop in code that attempts to move to the end of the current word 4/21 ---- lib/readline/vi_mode.c - comment out rl_vi_possible_completions -- it's unused lib/readline/vi_keymap.c - comment out vi_escape_keymap declaration -- it's unused parse.y, subst.c - shells running in `posix mode' do not perform process substitution 4/22 ---- support/getcppsyms - don't process and define __GNUC__ at all - only test for and possibly define __STDC__ if __GNUC__ is not defined (not using gcc) 4/25 ---- machines.h - Make sure SunOS 4.x has INT_GROUPS_ARRAY defined 4/26 ---- lib/readline/readline.c - make sure screenwidth is not set to 0 4/27 ---- Makefile - changed the text printed by the `.notified' target to refer to `bashbug' [1.14.1 announced and made available for anonymous FTP] 4/28 ---- builtins/read.def - unset the variables passed to `read' as arguments when EOF is read from stdin (sh, Posix.2 compatibility) machines.h - add HAVE_STRERROR to the solaris machine description print_cmd.c - made declaration of printf depend on __GNUC__ being defined, since only gcc seems to need it cpp-Makefile - renamed DEBUG_FLAGS to CDEBUGFLAGS 4/29 ---- builtins/getopt.c - fix for core dump problems parse.y, make_cmd.c, make_cmd.h, execute_cmd.c - changed make_redirection to take a `REDIRECTEE', which is a union, as its second argument, to avoid int/long/pointer problems - changed all calls to make_redirction to pass a correctuly- initialized REDIRECTEE argument 5/1 --- general.h - Linux needs a slightly different declaration for gethostname() nojobs.c - fix to arguments to stop_pipeline 5/3 --- alias.c, bashline.c, variables.c - added casts to eliminate compiler warnings general.h - removed __P type information from functions taking a GENERIC_LIST *, since that is never what is passed - changed prototype to show that xrealloc takes a `void *' general.c - xrealloc takes a `void *' as its first argument 5/4 --- support/mksysdefs - changed test -r to test -f when looking for ranlib lib/readline/readline.c - cleaned up some casts before xmalloc/xrealloc calls - make sure the arrow keys are bound into the vi movement keymap in init_terminal_io - set the keymap explicitly in init_terminal_io before trying to bind the arrow keys lib/readline/vi_keymap.c - bind ESC in vi_movement_keymap to 0 rather than rl_abort, since the rl_abort binding keeps _rl_bind_if_unbound from working shell.c - look in $PATH for an input file given on the command line only if that file is not an `absolute program' (contains no slashes) 5/5 --- machines.h - changed HPUX_SYSDEP_CFLAGS to HPUX_CFLAGS general.h, general.c, copy_cmd.c, make_cmd.c, print_cmd.c, parse.y, subst.c - BCOPY -> FASTCOPY because some machines define or undef BCOPY in system header files longest_sig.c, support/pagesize.{c,sh} - removed from distribution, moved to CWRU/misc lib/readline/parens.c, lib/readline/bind.c - don't compile in all of the paren-matching code if PAREN_MATCHING is not defined in rlconf.h 5/9 --- lib/readline/rldefs.h - new #define WINSIZE_IN_IOCTL_H, set for machines that need to include to get TIOCGWINSZ and related definitions - use `dirent' instead of `direct', define `dirent' as `direct' if HAVE_DIRENT_H is not defined lib/readline/signals.c, lib/readline/readline.c - changed to include if WINSIZE_IN_IOCTL_H defined lib/readline/readline.c - strip high bit in rl_getc if __GO32__ is defined lib/readline/complete.c - use `struct dirent' rather than `struct direct' in filename_completion_function lib/readline/bind.c - make sure that "" is not passed to open as the name of the inputrc file general.c - hpux_9 needs #undef HAVE_GETDTABLESIZE, just like hpux_8, on hppa builtins/times.def - Posix.1 systems need to default to using `struct tms' and the output of `times' jobs.c - don't redefine _POSIX_SOURCE on sun systems if already defined parse.y - changed a couple of calls to reverse_list to use the REVERSE_LIST macro instead newversion.c - now adds the `build version' as part of `SCCSVERSION' in the same format as the shell prints the version string 5/12 ---- builtins/psize.sh - if /tmp/pipesize is an empty file, default by defining PIPESIZE to be 512. An empty file indicates that `psize.aux' did not succeed for some reason 5/13 ---- machines.h - dynix/ptx needs -DHAVE_SOCKETS added to SYSDEP_CFLAGS bashline.c - changed some calls to strncmp to use STREQN 5/15 ---- print_cmd.c - if the delimiter to a here document is supposed to be quoted, print it single-quoted - make if statements and while/until statements print similarly, with the then/do on the same line as the first word, separated from the command list by a semicolon make_cmd.c - reverse the order of patterns in the case statement pattern list in make_pattern_list, so it's printed in the same way it was defined Makefile - make sure that references to cpp-Makefile and ansi-Makefile are prefixed with $(srcdir) or use CPP_MAKEFILE or ANSI_MAKEFILE respectively - make sure that srcdir is passed from Makefile to bash-Makefile when making `all' support/mkdirs - new program, clone of `mkdir -p' cpp-Makefile - before running a make in a subdirectory, call `mkdirs' to ensure that that subdirectory exists 5/16 ---- newversion.c - added a `-dir' option to specify a directory prefix, like $(srcdir) 5/17 ---- builtins/mkbuiltins.c - if the .def filename begins with a slash, don't prepend the name of the `error directory' when printing error messages or writing line number information to a generated c source file config.h - don't include memalloc.h if BUILDING_MAKEFILE is defined lib/malloc/Makefile - skeleton Makefile to make this directory more like other library directories Makefile, cpp-Makefile, builtins/Makefile, lib/*/Makefile - changes to make bash buildable in a directory without the source present by running `make srcdir=xxx' support/srcdir - new program, used to print the full path of the source directory; it echoes the output of `pwd' if $1 is `.' 5/18 ---- cpp-Makefile - CFLAGS -> CCFLAGS, CDEBUGFLAGS -> CFLAGS to obey the GNU standard (which does not consider the possibility that other information besides debugging could conceivably be passed to cc) general.h - don't prototype gethostname() unless we're defining our own version in general.c lib/readline/history.c - fix hist_error to allocate and return a new string with the error message; removed the `ret' argument 5/19 ---- subst.c - new function char_is_quoted(s, i) returns 1 if character at position i in s is quoted bashline.c - removed `\' from rl_completer_word_break_characters - make sure that a command separator character is not quoted in attempt_shell_completion by calling char_is_quoted before calling command_word_completion_function - fixed a problem with detection of command separator characters in attempt_shell_completion lib/readline/complete.c - set found_quote if a backslash is found in the string in rl_complete_internal - if compiled for the shell, call char_is_quoted to find out whether a character in rl_line_buffer is quoted when deciding where to break a word for the completer 5/23 ---- machines.h - made sure all definitions of M_OS were quoted lib/doc-support/Makefile - more surgery to use ${topdir} and ${srcdir} documentation/bash.1 - clarify that redirections may precede only simple commands support/fixlinks - new script to make multiple copies of files links or symlinks to a single master copy support/SYMLINKS - name -> target symlink map for support/fixlinks support/fixlib - modification of fixdist to move lib to ../lib and clone the files in there like using lndir filecntl.h - moved to lib/posixheaders, replaced with symlink support/getcppsyms.c - removed support for outputting -D__STDC__; it's rarely right cpp-Makefile - build_builtins_in_dir(directory, makefile) --> build_builtins(target) to get rid of the need to know how cpp does token concatenation nojobs.c - changed the printing of the pid for asynchronous jobs to be the same as sh (no brackets) - took a useless loop out of wait_for_background_pids 5/24 ---- cpp-Makefile - major surgery to replace #define with make variable assignments -- now cpp is used only for inclusion and conditionals (and shorthand) machines.h - new entry for Lynx 2.1 builtins/declare.def - make sure that the name in command name=value is a legal variable name (affects typeset/declare, export, readonly) 5/26 ---- machines.h - make sure a 386/486 running Solaris2 is not misidentified as a Sun 386i - make sure a 486 running NeXT OS is identified as a `NeXT-i386' 5/27 ---- builtins/enable.def - fixed an off-by-one error in option parsing - improved option parsing to be Posix compliant (`--'), bad options Makefile - call /bin/sh to run support/mksysdefs and create sysdefs.h, since it's a shell script - ditto for $(CPPMAGIC) cpp-Makefile - newversion.aux does not need to be linked against the math library 5/30 ---- machines.h - set M_OS to `NeXTstep' for NeXT and i386 machines running NeXT OS [1.14.2 beta release made available for FTP] 5/31 ---- siglist.h - don't define `strsignal' on SunOS5; it has its own builtins/setattr.def - change set_or_show_attributes to check for legal variable names