From 011c1d1c0766c65517ebd495465c99e86edb63ec Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 11 Oct 2010 14:49:26 -0700 Subject: Update to bash-4.1 --- CWRU/changelog | 19406 ++++++++++++++++++--------------------------- CWRU/misc/bison | 22 +- CWRU/misc/errlist.c | 24 +- CWRU/misc/hpux10-dlfcn.h | 24 +- CWRU/misc/open-files.c | 24 +- CWRU/misc/sigs.c | 24 +- CWRU/misc/sigstat.c | 24 +- 7 files changed, 7572 insertions(+), 11976 deletions(-) (limited to 'CWRU') diff --git a/CWRU/changelog b/CWRU/changelog index 830baec..085fdbd 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,13730 +1,9326 @@ - 4/9/2001 - -------- -[bash-2.05 released] - - 4/10 - ---- -redir.c - - check return value of fclose() in write_here_document() for error - returns; don't just rely on fwrite() failing + 7/27/2004 + --------- -support/bashbug.sh - - set TMPDIR to /tmp if it's null or unset - - use $TMPDIR in the TEMP tempfile name template - - fixed the call to `mktemp', if it exists, to make it more portable +[bash-3.0 released] -jobs.c - - if WCONTINUED is not defined, define it to 0 and add a define for - WIFCONTINUED(wstatus) which expands to 0 - - add WCONTINUED to the flags passed to waitpid(2) in waitchld() - - don't increment children_exited if waitpid's status is WIFCONTINUED, - since we don't want to call a SIGCHLD trap handler in this case - - in waitchld(), we set child->running to 1 if WIFCONTINUED(status) - is non-zero - - make sure pretty_print_job doesn't check for the core dump bit if - the process has been continued; it's only valid if the job is dead - - in set_job_status_and_cleanup, set the job to JRUNNING if job_state - is non-zero and the job was previously marked as JSTOPPED + 7/28 + ---- +array.c + - in array_insert(), make sure the value to be added is non-NULL before + calling savestring() on it -configure.in - - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS +builtins/reserved.def + - fix description of `CDPATH' -lib/glob/glob.c - - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1 +lib/readline/display.c + - when expanding a prompt that spans multiple lines with embedded + newlines, set prompt_physical_chars from the portion after the + final newline, not the preceding portion. Bug reported by + "Ralf S. Engelschall" -jobs.c - - in kill_pid, we only need to block and unblock SIGCHLD if the - `group' argument is non-zero, since otherwise we just call `kill' - on the pid argument +make_cmd.c + - explicitly declare `lineno' in function prologue for make_case_command -version.c - - update copyright date to 2001 +builtins/evalfile.c + - include `trap.h' for declaration for run_return_trap bashline.c - - prog_complete_return needs to take a `const char *' as its first - argument - - history_completion_generator needs to take a `const char *' as - its first argument, and `text' needs to be a `const char *' - - 4/11 - ---- -redir.c - - fixed a weird typo in redir_special_open, case RF_DEVFD, added - call to all_digits before call to legal_number - - fixed do_redirection_internal to call legal_number instead of atol(3) - when translating r_duplicating_{in,out}put_word, so it handles - overflow better - - produce an error message in redirection_error for out-of-range - file descriptors - - change allocation strategy in redirection_error so we don't have to - malloc scratch memory if redirection_expand() fails - -jobs.h - - added defines for `running' member of a struct process + - fix a `return' without a value in enable_hostname_completion general.c - - fix legal_number to return 0 when strtol(3) reports overflow or - underflow - -parse.y - - changed read_token_word to call legal_number instead of atoi(3) - -input.c - - return -1/EBADF from close_buffered_fd if fd is < 0 - -command.h - - fixed bogus comment about IS_DESCRIPTOR in description of the - REDIRECTEE struct - -print_cmd.c - - change cprintf's 'd' modifier code to display negative numbers as - an out-of-range value. We can do this only because the only use - of %d is to output file descriptor numbers in redirections - -support/mksignames.c - - need to include config.h to get a possible value for - UNUSABLE_RT_SIGNALS - - 4/16 - ---- -lib/readline/doc/rluser.texinfo - - corrected a small error in one description of M-DEL - - 4/17 - ---- -stringlib.c - - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER - in strcreplace() + - include test.h for extern declaration for test_eaccess -support/bashversion.c - - new file, prints bash version information +externs.h + - add declaration for zcatfd -Makefile.in - - rules for building bashversion and linking it to version.o +tests/{history,histexp}.tests + - unset HISTFILESIZE to avoid problems if a value of 0 is inherited + from the environment - 4/24 + 7/30 ---- -conftypes.h - - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from - variables.h - -variables.h, version.c - - include conftypes.h - -patchlevel.h - - new file, contains define for PATCHLEVEL. Doing away with the old - scheme of having the information in configure.in - -version.c - - include patchlevel.h - -Makefile.in - - run bashversion -p to find patch level rather than have configure - substitute in a value - - pass -S ${top_srcdir} to support/mkversion.sh - -support/mkversion.sh - - don't put PATCHLEVEL define into version.h, but accept and ignore - a -p option - - take a new -S srcdir option - - find the patch level by parsing it out of patchlevel.h - -configure.in - - hard-code BASHVERS assignment instead of reading it from a file - - remove BASHPATCH; don't substitute it +bashline.c + - small changes to glob_expand_word to perform tilde expansion before + attempting globbing -_distribution,_patchlevel - - removed +builtins/Makefile.in + - fix the install-help target to not cd into the `helpfiles' + subdirectory, so a value of $INSTALL_DATA containing a relative + pathname (e.g., .././support/install.sh) remains valid - 4/26 + 7/31 ---- -shell.c - - call init_noninteractive() in open_shell_script if forced_interactive - is non-zero (the shell was started with -i) and fd_is_tty is 0 - (the script file is a real file, not something like /dev/stdin), - since it wasn't done earlier +subst.c + - new function, mbstrlen(s), returns length of a multibyte character + string -builtins/printf.def - - change for POSIX.2 compliance when conversion errors are encountered - when processing %d, %u, and floating point conversion operators - (print a warning message, return the value accumulated at the time - of the error -- which is always 0 -- and exit with a non-zero status) +include/shmbutil.h + - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate -command.h - - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the - code in execute_cmd.c +builtins/trap.def + - small change so that a first argument that's a valid signal number + (digits only -- no symbolic names) will be treated as a signal and + reverted back to the original handling disposition. Fixes debian + complaints -builtins/command.def - - add CMD_COMMAND_BUILTIN to the created command's flags +subst.c + - call MB_STRLEN instead of STRLEN where appropriate in + parameter_brace_expand_length to handle multibyte characters properly + - call MB_STRLEN instead of strlen in verify_substring_values so that + negative substrings of strings with multibyte chars work properly - 5/1 + 8/1 --- -configure.in - - add call to AC_C_CONST to test `const' compiler behavior - - add call to AC_C_INLINE to test `inline' compiler behavior - - add call to AC_C_STRINGIZE to test cpp #x stringizing operator +jobs.c + - describe_pid needs to write to stderr, not stdout (POSIX) + - start_job, since it's only used by builtins (fg/bg), needs to write + its output to stdout, not stderr (POSIX) -config.h.in - - add `#undef const' for configure to substitute - - add `#undef inline' for configure to substitute - - add `#undef HAVE_STRINGIZE' for configure to substitute +sig.c + - add an `orig_flags' member to struct terminating_signal so the + original signal handling flags (SA_RESTART, etc.) can be preserved + on POSIX systems + - make sure to preserve the signal flags state in + initialize_terminating_signals and reset them for child processes + in reset_terminating_signals -include/stdc.h - - remove code that defines or undefines `const' and `inline' - - change the __STRING macro to be defined depending on the value - of HAVE_STRINGIZE +builtins/fc.def + - fixed an off-by-one error that caused `fc -l' to list one too many + history entries + - in posix mode, `fc' should not list any indication as to whether or + not history lines have been modified (POSIX) + - when in posix mode, the default editor for `fc' should be `ed' (POSIX) -lib/malloc/malloc.c - - change the __STRING macro to be defined depending on the value - of HAVE_STRINGIZE +doc/bashref.texi + - updated the description of `trap' behavior when given a first + argument that is a valid signal number + - noted that `fc -l' won't indicate whether a history entry has been + modified if the shell is in posix mode -lib/readline/{readline,rlprivate}.h - - moved rl_get_termcap to readline.h, making it a public function +builtins/command.def + - fixed bug: `command -v' is supposed to be silent if a command is not + found -lib/readline/readline.h - - new #define, RL_READLINE_VERSION, hex-encoded library version - number, currently set to 0x0402 - - new public int variable, rl_readline_version +builtins/hash.def + - `hash' should print its `hash table empty' message to stderr -lib/readline/readline.c - - #define RL_READLINE_VERSION if it is not already defined (which it - should be in readline.h) - - initialize rl_readline_version to RL_READLINE_VERSION +lib/readline/misc.c + - back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P -lib/readline/doc/rltech.texinfo - - documented rl_get_termcap - - documented rl_readline_version +general.c + - changed base_pathname so that it will return reasonable results for + non-absolute pathnames -- this is what is intended by all of its + callers -jobs.c - - job_exit_status should return an int, not a WAIT (undetected - before because on most POSIX-like systems a WAIT is really an int) +arrayfunc.c + - fix array_variable_part to return NULL if it finds an invisible + variable in the hash table. Fixes seg fault caused by referring to + unset local variable using array notation -builtins/evalfile.c - - added FEVAL_REGFILE (file must be a regular file) to accepted - _evalfile flags - - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This - means that startup files and files read with `.' no longer need - to be regular files +{locale,variables}.c + - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks + the current locale - 5/2 + 8/2 --- +variables.c + - fixed small memory leak in makunbound() when a local array variable + is unset. Fix from William Park -lib/termcap/Makefile.in - - fix target for installed termcap library (normally unused) - -lib/tilde/Makefile.in - - fix install target to install in $(libdir) (normally unused) - -Makefile.in - - don't make $(man3dir) since there's nothing installed there - -Makefile.in,doc/Makefile.in - - change `man1ext' to `.1', `man3ext' to `.3' - - change appropriate install targets to use new values of man[13]ext - - use `test ...' instead of `[...]' - - add support for DESTDIR root installation prefix, for package - building (installdirs, install, install-strip, uninstall targets) - -builtins/common.c - - new function int get_exitstat(WORD_LIST *list) returns an eight-bit - exit status value for use in return, exit, logout builtins - -builtins/common.h - - extern declaration for get_exitstat() +lib/readline/display.c + - fixed a problem when computing the number of invisible characters on + the first line of a prompt whose length exceeds the screen width + (should only happen when invisible characters occur after the + line wrap). Bug reported by agriffis@gentoo.org -builtins/{exit,return}.def - - call get_exitstat where appropriate +builtins/command.def + - `command -V' passes a new flag, CDESC_ABSPATH, which means to convert + to an absolute path -builtins/printf.def - - add support for "'" flag character as posix 1003.2-200x d6 says - - fix core dump when user-supplied field width or precision is 0 - - fix to printstr() to handle zero-length precision with `%b' format - specifier (printf '%.0b-%.0s\n' foo bar) - - fix to printstr() to treat a negative field width as a positive - field width with left-justification - - fix to mklong to avoid static buffers, which can always be overrun - by someone sufficiently motivated +builtins/type.def + - in posix mode, `type' and `command -v/-V' should not report + non-executable files, even if the execution code will attempt to + run them. Other posix shells do this -bashline.c - - change var in add_host_name to type `size_t' for passing to xrealloc +doc/bashref.texi + - add note to POSIX Mode section describing behavior of type and command + when finding a non-executable file - 5/3 - --- execute_cmd.c - - change restore_signal_mask to accept a sigset_t *, since a sigset_t - may not fit into a pointer, change call + - force extended_glob to 1 before calling binary_test in + execute_cond_node so that the right extended pattern matching gets + performed -unwind_prot.c - - use a union UWP in restore_variable when restoring a variable whose - size is the same as sizeof(int), the reverse of the method used to - store it in unwind_protect_int + 8/3 + --- +braces.c + - make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars + with values > 128 are handled correctly builtins/printf.def - - use a #define LENMODS containing the length modifiers instead of - testing against each possible modifier character, save any mod - character found - - add support for ISO C99 length specifiers `j', `t', and `z' - - if `L' modifier is supplied with a floating point conversion char, - pass a `long double' to printf if HAVE_LONG_DOUBLE is defined + - change bexpand() and printstr() to handle strings with a leading + '\0' whose length is non-zero, since that's valid input for the + `%b' format specifier -configure.in,config.h.in - - call AC_C_LONG_DOUBLE to check for `long double'; define - HAVE_LONG_DOUBLE if supported +subst.c + - fix a couple of instances of find_variable that didn't check the + result for an invisible variable -bashline.c - - fix an inadvertantly-unclosed comment in attempt_shell_completion - - make set_saved_history return a value - - make dynamic_complete_history return a useful value +variables.c + - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as + invisible vars -{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test, -pcomplete}.c - - removed some declared-but-unused variables +pcomplete.c + - make sure COMP_WORDS is not invisible when bind_comp_words returns + - ditto for COMPREPLY in gen_shell_function_matches -builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def - - removed some declared-but-unused variables + 8/4 + --- +braces.c + - fix problem where ${ was ignored but did not increment the open + brace count. Bug reported by Tim Waugh -lib/sh/{zread,netopen}.c - - removed some declared-but-unused variables +variables.c + - if make_local_variable finds a variable in the correct context in + the right variable scope, make sure it's not invisible before + returning it -execute_cmd.c - - in execute_arith_command, use a long variable to hold the result - of evalexp(), since that's what it returns + 8/5 + --- +builtins/trap.def + - fixed usage message to show `action' as not optional, though it + actually is when not in posix mode (for a single argument) -builtins/evalstring.c - - make cat_file return -1 on a read or write error + 8/7 + --- +configure.in + - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs + to be configured --without-gnu-malloc -lib/sh/stringlib.c - - make merge_stringlists() return the right value +lib/readline/vi_mode.c + - in rl_vi_search, free any saved history line before starting the + search, so failure leaves you at that line, not the last line in + the history (assuming the current line is not the last history line). + Fix from llattanzi@apple.com to replace fix of 7/7 - 5/7 + 8/9 --- -pcomplete.c - - remove typo that caused empty declaration (;;) - -parse.y - - fix yyerror() to accept a single string argument; fix callers +support/Makefile.in + - renamed `mostly-clean' target to `mostlyclean' -trap.c - - cast pointer to long instead of int when printing message with - internal_warning() in run_pending_traps() + 8/11 + ---- +lib/readline/vi_mode.c + - make same change for EOL in multibyte character case of + rl_vi_change_char + 8/12 + ---- subst.c - - fix process_substitute to handle stdin being closed - -test.c - - change `while' to `if' in and() and or(), since the loop isn't - actually performed -- there's an unconditional `return' in the - loop body - - check for integer overflow of arguments to `-t' + - in verify_substring_values, fix off-by-one error checking bounds of + `offset', esp. in array values (e.g., getting the highest element + of an array) -lib/sh/netopen.c - - change _getserv() to reject negative port/service numbers + 8/16 + ---- +aclocal.m4 + - change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are + accessible via /dev/fd, unlike FreeBSD 5.x -expr.c - - fix strlong() to not convert the base specification from long to - int before checking for overflow, since truncation on machines - where sizeof(int) != sizeof(long) may mask errors - -builtins/{jobs,kill,wait}.def - - use legal_number instead of atoi when converting strings to pid_t; - check for numeric overflow - -input.c - - fix for cygwin in b_fill_buffer -- off-by-one error when checking - buffer for \r\n termination - -general.h - - new #define INT_STRLEN_BOUND(t), computes max length of string - representing integer value of type T, possibly including a sign - character - - include if it's present - -{execute_cmd,findcmd,test}.c - - don't include , since general.h does it now - -{execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c - - use INT_STRLEN_BOUND instead of static array sizes when converting - various strings to integer values - -shell.h - - struct fd_bitmap now uses an `int' size, since it's bounded by - the number of file descriptors, which must fit into an `int' - -execute_cmd.c - - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L - - new_fd_bitmap takes an `int' size parameter, not a `long' - -execute_cmd.h - - change prototype for new_fd_bitmap() +lib/sh/strftime.c + - make sure `zone' is initialized with gettimeofday before it is used + - work around HPUX lack of `altzone' and differing definitions of + `timezone' -test.c - - fix test_stat to check for overflow when parsing the integer file - descriptor number; return ENOENT instead of EBADF for files that - are not open +lib/malloc/malloc.c + - internal_memalign and memalign now take a `size_t' as their first + argument, which seems to be the prevailing standard -hashlib.c - - don't discard the upper 32 bits of the random value, if present +lib/malloc/{malloc.c,shmalloc.h} + - change sh_memalign to take a `size_t' as its first argument -lib/readline/shell.c - - use the same INT_STRLEN_BOUND mechanism to decide how much space to - allocated in sh_set_lines_and_columns +builtins/echo.def + - if posixly_correct and xpg_echo are both set, don't try to interpret + any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul + Eggert) - 5/8 - --- -aclocal.m4 - - add check for libtinfo (termcap-specific portion of ncurses-5.2) to - BASH_CHECK_LIB_TERMCAP - - new macro, RL_LIB_READLINE_VERSION, checks version of installed - readline library and (optionally) writes version #defines to - config.h. Bash doesn't use the version defines +doc/bashref.texi + - amend description of bash posix mode to include new echo behavior -configure.in - - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh +builtins/fg_bg.def + - allow bg to take multiple job arguments, as posix seems to specify, + placing them all in the background, returning the status of the last + one as the status of `bg' -execute_cmd.c - - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros - to check array bounds before indexing into the sample string +lib/readline/vi_mode + - fix _rl_vi_change_mbchar_case (multibyte-char version of `~' + command) to have the right behavior at EOL -- handle case where vi + mode backs up at the end of the line -unwind_prot.[ch] - - import new versions submitted by Paul Eggert - with a couple of changes for backwards compatibility, so the rest - of the source doesn't need to be changed yet + 8/18 + ---- +array.c + - check for an empty array in array_rshift before shifting elements + and adjusting max_index + - check for null array in array_subrange jobs.c - - use unwind_protect_var on last_made_pid in run_sigchld_trap - -builtins/bind.def - - use unwind_protect_var on rl_outstream + - fix raw_job_exit_status to not ignore exit status of the last + process in the pipeline when `set -o pipefail' is enabled -general.c - - rework print_rlimtype to use INT_STRLEN_BOUND and handle the - most negative number correctly + 8/19 + ---- +lib/readline/mbutil.c + - make sure _rl_find_next_mbchar_internal has a valid multibyte + character before it checks whether or not it's a zero-width + wide character and adjusts point accordingly -expr.c - - `tokval' should have been a `long', since all arithmetic is done - as longs + 8/24 + ---- +bashline.c + - new function, bash_directory_expansion, duplicates the expansions + performed on the directory name by rl_filename_completion_function + - call bash_directory_expansion in command_word_completion_function + if we decide we're doing tilde expansion (and any other + canonicalization) on the directory name being completed -builtins/history.def - - consolidate tests for valid history position in one block to - avoid duplicate code and strings + 8/25 + ---- +configure.in + - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires + sys/stream.h). The correct checks are in the code, but autoconf + complains if sys/stream.h is not included, rather than simply + checking for the header's presence -builtins/ulimit.def - - fix check for overflow when setting limit to work when int is 32 - bits and RLIMTYPE is 64 + 8/26 + ---- +builtins/hash.def + - fix a bug that prevented `hash -d' from working right (as soon as + hash removed a command from the table, the bug caused it to be added + right back) -lib/sh/tmpfile.c - - don't truncate the result of time(3) to int; just use time_t, - since it's being assigned to an `unsigned long' + 8/27 + ---- +doc/{bash.1,bashref.texi} + - explicitly note that conditional primaries that operate on files + operate on the targets of symbolic links rather than the links + themselves -mailcheck.c - - use legal_number instead of atoi in time_to_check_mail() to catch - more numeric errors; consolidate error checking in one block - - last_time_mail_checked should be a time_t + 8/30 + ---- +lib/readline/display.c + - fix multibyte calculation of `physchars' in prompt expansion, to + handle double-width multibyte characters correctly + - changes to rl_redisplay to handle prompts longer than the screenwidth + that might contain double-width multibyte characters. Fixes from + Tomohiro Kubota - 5/9 + 9/6 --- -builtins/set.def - - recognize `set [-+]o nolog' if HISTORY is defined - -bashline.c - - new variable `dont_save_function_defs', set by `set -o nolog'; - currently ignored - -command.h - - the `dest' member of a REDIRECTEE is now an `int' - -parse.y,redir.c - - changed uses of `redir.test' (where redir is a REDIRECTEE) since - it's now an int +subst.c + - change word_list_split to avoid really bad behavior caused by calling + list_append for each split word -- as the list gets long, you have + to traverse it every time. Keep a pointer to the end of the list and + and just tack onto it -lib/readline/rlstdc.h - - don't mess around with `const', rely on configure to supply a - proper definition if the compiler doesn't support it + 9/8 + --- +lib/readline/complete.c + - change fnprint to calculate the displayed width of a filename in + the same way as fnwidth -lib/tilde/tilde.h - - include if HAVE_CONFIG_H is defined - - don't mess around with `const', rely on configure +subst.c + - in verify_substring_values, when expanding ${array[@]:offset}, make + sure negative offsets count from one greater than the array's + maximum index so things like ${x[@}: -1} work to give the last element + (requires fixing array tests) -builtins/shopt.def - - new read-only `shopt' option, login_shell, non-zero if shell is a - login shell (as decided by shell.c) - - new function set_login_shell(), sets shopt private value of - login_shell +builtins/common.c + - new error function, sh_wrerror(), for builtins to call when a write + error occurs builtins/common.h - - new extern declaration for set_login_shell - -shell.c - - call set_login_shell after setting value of login_shell (in - main() and set_shell_name()) + - extern declaration for sh_wrerror() -parse.y - - added new `\A' prompt string escape sequence: time in 24-hour - HH:MM format +builtins/cd.def + - change builtin_error call to use sh_wrerror() -configure.in, config.h.in - - check for , define HAVE_GRP_H if found +builtins/echo.def + - report write errors with sh_wrerror() instead of just returning + failure -builtins/complete.def - - add new `-A group/-g' option to complete group names +builtins/printf.def + - change printstr to return failure (-1) or success (0) indication + rather than void + - report write errors when printstr() fails, return failure + - if any of the PF/printf calls fail, report write error and return + failure -pcomplete.h - - new define for CA_GROUP, used with group name completion +execute_cmd.c + - change execute_in_subshell so the subshell command inherits the + command timing flags from the enclosing COMMAND * -pcomplete.c - - add code to support CA_GROUP group name completion + 9/11 + ---- +[prayers for the victims of 9/11/2001] -bashline.c - - new function, bash_groupname_completion_function(), supports - programmable completion of group names +lib/sh/strnlen.c + - new file, implementation of GNU libc extension function strnlen -bashline.h - - extern declaration for bash_groupname_completion_function +lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST + - changes for strnlen -lib/readline/bind.c - - new inputrc variable, `match-hidden-files', controls completion - matching files beginning with a `.' (on Unix) +configure.in + - version changed to 3.1-devel -lib/readline/complete.c - - new variable, _rl_match_hidden_files, mirrors `match-hidden-files' - inputrc variable +doc/bash.1, lib/readline/doc/rluser.texi + - added description of `-o plusdirs' to complete/compgen (thanks, + Arnold) -lib/readline/rlprivate.h - - extern declaration for _rl_match_hidden_files +parse.y + - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing + arguments to a builtin that accepts assignment statement arguments + - turn on PST_ASSIGNOK in read_token_word when appropriate + - turn off PST_ASSIGNOK in read_token when appropriate + - don't attempt to parse a compound assignment specially unless we're + in a position where an assignment statement is acceptable, or + PST_ASSIGNOK is set -builtins/hash.def - - new `-t' option to list hash values for each filename argument + 9/13 + ---- +variables.c + - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE + non-unsettable, since the shell uses those values internally -builtins/read.def - - alarm(3) takes an `unsigned int' argument, not int - - check for arithmetic overflow with -t and -n options +expr.c + - make exponentiation right-associative, as is apparently correct -input.c - - check for read error before doing \r\n translation on cygwin in - b_fill_buffer - - reset bp->b_used to 0 instead of leaving it at -1 on read error - in b_fill_buffer + 9/16 + ---- +arrayfunc.c + - make sure convert_var_to_array marks the environment as needing + recreation if the converted variable was exported -builtins/shopt.def - - new functions, shopt_setopt(name, mode) and - shopt_listopt(name, mode) to give the rest of the shell an easy - interface + 9/17 + ---- +braces.c + - mark ${ as introducing an additional level of braces only if it's + not in a quoted string -- quoted strings are handled before brace + matching is done -builtins/common.h - - extern declarations for shopt_setopt and shopt_listopt +parse.y + - fixed an obscure problem in history_delimiting_chars where the `in' + in a case statement could have a semicolon added after it, if the + `case word' was on a previous line -shell.c - - new invocation options -O and +O, to list or set/unset shopt - options like +o/-o sets and unsets `set -o' options +support/config.guess + - support for newest versions of tandem non-stop kernel -doc/{bash.1,bashref.texi} - - document `set -o nolog' - - document `login_shell' shopt option - - document new `\A' prompt string escape sequence - - document new `-t' option to `hash' - - document new `[+-]O' invocation option +lib/readline/display.c + - in compute_lcd_of_matches, explicitly cast `text' to `char *' before + passing it to rl_filename_dequoting_function -doc/bashref.texi - - add text to `Invoking Bash' section defining a login shell; text - taken from man page +lib/readline/terminal.c + - bind the key sequence sent by the keypad `delete' key to delete-char + (same as ^D in emacs mode) -doc/bash.1, lib/readline/doc/rluser.texinfo - - documented new complete/compgen `-A group/-g' option +builtins/ulimit.def + - in print_all_limits, don't print anything if get_limit returns + -1/EINVAL, indicating that the kernel doesn't support that particular + limit + - add -i (max number of pending signals), -q (max size of posix msg + queues), -x (max number of file locks) for systems (Linux) that + support them -lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 - - documented new `match-hidden-files' inputrc variable +doc/{bash.1,bashref.texi} + - fix description of correspondence between FUNCNAME, BASH_LINENO, + and BASH_SOURCE indices in description of BASH_LINENO - 5/10 + 9/18 ---- -configure.in - - fix AC_CHECK_PROG(ar, ...) - - add AC_CHECK_TYPE for ssize_t - -config.h.in - - new #undef for ssize_t - -lib/sh/zread.c - - int -> ssize_t fixes to mirror modern declarations of read and write - - the `off' variable in zsyncfd should be an off_t since it computes - a file offset - - the local buffer `lbuf' is now char, since it's not nice to pass - unsigned char * to read(2), and the values from it are assigned to - a char anyway - - lind and lused are now size_t, since they index into a buffer - - set lused to 0 on read error - -lib/sh/zwrite.c - - change second argument to type `char *', since ISO C says you have - to pass a `char *' to `write' +lib/sh/shquote.c + - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as + long as the resultant string never gets sent to the word expansion + functions without going through the shell parser externs.h - - fix extern declarations of zread, zread1, zreadc, and zwrite - - prototype extern declaration of qsort_string_compare - - add extern declaration for history_delimiting_chars() from parse.y + - add extern declarations for strnlen and strpbkrk from lib/sh -input.h - - b_used and b_inputp members ofr struct BSTREAM are now size_t +subst.[ch] + - changes to handle case where IFS consists of multibyte characters. + Changed: string_extract_verbatim, split_at_delims, + string_list_dollar_star, string_list_dollar_at, list_string, + get_word_from_string, setifs -builtins/evalstring.c - - the number of chars read with zread in cat_file should be assigned - to a variable of type ssize_t + 9/19 + ---- +mailcheck.c + - change file_mod_date_changed to reset the cached mail file data if + the file size drops to zero -input.c - - the number of chars read with zread in b_fill_buffer should be - assigned to a variable of type ssize_t - - `localbuf' is now type char[], since POSIX says you shouldn't pass - unsigned char * to read(2) - - in getc_with_restart(), use a variable of type unsigned char to - get a value from the local buffer and return it - - in ungetc_with_restart, explicitly return the character arg passed - to avoid relying on localbuf being unsigned char +lib/readline/complete.c + - change append_to_match so that a non-zero value for + rl_completion_suppress_append will cause no `/' to be appended to a + directory name -subst.c - - the number of chars read with zread in read_comsub should be - assigned to a variable of type ssize_t +bashline.c + - experimental change to suppress appending a slash for a completed + filename that is found in PATH as well as a directory in the current + directory under certain circumstances: a single instance found in + $PATH when `.' is not in $PATH, and multiple instances found in the + $PATH, even when `.' is in the $PATH -mksyntax.c - - instead of casting to unsigned char * in addcstr, use a variable - of type unsigned char and let the compiler do the work - -parse.y - - instead of casting to unsigned char * in yy_readline_get, use a - variable of type unsigned char and let the compiler do the work - - ditto for yy_string_get and shell_getc (cast to unsigned char) - -subst.c - - instead of casting to unsigned char when assigning to ifscmap in - expand_word_internal, use a variable of type unsigned char and - let the compiler do the work - -lib/sh/strtrans.c - - instead of casting to unsigned char in ansic_quote, use a variable - of type unsigned char and let the compiler do the work - -builtins/evalstring.c - - remove extern declarations for zwrite and run_trap_cleanup; they're - in externs.h - - prototype cat_file forward declaration - -Makefile.in - - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES - -aclocal.m4 - - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR, - and RL_INCLUDEDIR to what it used to test the installed readline - library version for use by the caller - - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if - the caller has already assigned it a value - - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir, - _rl_includedir -> ac_cv_rl_includedir - -configure.in - - change testing of whether to use the value of - $opt_with_installed_readline to be != no, to allow the user to - specify a prefix where the installed readline library may be found - - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix - to PREFIX before calling RL_LIB_READLINE_VERSION - - if --with-installed-readline[=PREFIX] is supplied, don't set - RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care - of it, set RL_INCLUDE=-I${RL_INCLUDEDIR} - - if --with-installed-readline[=PREFIX] is supplied, and we're - linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR - so we use the same version of the installed readline and history - libraries - -Makefile.in, builtins/Makefile.in - - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable - -doc/bashref.texi - - updated description of --with-installed-readline configure option + 9/24 + ---- +command.h + - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement + - new word flag: W_NOTILDE, means word is not to be tilde expanded + - new word flag (internal): W_ITILDE, means the next character is a + tilde that should be expanded general.c - - moved QSFUNC typedef here from builtins/common.c + - new set of tilde suffixes for use when parsing the RHS of an + assignment statement and =~ should not be subject to tilde expansion + - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes + for parsing RHS of assignment statement -{alias,bashline,variables,lib/sh/stringvec}.c - - cast fourth argument to qsort to (QSFUNC *) +general.[ch] + - new function bash_tilde_find_word, drop-in replacement for + tilde_find_word -alias.c - - prototype forward declaration of qsort_alias_compare +subst.c + - call bash_tilde_expand with secord argument of 2 when expanding rhs + of an assignment statement, so tildes after second and subsequent + `=' in an assignment are not expanded + - new function, expand_string_assignment, to expand the rhs of an + assignment statement + - add `~' to EXP_CHAR, the characters that will cause the word + expansion functions to be called + - move tilde expansion into expand_word_internal instead of many + different calls to bash_tilde_expand scattered across different + functions. NOTE: This means that double quotes surrounding a + {paramOPword} expansion will cause tilde expansion to NOT be + performed on `word'. I think this is right, what POSIX specifies, + and consistent with the behavior of other characters in the rhs -bashhist.c - - include for extern declaration of glob_pattern_p - - remove extern declaration of history_delimiting_chars; it's now - in externs.h - - prototype forward declarations of histignore_item_func, - maybe_add_history, and bash_add_history +execute_cmd.c + - take out calls to bash_tilde_expand before calling word expansion + functions -bracecomp.c - - remove extern declaration for sh_backslash_quote; it's in externs.h + 9/26 + ---- +execute_cmd.c + - make sure to call UNBLOCK_CHILD before returning on a pipe creation + failure in execute_pipeline -braces.c - - remove extern declaration for extract_command_subst; it's in subst.h - - prototype forward declarations for expand_amble, array_concat, and - brace_gobbler + 9/27 + ---- +variables.c + - change get_bash_command to deal with the_printed_command_except_trap + being NULL -error.c - - prototype extern declaration of give_terminal_to, fix bad call +execute_cmd.c + - fix execute_simple_command to deal with the_printed_command being + NULL when assigning to the_printed_command_except_trap -- fixes + seg fault in savestring() -{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir, -shell}.c - - prototype all static forward function declarations +parse.y + - change the parser so that the closing `)' in a compound variable + assignment delimits a token -- ksh93 does it this way -pcomplete.c - - changed some function parameters to `const char *' to avoid discarding - const qualifier +doc/{bash.1,bashref.texi} + - change description of tilde expansion to note that expansion is + attempted only after the first =~ in an assignment statement -make_cmd.c - - make_bare_word, make_word_flags, and make_word now take a - `const char *' string argument +builtins/declare.def + - when assigning to an array variable with declare -a x=(...), make + sure the last character in the rhs of the variable assignment is + `)', not just that it appears somewhere -make_cmd.h - - changed extern declarations for make_bare_word and make_word + 9/28 + ---- +command.h + - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal + - add a `W_COMPASSIGN' flag to denote a word is a compound assignment + statement -print_cmd.c - - cprintf now takes a `const char *' as its first argument, like - xprintf and printf - - the conditional define for xprintf should have been HAVE_VPRINTF, - not HAVE_VFPRINTF +parse.y + - set W_COMPASSIGN on words that appear to be compound assignments -shell.c - - in isnetconn(), the return value of sizeof() is size_t +subst.c + - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal -aclocal.m4 - - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in - BASH_CHECK_TYPE +subst.[ch] + - new function, expand_assignment_string_to_string, calls + expand_string_assignment and then string_list on the result -configure.in - - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument - to getpeername(2)) +variables.c + - assign_in_env now calls expand_assignment_string_to_string - 5/11 + 9/30 ---- -lib/readline/bind.c - - make `useq' a char array to pass to rl_macro_bind in - rl_parse_and_bind - -lib/readline/{{bind,isearch}.c,rlprivate.h} - - _rl_isearch_terminators is now a char *, not unsigned char * - -{subst,variables,lib/sh/tmpfile}.c - - dollar_dollar_pid is now a `pid_t' instead of `int' - -variables.c - - sbrand() now takes an `unsigned long' to set the seed value - - changed last_random_value to type int, since it's always between - 0 and 32767 - - use strtoul to convert the value in assign_random instead of atoi - - take out casts in any arguments to sbrand() - - take out cast to int in call to inttostr in set_ppid() +builtins/common.c + - change get_job_spec so the null job `%' once again means the current + job + 10/1 + ---- subst.c - - don't cast last_asynchronous_pid when passing to itos() + - do_assignment_internal now takes a WORD_DESC * as its first + argument, and uses its `word' member as the assignment string + - change expand_word_list_internal to call do_word_assignment instead + of do_assignment, passing it `word' instead of, e.g., `word->word' + - change extract_array_assignment_list to just return the passed + string minus a trailing `)' if the last character is a right + paren + - change do_assignment_internal to call extract_array_assignment_list -{sig,subst}.c - - prototype all static forward function declarations +subst.[ch] + - change do_assignment and do_assignment_no_expand to take a `char *' + instead of `const char *' first argument; change extern prototypes + - new function, do_word_assignment, takes a WORD_DESC * and calls + do_assignment_internal on it; add extern declaration with prototype - 5/14 - ---- -{test,trap,variables}.c - - prototype all static forward function declarations +general.h + - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a + WORD_DESC * as its first argument -variables.c - - free_variable_hash_data() now takes a PTR_T, a `generic pointer' +variables.[ch] + - assign_in_env now takes a WORD_DESC * as its first argument -builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help, -history,jobs,pushd,read,set,trap,umask, - - prototype all static forward function declarations + 10/2 + ---- +command.h + - new word flag, W_ASSNBLTIN, denotes that the word is a builtin + command (in a command position) that takes assignment statements + as arguments, like `declare' + - new word flags, W_ASSIGNARG, denotes that word is an assignment + statement given as argument to assignment builtin -builtins/read.def - - reset_eol_delim now takes a `char *' arg, since that's what the - unwind_protect functions pass it, and it ignores its arguments - anyway +execute_cmd.c + - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there + are any arguments that are assignment statements) + - set W_ASSIGNARG flag in fix_assignment_words if necessary -lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c - - prototype all static forward function declarations +subst.c + - new function, do_compound_assignment, encapsulates the necessary + code to perform a compound array assignment (including creation of + local variables); called from do_assignment_internal + - to fix the double-expansion problem with compound array assignments + that are arguments to builtins like `declare', changed + shell_expand_word_list to treat those arguments like assignment + statements (with proper creation of local variables inside shell + functions) and pass the attribute-setting portion of the statement + onto the builtin. This is what ksh93 appears to do, from inspection + of the `ksh93 -x' output -lib/tilde/tilde.c - - prototype all static forward function declarations - - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and - glue_prefix_and_suffix now take `const char *' arguments where - appropriate +execute_cmd.c + - fix execute_simple_command: in case of pipeline or async command, + when forking early, set `subshell_environment' so that it can contain + both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be + mutually exclusive. Fixes bug reported by pierre.humblet@ieee.org + - remove references to last_pid, old_command_subst_pid; use NO_PID as + a sentinel value to decide whether or not a child process has been + created and needs to be waited for. Submitted by + pierre.humblet@ieee.org to fix recycling-pid problem on cygwin -configure.in,config.h.in - - check for vsnprintf, define HAVE_VSNPRINTF if found +doc/{bash.1,bashref.texi} + - fixed documentation of `@(pattern)' extended globbing operator -- + it succeeds if the string matches one of the patterns, not exactly + one. This is what ksh93 does, too -lib/readline/display.c - - use vsnprintf() in rl_message if it's available; if we don't, at - least set the last character in msg_buf to 0 to avoid overrun -- - we really can't do anything about overflow at this point. if it's - available, this fixes buffer overflow problems in rl_message +lib/readline/complete.c + - fixed rl_menu_complete so that a negative argument cycles backwards + through the list - 5/15 + 10/3 ---- -lib/readline/histexpand.c - - in get_history_word_specifier, allow any character to terminate - a `:first-' modifier, not just `:' and null. This is what csh - appears to do. This allows things like `!:0- xyzzy' to replace the - last argument with xyzzy +subst.c + - use W_COMPASSIGN flag in do_assignment_internal instead of deciding + lexically which assignments are compound array assignments - 5/18 + 10/6 ---- -configure.in, config.h.in - - check for , define HAVE_STDINT_H if found - - check for intmax_t in , define intmax_t as long if not - found +support/shobj-conf + - additions for System V.5 from Boyd Gerber - 5/21 +subst.c + - in command_substitute, if subshell_environment includes + SUBSHELL_ASYNC, call make_child with the `async_p' argument set to + non-zero. This keeps command substitutions for async commands or + pipelines from trying to give the terminal back to the shell's + pgrp. make sure to save and restore last_asynchronous_pid. Fix + suggested by + + 10/7 ---- -builtins/kill.def - - change to use strerror() for error message when kill(2) fails +config.h.in + - add a placeholder definition for WCONTINUED_BROKEN + 10/9 + ---- aclocal.m4 - - new macro, BASH_C_LONG_LONG, check for `long long' + - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is + defined but rejected as invalid by waitpid(2) -configure.in, config.h.in - - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found +configure.in + - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN -lib/sh/snprintf.c - - new file, with implementations of snprintf, vsnprintf, asprintf, - and vasprintf, derived from inetutils version +redir.c + - experimental change to add_undo_redirect to save manipulations to + file descriptors >= SHELL_FD_BASE (10) on the list of redirections + to be undone even if `exec' causes the list to be discarded -Makefile.in, lib/sh/Makefile.in - - add snprintf.c/snprintf.o +doc/{bash.1,bashref.texi} + - note that redirections using file descriptors > 9 should be used + carefully, because they might conflict with file descriptors the + shell uses internally -configure.in, config.h.in - - add checks for snprintf, asprintf, vasprintf, with appropriate - cpp defines + 10/11 + ----- +parse.y + - fix pipeline_command production to handle case where `pipeline' + as `argument' of `!' or `time' is null (e.g., a syntax error not + handled by the grammar) -lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c - - xmalloc and xrealloc now take `size_t' arguments, like their bash - counterparts + 10/13 + ----- +lib/readline/readline.c + - new internal variable, _rl_bind_stty_chars; if non-zero, bind the + terminal special characters to readline equivalents at startup + - change readline_default_bindings() and reset_default_bindings() to + understand _rl_bind_stty_chars -externs.h,lib/sh/itos.c - - inttostr and itos now take `long' arguments - - inttostr takes a `size_t' argument for the buffer size +lib/readline/rlprivate.h + - new extern declaration for _rl_bind_stty_chars -{expr,lib/malloc/malloc,variables,general}.c - - fixed calls to itos() by removing casts, etc. +lib/readline/rltty.c + - change rl_prep_terminal to add support for _rl_bind_stty_chars -subst.[ch] - - get_dollar_var_value now takes a long, not an int - - sub_append_number now takes a long, not an int + 10/15 + ----- +lib/readline/bind.c + - new bindable variable, `bind-tty-special-chars', bound to value of + _rl_bind_stty_chars -subst.c - - in parameter_brace_expand_word, use a long and legal_number to - translate ${N}, to avoid overflow - - in parameter_brace_expand_length, use a long and legal_number to - translate ${#N}, to avoid overflow - - in do_array_element_assignment, array_expand_index, - array_value_internal, use arrayind_t instead of int - - let verify_substring_values take long * arguments for the return - value of evalexp() - - pass long * arguments to verify_substring_values in - parameter_brace_substring - - parameter_brace_expand_length now returns `long' - - parameter_brace_expand now uses a long variable for the return - value of parameter_brace_expand_length - - param_expand now uses a long variable for the return value from - evalexp - - array_length reference now returns an `arrayind_t', since it can - return the num_elements member of an array, which is of type - arrayind_t +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - documented new readline variable `bind-tty-special-chars' -subst.h - - array_expand_index now returns an `arrayind_t' +builtins/pushd.def + - make the first check for option `--' skip the rest of option + checking -array.[ch] - - array_subrange now takes arrayind_t arguments, not `int' - - dup_array_subrange now uses arrayind_t local variable to do - array indexing - - use long to print array indices in print_element + 10/16 + ----- +lib/readline/shell.c + - change sh_set_lines_and_columns to prefer setenv, which has + predictable memory allocation behavior, to putenv, which does not + 10/19 + ----- variables.c - - null_array_assign, assign_dirstack, bind_array_variable - now take arrayind_t arguments as array indices - - assign_array_var_from_word_list, assign_array_var_from_string, - unbind_array_element now use arrayind_t local variables for - array indexing - -variables.h - - change extern declaration of bind_array_variable + - change push_exported_var so that a tempenv variable has to have the + export attribute set (which they all do -- something to look at) and + the `propagate' attribute set to be propagated down to the next + scope -builtins/common.[ch] - - get_numeric_arg now returns a `long', since it usually returns - the value of legal_number() +execute_cmd.c + - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the + passed flags argument, call pop_scope with a value that says the + builtin is not special, since `command' means that preceding variable + assignments don't persist in the environment. Fixes problem with + variable assignments preceding command preceding special builtin + keeping those variable assignments around (when in posix mode) -builtins/{shift,break}.def - - use long variables for the return value of get_numeric_arg + 10/20 + ----- +lib/sh/shquote.c + - new function, sh_mkdoublequoted, brackets a given string with + double quotes and returns a new string. Flags argument, if non- + zero, means to quote embedded double quotes with backslashes -builtins/history.def - - convert string argument to int only if it's in range +externs.h + - new extern declaration for sh_mkdoublequoted -builtins/pushd.def - - set_dirstack_element and get_dirstack_element now take `long' - index arguments - - get_dirstack_index now takes a `long' index argument, since it's - passed the converted value from legal_number +parse.y + - use sh_mkdoublequoted after calling localeexpand() -lib/sh/timeval.c - - in print_timeval, don't assume that the number of minutes fits into - an int, since it's just seconds/60. +lib/sh/strtrans.c + - change ansicstr to understand that (flags & 4) != 0 means to remove + backslash from unrecognized escape sequences -lib/sh/clock.c - - ditto for print_clock_t +general.c + - fix logic problem in assignment() that caused non-variable-starter + characters to be allowed, resulting in things like `1=xxx' creating + a variable `1' in the hash table - 5/22 - ---- -shell.c - - since the -O option settings may possibly be overridden by the - normal shell initialization or posix initialization, save the - invocation options on an alist (with add_shopt_to_alist) and - process them after basic initialization (with run_shopt_alist) + 10/21 + ----- +bashline.c + - don't call programmable_completions with an assignment statement + argument - 5/23 - ---- -trap.h - - new define, BASH_NSIG, all system signals plus special bash traps + 10/22 + ----- +lib/readline/rltty.c + - in prepare_terminal_settings, turn echoing on (readline_echoing_p) + if get_tty_settings fails because the input is not a terminal -trap.c, builtins/trap.def - - use BASH_NSIG for array bounds and loops where appropriate + 10/24 + ----- +lib/readline/util.c + - include rlmbutil.h for multibyte definitions + - new function, _rl_walphabetic, wide char version of rl_alphabetic -trap.c - - change decode_signal to disallow numeric signal numbers above - NSIG -- this means you can only reference special traps like - DEBUG by name - - new SPECIAL_TRAP(s) macro to test whether s is one of the special - bash traps (currently DEBUG and EXIT) - - change reset_or_restore_signal_handlers so command substitution - doesn't inherit the debug trap (like ksh93), and child processes - don't have to rely on initialize_traps being run to get rid of - any debug trap +lib/readline/mbutil.c + - new function, _rl_char_value(buf, ind), returns value of (possibly + multibyte) character at buf[ind] -support/mksignames.c - - add extra "ERR" signal name, value NSIG+1, allocate space for it - and write it out in signal_names[] +lib/readline/rlmbutil.h + - extern defines for _rl_walphabetic and _rl_char_value for when + multibyte chars are not being used + - new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and + _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded + function calls -trap.h - - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2 - - extern declarations for set_error_trap, run_error_trap - - new define: TRAP_STRING(s), expands to trap_list[s] if signal S - is trapped and not ignored, NULL otherwise +lib/readline/text.c + - fix rl_foward_word to work with multibyte characters (or in a + multibyte locale) using above utility functions + - fix rl_backward_word to work with multibyte characters (or in a + multibyte locale) using above utility functions -trap.c - - add ERROR_TRAP to SPECIAL_TRAPS define - - initialize ERROR_TRAP stuff in initialize_traps - - new function: set_error_trap(command), sets the ERR trap string - - new function: run_error_trap(command), runs the ERR trap string - - set trap string for ERROR_TRAP to NULL in free_trap_strings - - change reset_or_restore_signal_handlers so child processes don't - inherit the ERR trap - - add case to call run_error_trap in maybe_call_trap_handler + 10/26 + ----- +parse.y + - fix parse_matched_pair so that it doesn't swallow \ when + parsing a $'...' construct (call shell_getc with different arg) -execute_cmd.c - - in execute_command_internal, keep track of ERR trap and call it if - necessary - - use TRAP_STRING to get the value of debug and error traps - - in execute_function, arrange things so the ERR trap is not inherited - by shell functions, and is saved and restored like the DEBUG trap + 10/28 + ----- +lib/glob/glob.c + - after some (compiled-in) threshold, glob_vector will stop using + alloca to allocate `struct globval's and will switch to using + malloc, with appropriate cleanup before returning -doc/{bash.1,bashref.texi} - - documented new ERR trap +subst.c + - don't expand tildes after `=' in expand_word_internal, even if the + W_TILDEEXP flag is set, unless it's the first tilde in a word + marked W_ASSIGNMENT -tests/{trap.{tests,right},trap2.sub,trap2a.sub} - - added ERR trap tests + 10/31 + ----- +lib/readline/text.c + - make sure rl_point doesn't go below 0 in rl_delete_horizontal_space + (from SUSE, but not sent in) -subst.c - - on machines without /dev/fd, change the named pipe fifo list to a - list of structs containing pathname and proc information - - change unlink_fifo_list to kill the proc in the fifo list with - signal 0 and not remove the fifo if the proc is still alive. This - should fix the problem on those backward systems without /dev/fd - where fifos were removed when a job using process substitution was - suspended +shell.c + - make sure shell_is_restricted skips over a single leading `-' in + the shell name (from SUSE, but not sent in) - 5/24 - ---- -examples/loadables/getconf.h - - new file, with basic defines needed to make getconf work minimally - on POSIX systems without the necessary definitions +lib/readline/display.c + - disable `fast redisplay' at the end of the line if in a locale that + supports multibyte characters (from SUSE, but not sent in) -examples/loadables/getconf.c - - replacement functions for confstr, sysconf, pathconf for systems - that lack them, providing a minimal posix interface - - heavily augmented getconf, now supports all POSIX.1-200x, - POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables +lib/readline/histexpand.c + - fix a problem with finding the delimiter of a `?' substring when + compiled for multibyte characters (from SUSE, but not sent in) - 5/29 + 11/1 ---- -builtins/setattr.def - - make `readonly', `export', and `declare' print `invisible' variables - as just a command and variable name, without a value, when listing - all variables (as POSIX.2-200x d6 requires) +lib/readline/display.c + - correct some assignments to _rl_last_c_pos: when in a multibyte + locale, it's used as an absolute cursor position; when not using + multibyte characters, it's a buffer offset. I should have caught + this when the multibyte character support was donated - 5/30 + 11/5 ---- +general.c + - change `assignment()' to accept `+=' assignment operator -configure.in - - upgraded to autoconf-2.50 on main development machine, so require - autoconf-2.50 in preparation for using some if its new features - - call AC_C_PROTOTYPES - - remove call to AC_EXEEXT, which now does the wrong thing - - changed AC_INIT to new flavor - - added call to AC_CONFIG_SRCDIR - - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS - - AC_RETSIGTYPE -> AC_TYPE_SIGNAL - -configure.in, aclocal.m4, config.h.in - - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE - standard support, with new macros _FILE_OFFSET_BITS and - _LARGE_FILES - - removed definition of BASH_LARGE_FILE_SUPPORT +arrayfunc.[ch] + - bind_array_variable and assign_array_element both take a new `flags' + argument + - assign_array_var_from_string, assign_array_from_string, and + assign_array_var_from_word_list now all take a new `flags' argument + - change assign_array_var_from_word_list to understand how to append + to an array variable + - change assign_array_var_from_string to understand how to append + to an array variable. It does not unset the previous value if + appending, allowing both old values to be changed and new ones to + be added -doc/bashref.texi - - document new `--enable-largefile' configure option +subst.h + - new flag #defines to use for evaluating assignment statements -lib/readline/readline.c - - change rl_set_prompt to call rl_expand_prompt unconditionally, so - local_prompt and local_prompt_prefix get set correctly +{subst,variables}.c, builtins/{declare,read}.def + - change callers of assign_array_element and bind_array_variable + - change do_compound_assignment to understand assignment flags + - change do_assignment_internal to set assignment flags and pass them + to underlying functions - 6/6 - --- -lib/readline/complete.c - - don't append `/' or ` ' to a match when completing a symlink that - resolves to a directory, unless the match doesn't add anything - to the word. This means that a tab will complete the word up to - the full name, but not add anything, and a subsequent tab will add - a slash. Change to append_to_match; callers changed +pcomplete.c,builtins/{declare,read}.def + - fix callers of assign_array_var_from_string, assign_array_var_from_word_list -hashlib.c - - new function, hash_table_nentries (table), returns the number of - items in TABLE +variables.[ch] + - make_variable_value now takes a new `flags' argument + - make_variable_value now understands how to append to a particular + variable, using the old value + - bind_variable_value now takes a new `flags' argument + - change make_variable_value to understand ASS_APPEND flag + - bind_variable now takes a new `flags' argument + - bind_variable_internal now takes a new `flags' argument -hashlib.h - - extern declaration for hash_table_nentries +arrayfunc.c + - change callers of make_variable_value to add flags arg -configure.in - - configure without bash malloc on openbsd; they claim it needs - eight-bit alignment (which the bash malloc provides, but...) +builtins/declare.def + - change callers of bind_variable_value to add flags arg - 7/2 - --- -stringlib.c - - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement - string length is > 0, avoid possible hangs if replacement is null +{execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y +builtins/{cd,command,declare,getopts,read,set,setattr}.def + - change callers of bind_variable to add flags arg -subst.c - - don't include input.h; no longer needed +variables.c + - change callers of bind_variable_internal + - change bind_variable_internal to pass assignment flags on to + make_variable_value + - change assign_in_env to treat `var+=value' like `var=value' -configure.in - - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and - BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used +arrayfunc.c + - break code that actually constructs the new value and assigns it + to a particular array index out into a new functions: + bind_array_var_internal. This fakes out make_variable_value by + passing a dummy SHELL_VAR * so it can do proper appending and other + += processing + - changes to assign_array_var_from_string to accept and process as if + they were `standalone' assignment statements array assignment words + of the form [ind]+=val -config.h.in - - remove define for HAVE_RESTARTABLE_SYSCALLS + 11/7 + ---- +builtins/declare.def + - added support for `declare [flags] var+=value'. `Flags' are applied + before the assignment is performed, which has implications for things + like `-i' -- if -i is supplied, arithmetic evaluation and increment + will be performed -aclocal.m4 - - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used +builtins/setattr.def + - add support for `+=' assignment for rest of `assignment builtins': + export, readonly -execute_cmd.c - - changed select command so `return' no longer terminates the select - command, so it can be used to return from an enclosing function. - This is as ksh (88 and 93) does it + 11/12 + ----- +lib/readline/display.c + - make sure prompt_physical_chars and prompt_invis_chars_first_line + are reset to 0 if the prompt string passed to rl_expand_prompt is + NULL or empty -lib/readline/vi_mode.c - - fix trivial typo in declaration of vi_motion; `t' appears twice; - the second instance should be `T' + 11/14 + ----- +{configure,config.h}.in + - check for `raise', define HAVE_RAISE if available - 7/3 - --- -configure.in - - don't add -static to LDFLAGS on Solaris 2.x. This means that the - auxiliary programs will be built as dynamic executables, but that - should do no harm +lib/intl/dcigettext.c + - make sure `raise' is defined if HAVE_RAISE is not before + eval-plurah.h is included - 7/5 - --- -lib/glob/fnmatch.c - - fix the code that processes **(pattern) to short-circuit if the - pattern is ill-formed or lacks a trailing `)' -- this fixes the - segfault on **(/*) +lib/malloc/trace.c + - put extern declaration for imalloc_fopen inside the MALLOC_TRACE + #ifdef -Makefile.in, builtins/Makefile.in - - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in - cross-compilation - - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD) + 11/16 + ----- +lib/intl/Makefile.in + - make sure SHELL is defined to cpp -configure.in, config.h.in - - check for getaddrinfo(3), define HAVE_GETADDRINFO if found +lib/intl/dcigettext.c + - make sure we use getcwd() even if HAVE_GETCWD is not defined after + including config.h; if SHELL is defined, #define HAVE_GETCWD -lib/sh/netopen.c - - implemented a version of _netopen (_netopen6) that uses - getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined. - old _netopen is _netopen4; _netopen now calls either _netopen6 - or _netopen4 as appropriate + 11/18 + ----- +trap.[ch] + - new function, int signal_in_progress(int sig), returns TRUE if the + trap handler for signal SIG is currently executing - 7/9 - --- -builtins/exit.def - - don't source ~/.bash_logout if subshell_environment is non-zero + 11/19 + ----- +redir.c + - slightly change do_redirection_internal to set the close-on-exec + flag for file descriptors > 2 used to save file descriptors < 2 + using explicit redirections (e.g., `exec 3>&1'). This keeps file + descriptors pointing to pipes from being left open but doesn't + change the shell's file descriptor semantics -execute_command.c - - in execute_until_or_while, handle the case where `breaking' is - set in the loop test (e.g., by the job control code when a job - is stopped with SIGTSTP), but the return value from the test is - something that would cause the loop to break. Need to decrement - `breaking' in this case + 11/20 + ----- +doc/{bash.1,bashref.texi} + - correct some minor typos, forwarded from doko@debian.org - 7/10 - ---- + 11/22 + ----- +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - documented detail that yank-last-arg and yank-nth-arg use the history + arg expansion code (and, as a result, are subject to restrictions + of the history-comment character) + + 11/23 + ----- execute_cmd.c - - in execute_in_subshell, make sure a command of type cm_subshell - inherits its `enclosing' command's CMD_IGNORE_RETURN flag + - changes so that BASH_COMMAND preserves its value into a DEBUG trap: + for commands, arithmetic for command expressions, select commands, + case commands, (( commands, [[ commands, simple commands -variables.c - - in maybe_make_export_env, don't allow restricted shells to put - exported functions in the export environment + 11/24 + ----- +doc/{bash.1,bashref.texi} + - changed description of `set' builtin slightly so that it is clear + that only variables are displayed in posix mode and that read-only + variables can't be reset by simply sourcing the output of `set' - 7/11 - ---- -lib/glob/strmatch.h - - renamed old fnmatch.h - - changed guard #ifdef to _STRMATCH_H - - include system if HAVE_LIBC_FNM_EXTMATCH is defined - -lib/glob/strmatch.c - - renamed old fnmatch.c - - include "strmatch.h" - - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of - strmatch() that just calls fnmatch(3) - -lib/glob/glob.c - - include "strmatch.h" - - fnmatch -> strmatch +lib/sh/strftime.c + - don't try to redefine `inline' if it's already defined -Makefile.in, lib/glob/Makefile.in - - fnmatch -> strmatch + 11/26 + ----- +execute_cmd.c + - fix execute_function to check funcname_a after function execution, + since FUNCNAME can be changed or unset within a function -{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c, -pathexp.h,builtins/help.def - - include - - fnmatch -> strmatch + 11/27 + ----- +builtins/evalfile.c + - make same changes as 11/26, this time to _evalfile execute_cmd.c - - broke the code that parses the interpreter name from a #! line - out from execute_shell_script to a new function, getinterp() - - call getinterp from execute_shell_script - - use return value from getinterp in error message about bad - #! interpreter in shell_execve - - 7/12 - ---- -lib/readline/isearch.c - - the last isearch string is now remembered in a new static variable, - last_isearch_string - - if ^R^R is typed, readline now searches for the remembered isearch - string, if one exists + - change execute_function to run the return trap after a function + completes execution even if the shell is compiled without DEBUGGER + defined - 7/24 - ---- -pcomplete.h - - extern declaration for completions_to_stringlist() +trap.c + - change reset_or_restore_signal_handlers so that the RETURN trap is + not inherited by command substitution when DEBUGGER is not defined - 7/25 - ---- -builtins/complete.def - - make compgen handle -o default option - - make compgen return success only if sl->list_len is non-zero, - indicating that there are items on the list + 11/30 + ----- +lib/readline/misc.c + - fix memory leaks in _rl_free_history_entry and rl_maybe_replace_line + caused by not freeing `timestamp' member of history entry + - make sure timestamp is initialized to NULL in rl_maybe_save_line - 7/31 + 12/1 ---- execute_cmd.c - - in execute_connection, force stdin to /dev/null for asynchronous - commands if job control is not active, not just if the shell is - running a shell script (since you can run `set -m' in a script) + - fix execute_function so a function calling `return' will run the + RETURN trap, if one's defined -lib/readline/rltty.c - - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on - successful restoration of the terminal modes - - make sure _rl_tty_disable_signals turns off IXON so that ^S and - ^Q can be read by rl_quoted_insert +doc/{bash.1,bashref.texi} + - fix description of RETURN trap in various places to indicate that it's + only inherited by shell functions if function tracing is on globally + or has been enabled for that function + - fix documentation to indicate that the DEBUG and RETURN traps are + inherited under the same conditions - 8/1 - --- -aclocal.m4 - - new check for FNM_EXTMATCH being defined in , as Ullrich - Drepper intends to do for new versions of GNU libc +execute_cmd.c + - a function does not inherit the RETURN trap if a DEBUG trap is + currently running -config.h.in - - new definition for HAVE_LIBC_FNM_EXTMATCH + 12/2 + ---- +lib/glob/xmbsrtowcs.c + - change xmbsrtowcs to handle the one case where malloc can fail + (though it should not matter) -- don't try to free a null pointer -configure.in - - check for fnmatch, but don't define anything in config.h - - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH + 12/9 + ---- +subst.c + - fix get_var_and_type to handle var[@], where `var' is a scalar + variable, identically to var -- all calling expansions can now + handle var[@] like var. Bug reported by agriffis@gentoo.org - 8/2 - --- -alias.h - - remove bogus extern declaration for xmalloc() - - include "stdc.h" - - add prototype declarations for all extern function declarations + 12/10 + ----- +lib/readline/bind.c + - make new-style "\M-x" keybindings obey `convert-meta' settings + (bug reported by twaugh@redhat.com) -xmalloc.c,lib/readline/xmalloc.c - - fix xmalloc to return a PTR_T - - fix xrealloc to return a PTR_T and take a PTR_T as first argument + 12/14 + ----- +builtins/set.def + - added description of `-' option to help text -include/ansi_stdlib.h - - extern declarations for malloc and realloc have them return PTR_T +builtins/shopt.def + - fix bug that caused `gnu_errfmt' to not be compiled in unless + READLINE is defined -xmalloc.h - - new file, with extern declarations for functions in xmalloc.c + 12/16 + ----- +subst.c + - fixed a typo in string_extract_verbatim in first call to MBLEN + (used `slen - 1' instead of `slen - i') -general.h - - removed extern declarations for functions in xmalloc.c - - include xmalloc.h + 12/17 + ----- +subst.c + - avoid some calls to strlen if the value is only being used for + ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need + it unless multibyte characters are possible) + - change string_extract_verbatim so it takes the length of the string + as a parameter, so we don't have to recompute the length of the same + string over and over again when doing word splitting (that kills if + it's a long string) -Makefile.in,builtins/Makefile.in - - update dependencies to include xmalloc.h + 12/18 + ----- +subst.c + - in string_list_dollar_star, make sure to null-terminate the + separator if the character is longer than one byte -parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general, -hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib, -subst,unwind_prot,variables}.c -builtins/{common,evalfile}.c -builtins/{cd,command,enable,exec,printf,read,set}.def -lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist, -strtrans,tmpfile}.c -lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input, -histfile,histexpand,display,complete,bind}.c - - make sure all calls to xmalloc are cast to the right return value + 12/22 + ----- +doc/{bash.1,bashref.texi} + - changed text in quoting section explaining that double quotes do + not prevent history expansion from taking place, and that backslashes + escaping ! are not removed -siglist.c - - include xmalloc.h + 12/28 + ----- +shell.c + - set gnu_error_format to 1 if running under emacs. This should allow + the emacs `next-error' stuff to work, at least for interactive shells -parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c -builtins/{fc,printf,read}.def -lib/sh/snprintf.c, lib/tilde/tilde.c -lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c - - make sure all calls to xrealloc are cast to the right return value +parse.y + - change yy_stream_get to set interrupt_immediately before calling + getc_with_restart when the shell is interactive. This avoids the + synchronization problem caused by the call to QUIT in read_a_line, + which results in the first character after a SIGINT/^C to be + dropped -lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c - - include xmalloc.h, remove extern declaration of xmalloc + 12/30 + ----- +builtins/mkbuiltins.c + - changes to write long documentation to arrays as a single string by + default, rather than an array of strings -- enabled by default + - new option, -S, to restore old behavior of writing multiple strings + for long documentation + - changes to avoid filenames written when the separate-filenames option + (-H) has been supplied being run through gettext -lib/readline/xmalloc.h - - xmalloc and xrealloc should return PTR_T +configure.in + - new cofiguration option, --enable-single-help-strings (on by default), + causes help text to be stored as a single string (or smaller set than + one string per line) -lib/readline/rldefs.h - - don't include an extern declaration for xmalloc +builtins/Makefile.in + - pass `-S' to mkbuiltins if single-help-strings is turned off - 8/7 - --- -support/shobj-conf - - fixed up commented-out stanzas for HP's unbundled C compiler on - HP/UX +doc/bashref.texi + - documented new `single-help-strings' configure option -support/bashbug.sh - - force the subject to be changed from the default + 1/3/2005 + -------- +jobs.c + - make wait_for return a non-zero status if the job or processed + waited for is suspended. Returns 128 + stop signal. This fixes + the problem with `echo one && sleep 5 && echo two' displaying + `two' after the sleep is suspended -lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 - - document that transpose-words swaps the last two words on the line - if point is at the end of the line + 1/5 + --- +print_cmd.c + - change indirection_level_string so the code duplicates the first + character of $PS4 to indicate the indirection level, rather than + the first byte - 8/9 + 1/8 --- -stringlib.c - - fix possible infinite recursion problem with null pattern in - strsub() +variables.c + - new special variable hook function for COMP_WORDBREAKS; sets + rl_completer_word_break_characters back to NULL when the variable + is unset + - change bind_variable_value to understand dynamic variables with + assign_function set, and handle them correctly. If the variable is + being appended to, use make_variable_value to create the new + value + - change bind_variable_internal to understand dynamic variables with + assign_function set, and handle them the same way + - RANDOM and LINENO now get the integer attribute, so appending works + as expected + - ditto for HISTCMD, MAILCHECK, OPTIND -hashlib.c - - new function copy_hash_table to copy a hash table using a caller- - supplied function to copy item data (defaults to savestring()) +lib/readline/display.c + - change _rl_make_prompt_for_search to set prompt_physical_chars + appropriately + - rl_save_prompt and rl_restore_prompt save and restore + prompt_prefix_length + - change redraw_prompt to use rl_save_prompt and rl_restore_prompt + - change rl_restore_prompt to set the `save' variables back to + NULL/0 so code can check whether or not the prompt has been saved + - change rl_message and rl_clear_message to save and restore the + prompt if the caller has not already done it (using a simple + semaphore-like variable) + - change rl_message to call expand_prompt, so that local_prompt and + local_prompt prefix are set before calling the redisplay functions, + in case the prompt is longer than a screenwidth (fixes bug + reported to debian by epl@unimelb.edu.au) -hashlib.h - - new extern declaration for copy_hash_table +lib/readline/doc/rltech.texi + - make sure to note that rl_save_prompt should be called before + rl_message, and rl_restore_prompt before rl_clear_message -builtins/declare.def - - changes so that declare [-a] var=value assigns `value' to element 0 - of array variable `var' like ksh93 - - change so that declare [-a] var[N]=value assigns `value' to element - N of array variable `var' like ksh93 +pcomplete.c + - make sure to save and restore the parser state around the call to + execute_shell_function in gen_shell_function_matches. Fixes bug + reported by a050106.1.keeLae3x@captaincrumb.com (cute) - 8/13 - ---- -arrayfunc.c - - new file, for miscellaneous array functions +lib/readline/readline.c + - fix _rl_dispatch_subseq in the case where we're recursing back up + the chain (r == -2) and we encounter a key shadowed by a keymap, + but originally bound to self-insert. Calling rl_dispatch with + ANYOTHERKEY as the first argument will call rl_insert, but with + ANYOTHERKEY (256) as the char to insert. Use the shadow keymap + and set things up to dispatch to rl_insert with the shadowed key + as the argument. Fixes the bug reported by Thomas Glanzmann + (sithglan@stud.uni-erlangen.de) -arrayfunc.h - - new file, extern declarations for functions in arrayfunc.c + 1/13 + ---- +command.h + - new word flag: W_HASQUOTEDNULL -variables.c - - move convert_var_to_array, bind_array_variable, - assign_array_from_string, assign_array_var_from_word_list, - assign_array_var_from_string, quote_array_assignment_chars, - skipsubscript, unbind_array_element, print_array_assignment - to arrayfunc.c +make_cmd.c + - new function to allocate a WORD_DESC * without doing anything with a + containing string: alloc_word_desc -shell.h - - include arrayfunc.h after variables.h +make_cmd.h + - extern declaration for alloc_word_desc -variables.h - - remove above extern function declarations moved to arrayfunc.h - - add extern declaration for var_lookup +dispose_cmd.c + - new function to just free a WORD_DESC * without freeing the contained + string: dispose_word_desc -Makefile.in - - add arrayfunc.c, arrayfunc.h in appropriate places - - add arrayfunc.h to dependencies +dispose_cmd.h + - extern declaration for dispose_word_desc subst.c - - move valid_array_reference, array_expand_index, array_variable_part, - array_value_internal, array_value (now global), get_array_value, - do_array_element_assignment to arrayfunc.c - -subst.h - - extern declarations for functions above moved to arrayfunc.h - -arrayfunc.h - - extern declarations for above functions from subst.c - -subst.[ch] - - string_list_dollar_star and string_list_dollar_at are now global - functions - - quote_escapes is now a global function + - change some places to use alloc_word_desc + - make same changes to word_list_quote_removal as were made to + word_list_split + - set W_HASQUOTEDNULL when a word is created with w->word[0] == + CTLNUL and w->word[1] == '\0' subst.c - - maybe_expand_string -> expand_string_if_necessary - - expand_string_to_string -> expand_string_to_string_internal - - new functions: expand_string_to_string and - expand_string_unsplit_to_string, which call - expand_string_to_string_internal with expand_string and - expand_string_unsplit as the FUNC arguments, respectively - -arrayfunc.c - - change array_expand_index to call expand_string_to_string instead - of maybe_expand_string + - parameter_brace_expand_word now returns a WORD_DESC * -- changed + callers to understand + - parameter_brace_expand_indir now returns a WORD_DESC * -- changed + callers to understand + - parameter_brace_expand_rhs now returns a WORD_DESC * -- changed + callers to understand + - remove W_HASQUOTEDNULL from a word's flags when remove_quoted_nulls + is called on the word's enclosed string - 8/14 + 1/15 ---- -shell.c - - in execute_env_file, call expand_string_unsplit_to_string - -mailcheck.c - - in check_mail, call expand_string_to_string - -variables.c - - in assign_in_env, call expand_string_unsplit_to_string - -arrayfunc.c - - new function, array_variable_name, splits an array reference into - a name (which is returned as a new string) and subscript - - change array_variable_part to just call array_variable_name and - look up the string returned with find_variable - - new function, find_or_make_array_variable (name, flags) which will - look up an array variable and convert a string variable to an - array if necessary. The FLAGS argument, if non-zero, says to - check the readonly and noassign attributes and fail if either is set - -builtins/read.def - - make `read -a aname' honor any readonly status of `aname' - - read -a now calls find_or_make_array_variable with FLAGS value 1 +subst.c + - param_expand now returns a WORD_DESC * -- changed callers to + understand + - parameter_brace_expand now returns a WORD_DESC * -- changed + callers to understand + - in expand_word_internal, only call remove_quoted_nulls after a word + is returned with W_HASQUOTEDNULL + - changes to pass W_HASQUOTEDNULL flag out of expand_word_internal; + changed callers to call remove_quoted_nulls only if return value has + W_HASQUOTEDNULL set. This is a mostly-complete fix for the + long-standing CTLNUL confusion between a quoted null expansion and + the expansion of a variable with a literal '\177' in its value + - change string_list_dollar_at to compute the separator character the + same way as string_list_dollar_star: using the already-computed + values generated in setifs() + - when expanding unquoted $*, if $IFS is empty, check whether or not + we're eventually going to split the results (e.g., on the rhs of an + assignment statement) and concatenate the positional parameters as + if the expansion were within double quotes if we're not going to + split -arrayfunc.[ch], subst.c, builtins/{declare,read}.def - - do_array_element_assignment -> assign_array_element +tests/iquote.tests + - test cases based on old bug reports about the quoted-null vs. 0177 + problem the recent code fixes - 8/20 + 1/16 ---- -parse.y - - changed `for' command grammar to allow missing word list after `IN' - token, like latest POSIX drafts require - -lib/sh/tmpfile.c - - in sh_mktmpname(), check for filenum == 0 and init to non-zero number - in this case. it can happen on arithmetic overflow - -support/mkversion.sh - - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a - distribution to allow for intermediate versions, like 2.05a +dispose_cmd.c + - set w->word to 0 before putting a WORD_DESC * back in the cache in + dispose_word_desc; changed callers to delete those assignments -support/config.guess - - removed the addition of the output of `/usr/bin/objformat' when - creating the canonical name on FreeBSD machines, so the canonical - name is once again `freebsd4.2' instead of `freebsdelf4.2' +variables.c + - change assign_random and get_random_value so that the random number + generator only gets re-seeded once in a subshell environment, and + assigning a value to RANDOM counts as seeding the generator. This + makes the sequences a little more predictable - 8/22 + 1/20 ---- -lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell, -rltypedefs,xmalloc}.h -lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch, -input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode - - changed __P to PARAMS - -lib/tilde/tilde.[ch] - - changed __P to PARAMS - -{Makefile,configure}.in - - changed the version number to 2.05a - - changed the release status to `alpha1' +lib/readline/history.c + - fix replace_history_entry, remove_history to return NULL if + passed index is < 0 - 8/23 + 1/22 ---- -support/shobj-conf - - support for building shared libraries on Darwin/MacOS X - -siglist.h - - extern declaration for strsignal() to compensate for lack of - a definition in some system include files +lib/sh/netconn.c + - fix isnetconn() to understand that getpeername can return ENOTCONN + to indicate that an fd is not a socket -jobs.c - - remove casts from strsignal() calls +configure.in + - set BUILD_DIR to contain backslashes to escape any spaces in the + directory name -- this is what make will accept in targets and + prerequisites, so it's better than trying to use double quotes + - set SIZE to the appropriate value if some cross-compiling tool + chain is being used; `size' by default (can be overridden by + SIZE environment variable) -[bash-2.05a-alpha1 frozen] +Makefile.in + - use $(SIZE) instead of size; set SIZE from configure - 8/27 + 1/31 ---- -[bash-2.05a-alpha1 released] +arrayfunc.c + - in array_value_internal, return NULL right away if the variable's + value is NULL, instead of passing a null string to add_string_to_list - 8/27 - ---- -execute_cmd.c - - fix eval_arith_for_expr to handle the case where the expanded - word list is NULL, returning 0 in this case + 2/1 + --- +jobs.h + - new struct to hold stats and counters for child processes and jobs + - change some uses of global and static variables to use members of + new struct (struct jobstats) -print_cmd.c - - in print_function_def, make sure that func_redirects is assigned - a value before being used + 2/2 + --- - 8/28 - ---- -alias.c - - include for definition of isalpha() +jobs.[ch] + - change PRUNNING to PALIVE + - new define INVALID_JOB + - new macro get_job_by_jid(ind), currently expands to jobs[ind] + - new define J_JOBSTATE, operates on a JOB * like JOBSTATE operates on + a job index + - new function, reset_job_indices, called from delete_job if + js.j_lastj or js.j_firstj are removed + - change various functions to keep counters and stats in struct jobstats -bashhist.h - - add prototypes for extern function declarations +pcomplete.c, builtins/common.c, builtins/{exit,fg_bg,jobs,kill,wait}.def + - change global variables (e.g., job_slots) to struct members + (e.g., js.j_jobslots) + - use INVALID_JOB define where appropriate + - use get_job_by_jid and J_JOBSTATE where appropriate -flags.c - - include bashhist.h for extern function declarations +trap.c + - change reset_or_restore_signal_handler to not free the exit trap + string if the function pointer is reset_signal, which is used when + the trap strings shouldn't be freed, like in command substitution -mksyntax.c - - include if HAVE_UNISTD_H is defined in config.h + 2/4 + --- +jobs.c + - new function, realloc_jobs_list, copies jobs array to newly-allocated + memory shrinking (or growing) size to have next multiple of JOB_SLOTS + greater than js.j_njobs + - change compact_jobs_list to just call reap_dead_jobs and then + realloc_jobs_list, simplifying it considerably + - discard_pipeline now returns `int': the number of processes freed + - slightly changed the logic deciding whether or not to call + compact_jobs_list: now non-interactive shells will compact the + list if it reaches MAX_JOBS_IN_ARRAY in size parse.y - - include test.h for extern function declarations - -externs.h - - change extern declaration for setlinebuf to sh_setlinebuf - -stringlib.c - - include for extern function declarations - -variables.h - - add function prototypes for all of the sv_* functions + - move test for backslash-newline after pop_string in shell_getc so + that things like -builtins/common.h - - add extern declarations for set_shellopts() and parse_shellopts() - from builtins/set.def + ((echo 5) \ + (echo 6)) -variables.c - - include "hashcmd.h" for extern declaration for flush_hashed_filenames - - include "pathexp.h" for extern declaration for setup_glob_ignore + work right -lib/malloc/malloc.c - - cast to `long' instead of `int' in memalign for 64-bit machines + 2/8 + --- +jobs.h + - new structs for holding status of exited background processes, as + POSIX specifies + - new job flag: J_ASYNC -{pcomplete,trap}.c - - changed printf escape sequences used to print pointers to %p +jobs.c + - new functions to manipulate struct holding status of exited + background processes + - new members in struct jobstats to hold pointer to last created job + and last created asynchronous job + - initialize js.c_childmax in initialize_job_control + - if the `async' arg to stop_pipeline is non-null, set the J_ASYNC + flag in the job struct + - set js.j_last_made_job and js.j_last_asynchronous_job in + stop_pipeline + - new function: find_last_proc, returns the PROCESS * to the last proc + in a job's pipeline + - changed find_last_pid to call find_last_proc + - change delete_job to call bgp_add on the last proc of the job being + deleted + - change delete_all_jobs and wait_for_background_pids to call bgp_clear -lib/readline/undo.c - - include "xmalloc.h" for extern function declaration + 2/9 + --- +jobs.c + - change wait_for_single_pid to look for pid in bgpids.list (using + bgp_search()) if find_pipeline returns NULL -input.h - - add function prototypes to extern declarations for getc_with_restart - and ungetc_with_restart + 2/10 + ---- +support/shobj-conf + - change the solaris-gcc stanza so that it auto-selects the appropriate + options for ld depending on which `ld' gcc says it's going to run -variables.[ch] - - changed type of `function' member of `struct name_and_function' to - `sv_func_t', which is defined and prototyped in variables.h - - map_over now takes an `sh_var_map_func_t *' + 2/11 + ---- +jobs.h + - add support for PS_RECYCLED as a process state, add PRECYCLED macro + to test it. Change PALIVE and PRUNNING macros to not count processes + in PS_RECYCLED state -shell.h - - start of a set of function pointer typedefs like those in - lib/readline/rltypedefs.h +execute_cmd.c + - restore use of last_pid as sentinel value; use NO_PID as sentinel + only if RECYCLES_PIDS is defined -hashlib.[ch] - - second paramter to flush_hash_table is now an `sh_free_func_t *' +jobs.c + - change find_job to return a pointer to the PROCESS the desired pid + belongs to, analogous to find_pipeline returning pointer to JOB + - change find_job callers to add extra argument + - change running_only arguments to find_pipeline and find_job to + alive_only, since we don't want recycled pids returned here and it + better describes the result + - new function find_process, calls find_pipeline and searches the + returned pipeline for the PROCESS * describing the desired pid + - in make_child, if fork() returns the same pid as the value of + last_asynchronous_pid when RECYCLES_PIDS is defined, avoid pid + aliasing by resetting last_asynchronous_pid to 1 + - use PRUNNING instead of child->running, since we, for the most + part, don't want to consider recycled pids (e.g., in make_child()) + - call find_process instead of find_pipeline in waitchld() + - use PEXITED(p) instead of testing p->running == PS_DONE + - in make_child, call bgp_delete to remove a just-created pid from the + last of saved pid statuses + - in add_process, check whether or not pid being added is already in + the_pipeline or the jobs list (using find_process) and mark it as + recycled if so + - This set of fixes mostly came from Pierre Humblet + to fix pid aliasing and reuse problems on + cygwin -trap.c - - parameter to reset_or_restore_signal_handlers is now an - `sh_resetsig_func_t *' +variables.c + - set $_ from the environment if we get it there, set to $0 by + default if not in env -pcomplete.h, pcomplib.c - - function pointer argument to print_all_compspecs is now an - `sh_csprint_func_t *' - - function pointer `list_getter' element of an `ITEMLIST' is now - prototyped with __P((...)) instead of using `Function *' +doc/{bashref.texi,bash.1} + - a couple of clarifying changes to the description of $_ based on + comments from Glenn Morris -jobs.[ch] - - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *' + 2/15 + ---- +shell.c + - use strstr instead of strmatch when checking whether $EMACS contains + `term' -- simpler and faster -alias.c - - map_over_aliases now takes an `sh_alias_map_func_t *' - - free_alias_data now takes a `PTR_T' + 2/18 + ---- +builtins/cd.def + - implement posix requirement that `pwd -P' set $PWD to a directory + name containing no symlinks + - add new function, setpwd(), just sets (and changes exported value) + of PWD -pathexp.c - - function pointer argument to ignore_globbed_names is now an - `sh_ignore_func_t *' +doc/bashref.texi + - add note to posix mode section about pwd -P setting $PWD -bashline.c - - function pointer argument to _ignore_completion_names is now an - `sh_ignore_func_t *' +doc{bash.1,bashref.texi} + - added note that BASH_ARGC and BASH_ARGV are only set in extended + debug mode + - expand description of extdebug option to include everything changed + by extended debug mode -pathexp.h,{bashhist,bashline.c - - `item_func' member of a `struct ignorevar' is now an - `sh_iv_item_func_t *' + 2/19 + ---- +pathexp.h + - new flag macro, FNMATCH_IGNCASE, evaluates to FNM_CASEFOLD if the + match_ignore_case variable is non-zero -builtins/evalfile.c - - `errfunc' is now an `sh_vmsg_func_t *' +execute_cmd.c + - new variable, match_ignore_case + - change call to strmatch() in execute_case_command so it includes + FNMATCH_IGNCASE -jobs.c - - map_over_job now takes an `sh_job_map_func_t *' as its first argument +test.c + - change call to strmatch() in patcomp() so that pattern matching + calls for [[ ... ]] obey the match_ignore_case variable -array.[ch] - - function pointer argument to array_walk is now an - `sh_ae_map_func_t *' +lib/sh/shmatch.c + - if match_ignore_case is set, enable REG_ICASE in the regexp match + flags -general.c - - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *', - and so the assignment in tilde_initialize doesn't need a cast +builtins/shopt.def + - new settable option, `nocasematch', controls the match_ignore_case + variable. Currently alters pattern matching for case and [[ ... ]] + commands (==, !=, and =~ operators) -list.c - - map_over_words now takes an `sh_icpfunc_t *' as its second argument +doc/{bashref.texi,bash.1} + - updated descriptions of [[ and case to include reference to + nocasematch option -input.h - - the `getter' and `ungetter' function pointer members of a - BASH_INPUT are now of types `sh_cget_func_t *' and - `sh_cunget_func_t *' respectively - - init_yy_io now takes an `sh_cget_func_t *' as its first argument and - an `sh_cunget_func_t *' as its second + 2/22 + ---- +builtins/mkbuiltins.c + - add `times' to the list of posix special builtins -parse.y - - init_yy_io now takes an `sh_cget_func_t *' as its first argument and - an `sh_cunget_func_t *' as its second - - initialize_bash_input casts bash_input.getter and bash_input.ungetter - appropriately - -builtins/mkbuiltins.c - - make the extern function definitions written to builtext.h have - prototypes with __P((...)) - - include "stdc.h" - - change Function to mk_handler_func_t - - fixed comment_handler to take the right number of args - - prototyped all the handler functions with __P((...)) - -builtins.h - - the `function' member of a struct builtin is now of type - `sh_builtin_func_t *' - -builtins/common.[ch] - - last_shell_builtin, this_shell_builtin are now of type - `sh_builtin_func_t *' - - find_shell_builtin, builtin_address, find_special_builtin now return - `sh_builtin_func_t *' + 2/23 + ---- +builtins/cd.def + - posix mode no longer turns on effect of -P option on $PWD if a + directory is chosen from CDPATH -builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y - - changed all declarations of last_shell_builtin and this_shell_builtin +doc/bashref.texi + - clarified that in posix mode, reserved words are not alias expanded + only in a reserved word context + - removed item about cd, $CDPATH, and -P from posix mode section -execute_cmd.c - - execute_builtin, execute_builtin_or_function, - execute_subshell_builtin_or_function now take an - `sh_builtin_func_t *' instead of a `Function *' for argument - - changed appropriate variables from `Function *' to - `sh_builtin_func_t *' + 2/24 + ---- +builtins/reserved.def + - minor cleanups to the description of `if' -builtins/{bind,builtin,enable,read,setattr}.def - - replaced uses of `Function *' in variable declarations with - appropriate types (sh_builtin_func_t * or rl_command_func_t *) + 3/2 + --- +subst.c + - change list_string and get_word_from_string to explicitly treat an + IFS character that is not space, tab, or newline *and any adjacent + IFS white space* as a single delimiter, as SUSv3/XPG6 says -builtins/set.def - - set_func and get_func members of binary_o_options are now of types - `setopt_set_func_t *' and `setopt_get_func_t *', which are - prototyped +builtins/read.def + - check whether or not the number of fields is exactly the same as + the number of variables instead of just assigning the rest of the + line (minus any trailing IFS white space) to the last variable. + This parses a field and checks whether or not it consumes all of + the input (including any trailing field delimiters), falling back + to the previous behavior if it does not. This is what POSIX.2 + specifies, I believe (and the consensus of the austin-group list). + This requires a few tests in read.tests to be changed: backslashes + escaping IFS whitespace characters at the end of input cause the + whitespace characters to be preserved in the value assigned to the + variable, and the trailing non-whitespace field delimiter issue -builtins/shopt.def - - set_func member of shopt_vars is now of type `shopt_set_func_t *' + 3/7 + --- +configure.in + - add -D_POSIX_SOURCE to the LOCAL_CFLAGS for Interix + 3/8 + --- bashline.c - - enable_hostname_completion now returns `int' (the old value of - perform_hostname_completion) - -[The only use of Function and VFunction now is for unwind-protects] + - make bash_directory_expansion a void function, since it doesn't have + any return value - 9/4 + 3/9 --- -lib/sh/getcwd.c - - use const define from config.h rather than `CONST' - - use PTR_T define from xmalloc.h rather than `PTR' - - include xmalloc.h for PTR_T - - remove PATH_MAX define, rely on value from maxpath.h +builtins/read.def + - when testing for a pipe, use `fd' instead of hard-coding 0, since we + can read from other file descriptors now -{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c - - don't include maxpath.h directly; it's already included by shell.h +lib/sh/zread.c + - in zsyncfd, only set lind and lused to 0 if the lseek succeeds. + If the lseek fails, we might steal input from other programs, but + a failed lseek won't cause us to erroneously discard input -lib/sh/mailstat.c - - new `mailstat()' implementation, to stat a mailbox file for - mail checking. handles maildir-style mail directories with one - file per message and creates a dummy stat struct from them + 3/11 + ---- +builtins/evalstring.c + - don't allow parse_and_execute to short-circuit and call exec() if + the command's return value is being inverted -lib/sh/Makefile.in - - add mailstat.c and mailstat.o in the appropriate places + 3/15 + ---- +builtins/printf.def + - new macro PC to call putchar and increment number of chars printed - + fixes bug in computation of value for %n format char + - `tw' is now a global var so printstr can modify it using PC() + - convert PF macro to use asprintf into a local buffer + Preparation for printf -v var + - add code to add the text printed to a `variable buffer' if -v option + supplied. The buffer grows as needed + - printf now takes a `-v var' option to put the output into the variable + VAR rather than sending it to stdout. It does not: + print partial output on error (e.g., format string error) + handle NULs in the variable value, as usual -lib/malloc/malloc.c - - augmented implementation with wrapper functions that pass in file - and line number information from cpp. currently unused, but a - placeholder for future debugging and use tracking + 3/16 + ---- +parse.y + - fix bug in prompt string decoding that caused a core dump when PS1 + contained \W and PWD was unset (null pointer deref) -lib/malloc/shmalloc.h - - new file, extern declarations for allocation wrapper functions for - use by the shell (and others, I guess) +builtins/printf.def + - changed -v var behavior so it stores partial output into the named + variable upon an error -xmalloc.[ch] - - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that - pass cpp line number information through to the malloc functions, - if USING_BASH_MALLOC is defined + 3/24 + ---- +lib/readline/bind.c + - bool_to_int now takes a `const char *' argument - 9/5 - --- -lib/malloc/gmalloc.c - - removed; no longer part of distribution +support/{printenv,recho,zecho}.c + - include config.h + - include "bashansi.h" for appropriate extern function declarations -lib/malloc/Makefile.in - - removed references to gmalloc.[co] +configure.in + - on MacOS X 10.4, compensate for loader not allowing static library + to override existing system dynamic library when compiling -dynamic + (affects readline and history libraries); so use absolute pathname + instead of -lreadline as library name -configure.in, doc/bashref.texi - - removed references to `--with-glibc-malloc' configure option +lib/glob/{glob,sm_loop,smatch}.c + - make sure to cast arguments to (char *) or (unsigned char *) as + appropriate to avoid gcc4 warnings -{configure,Makefile}.in - - changed the way bash malloc is configured into the Makefile, making - it more like how readline is configured. If the bash malloc is - not configured in, nothing in lib/malloc will be built +lib/glob/smatch.c + - collsym (single-byte version) now takes a (CHAR *) first argument to + match callers; cast argument to strncmp appropriately - 9/6 - --- -lib/malloc/imalloc.h - - new file, some internal malloc definitions +lib/sh/snprintf.c + - fix ldfallback and dfallback to handle width and precision specs in + the format passed to sprintf() + - fix STAR_ARGS macro to deal with negative field widths and precisions -lib/malloc/mstats.h - - new file, definitions for malloc statistics structs and functions + 3/25 + ---- +builtins/printf.def + - since a negative precision in a "x.x[fFgGeE]" format specifier should + be allowed but treated as if the precision were missing, let it + through -lib/malloc/trace.c - - new file, malloc tracing functions (currently just print messages - to stderr), code is #ifdef MALLOC_TRACE +lib/sh/snprintf.c + - fix * code to deal with a negative precision by treating it as if + the `.' and any digit string in the precision had not been specified + - fix format parsing code to deal with a negative inline precision, + e.g., "%4.-4f" by treating it as if the `'. and any digit string in + the precision had not been specified + - a `+' in a format specifier should only act as a flag if it comes + before a `.' (otherwise it is ignored) -lib/malloc/stats.c - - new file, moved malloc stats code from malloc.c to here +lib/readline/vi_mode.c + - new function, rl_vi_rubout, to rl_rubout as rl_vi_delete is to + rl_delete; saves deleted text for possible reinsertion as with any + vi-mode `text modification' command (fixes problem with `X' reported + by beat.wieland@gmx.ch) -lib/malloc/malloc.c - - moved some definitions to imalloc.h - - moved stats code to stats.c - - malloc tracing calls added to internal_{malloc,realloc,free}, all - #ifdef MALLOC_TRACE +lib/readline/vi_keymap.c + - bind `X' in vi command mode to rl_vi_rubout -lib/malloc/Makefile.in, Makefile.in - - added {imalloc,mstats}.h, {trace,stats}.c +lib/readline/funmap.c + - add a bindable `vi-rubout' command, runs rl_vi_rubout -parse.y - - changed decode_prompt_string to save and restore $? - (last_command_exit_value) around calls to expand_prompt_string(), - so command substitutions in PS1, etc. don't change $? +lib/readline/text.c + - rewrote internals of _rl_rubout_char to make structure cleaner + +lib/readline/{complete,text}.c + - changed code to remove #ifdef HANDLE_MULTIBYTE where possible + + 3/28 + ---- +lib/readline/examples/rl.c + - include instead of posixstat.h if READLINE_LIBRARY not + defined -{array,subst}.c - - a couple more arrayind_t fixes from Paul Eggert +subst.c + - fix mbstrlen to treat invalid multibyte sequences as sequences of + single-byte characters + 4/8 + --- configure.in - - remove redundant check for wait3(2) + - default SIZE to `:' if cross-compiling and an appropriate size for + the target is not found -redir.h - - fixed a typo (stdin_redirs -> stdin_redirects) + 4/11 + ---- +subst.c + - change match_upattern and match_wpattern to check whether or not the + supplied pattern matches anywhere in the supplied string, prefixing + and appending the pattern with `*' if necessary. If it doesn't we + can short-circuit immediately rather than waste time doing up to + N-1 unsuccessful calls to strmatch/wcsmatch (which kills for long + strings, even if the pattern is short) - 9/10 + 4/12 ---- -execute_cmd.c - - remove check for \n and \r from WHITESPACE macro, since those - chars are not whitespace as returned by the whitespace(c) macro - - getinterp now takes a `char *' as first arg, not unsigned char * - - execute_shell_script now takes a `char *' as first arg, not - unsigned char * - - fix typo in forward declaration for `initialize_subshell' - -general.[ch] - - check_binary_file now takes a (char *) argument, not unsigned char * - - pass unsigned char to isspace and isprint because of ISO C fuckup - - bash_tilde_expand now takes a `const char *' as its argument +configure.in + - make sure the special case for MacOS X 10.4 only kicks in if the + `--with-installed-readline' option isn't supplied -builtins/evalfile.c, shell.c - - buffer passed to check_binary_file is char, not unsigned char +lib/readline/{callback,readline,signals}.c + - make sure rl_prep_term_function and rl_deprep_term_function aren't + dereferenced if NULL (as the documentation says) -parse.y - - fix extern declaration for yyerror() - - yyerror now takes a `const char *' as first arg +builtins/mkbuiltins.c + - don't bother with the special HAVE_BCOPY code; just use straight + assignments -{error,jobs}.c - - fixes to printf-style functions to handle pids wider than an int +builtins/ulimit.def + - use _POSIX_PIPE_BUF in pipesize() if it's defined and PIPE_BUF is + not -lib/readline/{isearch,vi_mode}.c - - fix call to rl_message in rl_display_search (remove extra arg) + 4/13 + ---- +execute_cmd.c + - add cm_function_def to the list of control structures for which + child processes are forked when pipes come in or out -variables.c - - fix missing argument to builtin_error in make_local_variable + 4/14 + ---- +builtins/read.def + - make sure the ^As added for internal quoting are not counted as + characters read when -n is supplied -builtins/getopts.def - - since getopts takes no options, change while loop calling - internal_getopts to a simple `if' check + 4/20 + ---- +redir.c + - fix redir_open so that the repeat open on failure that AFS support + adds restores the correct value of errno for any error message -builtins/printf.def - - since printf takes no options, change while loop calling - internal_getopts to a simple `if' check + 4/26 + ---- -lib/readline/bind.c - - remove _SET_BELL macro, expand code inline +Makefile.in + - make sure mksignames and mksyntax are invoked with the $(EXEEXT) + extension -lib/readline/input.c - - change _rl_input_available to use either select or FIONREAD, - but not both + 4/28 + ---- +lib/readline/readline.h + - new state variable: RL_STATE_CALLBACK, means readline is using the + callback interface -lib/readline/readline.c - - fix rl_digit_loop to remove unreachable code at end of loop +lib/readline/callback.c + - set RL_STATE_CALLBACK in rl_callback_handler_install, unset in + rl_callback_handler_remove -{bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c - - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif - - remove some unused variables + 4/29 + ---- +config-top.h + - DONT_REPORT_SIGPIPE is now on by default, since it apparently + interferes with scripts -execute_cmd.c - - remove #ifdef'd code that allowed `return' to terminate a select - statement +configure.in + - arrange things so PGRP_PIPE is defined on Linux-2.4+ and version 3 + kernels (ones that apparently schedule children to run before their + parent) -expr.c - - remove some extraneous tests from strlong() + 4/30 + ---- +builtins/caller.def + - add call to no_options, so it can handle `--' option -array.h - - arrayind_t is now a long, since shell arithmetic is performed as - longs - - remove second declaration of new_array_element +doc/{bash.1,bashref.texi} + - note explicitly that test, :, true, and false don't understand -- + as meaning the end of options -builtins/printf.def - - in mklong, xrealloc cannot return NULL, so don't check for it - - remove some #if 0 code - - fix core dump triggered by a format specification with more than - one `*' - - remove `foundmod', since its value mirrors `modchar != 0' - - include "common.h" for builtin_{error,usage} declarations + 5/7 + --- +support/shobj-conf + - darwin 8 needs the same LDFLAGS setting as darwin 7 -Makefile.in,builtins/Makefile.in - - updated some dependencies due to new include files +parse.y + - in save_parser_state, make sure we cast the return value from + xmalloc() to the right type + - remove casts to (char *) in calls to yyerror() -pcomplete.c - - include "execute_cmd.h" for declaration of execute_shell_function +lib/readline/signals.c + - make SIGQUIT and SIGALRM code conditional on their definition + - use raise() to send a signal if we don't have kill() -arrayfunc.c - - include for printf - - include "builtins/common.h" for builtin_error declaration - -builtins/evalstring.c - - include "../trap.h" for run_trap_cleanup declaration +lib/readline/display.c + - some MS-DOS and MINGW changes from the cygwin and mingw folks -builtins/help.def - - include "common.h" instead of locally declaring builtin_error - and builtin_usage +config.h.in + - add HAVE_PWD_H for + - add HAVE_FCNTL, HAVE_KILL for respective system calls + - add HAVE_GETPW{ENT,NAM,UID} for passwd functions -error.h - - add extern declaration for itrace() - - add prototype to extern declaration of get_name_for_error - - file_error now takes a `const char *' as first argument +configure.in + - add check for + - add checks for fcntl, kill system calls + - add checks for getpw{ent,nam,uid} C library functions + - pass a flag indicating we're cross compiling through to + CFLAGS_FOR_BUILD in Makefile.in -externs.h - - added prototype for sh_setlinebuf declaration, bracketed with - NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere - - add extern declaration for parse.y:return_EOF() +lib/readline/complete.c + - guard inclusion of with HAVE_PWD_H + - don't provide a missing declaration for getpwent if we don't have it + - guard calls to {get,end}pwent with HAVE_GETPWENT -shell.c - - add NEED_SH_SETLINEBUF_DECL before including shell.h +lib/readline/shell.c + - guard inclusion of with HAVE_PWD_H + - guard inclusion of with HAVE_FCNTL_H + - don't provide a missing declaration for getpwuid if we don't have it + - guard calls to getpwuid with HAVE_GETPWUID + - don't bother with body of sh_unset_nodelay_mode if we don't have + fcntl -lib/readline/callback.c - - include or "ansi_stdlib.h" for abort declaration +lib/tilde/tilde.c + - guard inclusion of with HAVE_PWD_H + - guard calls to getpw{nam,uid} with HAVE_GETPW{NAM,UID} + - guard calls to {get,end}pwent with HAVE_GETPWENT -quit.h - - remove declaration of throw_to_top_level +Makefile.in,builtins/Makefile.in + - @CROSS_COMPILE@ is substituted into CFLAGS_FOR_BUILD (equal to + -DCROSS_COMPILING if bash is being cross-compiled) -subst.c - - remove unused extern declaration for getopts_reset + 5/9 + --- +aclocal.m4 + - print version as `0.0' in RL_LIB_READLINE_VERSION if the + `rl_gnu_readline_p' variable isn't 1 (accept no imitations) -lib/sh/netopen.c - - include for legal_number, etc. - - add prototype for inet_aton extern declaration + 5/11 + ---- +lib/readline/rlprivate.h + - definition of a readline `search context', to be use for incremental + search initially and other types of search later. Original from + Bob Rossi as part of work on incremental searching problems when + using callback interface -lib/sh/clock.c - - include for __P declaration - - add extern declaration for get_clk_tck +lib/readline/isearch.c + - functions to allocate and free search contexts + - function to take a search context and a character just read and + `dispatch' on it: change search parameters, add to search string, + search further, etc. + - isearch is now completely context-driven: a search context is + allocated and passed to the rest of the functions -support/mkversion.sh - - changed so that extern function declarations for functions in - version.c (moved from externs.h) are in the generated version.h + 5/12 + ---- +lib/readline/isearch.c + - an additional `isearch cleanup' function that can be called from + the callback interface functions when the search is to be terminated + - an additional `isearch callback' function that can be called from + rl_callback_read_char when input is available + - short-circuit from rl_search_history after initialization if + the callback interface is being used -shell.h - - include version.h +lib/readline/callback.c + - in rl_callback_read_char(), if RL_STATE_ISEARCH is set, call + _rl_isearch_callback to read the character and dispatch on it. + If RL_STATE_ISEARCH is unset when that call returns, and there is + input pending, call rl_callback_read_char() again so we don't + have to wait for new input to pick it up -version.c - - various `char *' version variables are now `const char *' +support/shobj-conf,configure.in + - add support for dragonfly bsd, the same as freebsd -general.h - - add prototype for same_file, bracketed with _POSIXSTAT_H - #ifdef, since that's what include/posixstat.h defines + 5/13-5/15 + --------- +lib/readline/callback.c + - support for readline functions to `register' a function that will + be called when more input is available, with a generic data + structure to encapsulate the arguments and parameters. Primarily + intended for functions that read a single additional character, + like quoted-insert + - support for callback code reading numeric arguments in a loop, + using readline state and an auxiliary variable + - support for callback code performing non-incremental searches using + the same search context struct as the isearch code -builtins/common.[ch] - - _evalfile, maybe_execute_file, source_file, and fc_execute_file - now take a `const char *' as their first argument +lib/readline/{callback,display}.c + - if a callback function sets `_rl_redisplay_wanted', the redisplay + function will be called as soon as it returns -eval.c - - removed extern declaration of yyparse; it's in externs.h +lib/readline/input.c + - changes to _rl_read_mbchar to handle reading the null multibyte + character and translating it into '\0' -parse.y - - added prototypes to static forward function declarations - - changed local `all_digits' variable in read_token_word () to - all_digit_token to avoid clash with all_digits() function in - general.c +lib/readline/misc.c + - break rl_digit_loop() into component functions that can be called + individually from the callback code more easily + - share some of the functions with rl_digit_loop1() in vi_mode.c -{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c - - added prototypes for static function declarations +lib/readline/readline.h + - change the version #defines to reflect readline 5.1 -shell.h - - add extern declarations for interactive, interactive_shell, - changed c files with extern declarations +lib/readline/search.c + - break code into smaller functions that can be composed to work with + the callback code more easily -pcomplete.c - - changed it_init_aliases to avoid shadowing global variable - `aliases' +lib/readline/text.c + - in rl_quoted_insert(), don't mess around with the tty signals if + running in `callback mode' -bashline.c,pathexp.c,general.h - - sh_ignore_func_t is now a pointer to a function taking a - `const char *'; users changed +lib/readline/vi_mode.c + - changed set-mark, goto-mark, change-char, and char-search to work + when called by callback functions -configure.in - - test for + 5/17 + ---- -config.h.in - - add #undef HAVE_STRINGS_H +lib/readline/rlprivate.h + - new struct declaration for a `reading key sequence' context -bashansi.h - - change like recommended in autoconf manual +lib/readline/readline.c + - new variable, _rl_dispatching_keymap, keeps track of which keymap + we are currently searching + - functions to allocate and deallocate contexts for reading multi-char + key sequences - 9/11 + 5/18 ---- -[a date which will live in infamy. prayers for the victims.] +lib/readline/rlprivate.h + - new struct defining a context for multiple-key key sequences (the + base case is escape-prefixed commands) -execute_cmd.c - - don't use an absolute index into abuf in mkfmt, use - sizeof(abuf) to compute last index +lib/readline/readline.c + - change structure of _rl_dispatch_subseq to allow for callback code + to use it - rudimentary support for supporting the existing + recursion using a stack of contexts, each with a reference to the + previous + - fix so that ^G works when in callback mode -builtins/common.c - - fix read_octal to do a better job of detecting overflow while - iterating through the string +lib/readline/callback.c + - call the appropriate multiple-key sequence callback if the state is + set -builtins/umask.def - - change octal-print mode to print 4 digits, like other shells - - cast umask to unsigned long to avoid problems on systems where - it's wider than an int (POSIX doesn't guarantee that mode_t is - no wider than an int, but real-world systems use int) + 5/19 + ---- +lib/readline/readline.c + - broke code from _readline_internal_char after call to rl_dispatch + out into separate function: _rl_internal_char_cleanup, callable by + other parts of the code + - change _rl_internal_char_cleanup to unset _rl_want_redisplay after + it calls (*rl_redisplay_func) -builtins/printf.def - - mklong can never return NULL (it uses xrealloc), so the mainline - doesn't need to check for NULL returns - - new function, getldouble (long double *), to get long doubles - - mklong now takes a `char *' as its second argument, the modifier(s) - to use - - changed use of `modchar' to handle more than a single modifier - character - - changed to handle `long double' and `L' formats better, rather - than discarding long double information - - since printf now follows the POSIX.2 rules for conversion errors, - we can dispense with the status returns from the get* functions - - make the get* functions as similar in structure as possible, - removing type casts, etc. - -lib/sh/timeval.c,execute_cmd.c - - change some instances of `long' to `time_t', for systems where - a time_t is bigger than a long +lib/readline/callback.c + - call _rl_internal_char_cleanup from rl_callback_read_char when + appropriate -jobs.c - - include "posixtime.h" instead of + 5/24 + ---- +lib/readline/callback.c + - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to + simulate the recursion used to decode multicharacter key sequences + (even things like ESC- as meta-prefix) + - call setjmp in rl_callback_read_char to give things like rl_abort + a place to jump, since the saved location in readline() will not + be valid + - keep calling _rl_dispatch_callback from rl_callback_read_char while + we are still decoding a multi-key key sequence + - keep calling readline_internal_char from rl_callback_read_char while + we are reading characters from a macro -config.h.in - - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD, - HAVE_DECL_SBRK, HAVE_DECL_PRINTF - - remove defines for SBRK_DECLARED and PRINTF_DECLARED - - add _GNU_SOURCE define +lib/readline/macro.c + - use a slightly different strategy upon encountering the end of a macro + when using the callback interface: when the last character of a + macro is read, and we are reading a command, pop the macro off the + stack immediately so the loop in rl_callback_read_char terminates + when it should -configure.in - - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf - - remove call to BASH_FUNC_SBRK_DECLARED - - remove call to BASH_FUNC_PRINTF +lib/readline/readline.c + - if longjmp() is called and we end up at the saved location while + using the callback interface, just return -- don't go back into a + blocking read + - new function to dispose a chain of rl_keyseq_cxts + - only read new input in _rl_dispatch_callback if the KSEQ_DISPATCHED + flag is not set in the current keyseq context -- if it is, we are + traversing the chain back up and should use what we already saved + - use -3 as a magic value from _rl_dispatch_subseq to indicate that + we're allocating a new context and moving downward in the chain + (a special return value for the benefit of _rl_dispatch_callback) -xmalloc.c, lib/malloc/malloc.c - - change check of SBRK_DECLARED to HAVE_SBRK_DECL +lib/readline/rlprivate.h + - new extern declaration for _rl_keyseq_chain_dispose -print_cmd.c - - change PRINTF_DECLARED to HAVE_DECL_PRINTF + 6/1 + --- +builtins/read.def + - fixed a bug that occurred when reading a set number of chars and + the nth char is a backslash (read one too many). Bug reported by + Chris Morgan -builtins/evalstring.c, builtins/common.h - - parse_and_execute now takes a `const char *' as its second argument +execute_cmd.c + - fix execute_builtin so the `unset' builtin also operates on the + temporary environment in POSIX mode (as well as source and eval), + so that unsetting variables in the temporary environment doesn't + leave them set when unset completes. Report by Eric Blake + -input.h,parse.y - - with_input_from_* functions now take a `const char *' as their - second argument - - init_yy_io now takes a `const char *' as its fourth argument +array.c + - fix from William Park for array_rshift when shifting right on an + empty array -- corrects calculation of array->max_index -parse.y,externs.h - - parse_string_to_word_list now takes a `const char *' as its second - argument +builtins/exec.def + - if an exec fails and the execfail option is set, don't call + restart_job_control unless the shell is interactive or job_control + is set -tests/builtins.right - - change output to account for extra digit in umask output +jobs.c + - add a run-time check for WCONTINUED being defined in header files + but rejected with EINVAL by waitpid(). Fix from Maciej Rozycki + -pcomplib.c - - free_progcomp now takes a PTR_T argument + 6/20 + ---- +bashhist.c + - make sure calls to sv_histchars are protected by #ifdef BANG_HISTORY + - ditto for calls to history_expand_line_internal -builtins/bashgetopt.h - - include - - add prototypes to extern declarations + 6/23 + ---- +doc/bashref.texi + - remove extra blank lines in @menu constructs -builtins/shopt.def - - add prototypes to static function declarations +variables.c + - assign export_env to environ (extern char **) every time it changes + (mostly in add_to_export_env define), so maybe getenv will work on + systems that don't allow it to be replaced -builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c - - include for isdigit macro (referenced by `digit(x)') + 6/29 + ---- +bashline.c + - in bash_directory_completion_hook, be careful about not turning `/' + into `//' and `//' into `///' for benefit of those systems that treat + `//' as some sort of `network root'. Fix from Eric Blake + lib/readline/complete.c - - added more static function declarations with prototypes + - in to_print, do the right thing after stripping the trailing slash + from full_pathname: // doesn't turn into /, and /// doesn't become + //. Fix from Eric Blake - 9/12 + 6/30 ---- -lib/sh/tmpfile.c - - use `^' instead of `*' in sh_mktmpname to make filenames a bit - more random - -include/stdc.h,lib/readline/rldstdc.h - - add __attribute__ definition - -builtins/common.h - - add printf __attribute__ to declaration of builtin_error - -error.h - - add printf __attribute__ to declaration of programming_error, - report_error, parser_error, fatal_error, sys_error, internal_error, - internal_warning +lib/malloc/trace.c + - include if it's available for a definition of size_t -lib/readline/readline.h - - add printf __attribute__ to declaration of rl_message +jobs.c + - in wait_for, if a child process is marked as running but waitpid() + returns -1/ECHILD (e.g., when the bash process is being traced by + strace), make sure to increment c_reaped when marking the child as + dead + - in without_job_control, make sure to close the pgrp pipe after + calling start_pipeline -pcomplete.c - - add printf __attribute__ to declaration of debug_printf + 7/1 + --- +Makefile.in + - only remove pathnames.h when the other files created by running + configure are removed (e.g., Makefile). Fix from William Park -print_cmd.c - - add printf __attribute__ to declarations of cprintf, xprintf +lib/sh/shquote.c + - since backslash-newline disappears when within double quotes, don't + add a backslash in front of a newline in sh_double_quote. Problem + reported by William Park -include/chartypes.h - - new file, includes and defines macros that check for - safe (ascii) arguments before calling the regular ctype macros +jobs.c + - in notify_of_job_status, don't print status messages about + terminated background processes unless job control is active -{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c -parse.y -builtins/{bashgetopt,common}.c -builtins/{fc,printf,umask,wait}.def -lib/glob/strmatch.c -lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c -examples/loadables/{head,sleep}.c - - include "chartypes.h" or instead of - -Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in - - update dependencies to include chartypes.h - -lib/sh/inet_aton.c - - use `unsigned char' instead of `char' to pass to ctype.h functions - -lib/sh/netopen.c - - check for '0' <= host[0] <= '9' in _getaddr instead of using - isdigit - -subst.c,lib/sh/shquote.c - - change array subscripts into sh_syntaxtab from `char' to - `unsigned char' - -{alias,bashline,execute_cmd,expr,general,subst}.c, parse.y -builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c -lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c -examples/loadables/{head,sleep}.c - - change to use some of the new macros in chartypes.h - - remove old local macro definitions now provided by chartypes.h +bashhist.c + - new variable, hist_last_line_pushed, set to 0 in really_add_history + (used by `history -s' code) -general.h - - remove definition of isletter, ISOCTAL, digit, digit_value - - change legal_variable_starter and legal_variable_char to use - chartypes.h macros - - change ABSPATH to use chartypes.h macros +bashhist.h + - new extern declaration for history -s -lib/readline/util.c - - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define - function replacements for macros in chardefs.h +builtins/history.def + - don't remove last history entry in push_history if it was added by + a call to push_history -- use hist_last_line_pushed as a sentinel + and set it after adding history entry. This allows multiple + calls to history -s to work right: adding all lines to the history + rather than deleting all but the last. Bug reported by Matthias + Schniedermeyer + - pay attention to hist_last_line_pushed in expand_and_print_history() + so we don't delete an entry pushed by history -s -lib/readline/chardefs.h - - added some of the same macros as in chartypes.h - - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, - _rl_to_upper, _rl_to_lower to use new IS* macros - - added _rl_isident macro from vi_mode.c:isident + 7/4 + --- +print_cmd.c + - fix print_arith_for_command to not print so many blanks between + expressions in ((...)) -lib/readline/{bind,complete,nls}.c - - change to use some of the new macros from chardefs.h +command.h + - new word flag: W_DQUOTE. Means word should be treated as if double + quoted -lib/readline/vi_mode.c - - isident -> _rl_isident - - remove local defines of macros in chardefs.h +make_cmd.c + - add W_DQUOTE to word flags in make_arith_for_expr -lib/sh/strtol.c - - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0. - This one can do strtoll and strtoull, if necessary +parse.y + - add W_DQUOTE to word flags for (( ... )) arithmetic commands - 9/13 - ---- -builtins/ulimit.def - - changed get_limit so it retrieves both hard and soft limits - instead of one or the other - - changed callers of get_limit - - changed getmaxvm to take soft limit, hard limit as arguments - - changed getmaxuprc to just take a single argument, the value - - changed calls to printone() to pass soft limit or hard limit - depending on `mode' instead of using old current_limit variable - - moved check for out-of-range limits in ulimit_internal into the - block that converts a string argument to a value of type rlim_t - - changed RESOURCE_LIMITS struct to break the description into a - description string and separate scale factor string - - changed print_all_limits to print a single error message if - get_limit fails, including limits[i].description now that the - scale factor has been removed from the description string - - removed DESCFMT define, since it's now used only in printone() - - changed printone to print the option character associated with a - particular limit if we're printing multiple limits - - changed calls to builtin_error to print the description associated - with a limit if setting or getting the limit fails - - added support for new POSIX 1003.1-200x rlim_t values: - RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current - soft and hard limits, whatever they are - - changed printone to print `hard' or `soft' if the current limit is - RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively - - changed ulimit_internal to handle new `hard' and `soft' arguments - - changed help text do describe the special limit arguments `hard', - `soft', and `unlimited' +subst.c + - don't perform tilde expansion on a word with W_DQUOTE flag set + - don't perform process substitution on a word with W_DQUOTE flag set -doc/{bash.1,bashref.texi} - - documented new `hard' and `soft' limit arguments to `ulimit' +arrayfunc.c + - expand an array index within [...] the same way as an arithmetic + expansion between (( ... )) -hashlib.[ch] - - find_hash_item now takes a `const char *' is its first argument - - hash_string now takes a `const char *' is its first argument - - remove_hash_item now takes a `const char *' as its first argument +lib/readline/input.c + - use getch() instead of read() on mingw -pcomplib.c - - removed cast from first argument to find_hash_item in find_compspec +lib/readline/readline.c + - add a few key bindings for the arrow keys on mingw -general.[ch] - - absolute_program now takes a `const char *' as its argument - - absolute_pathname now takes a `const char *' as its argument +lib/readline/rldefs.h + - if on mingw, define NO_TTY_DRIVER -lib/glob/glob.[ch] - - glob_pattern_p now takes a `const char *' as its argument +lib/readline/rltty.c + - compile in the stub functions for _rl_{disable,restore}_tty_signals + if on mingw + - compile in stub function for rl_restart_output on mingw + - make sure enough functions and macros are defined to compile if + NO_TTY_DRIVER is defined (lightly tested - builds on MacOS X, at + least) -bashline.c - - removed cast from first argument to absolute_program in - command_word_completion_function - - removed cast from first argument to glob_pattern_p in - attempt_shell_completion - -findcmd.[ch] - - find_absolute_program, find_user_command, find_path_file, - search_for_command, user_command_matches now take a - `const char *' as their first argument - - file_status, executable_file, is_directory, executable_or_directory - now take a `const char *' as their argument - - _find_user_command_internal, find_user_command_internal, - find_user_command_in_path - -lib/sh/makepath.c, externs.h - - changed sh_makepath so it takes `const char *' for its first - two arguments - -hashcmd.[ch] - - find_hashed_filename now takes a `const char *' as its first arg - - remove_hashed_filename now takes a `const char *' as its first arg + 7/7 + --- +command.h + - add a `flags' member to the PATTERN_LIST structure -variables.[ch] - - new_shell_variable, var_lookup, shell_var_from_env_string, - find_name_in_env_array, bind_function, makunbound, - bind_name_in_env_array, bind_tempenv_variable, bind_variable - now take a `const char *' as their first arg - - find_function, make_new_variable, find_tempenv_variable, - find_variable_internal, find_variable, set_func_read_only, - set_func_auto_export, all_variables_matching_prefix, assign_in_env, - assignment, kill_local_variable, make_local_variable, unbind_variable - now take a `const char *' as their arg - - mk_env_string now takes `const char *' arguments +make_cmd.c + - intialize the `flags' member of a PATTERN_LIST when it's created -arrayfunc.[ch] - - skipsubscript now takes a `const char *' as its argument +builtins/psize.c + - protect extern declaration of errno with usual #ifdef errno - 9/17 - ---- -lib/readline/complete.c - - attempt to preserve case of what the user typed in - compute_lcd_of_matches if we're ignoring case in completion +configure.in, variables.c + - changes for QNX 6.x -builtins/{let,pushd}.def,{execute_cmd,expr}.c - - change some 0L constants to 0 and let the compiler sort it out + 7/9 + --- +parse.y + - fix parse_matched_pair to handle single and double quoted strings + inside old-style command substitution (``) since they can each + quote the ` and embedded $-expansions. Report by Eric Blake + - 9/18 - ---- -lib/malloc/alloca.c - - alloca now takes a `size_t' argument +{configure,Makefile}.in + - TILDE_LIB is now substituted into Makefile by configure -include/memalloc.h - - if we're providing an extern function declaration for alloca, - use `void *' and prototype if __STDC__ is defined - - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't - define HAVE_ALLOCA +configure.in + - if configuring --with-installed-readline on cygwin, set TILDE_LIB + to the empty string to avoid multiply-defined symbols. Cygwin + doesn't allow undefined symbols in dynamic libraries. Report by + Eric Blake - 9/19 + 7/11 ---- -subst.c - - do_assignment_internal, do_assignment, and do_assignment_no_expand - now take a `const char *' as their first argument - -general.h - - a `sh_assign_func_t' is now a function taking a `const char *' and - returning int - -hashcmd.c - - free_filename_data now takes a `PTR_T' argument to agree with the - typedef for `sh_free_func_t' - -lib/sh/snprintf.c - - use TYPE_MAXIMUM define like strtol.c instead of huge constants +input.c + - in duplicate_buffered_stream, don't call free_buffered_stream if the + two buffered streams share the same b_buffer object (e.g., if they + had already been duplicated with a previous call). Fixes Debian bug + reported by eero17@bigfoot.com - 9/20 + 7/12 ---- -lib/sh/snprintf.c - - don't bother to compile the bulk of the body unless HAVE_SNPRINTF - or HAVE_ASPRINTF is not defined +shell.c + - make set_shell_name more resistant to a NULL argument + - in bind_args, use < instead of != when counting the arguments and + making the arg list + - in main(), make sure arg_index is not initialized to a value greater + than argc - 9/24 + 7/14 ---- -flags.c - - ignore `set -n' if the shell was started interactively - -lib/readline/readline.c - - initialize readline_echoing_p to 0; let the terminal-specific code - in rltty.c set it appropriately - -lib/malloc/malloc.c - - changed internal_memalign() slightly to avoid compiler warnings about - negating an unsigned variable (-alignment -> (~alignment + 1)) +lib/readline/display.c + - in expand_prompt, don't set the location of the last invisible + char if the sequence is zero length (\[\]) - 9/27 + 7/15 ---- -lib/readline/readline.c - - changed rl_newline to set _rl_history_saved_point appropriately - for the {previous,next}_history code - -lib/readline/rlprivate.h - - extern declaration for _rl_history_preserve_point - -lib/readline/bind.c - - new bindable variable, `history-preserve-point', sets value of - _rl_history_preserve_point +doc/{bash.1,bashref.texi} + - document that the shell uses $TMPDIR when creating temporary files - 10/1 + 7/20 ---- -lib/malloc/table.c - - new file, with a map of allocated (and freed) memory for debugging - multiple frees, etc. Indexed by hash on values returned by - malloc(); holds size, file and line number info for last alloc or - free and a couple of statistics pointers - -lib/malloc/malloc.c - - a few cleanups; added calls for registering allocations and frees - if MALLOC_REGISTER is defined - - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define - - reordered fields in `struct...minfo' in `union mhead' to restore - eight-byte alignment - - added explicit checks for underflow in free and realloc since - checking mh_magic2 is not sufficient to detect everything (it's - no longer the last field in the struct, and thus not the bytes - immediately preceding what's returned to the user) - - new function, xbotch, for printing file and line number info for - the failed assertion before calling botch() (programming_error()) +[bash-3.1-alpha1 frozen] -configure.in - - replaced call to BASH_C_LONG_LONG with call to - AC_CHECK_TYPES([long long]) - - moved the C compiler tests before the tests for various - system types, so we can know whether we have `long long' - before testing for 64-bit types - - if we have `long long', check for sizeof(long long) and save value + 7/29 + ---- +builtins/evalstring.c + - make sure that parse_and_execute saves and restores the value of + loop_level, so loops in sourced scripts and eval'd strings don't + mess up the shell's parser state -aclocal.m4 - - changed BASH_TYPE_BITS64_T to check `long long' before `long', but - after `double' +bashline.c + - change command_subst_completion_function to suppress appending + any character to a unique completion, instead of a space, unless + the last word in the quoted command substitution completes to a + directory name. In that case we append the expected slash - 10/2 - ---- -lib/malloc/malloc.c - - made malloc and realloc both agree on the rounding for a request of - size N (round up to nearest multiple of 8 after adjusting for - malloc overhead); uses new ALLOCATED_BYTES macro - - realloc and free now use new IN_BUCKET macro for underflow checks + 8/1 + --- +builtins/printf.def + - make sure variables are initialized if their values are tested later -execute_cmd.c - - fixed time_command() to use `time_t' instead of `long' to hold - time stamps +[bash-3.1-alpha1 updated and re-frozen] -lib/sh/clock.c - - clock_t_to_secs now takes a `time_t *' second argument - - fixed print_clock_t to call clock_t_to_secs with right arguments + 8/2 + --- +variables.c + - make sure to call stifle_history with an `int' instead of an intmax_t. + Sometimes it makes a difference -lib/sh/timeval.c - - fixed print_timeval to make `minutes' a `long' and make its - structure identical to print_clock_t + 8/3 + --- +[bash-3.1-alpha1 released] -redir.c - - changed redirection_error to check for EBADF and use the file - descriptor being redirected from in the error message if it - is >= 0 +support/mksignames.c + - add `SIGSTKFLT' (RHE3) + - add `SIGXRES' (Solaris 9) -Makefile.in - - changed release status to `beta1' + 8/4 + --- +builtins/ulimit.def + - fix typo to make `x' the right option for locks + - add new options to short help synopsis -lib/glob/collsyms.h - - added a few ASCII symbols to the posix_collsyms array +variables.c + - use get_variable_value instead of direct reference to value_cell + in make_variable_value when appending to the current value, so + references to array variables without subscripts will be equivalent + to element 0 - 10/3 - ---- -aclocal.m4 - - fixed typo in BASH_TYPE_BITS64_T +lib/readline/text.c + - rewrote rl_change_case to correctly change the case of multibyte + characters where appropriate + 8/5 + --- configure.in - - added check for unsigned chars with AC_C_CHAR_UNSIGNED - -config.h.in - - added PROTOTYPES and __CHAR_UNSIGNED__ #defines + - remove call to obsolete macro AC_ACVERSION + - remove special calls to AC_CYGWIN and AC_MINGW32; AC_CANONICAL_HOST + takes care of those cases general.h - - if CHAR_MAX is not define by , provide a definition - -builtins/printf.def - - change tescape() to mask \0 and \x escape sequences with 0xFF - - change tescape() to process at most two hex digits after a `\x' - -lib/sh/strtrans.c - - change strtrans() to mask \0 and \x escape sequences with 0xFF - - change strtrans() to process at most two hex digits after a `\x'. - This affects `echo -e' and $'...' processing - -lib/readline/bind.c - - changed rl_translate_keyseq() to process at most two hex digits - after a `\x' + - include `chartypes.h' for definition of ISALPHA + - fix definitions of ABSPATH and RELPATH for cygwin + - fix definition of ISDIRSEP for cygwin to allow backslash as a + directory name separator -lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 - - changed documentation for key binding escape sequences to specify - that at most two hex digits after \x are translated - - changed documentation for key binding to specify that the result - of \nnn or \xhh escapes is an eight-bit value, not just ASCII + 8/9 + --- +builtins/setattr.def + - when setting a variable from the temporary environment in + set_var_attribute (e.g., `LC_ALL=C export LC_ALL'), make sure to + call stupidly_hack_special_variables after binding the variable in + the current context -doc/{bash.1,bashref.texi} - - changed documentation of $'...' to specify that at most two hex - digits after \x are translated - - changed `echo' documentation to specify that at most two hex - digits after \x are translated - - changed documentation for `echo' and $'...' to specify that the - result of \nnn or \xhh escapes is an eight-bit value, not just ASCII +builtins/printf.def + - make sure to call stupidly_hack_special_variables if using `printf -v' + to put formatted output in a shell variable - 10/4 + 8/11 ---- -lib/malloc/malloc.c - - changed interface for xbotch to pass memory address and error code - as two additional arguments - - call mregister_describe_mem from xbotch to get the last allocation - or free before the botch - -configure.in - - call AC_CHECK_DECLS([strsignal]) +support/shobj-conf + - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults + to `lib' + - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library + version number + - new variable: SHLIB_DOT, separator character between library name and + suffix and version information (defaults to `.') + - new stanza for cygwin to generate windows-compatible dll -config.h.in - - add HAVE_DECL_STRSIGNAL + 8/14 + ---- +variables.c + - new special variable function for Cygwin, so the export environment + is remade when HOME is changed. The environment is the only way to + get information from the shell to cygwin dlls, for instanace, when + bash is compiled to use an already-installed libreadline -siglist.h - - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL +variables.h + - new extern declaration for sv_home - 10/5 + 8/15 ---- -support/texi2html - - upgraded to version 1.64 +lib/readline/display.c + - call init_line_structures from rl_redisplay if vis_lbreaks == 0 + to avoid consequences of a poorly-timed SIGWINCH - 10/9 + 8/16 ---- -aclocal.m4 - - added check for `long long' to BASH_TYPE_PTRDIFF_T - -configure.in - - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ - -aclocal.m4 - - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to - AC_CHECK_MEMBER(struct termios.c_line, ...) - - replaced body of BASH_STRUCT_TERMIO_LDISC with call to - AC_CHECK_MEMBER(struct termios.c_line, ...) - -[bash-2.05a-beta1 frozen] +subst.c + - fix logic for performing tilde expansion when in posix mode (don't + rely on W_TILDEEXP flag always being set, because it won't be when + expanding the RHS of assignment statement). Use W_TILDEEXP only + when deciding to expand a word marked as W_ASSIGNMENT that doesn't + precede a command name - 10/10 - ----- -lib/sh/snprintf.c - - fixed exponent() to not smash the trailing zeros in the fraction - when using %g or %G with an `alternate form' - - fixed exponent() to handle the optional precision with %g and %G - correctly (number of significant digits before the exponent) + 8/17 + ---- +execute_cmd.c + - in execute_function, when subshell == 1, don't short-cut by using + the command contained in the group command -- if you do, any + redirections attached to the group command (function) don't get + executed - 10/11 - ----- -expr.c - - fixed strlong() to correct the values of `@' and `_' when - translating base-64 constants (64#@ == 62 and 64#_ == 64), for - compatibility with ksh +general.h + - new #define, FS_READABLE, indicates file is readable by current + user -lib/sh/itos.c - - added a slightly more flexible fmtlong() function that takes a - base argument and flags (for future use) - - rewrote itos and inttostr in terms of fmtlong +findcmd.c + - rewrote file_status to use S_xxx POSIX file mode bits and to add + support for FS_READABLE (affects ./source and searching $PATH for + scripts whose names are supplied as arguments on the command line) + - change find_path_file to look for readable files -- source requires + it + - change find_in_path_element to do the right thing when FS_READABLE + is supplied as a flag -lib/sh/fmtulong.c - - new file, converts unsigned long to string. hooks for `unsigned - long long' in the future. unused as yet +doc/bashref.texi + - remove note about posix non-compliance in `.': we now require and + look for readable files when searching $PATH - 10/15 - ----- -lib/readline/rltty.c - - change the SET_SPECIAL macro to avoid possible (but highly - unlikely) negative array subscripts + 8/20 + ---- +subst.c + - fix setifs to handle case where passed variable is non-zero but + v->value == 0 (as in an unset local variable); treat IFS as unset + in this case -error.h - - add __attribute__ to extern declaration of itrace (even though the - function isn't defined in released versions of bash) +jobs.c + - in kill_pid, if asked to killpg a process or pgrp whose pgrp is + recorded as the same as the shell's, just call killpg and let the + chips fall where they may -- there may be other processes in that + pgrp that are not children of the shell, so killing each process + in the pipeline will not do a complete job, and killpg'ing each + such process will send too many signals in the majority of cases -bashansi.h - - include if HAVE_STRINGS_H is defined, to get any extra - function declarations provided therein +builtins/cd.def + - in posix mode, pwd needs to check that the value it prints and `.' + are the same file -copy_cmd.c - - fix typo in forward declaration for copy_arith_for_command +builtins/read.def + - if reading input from stdin in a non-interactive shell and calling + `read', call sync_buffered_stream to seek backward in the input + stream if necessary (XXX - should we do this for all shell builtins?) -lib/malloc/stats.c - - make the accumulators in _print_malloc_stats be `unsigned long' - instead of `int' + 8/23 + ---- +builtins/cd.def + - in posix mode, if canonicalization of the absolute pathname fails + because the path length exceeds PATH_MAX, but the length of the passed + (non-absolute) pathname does not, attempt the chdir, just as when + not in posix mode -externs.h, sig.h - - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level - declarations +builtins/type.def + - don't have describe_command call sh_makepath if the full path found + is already an absolute pathname (sh_makepath will stick $PWD onto the + front of it) -lib/sh/mailstat.c, support/bashversion.c - - include for some string function declarations + 8/24 + ---- -lib/malloc/shmalloc.h - - added extern declarations of functions that do malloc debugging +jobs.c + - in posix mode, don't have start_job print out and indication of + whether the job started by `bg' is the current or previous job + - change start_job to return success if a job to be resumed in the + background is already running. This means that bg won't fail when + asked to bg a background job, as SUSv3/XPG6 requires + - new function, init_job_stats, to zero out the global jobstats struct -lib/readline/{isearch,readline,vi_mode}.c - - make sure we index into _rl_keymap with a non-negative index +{jobs,nojobs}.c + - change kill_pid to handle pids < -1 by killing process groups -parse.y - - make sure we index into sh_syntaxtab with a non-negative index +jobs.h + - extern declaration for init_job_stats -lib/readline/vi_mode.c - - bound the vi_mark_chars array with the number of characters between - 'a' and 'z' rather than using a fixed amount - - don't use _rl_lowercase_p when deciding whether the char read by - rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z' - -lib/readline/chardefs.h - - conditionally include memory.h and strings.h as in general.h - - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software - - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c) - - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, - _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower, - and _rl_isident to work on systems with signed chars - -include/chartypes.h - - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software - -lib/sh/{strcasecmp,strtod,strtol}.c - - don't pass possibly-negative characters to tolower() or toupper() - -lib/glob/strmatch.c - - don't bother testing for isupper in FOLD; rely on TOLOWER macro - from to do it - - don't use local definitions of isblank, et al.; rely on macros - from - -lib/readline/{display,readline}.c, mksyntax.c - - use new ISPRINT macro instead of isprint() - -builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c - - don't assume that a pid_t fits into an int for printing and other - uses +lib/readline/history.c + - check whether or not the history list is null in remove_history -variables.[ch] - - the unused put_gnu_argv_flags_into_env now takes a `long' pid - argument +builtins/history.def + - delete_last_history is no longer static so fc builtin can use it -configure.in, config.h.in - - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found - - check for strtoull(), define HAVE_STRTOULL if found - - check for uintmax_t, define to `unsigned long' if not found +builtins/fc.def + - use free_history_entry in fc_replhist instead of freeing struct + members individually + - call delete_last_history from fc_replhist instead of using inline + code + - if editing (-l not specified), make sure the fc command that caused + the editing is removed from the history list, as POSIX specifies -lib/sh/mailstat.c - - don't use st_blocks member of struct stat unless - HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink - field to return the total number of messages in a maildir-style - mail directory +builtins/kill.def + - just call kill_pid with any pid argument and let it handle pids < -1 + This is the only way to let kill_pid know whether a negative pid or + a job spec was supplied as an argument to kill -general.h,{alias,expr,general,subst,variables}.c -builtins/{printf,read}.def -lib/readline/{bind,complete,nls}.c -lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c - - cast args to ctype macros to unsigned char for systems with signed - chars; other fixes for signed chars +builtins/fg_bg.def + - force fg_bg to return EXECUTION_SUCCESS explicitly if called by bg + and start_job returns successfully + - bg now returns success only if all the specified jobs were resumed + successfully -lib/sh/{fmtullong,strtoull.c} - - new files, more support for `long long' +execute_cmd.c + - call init_job_stats from initialize_subshell to zero out the global + job stats structure -Makefile.in, lib/sh/Makefile.in - - make fmtullong.o and strtoull.o part of libsh + 8/25 + ---- +bashline.c + - change vi_edit_and_execute_command to just call vi when in posix + mode, instead of checking $FCEDIT and $EDITOR -lib/sh/itos.c - - remove local copy of fmtlong; use fmtulong instead - - new functions: uitos, uinttostr work on `unsigned long' +lib/readline/search.c + - if in vi_mode, call rl_free_undo_list in make_history_line_current + to dispose of undo list accumulated while reading the search string + (if this isn't done, since vi mode leaves the current history + position at the entry which matched the search, the call to + rl_revert_line in rl_internal_teardown will mangle the matched + history entry using a bogus rl_undo_list) + - call rl_free_undo_list after reading a non-incremental search string + into rl_line_buffer -- that undo list should be discarded -lib/sh/snprintf.c - - fixes to make `unsigned long long' work (%llu) - - fixes to make unsigned formats not print the sign when given - an unsigned long that is greater than LONG_MAX +lib/readline/rlprivate.h + - add UNDO_LIST * member to search context struct -externs.h - - extern declarations for fmtulong, fmtulloing, strtoull - - extern declarations for uitos, uinttostr +lib/readline/isearch.c + - initialize UNDO_LIST *save_undo_list member of search context struct - 10/16 - ----- -configure.in - - move header checks before function checks - - move c compiler tests before header checks - - check for with BASH_HEADER_INTTYPES - - change type checks for intmax_t, uintmax_t to not attempt to - include - - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul - with BASH_CHECK_DECL (for declarations in header files) and - AC_REPLACE_FUNCS (for availability and LIBOBJS substitution) - - remove check for have_long_long around sizeof check for long long - (since autoconf will give it a size of 0 if the type isn't found) + 8/27 + ---- +lib/readline/bind.c + - change rl_parse_and_bind to strip whitespace from the end of a + variable value assignment before calling rl_variable_bind -config.h.in - - add a define for HAVE_INTTYPES_H - - add a define for HAVE_UNSIGNED_LONG_LONG - - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - clarified the language concerning parsing values for boolean + variables in assignment statements -aclocal.m4 - - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS - on ; separate so it can be AC_REQUIREd - - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE - - include in BASH_CHECK_TYPE if HAVE_INTTYPES_H is - defined - - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE - - new `long long' checking macros: BASH_TYPE_LONG_LONG and - BASH_TYPE_UNSIGNED_LONG_LONG - - new BASH_CHECK_DECL + 8/28 + ---- +lib/sh/pathphys.c + - fix small memory leak in sh_realpath reported by Eric Blake -lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in - - new files + 8/31 + ---- +doc/bashref.texi + - add additional notes to posix mode section -externs.h - - extern declarations for strtoll, strtoimax, strtoumax + 9/3 + --- +parse.y + - if $'...' occurs within a ${...} parameter expansion within + double quotes, don't single-quote the expanded result -- the double + quotes will cause it to be expanded incorrectly -lib/malloc/alloca.c - - include for size_t + 9/4 + --- +builtins/fc.def + - if STRICT_POSIX is defined, the posix mode default for the editor to + use is $FCEDIT, then ed -builtins/printf.def - - new functions: getllong, getullong, getintmax, getuintmax; return - long long, unsigned long long, intmax_t, uintmax_t respectively - - builtin printf now handles `ll' and `j' length modifiers directly +shell.c + - if STRICT_POSIX is defined, initialize `posixly_correct' to 1 -lib/sh/Makefile.in - - use LIBOBJS to decide whether or not the strto* functions are - needed +config.h.in + - add #undef STRICT_POSIX - 10/17 - ----- + 9/5 + --- configure.in - - call AC_REPLACE_FUNCS(rename) - - move getcwd, strpbrk, strcasecmp, strerror, strtod - from AC_CHECK_FUNCS to AC_REPLACE_FUNCS - - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes" - - call BASH_CHECK_SYS_SIGLIST - - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint) + - add new option argument, --enable-strict-posix-default, configures + bash to be posix-conformant (including defaulting echo to posix + conformance) by default -lib/sh/Makefile.in - - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror, - strtod, vprint from OBJECTS; picked up from LIBOBJS +builtins/echo.def + - if STRICT_POSIX is defined, default echo to xpg-style -aclocal.m4 - - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc - getcwd(3) calls popen(3) - - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's - not found in libc or as a #define even with the special includes - - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT - - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR - - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING - - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS - - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE - - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK - - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC - - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT - - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF - - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK - - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T - - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET - - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for - sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to - siglist.o if appropriate +doc/bashref.texi + - describe the --enable-strict-posix-default option to configure -Makefile.in - - use SIGLIST_O variable to decide whether or not we need siglist.o + 9/10 + ---- +builtins/mkbuiltins.c + - change to not generate N_(""), because the translated empty string is + special to GNU gettext -{execute_cmd,subst}.c - - change a couple of instances of ISDIGIT to DIGIT, where we really, - really only want ascii digits + 9/13 + ---- +lib/readline/complete.c + - a negative value for rl_completion_query_items means to not ask -ansi_stdlib.h - - don't need a declaration for atol() +lib/readline/doc/{{rltech,rluser}.texi,readline.3} + - documented new semantics for rl_completion_query_items/ + completion-query-items - 10/18 - ----- + 9/14 + ---- +bashline.c + - bind M-TAB in emacs mode to dynamic-complete-history even if the + current binding is `tab-insert' (which is what it is by default), + not just if it's unbound -aclocal.m4 - - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support - for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT - if successful + 9/15 + ---- +eval.c + - call QUIT before calling dispose_command on current_command after + the `exec_done' label. If we dispose current_command first, the + longjmp might restore the value of current_command after we've + disposed it, and the subsequent call to dispose_command from the + DISCARD case will free memory twice -configure.in - - call AC_CHECK_FUNCS for isascii - - call BASH_FUNC_PRINTF_A_FORMAT + 9/16 + ---- +lib/sh/strto[iu]max.c + - make sure the function being declared is not a cpp define before + defining it -- should fix problems on HP-UX -config.h.in - - add a define for HAVE_ISASCII - - add a define for HAVE_PRINTF_A_FORMAT + 9/19 + ---- +Makefile.in + - make sure the binaries for the tests are at the front of $PATH -lib/sh/snprintf.c - - for long double output, fall back to sprintf using ldfallback() - function for floating point formats - - support %a, %A using dfallback() or ldfallback() if - HAVE_PRINTF_A_FORMAT is defined - - fix bug in vasprintf that returned wrong value in its first - argument if the buffer holding the result string got reallocated - - fixed PUT_CHAR macro to increment the counter even if we've - exceeded the buffer size, for the return value from - vsnprintf/snprintf - - fix vsnprintf_internal to not use counter < length as a loop - condition, but always process the entire format string (for - the return value from vsnprintf/snprintf) + 9/22 + ---- +parse.y + - new flag for parse_matched_pair: P_COMMAND, indicating that the + text being parsed is a command (`...`, $(...)) + - change calls to parse_matched_pair to include P_COMMAND where + appropriate + - if P_COMMAND flag is set and the text is unquoted, check for comments + and don't try to parse embedded quoted strings if in a comment (still + not exactly right yet) -builtins/printf.def - - support %a, %A if HAVE_PRINTF_A_FORMAT is defined + 9/24 + ---- +builtins/history.def + - if running history -n, don't count these new lines as history lines + for the current session if the `histappend' shell option is set. + If we're just appending to the history file, the issue that caused + history_lines_this_session to be recalculated doesn't apply -- the + history file won't be missing any entries -include/typemax.h - - new file, with the TYPE_MAXIMUM stuff that's duplicated in several - files in lib/sh +lib/readline/isearch.c + - fix C-w handler for isearch string reader to handle multibyte chars -lib/sh/{fmtulong,strtol,snprintf}.c - - include instead of having the definitions in each file +lib/readline/rlmbutil.h + - new defines for _rl_to_wupper and _rl_to_wlower -lib/sh/Makefile.in - - updated dependencies for typemax.h +lib/readline/text.c + - use _rl_to_wupper and _rl_to_wlower as appropriate - 10/22 - ----- -configure.in - - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines - in chartypes.h - -config.h.in - - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT} - -include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h - - don't redefine some is* ctype macros/functions if HAVE_ISXXX is - defined (meaning that an appropriate function, but not a macro, - exists) + 9/26 + ---- +execute_cmd.c + - in shell_execve, if the exec fails due to E2BIG or ENOMEM, just print + the appropriate error message instead of checking out any interpreter + specified with #! -lib/sh/strtrans.c - - new function, ansic_shouldquote, returns 1 if argument string - contains non-printing chars that should be quoted with $'...' + 9/30 + ---- +bashhist.c + - make $HISTCMD available anytime remember_on_history is non-zero, + which indicates that we're saving commands to the history, and + let it evaluate to 1 if we're not -externs.h - - new declaration for ansic_shouldquote() + 10/4 + ---- +lib/sh/snprintf.c + - in floating(), make sure d != 0 before calling chkinfnan -- gcc on the + version of Solaris 9 I have translates 0 to -inf on the call -variables.c - - change print_var_value to ansi C quote the string if we're not in - posix mode and the variable's value contains non-printing chars, - to use the regular shell single quoting if the value contains - shell meta-characters, and to just output the string otherwise +[bash-3.1-beta1 frozen] -lib/sh/shquote.c - - add `break' to `case '~':' to avoid fallthrough and extra test + 10/6 + ---- +jobs.c + - set the_pipeline to NULL right away in cleanup_the_pipeline, and + dispose a copy of the pointer so we don't mess with the_pipeline + while we're in the process of destroying it + - block and unblock SIGCHLD around manipulating the_pipeline in + cleanup_the_pipeline -doc/bashref.texi - - note that in POSIX mode, `set' displays variable values that - include nonprinting characters without quoting, unless they - contain shell metacharacters + 10/7 + ---- +[bash-3.1-beta1 released] -builtins/printf.def, lib/sh/snprintf.c - - handle `F' conversion specifier as equivalent to 'f' +lib/readline/isearch.c + - when switching directions, make sure we turn off the SF_REVERSE + flag in the search context's flags word if we're going from reverse + to forward i-search -parse.y, {nojobs,variables}.c - - a couple of cleanups for when building a minimal configuration +lib/readline/bind.c + - new function, rl_variable_value, returns a string representing a + bindable readline variable's value + - new auxiliary function, _rl_get_string_variable_value, encapsulates + everything needed to get a bindable string variable's value + - rewrote rl_variable_dumper to use _rl_get_string_variable_value -nojobs.c - - new function: stop_making_children(), just sets - already_making_children to 0 (like stop_pipeline) +lib/readline/readline.h + - new extern declaration for rl_variable_value -subst.c - - call stop_making_children from subst.c:command_substitute if - JOB_CONTROL is not defined. This fixes the bug where the wrong - process is waited for (and its status returned) when using - command substitution in a null command in a shell function +lib/readline/doc/rltech.texi + - documented rl_variable_value -builtins/printf.def - - new variable `tw' used to keep track of the total number of - characters written by a single call to `printf' -- to be - used for the `%n' conversion, which will be added later. It - gets reset each time we reuse the format string, which is what - ksh93 seems to do +bashline.c + - in command_word_completion_function, if readline sets + rl_completion_found_quote, but doesn't set rl_completion_quote_character, + we have an embedded quoted string or backslash-escaped character in + the passed text. We need to dequote that before calling + filename_completion_function. So far, this is in place only for + absolute program names (those containing a `/') + - in command_word_completion_function, use rl_variable_value to decide + whether or not we should ignore case, and use strncasecmp instead of + strncmp where appropriate - 10/23 + 10/11 ----- -variables.c - - new function, bind_var_to_int (char *var, long val) - -variables.h - - extern declaration for bind_var_to_int +builtins/fc.def + - fixed a typo when using POSIX_FC_EDIT_COMMAND -lib/sh/netopen.c - - use gai_strerror() for error messages when getaddrinfo() fails - - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me +redir.h + - new flag values for redirections: RX_INTERNAL and RX_USER (currently + unused) -Makefile.in - - pass DEBUG=${DEBUG} down to makes in some subdirectories +redir.c + - add_undo_redirect and add_undo_close_redirect now set RX_INTERNAL + flag when making new redirects + - in do_redirection_internal, only set file descriptors > 2 to CLEXEC + if they're marked as RX_INTERNAL -{builtins,lib/{glob,sh}}/Makefile.in - - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile + 10/12 + ----- +jobs.c + - in wait_for_single_pid, if in posix mode, remove the waited-for pid + from the list of background pids, forgetting it entirely. POSIX + conformance tests test for this. -builtins/printf.def - - added support for %n format conversion char (number of chars printed - so far from current format string) +lib/readline/{readline.h,vi_mode.c} + - new state flag, RL_STATE_VICMDONCE, set after entering vi command + mode the first time; reset on each call to readline() - 10/24 + 10/13 ----- -variables.c - - if posixly_correct is set, the default value of $MAILCHECK is 600 - - use legal_number instead of atoi in adjust_shell_level - - treat non-numeric assignments to SECONDS as 0 in assign_seconds - - new function, init_funcname_var; sets FUNCNAME as a dynamic variable - if it's not set in the initial environment - - new function, init_groups_var; sets GROUPS as a dynamic array - variable if it's not set in the initial environment - - new function, init_dirstack_var; sets DIRSTACK as a dynamic array - variable if it's not set in the initial environment - - new function, init_seconds_var; sets SECONDS as a dynamic - variable using any valid integer value in the initial environment - as the initial value, as if an assignment had been performed - - call init_funcname_var, init_groups_var, init_dirstack_var, - init_seconds_var from initialize_dynamic_variables - - non-numeric values assigned to LINENO are treated as 0 - - change initialize_shell_variables to not auto-export PATH or TERM - - change set_home_var to not auto-export HOME - - change set_shell_var to not auto-export SHELL - - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE - out into a separate function, set_machine_vars; none of those - variables are auto-exported - - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT +lib/readline/undo.c + - in rl_revert_line, make sure that revert-line in vi mode leaves + rl_point set to 0 no matter the state of the line buffer -shell.c - - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if - SSH_SOURCE_BASHRC is defined in config-top.h +lib/readline/vi_mode.c + - when entering vi_command mode for the first time, free any existing + undo list so the previous insertions won't be undone by the `U' + command. This is how POSIX.2 says `U' should work (and the test + suite tests for it) -config-top.h - - added a commented-out definition for SSH_SOURCE_BASHRC +lib/readline/bind.c + - change rl_parse_and_bind so only `set' commands involving boolean + readline variables have trailing whitespace stripped from the value + string - 10/25 + 10/16 ----- +lib/glob/sm_loop.c + - fix patscan() to correctly scan backslash-escaped characters -Makefile.in - - changed RELSTATUS to `rc1' (release candidate 1) - - 10/29 + 10/18 ----- -locale.c - - fixed an `=' vs. `==' typo in set_locale_var when parsing - LC_NUMERIC +lib/sh/{winsize.c,Makefile.in},{jobs,nojobs}.c,Makefile.in,externs.h + - moved get_new_window_size from jobs.c/nojobs.c to new file, + lib/sh/winsize.c, made function global -doc/{bash.1,bashref.texi} - - document what bash does with $POSIXLY_CORRECT +{jobs,nojobs,sig}.c,{jobs,sig}.h + - moved SIGWINCH handling code to sig.c rather than duplicate it in + jobs.c and nojobs.c + - call set_sigwinch_handler from sig.c code rather than job control + signal initialization -doc/builtins.1 - - some updates +sig.[ch] + - new variable, sigwinch_received, acts like interrupt_state for + SIGWINCH, set by sigwinch_sighandler. sigwinch_sighandler no longer + calls get_new_window_size -builtins/psize.sh - - some mktemp(1) changes +parse.y + - add call to get_new_window_size if sigwinch_received at top of + shell_getc -lib/readline/readline.c - - change rl_backward to check for rl_point < 0 and reset to 0 if so + 10/19 + ----- +lib/malloc/malloc.c + - to avoid orphaning memory on free if the right bucket is busy, use a + new function xplit(mem, bucket) to split the block into two or more + smaller ones and add those to the right bucket (appropriately marking + it as busy) + - audit bsplit(), bcoalesce(), and xsplit() for proper use of busy[], + since they're dealing with two separate buckets -lib/readline/util.c - - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined + 10/22 + ----- +subst.c + - new flag for string_extract: EX_REQMATCH, means to return an error + if a matching/closing character is not found before EOS + - new static flag variables: extract_string_error and extract_string_fatal + - change expand_word_internal to check for new error returns from + string_extract and return errors if appropriate -lib/readline/rlprivate.h - - remove extern declaration of _rl_strpbrk + 10/23 + ----- +builtins/cd.def + - make sure we free TDIR in change_to_directory after calling + set_working_directory (which allocates new memory) and other places + we short-circuit and return -lib/readline/rldefs.h - - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise - add extern declaration of _rl_strpbrk from rlprivate.h + 10/24 + ----- +subst.c + - modified fix from 10/22 to allow bare ` to pass through (for + some backwards compatibility and more correctness) -{mailcheck,shell,variables}.c - - make sure to include posixtime.h to get any prototype for time(3) - in scope + 10/27 + ----- +conftypes.h + - make MacOS X use the RHAPSODY code that gets HOSTTYPE, et al. + at build rather than configure time, to support universal binaries + (fix from llattanzi@apple.com) -{array,eval,execute_cmd,mksyntax,subst}.c, parse.y -builtins/common.c -lib/sh/pathcanon.c - - a few changes as the result of `gcc -Wall' patches from solar - designer + 10/30 + ----- +builtins/evalstring.c + - make sure we don't turn on CMD_NO_FORK in parse_and_execute if + we're running a trap command on signal receipt or exit -builtins/read.def, parse.y - - change some calls to free() to xfree() +execute_cmd.c + - in shell_execve, improve the error message a little bit if the + interpreter name in a #! exec header ends with a ^M (as in a DOS- + format file) -builtins/set.def - - make sure unset_builtin() resets unset_array to 0 each time through - the loop, because it's set (and used) depending on the current - argument + 11/1 + ---- +lib/readline/vi_mode.c + - fix vi-mode `r' command to leave the cursor in the right place -shell.h - - new define, USE_VAR, to force the compiler to not put a particular - variable in a register -- helpful if registers are not restored - by setjmp/longjmp +[bash-3.1-rc1 frozen] -builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c - - use USE_VAR for some variables + 11/5 + ---- +execute_cmd.c + - make sure a DEBUG trap doesn't overwrite a command string passed to + make_child in execute_simple_command -subst.c - - fixed a case in expand_word_internal where a NULL pointer could - have been passed to free() (though free() should ignore it) - - fixed a case at the end of expand_word_internal where LIST could - have been used uninitialized (it makes gcc happy, though it - doesn't happen in practice) +bashline.c + - rearrange some code in bash_quote_filename so filenames with leading + tildes containing spaces aren't tilde-expanded before being + returned to the caller -test.c - - give test_syntax_error(), beyond(), and integer_expected_error() - the `__noreturn__' attribute for gcc + 11/6 + ---- +lib/readline/display.c + - when deciding where to move the cursor in rl_redisplay and needing + to move the cursor back after moving it vertically and compensate + for invisible characters in the prompt string, make sure that + _rl_last_c_pos is treated as an absolute cursor position in a + multibyte locale and the wrap offset (number of invisible characters) + is added explicitly when deciding how many characters to backspace -unwind_prot.c - - in clear_unwind_protect_list(), convert `flags' to `long' (via - assignment to a `long' variable) before casting to `char *', in - case pointers and longs are 64 bits and ints are 32 (makes no - difference on 32-bit machines) + 11/10 + ----- +lib/readline/terminal.c + - _rl_set_screen_size now interprets a lines or columns argument < 0 + as an indication not to change the current value - 10/30 + 11/11 ----- -print_cmd.c - - fixed cprintf to avoid gcc warning about assigning const pointer - to non-const (discarding type qualifier) -{make_cmd,pcomplete,test}.c,parse.y - - some minor changes to shut up gcc warnings +lib/readline/terminal.c + - new function, rl_reset_screen_size, calls _rl_get_screen_size to + reset readline's idea of the terminal size + - don't call _rl_get_screen_size in _rl_init_terminal_io if both + _rl_screenheight and _rl_screenwidth are > 0 + - don't initialize _rl_screenheight and _rl_screenwidth to 0 in + _rl_init_terminal_io; let caller take care of it + - set _rl_screenheight and _rl_screenwidth to 0 before calling + _rl_init_terminal_io -lib/sh/tmpfile.c - - fixed sh_mktmpfp to avoid file descriptor leaks in the case that - sh_mktmpfd succeeds but fdopen fails for some reason - - change sh_mktmpfd to use the same scheme for computing `filenum' - as sh_mktmpname - - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined - - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to - `nameroot' if `nameroot == 0' (duh) - - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined - - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined - -support/{fixlinks,mkclone} - - use mktemp if it's available for the symlink test - - use $TMPDIR instead of hardcoding /tmp; default to /tmp - - use a better filename for the symlink test instead of `z' - -support/bashbug.sh - - more changes inspired by a patch from solar designer - -lib/malloc/Makefile.in - - new target `alloca', which builds libmalloc.a with alloca.o only - (for systems without alloca that are configured --without-bash-malloc) +lib/readline/readline.h + - new extern declaration for rl_reset_screen_size -configure.in - - if we don't have a working alloca and are not configured to build - the bash malloc library, make a malloc library containing only - alloca.o +lib/readline/doc/rltech.texi + - documented rl_reset_screen_size -aclocal.m4 - - slight change to RL_LIB_READLINE_VERSION to deal with minor version - numbers with a letter appended (like 4.2a) +variables.c + - if readline is being used, compile in a special var function for + assignments to LINES and COLUMNS that calls rl_set_screen_size or + rl_reset_screen_size as appropriate. Only do this in posix mode + and only when STRICT_POSIX is defined at compile time + - new semaphore variable, winsize_assignment, set while doing an + assignment to LINES or COLUMNS + - new variable, winsize_assigned, says LINES or COLUMNS was assigned + to or found in the environment + - if in the middle of an assignment to LINES or COLUMNS, make + sh_set_lines_and_columns a no-op - 10/31 - ----- -doc/{bash.1,bashref.texi} - - slight change to note that only interactive shells resend a SIGHUP - to all jobs before exiting +lib/sh/winsize.c + - get_new_window_size now takes two int * arguments, to return the + screen dimensions externs.h - - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined. This - keeps picky compilers from choking because intmax_t is not defined - (MacOS X 10.1) - -builtins/printf.def - - #define NEED_STRTOIMAX_DECL before including shell.h + - change extern declaration for get_new_window_size - 11/1 - ---- -general.c - - check in bash_tilde_expand() for an unquoted tilde-prefix; don't - bother passing the string to tilde_expand unless the prefix is - unquoted +{jobs,nojobs}.c, parse.y + - change callers of get_new_window_size -shell.c - - fix a problem with $LINENO when executing commands supplied with - the -c invocation option when ONESHOT is defined - -[bash-2.05a-rc1 frozen] - -builtins/printf.def - - fix the %n conversion to require that the variable name supplied - be a valid shell identifier - -variables.c - - improve random number generator slightly by using the upper 16 - bits of the running random number instead of the lower 16, which - are incrementally more random - - 11/2 - ---- -configure.in - - if RL_INCLUDEDIR ends up being /usr/include, don't put - -I$(RL_INCLUDEDIR) into CFLAGS - - 11/5 - ---- -doc/{bash.1,bashref.texi} - - correct description of POSIXLY_CORRECT to note that the shell enters - posix mode *before* the startup files are read if POSIXLY_CORRECT - is in the initial environment + 11/12 + ----- +lib/readline/terminal.c + - new variable, rl_prefer_env_winsize, gives LINES and COLUMNS + precedence over values from the kernel when computing window size -variables.c - - fix function prologues for init_dirstack_var and init_groups_var - to agree with caller (no arguments) +lib/readline/readline.h + - extern declaration for rl_prefer_env_winsize -jobs.c - - fix forward function declarations for pipe_read and pipe_close +lib/readline/doc/rltech.texi + - document rl_prefer_env_winsize -subst.c - - removed `inline' attribute from skip_double_quoted because it can - potentially be called recursively + 11/13 + ----- +lib/readline/rltty.c + - change rl_prep_terminal to make sure we set and reset the tty + special characters in the vi insertion keymap if in vi mode. This + matters if we get accept-line for the previous line while in vi + command mode -bashline.c - - quick fix to bashline.c:attempt_shell_completion programmable - completion code to just punt if the end of the command word found - by find_cmd_end is <= the start found by find_cmd_start (the bug - is probably in find_cmd_start -- fix later) + 11/14 + ----- +builtins/pushd.def + - make sure any call to cd_builtin includes a leading `--' from the + argument list (or constructs one) + 11/16 + ----- pcomplete.c - - fix gen_matches_from_itemlist to return if the stringlist is null - after any cleaning or initialization, before trying to use it - - fix GEN_COMPS to only bother to try to append the STRINGLIST - returned by gen_matches_from_itemlist to `glist' if it's non-NULL - -lib/sh/stringlist.c - - make copy_stringlist return NULL if the STRINGLIST * passed as an - argument is NULL - - make append_stringlist call copy_stringlist only if M2 is non-NULL; - otherwise just return NULL if m1 is NULL - - make word_list_to_stringlist return 0 immediately if the passed - LIST argument is NULL - - make realloc_stringlist call alloc_stringlist if the passed - STRINGLIST argument (`sl') is 0, just like realloc calls malloc + - fix small memory leak in gen_wordlist_matches -subst.c - - in skip_to_delim(), if we have an unclosed ${, and it's at the end - of the string (string[i] == '{', string[i+1] == '{' and - string[i+2] == 0, return si (i + 2) immediately without bothering - to call extract_dollar_brace_string or extract_delimited_string - - in skip_to_delim(), if string[i] is 0 after a call to - extract_dollar_brace_string or extract_delimited_string (meaning we - have an unclosed ${ or other expansion, return i immediately without - doing a `continue' (which will increment i past the end of string) - - in split_at_delims, don't increment te by 1 if it's pointing to a - delimiter. this has the effect of skipping the first delimiter - char in a possibly multi-character delimiter, and ignoring - single-char delimiters like `>' +[bash-3.1-rc2 frozen] -configure.in - - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to - AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test - fails + 11/21 + ----- +[bash-3.1-rc2 released] -general.c - - introduce two new variables: bash_tilde_{prefixes,suffixes}, set - to the additional prefixes and suffixes bash wants to pass to the - tilde expansion code (reserved for post-bash-2.05a fix) + 11/23 + ----- +lib/readline/display.c + - changes to rl_redisplay to compensate for update_line updating + _rl_last_c_pos without taking invisible characters in the line into + account. Important in multibyte locales where _rl_last_c_pos is an + absolute cursor position + - changes to _rl_move_cursor_relative to account for _rl_last_c_pos + being an absolute cursor position in a multibyte character locale + - rewrote _rl_move_cursor_relative to make it a little simpler -aclocal.m4 - - add missing `test' in BASH_CHECK_SYS_SIGLIST + 11/29 + ----- +lib/readline/display.c + - changes to rl_redisplay and update_line for update_line to communicate + upward that it took the number of invisible characters on the current + line into account when modifying _rl_last_c_pos + - in update_line, adjust _rl_last_c_pos by wrap_offset before calling + _rl_move_cursor_relative, so we pass correct information about the + true cursor position - 11/7 + 12/1 ---- -lib/readline/vi_mode.c - - fix rl_vi_goto_mark to explicitly check that the desired mark is - between 'a' and 'z', since some locales have lowercase letters - outside that range, which could cause a negative subscript - -include/chartypes.h - - remove superfluous `#undef ISASCII' +configure.in + - changed release status to `release' -lib/sh/strto[iu]max.c - - changes from Paul Eggert to work around buggy compilers and catch - configuration errors at compile time +[bash-3.1 frozen] -aclocal.m4 - - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but - with a fix for Irix 5.3 (not called, since I'm not sure it's the - right thing to do -- the C standard allows double and long double - to be the same size) + 12/8 + ---- +[bash-3.1 released] -lib/sh/snprintf.c - - only try to write the trailing NUL in vsnprintf_internal if - data->length is >= 0, since if it's not, we probably don't have - a buffer + 12/9 + ---- +doc/{bash.1,version.texi},lib/readline/doc/version.texi + - remove `beta1' from man page footer and texinfo documents -Makefile.in - - changed RELSTATUS to `release' +variables.c + - make sure winsize_assignment is protected by #ifdef READLINE, so + minimal shell will compile - 11/8 - ---- -lib/sh/strtol.c - - make sure chars passed to toupper are cast to unsigned +builtins/read.def + - make sure error cases free memory and run any unwind-protects to + avoid memory leaks -unwind_prot.c - - change clear_unwind_protect_list to not require a cast from `int' - to `char *' + 12/10 + ----- +execute_cmd.c + - change execute_command_internal to set $PIPESTATUS for ((...)) and + [[ ... ]] commands -lib/readline/chardefs.h - - make _rl_digit_p succeed only for ascii digits, since that's what - most callers assume +doc/{bash.1,bashref.texi,version.texi} + - add documentation for ulimit -[iqx] and bump revision date - 11/13 + 12/12 ----- -doc/bashref.texi - - added `ERR' trap and [-+]O invocation option to section listing - differences from the Bourne shell +parse.y + - make sure parse_compound_assignment saves and restores the + PST_ASSIGNOK parser state flag around its calls to read_token. + Fixes bug reported by Mike Frysinger - 11/15 + 12/13 ----- -[bash-2.05a released] +parse.y + - change parse_compound_assignment to save and restore the value of + last_read_token. Not sure why it was set unconditionally in the + first place after parsing the complete compound assignment - 11/19 + 12/14 ----- -include/stdc.h - - new define, INLINE, defined as `inline' for gcc and empty otherwise +lib/readline/text.c + - don't use return value of rl_kill_text (which always succeeds and + returns the number of characters killed) in rl_delete as an indication + of success or failure + - ditto for return value of rl_delete_text -subst.c - - make skip_double_quoted, sub_append_string have INLINE attribute +lib/readline/readline.c + - don't return the value of the called readline function as the return + value from _rl_dispatch_subseq; -1 means something different to the + callers (return 0 all the time to indicate that a readline function + was found and dispatched). Fix from Andreas Schwab for + bug in callback interface first reported by Mike Frysinger -trap.c - - use BASH_NSIG as upper limit for signal names in signal_name() +execute_cmd.c + - fixed a typo in execute_case_command -lib/readline/bind.c - - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value + 12/15 + ----- +aclocal.m4 + - add check for wctype() to BASH_CHECK_MULTIBYTE, define HAVE_WCTYPE -error.c - - fix sys_error to save value of errno around calls to fprintf +config.h.in + - add HAVE_WCTYPE #define -doc/Makefile.in - - added rules to create PDF files from postscript and dvi input +config-bot.h + - add HAVE_WCTYPE to the set of checks for HANDLE_MULTIBYTE. This + should catch the deficient NetBSD multibyte support -MANIFEST.doc - - added {article,bash,bashref,rose94}.pdf + 12/16 + ----- +parse.y + - use CTLESC instead of literal '\001' when decode_prompt_string + prefixes RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE -doc/bash.1 - - rearranged some `.PD 0' and `.TP' directives so man2html will - handle them better (shouldn't affect groff output) + 12/20 + ----- +lib/readline/display.c + - don't treat RL_PROMPT_START_IGNORE specially inside a sequence of + ignored characters + - keep track of the start of the current sequence of ignored + characters; make sure that an empty sequence of such characters + really is an empty sequence, not one that happens to end with '\001' + (RL_PROMPT_START_IGNORE) -support/man2html.c - - small fix to handle quoted string arguments to directives like - `.BR' without mangling the output + 12/21 + ----- +subst.c + - change expand_word_internal to process rest of `tilde-word' as a + regular part of the word if tilde expansion leaves the tilde-word + unchanged. This means that ~$USER expands to ~chet, which seems + more intuitive, and is effectively what bash-3.0 did - 11/20 + 12/23 ----- -{arrayfunc,variables}.c - - changed calling sequence for dynamic array variable `assign' - functions to (SHELL_VAR *self, char *value, arrayind_t ind) - - changed calling sequence for dynamic variable assign functions - to the same as array variable assign_func. Now this can be - prototyped +subst.c + - when making a local array variable in do_compound_assignment, make + sure that we don't use a variable of the same name from a previous + context -variables.h - - the assign_func member of a `struct variable' is now of type - `sh_var_assign_func_t', which is prototyped - - the dynamic_value member of a `struct variable' is now of type - `sh_var_value_func_t', which is prototyped +doc/bash.1 + - documented expansions for word and patterns in case statement -variables.c - - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t' +builtins/ulimit.def,doc/{bashref.texi,bash.1} + - added new -e and -r (nice and rtprio) options to ulimit; documented + them -builtins/cd.def - - when in posix mode, if the new directory name formed by PWD and - the argument passed by the user cannot be canonicalized, and the - -P option has not been supplied, return failure immediately - - if canonicalization failed, but the fallback to the directory - name specified by the user succeeds, reset the current working - directory + 12/26 + ----- +variables.c + - use `hmax' instead of `num' in sv_histsize to avoid integer overflow + problems with intmax_t -lib/readline/{input.c,rlprivate.h} - - renamed rl_unget_char to _rl_unget_char; made library global +builtins/read.def + - add unwind-protect to restore rl_attempted_completion_function in + case of a timeout -lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h} - - support for `key subsequences'; allows a key sequence and a function - mapped to a subsequence of that key sequence. Primarily to allow - arrow keys to be bound in readline vi insert mode, while preserving - the ESC function to switch to command mode. +{bashline,variables}.c + - move initialization of HISTSIZE from initialization path to + load_history, so it can be overridden by a value assigned in a + startup file -lib/readline/{input.c,rlprivate.h} - - new function, _rl_input_queued(T), does a check with select or - FIONREAD with a timeout of `T' (which is generally 0) +lib/readline/misc.c + - add a missing `return r' so that rl_digit_loop returns a meaningful + value -lib/readline/readline.c - - change _rl_dispatch_subseq to test for input in the queue if we - get ESC while in vi insertion mode if the keymap entry type for - ESC is ISKMAP. If _rl_input_queued returns non-zero, we assume - that an arrow key sequence has been pressed and go ahead with the - subsequence. If it returns zero, we assume that the user pressed - ESC to switch into command mode, and dispatch to that right away. - This avoids forcing the user to press another key before switching - into command mode +lib/readline/{bind,callback,display,isearch,rltty,search,text,vi_mode}.c + - minor cleanups to satisfy compiler warnings, mostly removing unused + variables - 11/21 + 12/27 ----- -lib/readline/readline.c - - bind common arrow key sequences in vi insertion keymap +support/Makefile.in + - add LIBS_FOR_BUILD support; defaults to ${LIBS} -lib/readline/terminal.c - - bind termcap definition's arrow keys in vi insertion keymap +Makefile.in + - add LIBS_FOR_BUILD with no default value; use when linking programs + using CC_FOR_BUILD (e.g., bashversion) + 12/28 + ----- lib/readline/bind.c - - check for rl_vi_movement_mode in _rl_bind_if_unbound, so - binding the arrow keys can work - -lib/readline/readline.c - - since _rl_bind_if_unbound does the check of what's currently - bound to the key sequence, the check in bind_arrow_keys_internal - was redundant - - bind_arrow_keys_internal now takes a Keymap argument and handles - saving and restoring _rl_keymap; changed bind_arrow_keys - accordingly - -builtins/fc.def - - fix from Paul Eggert to substitute the nearest history number in - range if an out-of-range value is supplied. POSIX requires this - -lib/sh/pathcanon.c - - fix from Corrina Vinschen for the special `cygdrive' prefix on - Cygwin + - fix rl_translate_keyseq bad translation of \M-\C-x sequences -bashhist.c - - split the history adding code into more pieces: - check_history_control (char *line) checks LINE against the value - of HISTCONTROL, returning 1 if LINE should be saved and 0 if not +execute_cmd.c + - in execute_arith_command, if the expression expands to more than one + word, make sure we join the words into a single string and pass the + entire thing to evalexp() - check_add_history (char *line) calls check_history_control and - history_should_ignore (line) and saves the line with - bash_add_history if the checks indicate that it should be saved +expr.c + - new functions: _is_arithop(c), returns true if C is a valid single- + character arithmetic operator; _is_multiop(c), returns true if C is + a token corresponding to a valid multi-character arithmetic operator + - if we encounter a character that isn't a valid arithmetic + operator, throw an error. Try to be intelligent about what type of + error message to print - maybe_add_history just calls check_add_history to set the value - of first_line_saved +subst.c + - new function, expand_arith_string, calls expand_string_if_necessary; + used where an arithmetic expression needs to be expanded -bashhist.h - - extern declaration for check_add_history() +subst.h + - new extern declaration for expand_arith_string -shell.c - - don't call load_history() from the interactive shell startup - code if history_lines_this_session is > 0, indicating that we've - already saved some lines in the history and that we probably - don't want to overwrite them +arrayfunc.c + - in array_expand_index, call expand_arith_string to expand the + subscript in a fashion consistent with other arithmetic expressions -builtins/history.def - - call check_add_history from push_history, so `history -s xx' - works even when in a compound command whose first line has not - been saved. (Caveat: in a compound command when the first - line has been saved, the line supplied to history -s will become - part of the compound command's history entry. Of course, the - delete_history call could remove the compound command from the - history entirely) +subst.c + - fix parameter_brace_patsub so that we don't try to anchor the pattern + at the beginning or end of the string if we're doing global + replacement -- that combination doesn't doesn't make sense, and + the changed behavior is compatible with ksh93 -bashline.c - - use sh_makepath instead of xmalloc/sprintf in - command_word_completion_function +doc/{bash.1,bashref.texi} + - changed description of pattern substitution to match the new + semantics -lib/readline/complete.c - - get_y_or_n now takes an int FOR_PAGER argument; caller changed - If FOR_PAGER is non-zero, get_y_or_n returns appropriate values - for a more-like pager: `newline' or `return' return 2; `q' or - `Q' return 0 - - there is now a mini internal more-like pager for displaying a - list of completions that exceeds the screen height (new function - _rl_internal_pager, called from rl_display_match_list) +tests/new-exp.tests + - change tests to remove all ${pat//#rep} and ${pat//%rep} + expansions, since they don't mean the same thing anymore - 11/24 + 12/29 ----- -command.h - - new flag, W_TILDEEXP, says to do tilde expansion on an - assignment word - -execute_cmd.c - - fix_assignment_words now sets W_TILDEEXP for assignment word - arguments to `assignment builtins' - -general.c - - bash_tilde_expand now takes a second argument indicating whether - or not it's being invoked in an `assignment context' +support/signames.c + - new file, initialize_signames() function from old mksignames.c. This + file builds the signal_names array -general.h - - change extern declaration for bash_tilde_expand +support/mksignames.c + - strip out initialize_signames(), move to signames.c. This file only + writes signames.h + - set up to only write a stub signames.h if CROSS_COMPILING is defined, + with extern declaration for initialize_signames + - if not cross compiling, #define initialize_signames to nothing -{bashline,execute_cmd,findcmd,general,variables}.c -builtins/evalfile.c -lib/sh/makepath.c - - fix callers of bash_tilde_expand appropriately +Makefile.in + - mksignames is now linked from mksignames.o and buildsignames.o + - add rules to build signames.o, assuming we're building it as part + of the shell (cross-compiling) -subst.c - - fix callers of bash_tilde_expansion appropriately - - add (currently commented-out) code that would tilde expand assignment - statement arguments to assignment builtins (W_TILDEEXP flag set) - even when the shell is in posix mode +trap.c + - call initialize_signames from initialize_traps -bashline.c - - fix attempt_shell_completion to turn off - rl_filename_completion_desired when doing command name completion, - so no slash gets appended to the name if there happens to be a - directory with the same name in the current directory +configure.in + - set SIGNAMES_O to nothing (normal) or signames.o (cross-compiling), + substitute into Makefile + - don't set SIGNAMES_H if cross-compiling any more - 11/26 + 12/30 ----- -lib/readline/rltech.texinfo - - a couple of additions to the rl_stuff_char description +command.h + - new word flag: W_NOPROCSUB, inhibits process substitution on a word -parse.y - - turn off echo_input_at_read in parse_string_to_word_list, so `set -v' - doesn't give extra lines of output when doing compound array - assignment +subst.c + - change expand_word_internal to suppress process substitution if the + word has the W_NOPROCSUB flag + +shell.c + - --wordexp turns on W_NOPROCSUB in addition to W_NOCOMSUB subst.c - - fix split_at_delims to handle skipping over a `\n' if it's a - delimiter (use spctabnl(c) instead of whitespace(c)) + - change string_list_dollar_at and string_list_dollar_star so that + MB_CUR_MAX is used to size an array only when using gcc, since gcc + can handle non-constant array sizes using a mechanism like alloca. + Other compilers, e.g. Sun's compiler, do not implement that + extension - 11/27 + 12/31 ----- -support/config.{guess,sub} - - updated (with bash changes) to latest version from gnu.org +builtins/mkbuiltins.c + - when cross-compiling, don't include , since it's for the + target rather than the host system. Instead, choose a reasonable + set of default #defines based on a minimal POSIX system -sig.h - - add prototype for set_signal_handler declaration +jobs.c + - change find_process to handle a NULL return value from find_pipeline + - return immediately from delete_job if jobs[index] is already NULL or + if it has a null pipeline associated with it + - in delete_job, if find_last_proc returns NULL, don't try to call + bgp_delete -builtins/setattr.def - - add prototype to extern declaration of declare_builtin + 1/7/2006 + -------- +doc/bash.1 + - patch from Tim Waugh to replace some literal single quotes with + \(aq, the groff special character for it -builtins/times.def - - add no_options call, since times takes no options +jobs.c + - in realloc_jobs_list, make sure to zero out slots after j_lastj + in the new list -lib/sh/spell.c - - add prototypes to forward declarations for midist and spdist + 1/9 + --- +support/mksignames.c + - make sure to include to get right value of NSIG from + (usually) -lib/sh/strtrans.c - - add explicit int return type to ansic_shouldquote declaration + 1/10 + ---- +parse.y + - when calling parse_matched_pair on a $(...) command substitution, + don't pass the P_DQUOTE flag so that single quotes don't get + stripped from $'...' inside the command substitution. Bug report + and fix from Mike Stroyan -lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c - - move define for SWAP to rldefs.h, removed from various C files +jobs.c + - start maintaining true count of living children in js.c_living + - call reset_current in realloc_jobs_list, since old values for current + and previous job are most likely incorrect + - don't allocate a new list in realloc_jobs_list if the old size and + new size are the same; just compact the existing list + - make sure realloc_jobs_list updates value of js.j_njobs + - add some more itrace messages about non-null jobs after j_lastj in + jobs array -lib/readline/vi_mode.c - - removed define for exchange(), changed to use SWAP instead + 1/11 + ---- +bashjmp.h + - new value for second argument to longjmp: SIGEXIT. Reserved for + future use -lib/readline/bind.c - - added some static forward function declarations - - find_boolean_var, find_string_var now take a `const char *' argument + 1/12 + ---- +jobs.c + - add logic to make_child to figure out when pids wrap around + - turn second argument to delete_job into flags word, added flag to + prevent adding proc to bgpids list -lib/readline/signals.c - - added static forward declaration for rl_maybe_set_sighandler + 1/13 + ---- +lib/readline/vi_mode.c + - move code that moves forward a character out of rl_vi_append_mode + into a separate function, _rl_vi_append_forward + - change _rl_vi_append_mode to save `a' as the last command, so it + can be redone properly + - new function _rl_vi_backup, moves point back a character taking + multibyte locales into account + - change rl_vi_redo to handle redoing an `a' command specially -- + it should be redone like `i' but after moving forward a character + - change rl_vi_redo to use _rl_vi_backup to move point backward + after redoing `i' or `a' -lib/readline/readline.c - - add some common key bindings for the HOME and END keys in - bind_arrow_keys_internal +jobs.c + - new function, delete_old_job (pid), checks whether or not PID is in + a job in the jobs list. If so, and the job is dead, it just removes + the job from the list. If so, and the job is not dead, it zeros + the pid in the appropriate PROCESS so pid aliasing doesn't occur + - make_child calls delete_old_job to potentially remove an already-used + instance of the pid just forked from the jobs list if pids have + wrapped around. Finally fixes the bug reported by Tim Waugh + -lib/readline/terminal.c - - fetch the `@7' termcap string; it's sent by the END key - - attempt to bind the terminal's END key to rl_end_of_line in - bind_termcap_arrow_keys; I don't know why I was using `kH' - instead of `@7' +trap.c + - new define, GETORIGSIG(sig), gets the original handling for SIG and + sets SIG_HARD_IGNORE if that handler is SIG_IGN + - call GETORIGSIG from initialize_traps, get_original_signal, and + set_signal -doc/builtins.1 - - remove `case', `for', `if', `until', `while' from NAME section; - those are not shell builtins +jobs.c + - in wait_for, if the original SIGINT handler is SIG_IGN, don't set + the handler to wait_sigint_handler. This keeps scripts started in + the background (and ignoring SIGINT) from dying due to SIGINT while + they're waiting for a child to exit. Bug reported by Ingemar + Nilsson - 11/28 - ----- -stringlib.c - - new function, find_token_in_alist, takes a token value and an - ALIST argument, and returns the string correspoinding to the - token if found in the alist +lib/readline/vi_mode.c + - don't save text to buffer unless undo pointer points to a record of + type UNDO_INSERT; zero it out instead. This fixes bug reported by + Craig Turner with redoing `ctd[ESC]' (empty + insert after change to) -externs.h - - new extern declaration for find_token_in_alist() +shell.c + - change set_shell_name so invocations like "-/bin/bash" are marked as + login shells -subst.c - - string_list_internal is no longer static +doc/bash.1 + - add note about destroying functions with `unset -f' to the section + on shell functions -subst.h - - new extern declaration for string_list_internal() +lib/readline/terminal.c + - if readline hasn't been initialized (_rl_term_autowrap == -1, the + value it's now initialized with), call _rl_init_terminal_io from + _rl_set_screen_size before deciding whether or not to decrement + _rl_screenwidth. Fixes bug from Mike Frysinger -parse.y - - new alist array of other tokens returned by read_token which are - not reserved words in word_token_alist[] - - reworked error reporting: new functions print_offending_line, - which prints the line containing the syntax error, - error_token_from_token, which takes the current token and tries to - figure out its textual representation, and error_token_from_text, - which does the old job of finding the bad token by analyzing the - text of shell_input_line at the current index - - report_syntax_error now tries to figure out the token that caused - the syntax error by first looking at current_token and falling - back to the old method of textual analysis if that fails - - report_syntax_error doesn't say the token resulting from the textual - analysis of the input line is an `unexpected token'; it just - says there is a `syntax error near xxx' - - changed conditional command error reporting to use the value - returned by error_token_from_token if it's not null instead of - just using the token value in the message, since current_token - ends up being set to -1, and the text of the message from - report_syntax_error might not be exactly right - - change parse_string_to_word_list to set current_token to the - offending token returned by read_token before calling yyerror() - to make the error reporting do the right thing + 1/14 + ---- +lib/readline/input.c + - allow rl_set_keyboard_input_timeout to set the timeout to 0, for + applications that want to use select() like a poll without any + waiting -aclocal.m4 - - fixed typo in BASH_CHECK_LIB_TERMCAP +lib/readline/doc/rltech.texi + - documented valid values for timeout in rl_set_keyboard_input_timeout -configure.in - - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found +jobs.c + - in stop_pipeline, don't have the parent shell call give_terminal_to + if subshell_environment contains SUBSHELL_ASYNC (no background + process should ever give the terminal to anything other than + shell_pgrp) + - in make_child, don't give the terminal away if subshell_environment + contains SUBSHELL_ASYNC -config.h.in - - add define for HAVE_ISINF_IN_LIBC + 1/15 + ---- +subst.c + - in parameter_brace_expand, if extracting ${#varname}, only allow + `}' to end the expansion, since none of the other expansions are + valid. Fixes Debian bug reported by Jan Nordhorlz -lib/sh/snprintf.c - - check for Inf and NaN, using isinf and isnan if they're found in - libc - - use the current locale for thousands separator and decimal point - - recognize "'" flag; not implemented yet - - fix for snprintf/vsnprintf with length of 0 and string argument of - 0 with non-zero length + 1/17 + ---- +parse.y + - in parse_matched_pair, protect all character tests with the MBTEST + macro + - in parse_dparen, take out extra make_word after call to alloc_word_desc + (mem leak) -builtins/read.def - - TMOUT is now the default timeout for `read' (and select) if set, - like ksh93 when reading from the terminal - - edit_line (called by read -e) now just does readline's filename - completion by setting rl_attempted_completion_function to NULL, - since e.g., doing command completion for the first word on the - line wasn't really useful + 1/18 + ---- +parse.y + - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive + parse_matched_pair call when encountering a single or double quote + inside a ``-style command substitution execute_cmd.c - - changed select_command to return failure status if select_query - returns NULL, indicating that read_builtin returned - EXECUTION_FAILURE - -doc/{bash.1,bashref.texi} - - documented new TMOUT behavior - - slight change to the description of the test `-ef' option + - add call to QUIT at beginning of execute_command_internal; better + responsiveness to SIGINT -doc/bashref.texi - - added item to posix mode section describing failure behavior of - cd when invoked in logical mode and the pathname formed by - combining $PWD and the directory argument does not refer to an - existing directory + 1/21 + ---- +lib/readline/bind.c + - change rl_invoking_keyseqs_in_map to honor the setting of + convert-meta when listing key bindings, since if convert-meta is off, + using '\M-' as the prefix for bindings in, for instance, + emacs-escape-keymap, is wrong. This affects `bind -p' output + - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for + ESC - 11/29 - ----- execute_cmd.c - - fix execute_function to call dispose_function_env after - merge_function_env if the shell is in posix mode (fixes debian - bash bug #117673) - -lib/readline/readline.c - - rl_forward -> rl_forward_char; rl_forward function for compatibility - - rl_backward -> rl_backward_char; rl_forward function for - compatibility - - new functions, rl_forward_byte, rl_backward_byte, for future use - -lib/readline/readline.h - - extern declarations for rl_forward_char, rl_backward_char, - rl_forward_byte, rl_backward_byte - -lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode - - rl_forward -> rl_forward_char - - rl_backward -> rl_backward_char + - add call to QUIT at end of execute_command -lib/readline/funmap.c - - new bindable names, `backward-byte' and `forward-byte' + 1/23 + ---- +lib/readline/display.c + - changed two places in update_line where a check of whether the cursor + is before the last invisible character in the prompt string to + differentiate between the multibyte character case (where + _rl_last_c_pos is a physical cursor position) and the single-byte + case (where it is a buffer index). This prevents many unnecessary + \r-redraw the line sequences. Reported by Dan Jacobson. -aclocal.m4 - - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for - multibyte code + 1/24 + ---- +quit.h + - wrap QUIT macro in do...while(0) like other compound statement + macros + - CHECK_TERMSIG define (placeholder for now); future use will be to + handle any received signals that should cause the shell to + terminate (e.g., SIGHUP) -config.h.in - - add necessary defines for multibyte include files and functions +{input,jobs,nojobs}.c + - add calls to CHECK_TERMSIG where appropriate (reading input and + waiting for children) + - include quit.h if necessary -configure.in - - add call to BASH_CHECK_MULTIBYTE + 1/25 + ---- +parse.y + - undo change that makes `)' in a compound assignment delimit a token. + It messes up arithmetic expressions in assignments to `let', among + other things -config-bot.h - - add code to define HANDLE_MULTIBYTE if prerequisites are met +sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def + - rename termination_unwind_protect to termsig_sighandler -lib/sh/xstrchr.c - - new file, xstrchr() is strchr(3) that handles multibyte characters +sig.c + - split termsig_sighandler into two functions: termsig_sighandler, which + runs as a signal handler and sets a flag noting that a terminating + signal was received, and termsig_handler, which runs when it is `safe' + to handle the signal and exit + - new terminate_immediately variable, similar to interrupt_immediately + - termsig_sighandler calls termsig_handler immediately if + terminate_immediately is non-zero -bashhist.c - - first_line_saved -> current_command_first_line_saved; variable is - now global +quit.h + - change CHECK_TERMSIG macro to check terminating_signal and call + termsig_handler if it's non-zero + - add same check of terminating_signal and call to termsig_handler to + QUIT macro -bashhist.h - - extern declaration for current_command_first_line_saved +{jobs,nojobs}.c + - change call to termsig_sighandler to call termsig_handler directly, + as was intended - 11/30 - ----- -bashhist.c - - break the code that actually calls add_history out of - bash_add_history into a new function, really_add_history; - bash_add_history now calls really_add_history - - check_add_history takes a second `force' argument telling it - whether to call bash_add_history (force == 0) or really_add_history - (force != 0) +parse.y,builtins/read.def + - set terminate_immediately to non-zero value when reading interactive + input, as is done with interrupt_immediately -builtins/history.def - - in push_history, call delete_last_history if the current command - has more than one line, the first line was saved, and - command-oriented history is active. This takes care of deleting - the right history element if `history -s' is used within a - compound or multiline command - - in push_history, call check_add_history with second argument of 1 - to skip check of current_command_line_count and add the arguments - to history -s as a single separate history entry + 1/26 + ---- +doc/{bash.1,bashref.texi} + - reworded the POSIX standard references to remove mention of POSIX.2 + or 1003.2 -- it's all the 1003.1 standard now. Recommended by + Arnold Robbins - 12/3 + 1/27 ---- lib/readline/complete.c - - append a slash to completed names which are symlinks to directories - if the new variable _rl_complete_mark_symlink_dirs is non-zero - -lib/readline/rlprivate.h - - extern declaration for _rl_complete_mark_symlink_dirs + - move call to filename dequoting function into + rl_filename_completion_function; call only if directory completion + hook isn't set. This means that directory-completion-hook now needs + to dequote the directory name. We don't want to dequote the directory + name before calling the directory-completion-hook. Bug reported by + Andrew Parker -lib/readline/bind.c - - new bindable variable, `mark-symlinked-directories', mirrors the - value of _rl_complete_mark_symlink_dirs +bashline.c + - add necessary directory name dequoting to bash_directory_expansion + and bash_directory_completion_hook -doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo} - - documented new `mark-symlinked-directories' variable +lib/readline/doc/rltech.texi + - add note to description of rl_directory_completion_hook that it + needs to dequote the directory name even if no other expansions are + performed - 12/4 + 1/28 ---- -variables.[ch] - - set_pipestatus_array now takes a second argument with the number - of processes in the array - - changed set_pipestatus_array to just modify the value in place if - the existing array has one element and the new array has one - element, and to modify existing values in place if new array has - more elements than existing array +braces.c + - make sure that we skip over braces that don't start a valid matched + brace expansion construct in brace_expand -- there might be a valid + brace expansion after the unmatched `{' later in the string + - brace_gobbler now checks that when looking for a `}' to end a brace + expansion word, there is an unquoted `,' or `..' that's not inside + another pair of braces. Fixes the a{b{c,d}e}f problem reported by + Tim Waugh -variables.c, jobs.c - - changed set_pipestatus_array callers +builtins/declare.def + - when not in posix mode, and operating on shell functions, typeset + and declare do not require their variable operands to be valid + shell identifiers. The other `attribute' builtins work this way. + Fixes inconsistency reported by Mike Frysinger -jobs.c - - moved call to setjstatus() from set_job_status_and_cleanup to - wait_for, since set_job_status_and_cleanup is part of the SIGCHLD - signal handler call path, and race conditions accessing the - PIPESTATUS array will result for things like +{configure,config.h}.in + - add test for setregid, define HAVE_SETREGID and HAVE_DECL_SETREGID + as appropriate + - add test for eaccess, define HAVE_EACCESS if found - while true; do date; done | cat > /dev/null +lib/sh/eaccess.c + - new file, with sh_stat and sh_eaccess functions, moved from test.c + - renamed old sh_eaccess as sh_stataccess, since it uses the stat(2) + information to determine file accessibility + - new function, sh_euidaccess, to call when uid != euid or gid != egid; + temporarily swaps uid/euid and gid/egid around call to access + - rewrote sh_eaccess to call eaccess, access, sh_euidaccess or + sh_stataccess as appropriate. access(2) will take into account + things like ACLs, read-only file systems, file flags, and so on. - 12/5 - ---- -xmalloc.h - - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS - is #defined +lib/sh/Makefile.in,Makefile.in + - add necessary entries for eaccess.[co] -config.h.in - - #undef for DISABLE_MALLOC_WRAPPERS +test.c + - change calls to test_stat to call sh_stat -configure.in - - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is - supplied +{test,general}.c + - change calls to test_eaccess to call sh_eaccess -lib/malloc/trace.c - - new function, malloc_trace_bin(N), traces allocations and frees - to bucket N (uses the same type of bitmap as `busy') +externs.h + - new extern declaration for sh_eaccess -lib/malloc/table.c - - fix wraparound search problem in find_entry when searching for a - free entry when the table is full +test.[ch] + - remove test_stat and test_eaccess - 12/6 + 1/29 ---- -lib/malloc/table.c - - keep an `overflow bucket' around to use when the table is full, - so find_entry always returns a valid pointer when FIND_ALLOC - is set - - new static variable to keep a count of the number of MT_ALLOC - entries in the mem_table +braces.c + - make change from 1/28 dependant on CSH_BRACE_COMPAT not being + defined (since old bash behavior is what csh does, defining + CSH_BRACE_COMPAT will produce old bash behavior) -lib/sh/{oslib,clktck}.c - - if HAVE_LIMITS_H is defined, include + 1/30 + ---- +bashline.c + - last argument of bash_default_completion is now a flags word: + DEFCOMP_CMDPOS (in command position) is only current value + - attempt_shell_completion now computes flags before calling + bash_default_completion + - if no_empty_command_completion is set, bash does not attempt command + word completion even if not at the beginning of the line, as long + as the word to be completed is empty and start == end (catches + beginning of line and all whitespace preceding point) -lib/sh/oslib.c - - new function, getmaxgroups() returns max number of simultaneous - groups - - new function, getmaxchild(), returns max number of simultaneous - user processes + 2/4 + --- +lib/readline/display.c + - change _rl_make_prompt_for_search to use rl_prompt and append the + search character to it, so the call to expand_prompt in rl_message + will process the non-printing characters correctly. Bug reported + by Mike Stroyan -general.c - - removed forest of #defines for getmaxgroups() + 2/5 + --- +lib/readline/display.c + - fix off-by-one error when comparing against PROMPT_ENDING_INDEX, + which caused a prompt with invisible characters to be redrawn one + extra time in a multibyte locale. Change from <= to < fixes + multibyte locale, but I added 1 to single-byte definition of + PROMPT_ENDING_INDEX (worth checking) to compensate. Bug reported + by Egmont Koblinger -externs.h - - new extern declaration for getmaxgroups() - - new extern declaration for getmaxchild() - - new extern declaration for isnetconn() + 2/8 + --- +lib/readline/terminal.c + - call _emx_get_screensize with wr, wc like ioctl code for consistency + - new function, _win_get_screensize, gets screen dimensions using + standard Windows API for mingw32 (code from Denis Pilat) + - call _win_get_screensize from _rl_get_screen_size on mingw32 -lib/sh/netconn.c,shell.c - - new file, isnetconn() from shell.c moved here +lib/readline/rlconf.h + - define SYS_INPUTRC (/etc/inputrc) as system-wide default inputrc + filename -Makefile.in, lib/sh/Makefile.in - - necessary changes for netconn.c +support/shobj-conf + - changes to make loadable builtins work on MacOS X 10.[34] -builtins/ulimit.def - - changed getmaxuprc() to just call getmaxchild() and massage the - return value appropriately +builtins/pushd.def + - changes to make it work as a loadable builtin compiled with gcc4 -{jobs,nojobs}.c - - use the value returned by getmaxchild() in - mark_dead_jobs_as_notified instead of static CHILD_MAX + 2/9 + --- +lib/readline/bind.c + - add SYS_INPUTRC as last-ditch default (if DEFAULT_INPUTRC does not + exist or can't be read) in rl_read_init_file -jobs.c - - new function, compact_jobs_list, removes some number of jobs from - the jobs table and reallocates the table, copying the jobs that - are left from the old table to the new. Compaction happens from - the beginning of the list and removes dead jobs, and we make sure - to keep the last CHILD_MAX jobs as POSIX.2 requires - - call compact_jobs_list from stop_pipeline if we're in a subshell, - there are no free jobs in the jobs table, and the jobs table is - at or above some maximum limit +lib/readline/doc/rluser.texi + - add description of /etc/inputrc as ultimate default startup file -execute_cmd.c - - change eval_arith_for_expr to set this_command_name to `((' before - calling evalexp, since it might be changed by evaluating the - loop body between evalexp calls + 2/10 + ---- +lib/readline/bind.c + - fix problem with rl_function_of_keyseq that returns a non-keymap + bound to a portion of the passed key sequence without processing + the entire thing. We can bind maps with existing non-map + functions using the ANYOTHERKEY binding code. -trap.c - - change reset_signal to turn off the SIG_TRAPPED flag for the - given signal, so shell builtins and functions running in command - substitutions don't run the signal handlers (traps are not supposed - to be inherited by command substitutions) +variables.c + - shells running in posix mode do not set $HOME, as POSIX apparently + requires -parse.y - - changed parse_string_to_word_list to turn off alias expansion - while parsing the array assignment + 2/15 + ---- +braces.c + - mkseq() now takes the increment as an argument; changed callers - 12/9 + 2/16 ---- -alias.c - - fix add_alias so that redefining an alias's value also resets the - EXPANDNEXT flag +builtins/hash.def + - print `hash table empty' message to stdout instead of stderr - 12/10 - ----- -parse.y - - new function, token_is_assignment, called to check whether the text - before `=' makes up a valid assignment token before trying to parse - a compound assignment statement - - new function, parse_compound_assignment, to parse a compound - assignment statement instead of using parse_matched_pair; handles - comments and error reporting in the parser instead of waiting until - expansion time - - changed parse_compound_assignment and parse_string_to_word_list to - allow reserved words in compound array assignments - -lib/readline/doc/rltech.texinfo - - changed the documentation for rl_callback_read_char and - rl_callback_handler_remove to say what happens to the terminal - settings and what needs to be done to reset them + 2/17 + ---- +lib/readline/readline.c + - when resetting rl_prompt in rl_set_prompt, make sure rl_display_prompt + is set when the function returns - 12/11 - ----- -bashline.c - - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode - `v' command - - add bindable command name `edit-and-execute-command', bound to - run emacs_edit_and_execute_command() + 2/18 + ---- +lib/readline/display.c + - further fixes to _rl_make_prompt_for_search from Eric Blake to deal + with multiple calls to expand_prompt -lib/glob/strmatch.c - - add support for ksh93-like [:word:] character class (isalnum + `_') + 2/21 + ---- +builtins/hash.def + - don't print `hash table empty' message in posix mode -doc/{bash.1,bashref.texi} - - add note to section describing lists to clarify that a sequence of - one or more newlines may be used to delimit a command, equivalent - to a semicolon - - document new [:word:] pattern matching character class + 2/27 + ---- +lib/glob/sm_loop.c + - change extmatch() to turn off FNM_PERIOD in flags passed to recursive + calls to gmatch() when calling it with a substring after the start + of the string it receives. Changed `+', `*', `?, `@', and `!' cases + to do the right thing. Fixes bug reported by Benoit Vila + -doc/bash.1, lib/readline/doc/rluser.texinfo - - document `edit-and-execute-command' and its default emacs-mode - binding +braces.c + - add QUIT; statements to mkseq to make large sequence generation + interruptible -include/chartypes.h - - add defines for TOCTRL and UNCTRL if they're not already defined + 2/28 + ---- +lib/glob/glob.c + - initialize nalloca in glob_vector -lib/readline/chardefs.h - - #undef UNCTRL if it's defined to avoid cpp redefinition warnings + 3/1 + --- +lib/glob/glob.c + - in glob_vector, when freeing up the linked list after some error, + make sure to set `tmplink' to 0 if `firstlink' is set to 0, else we + get multiple-free errors -lib/sh/strtrans.c - - add \cX (Control-X) escape for $'...' to ansicstr() - - change ansic_quote() to allocate at least four chars for each char - in the string argument, to account for \0xx octal values - - change ansic_quote() to no longer call sprintf for non-printable - characters; just translate the string to octal directly + 3/5 + --- +trap.c + - inheritance of the DEBUG, RETURN, and ERR traps is now dependent + only on the `functrace' and `errtrace' shell options, as the + documentation says, rather than on whether or not the shell is in + debugging mode. Reported by Philip Susi -print_cmd.c - - change xtrace_print_word_list to call ansic_quote() if - ansic_shouldquote() indicates that there are nonprinting characters - in a word +parse.y + - in parse_matched_pair, don't recursively parse ${...} or other + ${...} constructs inside `` + - in parse_matched_pair, remove special code that recursively parses + quoted strings inside `` constructs. For Bourne shell compatibility -builtins/type.def - - changed deprecated long option parsing to just replace the word - in the list with the equivalent short option (-type -> -t) instead - of removing words from the list - - changed describe_command to take a single flags argument instead - of two int args; changed caller - - type now has two new options: -f suppresses function lookup (like - command), and -P forces a PATH search for the name(s) + 3/6 + --- +builtins/pushd.def + - let get_directory_stack take take an `int flags' argument and convert + $HOME to ~ if flags&1 is non-zero builtins/common.h - - flags for describe_command are here - - changed extern declaration of describe_command - -builtins/command.def - - changed call to describe_command to use flags from common.h, and - the right number of arguments - -doc/{bash.1,bashref.texi} - - documented new -f and -P options to `type' + - change extern declaration for get_directory_stack - 12/12 - ----- -lib/readline/rldefs.h - - fixed prototype for _rl_strnicmp +variables.c + - call get_directory_stack with an arg of 0 to inhibit converting + $HOME to ~ in the result. Fixes cd ${DIRSTACK[1]} problem + reported by Len Lattanzi (cd fails because + the tildes won't be expanded after variable expansion) -execute_cmd.c - - select_query now takes a new argument, an int flag saying whether - or not to print the menu the first time through the loop. An - empty line in response to the prompt will always cause the menu - to be reprinted - - changed execute_select_command to cause select_query to reprint - the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT - is defined +jobs.c + - changed hangup_all_jobs slightly so stopped jobs marked J_NOHUP + won't get a SIGCONT -config-top.h - - define KSH_COMPATIBLE_SELECT, with a comment about its meaning +general.c + - changed check_binary_file() to check for a NUL byte instead of a + non-printable character. Might at some point want to check + entire (possibly multibyte) characters instead of just bytes. Hint + from ksh via David Korn -lib/readline/readline.c - - change rl_insert_comment to toggle if given an explicit numeric - argument: if the first characters on the line don't specify a - comment, insert one; if they do, delete the comment text - -doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo} - - documented new behavior of insert-comment with a numeric argument - - 12/13 - ----- -lib/malloc/watch.c - - new file, implements watchpoint functions - -lib/malloc/watch.h - - new file, define some `events' for watchpoints and extern function - and variable declarations for watchpoint code - -lib/malloc/imalloc.h - - #define MALLOC_WATCH if MALLOC_DEBUG is defined - - add __P define as in include/stdc.h if not already defined - -lib/malloc/malloc.c - - remove __P define, now in imalloc.h - - include watch.h if MALLOC_WATCH is defined - - added calls to _malloc_ckwatch in internal_malloc, internal_free, - and internal_realloc - -include/stdc.h - - augment __P define to allow prototypes if PROTOTYPES is defined - -lib/readline/rlstdc.h - - augment PARAMS define to allow prototypes if PROTOTYPES is defined + 3/7 + --- +builtins/reserved.def + - changed runs of spaces to tabs in variables help text to make + indentation better when displayed -lib/malloc/Makefile.in, Makefile.in - necessary changes to include watch.c in libmalloc +builtins/mkbuiltins.c + - changes to avoid the annoying extra space that keeps gettext from + being passed an empty string -lib/readline/readline.c - - fix rl_delete_text to make sure that the starting position is >= 0 - - _rl_init_line_state (called by readline via readline_initialize) - now sets rl_mark to 0 - - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at - the end of the line and rl_end otherwise in emacs mode - -lib/readline/kill.c - - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark - at point before calling rl_insert_text, like rl_yank - - rl_kill_full_line now resets rl_mark to 0 - - rl_kill_line and rl_backward_kill_line now set rl_mark to the - point after the kill in emacs mode - - rl_kill_word and rl_backward_kill_word now set rl_mark to the - point after the kill in emacs mode - - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to - the point after the kill in emacs mode + 3/9 + --- +lib/glob/glob.c + - make sure globbing is interrupted if the shell receives a terminating + signal + 3/14 + ---- lib/readline/search.c - - noninc_search saves and restores the mark, since it can be changed - while reading the search string - - noninc_dosearch sets the mark at the end of the line, making the - region bound the `inserted' text since rl_point is set to 0 - - rl_history_search_internal sets the mark at the end of the line, - for the same reason - -lib/readline/isearch.c - - rl_search_history now saves and restores the mark - - if no matching lines are found at all when doing an isearch, leave - point where it was instead of moving it to the end of the line - - 12/17 - ----- -lib/readline/rlmbutil.h - - new file, place for multi-byte character defines and extern - declarations - -lib/readline/{bind.c,readline.c,rlprivate.h} - - new bindable variable, `byte-oriented', tracks value of - rl_byte_oriented variable + - call rl_message with format argument of "%" in _rl_nsearch_init + to avoid `%' characters in the prompt string from being interpreted + as format specifiers to vsnprintf/vsprintf -lib/readline/mbutil.c - - new file, with multibyte char utility functions + 3/19 + ---- +parse.y, eval.c, input.h + - change execute_prompt_command to execute_variable_command; takes the + variable name as a new second argument -lib/readline/{complete,display,readline,util,vi_mode}.c - - new code for multibyte characters, derived from IBM patch + 3/25 + ---- +bashline.c + - command_word_completion_function keeps track of when it's searching + $PATH and doesn't return directory names as matches in that case. + Problem reported by Pascal Terjan + - command_word_completion_function returns what it's passed as a + possible match if it's the name of a directory in the current + directory (only non-absolute pathnames are so tested). - 12/18 - ----- -lib/sh/tmpfile.c - - include posixtime.h for time() extern declaration + 3/27 + ---- +subst.c + - expand_arith_string takes a new argument: quoted. Either 0 (outside + subst.c) or Q_DOUBLE_QUOTES (substitution functions); changed callers -support/bashversion.c - - include if it's available +subst.h + - changed extern declaration for expand_arith_string -lib/readline/{histexpand,input,isearch,search}.c - - new code for multibyte characters, derived from IBM patch +arrayfunc.c + - changed call to expand_arith_string in array_expand_index -lib/readline/readline.h - - include rltypedefs.h + 3/31 + ---- +lib/readline/histfile.c + - change read_history_range to allow windows-like \r\n line endings - 12/19 - ----- -lib/readline/complete.c - - slight change to mark-directories code to avoid adding a slash if - point is at the end of the line (rl_line_buffer[rl_point] == '\0') - and the previous character was a slash - - change printable_part to not return empty pathnames, which could - happen when completing filenames and a filename with a trailing - slash was passed as the argument. If the portion following the - trailing slash is NULL, ignore it and look for a previous slash. - If there's no previous slash, just return the filename argument - - new variable, rl_completion_mark_symlink_dirs, mirrors the value - of (user-settable with a variable) _rl_complete_mark_symlink_dirs - but may be modified by application-specific completion functions - when appropriate (set in rl_complete_internal and rl_menu_complete) +execute_cmd.c + - add new variable, line_number_for_err_trap, currently set but not + used -lib/readline/readline.h - - extern declaration for rl_completion_mark_symlink_dirs + 4/2 + --- +lib/sh/strtrans.c + - add code to echo -e and echo with xpg_echo enabled to require + a leading 0 to specify octal constants -pcomplete.c - - if one of the actions is CA_DIRECTORY, set - rl_completion_mark_symlink_dirs to indicate that we want the - trailing slash (might have to relax this) + 4/3 + --- +subst.c + - slight change to wcsdup() replacement: use memcpy instead of wcscpy -lib/readline/doc/rltech.texinfo - - documented rl_completion_mark_symlink_dirs variable +parse.y + - before turning on W_COMPASSIGN, make sure the final character in the + token is a `(' (avoids problems with things like a=(4*3)/2) -lib/readline/doc/rluser.texinfo, doc/bash.1 - - documented the fact that `complete -d' and `complete -o dirnames' - force readline to append a slash to symlinks to directories + 4/4 + --- +lib/sh/snprintf.c + - in number() and lnumber(), turn off PF_ZEROPAD if explicit precision + supplied in format + - change number() and lnumber() to correctly implement zero-padding + specified by a non-zero `.precision' part of the format -builtins/enable.def - - changed enable_shell_builtin to disallow enabling disabled - builtins in a restricted shell +subst.c + - new flag for extract_delimited_string: EX_COMMAND. For $(...), so + we can do things like skip over delimiters in comments. Added to + appropriate callers + - changes to extract_delimited_string to skip over shell comments when + extracting a command for $(...) (EX_COMMAND is contained in the + flags argument) -doc/{bash.1,bashref.texi} - - documented new enable behavior in restricted shells + 4/5 + --- +subst.c + - first argument to skip_single_quoted is now a const char * + - new function, chk_arithsub, checks for valid arithmetic expressions + by balancing parentheses. Fix based on a patch from Len Lattanzi -doc/Makefile.in - - new rule to make an `RBASH' file documenting the restrictions - imposed by a restricted shell + 4/6 + --- +{configure,config.h}.in + - add separate test for isnan in libc, instead of piggybacking on + isinf-in-libc test -expr.c - - broke the code that evaluates variables and returns results out - of readtok() into a new function: expr_streval() - - expr_streval() now performs the standard unset variable error - behavior if `set -u' has been executed and it's asked to look - up an unset variable - - broke the code that frees up the expression context stack into - a new function: expr_unwind() +lib/sh/snprintf.c + - separate the isnan replacement function so it's guarded by its own + HAVE_ISNAN_IN_LIBC define -variables.c - - fixed bind_int_variable so it handles array element assignment, - so expressions like `b[7]++' and `b[0] = 42' work right - - new function, get_variable_value, returns the string value of - the SHELL_VAR * passed as an argument - - get_string_value now calls get_variable_value with a non-null - result from find_variable +lib/sh/wcsdup.c + - new file, contains replacement wcsdup library function from subst.c + with change back to using wcscpy - 12/20 - ----- -lib/readline/rlmbutil.h, mbutil.c - - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into - a single function - - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into - a single function +Makefile.in,lib/sh/Makefile.in + - make sure wcsdup.c is compiled and linked in -lib/readline/{display,readline,vi_mode}.c - - changed callers of _rl_find_next_mbchar and - _rl_find_next_nonzero_mbchar +subst.c + - wcsdup now found in libsh; removed static definition -lib/readline/{complete,display,histexpand,readline,vi_mode}.c - - changed callers of _rl_find_prev_mbchar and - _rl_find_prev_nonzero_mbchar + 4/10 + ---- +lib/readline/callback.c + - loop over body of rl_callback_read_char as long as there is additional + input rather than just calling readline_internal_char, which does + not handle multi-character key sequences or escape-prefixed chars - 12/20 - ----- -lib/sh/mktime.c - - new file, from glibc/gawk, compiled in if system doesn't have a - working mktime(3) +lib/readline/macro.c + - make sure we turn off RL_STATE_MACROINPUT when the macro stack is + empty if we are reading additional input with RL_STATE_MOREINPUT -lib/sh/strftime.c - - new file, from gawk, compiled in if system doesn't have a - working strftime(3) +support/shobj-conf + - Mac OS X no longer likes the `-bundle' option to gcc when creating a + dynamic shared library -lib/sh/Makefile.in, Makefile.in - - changes for mktime.c, strftime.c + 4/11 + ---- +lib/tilde/tilde.c + - don't try to dereference user_entry if HAVE_GETPWENT isn't defined -configure.in - - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE - - call AC_REPLACE_FUNC(strftime) +lib/readline/input.c + - make sure chars_avail is not used without being assigned a value in + rl_gather_tyi + - use _kbhit() to check for available input on Windows consoles, in + rl_gather_tyi and _rl_input_available -config.h.in - - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE, - HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME + 4/21 + ---- +lib/readline/display.c + - calculate (in expand_prompt) and keep track of length of local_prompt + in local_prompt_len; use where appropriate + - when using o_pos to check whether or not we need to adjust + _rl_last_c_pos after calling update_line, assume that it's correct + (a buffer index in non-multibyte locales and a cursor position in + multibyte locales) and adjust with wrap_offset as appropriate + - in update_line, set cpos_adjusted to 1 after calling + _rl_move_cursor_relative to move to the end of the displayed prompt + string + - in _rl_move_cursor_relative, check that the multibyte display + position is after the last invisible character in the prompt string + before offsetting it by the number of invisible characters in the + prompt (woff) -externs.h - - provide an extern declaration for strftime if HAVE_STRFTIME is - not defined and NEED_STRFTIME_DECL is + 4/26 + ---- +lib/readline/doc/{rluser.texi,readline.3} + - make sure to note that key bindings don't allow any whitespace + between the key name or sequence to be bound and the colon -lib/tilde/tilde.h - - header files should not include + 4/28 + ---- +lib/readline/display.c + - in update_line, make sure we compare _rl_last_c_pos as strictly less + than PROMPT_ENDING_INDEX, since it's 0-based, to avoid multiple + prompt redraws + 5/4 + --- parse.y - - replace code in decode_prompt_string that chops up value returned - by ctime(3) with calls to strftime -- as a result, the expansion - of \@ has changed slightly (since it depends on the locale) - - added new \D{format} prompt string escape; `format' is passed to - strftime(3). Empty format is the same as `%X' (locale-specific - representation of the current time) - - combined cases for '\\', '\a', '\e', and '\r' in same case branch - in decode_prompt_string - -doc/{bash.1,bashref.texi} - - documented new \D{format} prompt string expansion - -builtins/printf.def - - use ISO C PRIdMAX instead of INTMAX_CONV - - pass length of format modifiers to mklong instead of computing it - with strlen() + - in decode_prompt_string, only prefix the expansion of \[ or \] + with CTLESC if the corresponding readline escape character is + CTLESC (coincidentally the same as \[) or CTLNUL. Bug report sent + by Mike Frysinger prompted the discovery -lib/sh/{fmtulong,fmtullong}.c - - changes from Paul Eggert to make more general +aclocal.m4 + - slight change to test for /dev/fd to compensate for a linux + failing; suggested by Mike Frysinger + 5/9 + --- arrayfunc.c - - when converting a variable to an array, make sure to unset the - dynamic_value and assign_func members of the struct variable, - since they're not valid anymore - - 12/27 - ----- -configure.in - - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE - - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds - one - - 1/2/2002 - -------- -{alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h - - changed some calls to strchr to calls to xstrchr for multibyte - characters + - broke assign_array_var_from_string into two functions: + expand_compound_array_assignment and assign_compound_array_list; + assign_array_var_from_string just calls those functions now -include/shmbutil.h - - add extern declaration for xstrchr to avoid including externs.h - where it's not appropriate +arrayfunc.h + - new extern declarations for expand_compound_array_assignment and + assign_compound_array_list -{braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c - - include shmbutil.h +subst.c + - in do_compound_assignment, call expand_compound_array_assignment + before creating the local variable so a previous inherited + value can be used when expanding the rhs of the compound assignment + statement -{stringlib,subst}.c, {externs,subst}.h - - moved substring() from subst.c to stringlib.c, moved declaration - from subst.h to externs.h + 5/11 + ---- +doc/{bash.1,bashref.texi} + - clarifed `trap' description to make it clear that trapped signals + that are not set to SIG_IGN are reset when a subshell is created -lib/sh/xmbsrtowcs.c - - new file, replacement function for mbsrtowcs + 5/18 + ---- +locale.c + - change reset_locale_vars to call setlocale (LC_ALL, "") if LANG + is unset or NULL + - if LANG is unset or NULL, reset the export environment before + calling setlocale in reset_locale_vars, and trust that it will + change the environment setlocale() inspects -lib/sh/Makefile.in - - add entries for xmbsrtowcs.c + 5/21 + ---- +lib/readline/history.c + - new function, HIST_ENTRY *alloc_history_entry (char *string, char *ts); + creates a new history entry with text STRING and timestamp TS (both + of which may be NULL) + - new function, HIST_ENTRY *copy_history_entry (HIST_ENTRY *hist), + which copies the line and timestamp entries to new memory but just + copies the data member, since that's an opaque pointer + - new function, void replace_history_data (int which, histdata_t *old, histdata_t *new) + which replaces the `data' member of specified history entries with + NEW, as long as it is OLD. WHICH says which history entries to + modify + - add calls to replace_history_data in rl_free_undo_list and + rl_do_undo -Makefile.in - - add dependencies on shmbutil.h to appropriate object files +lib/readline/undo.c + - new function, alloc_undo_entry (enum undo_code what, int start, int end, char *text) + takes care of allocating and populating a struct for an individual + undo list entry + - new function: _rl_copy_undo_entry(UNDO_LIST *entry) + - new function: _rl_copy_undo_list(UNDO_LIST *head) -lib/glob/strmatch.c - - break character-class testing out into separate function: - is_cclass, in prep for multibyte changes +lib/readline/rlprivate.h + - new extern declarations for _rl_copy_undo_{entry,list} -{braces,make_cmd}.c - - changes for multibyte characters - -builtins/printf.def - - changes from Paul Eggert to just use intmax_t everywhere an - int/long/quad is needed and print with "%ld" if the number - fits in a long and %PRIdMAX otherwise - - remove getlong, getulong, getllong, getullong, since they're - no longer needed - - use a new type `floatmax_t' to print floating point numbers, the - widest-available floating point type (like `intmax_t'); new - function `getfloatmax' that calls strtold or strtod as appropriate - - remove getdouble, getldouble, since they're no longer needed - -lib/sh/fmtumax.c - - new file, string-to-[u]intmax_t conversion, just includes - fmtulong.c with the right defines - -Makefile.in, lib/sh/Makefile.in - - additions for fmtumax.c - -bashtypes.h - - include if it's available +execute_cmd.c + - change execute_cond_node so that quoting the rhs of the =~ + operator forces string matching, like the == and != operators -expr.c - - arithmetic is now in intmax_t instead of long + 5/23 + ---- +redir.c + - add_undo_redirect now takes as an additional argument the type of + redirection we're trying to undo + - don't add a "preservation" redirection for fds > SHELL_FD_BASE if + the redirection is closing the fd -externs.h - - extern declaration for fmtumax - - change extern declarations for evalexp, itos, inttostr, - uitos, uinttostr since they now return or use intmax_t instead - of long - -{execute_cmd,general,mailcheck,subst,variables}.c, parse.y -{array,general,subst,test,variables}.h -lib/sh/{itos,netopen}.c -builtins/{bashgetopt,common}.c, builtins/common.h -builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def - - changes for intmax_t shell arithmetic conversion + 5/24 + ---- +subst.c + - make sure that parameter_brace_substring leaves this_command_name + set to either NULL or its previous value after setting it so that + arithmetic evaluation errors while expanding substring values + contain meaningful information -doc/{bashref.texi,bash.1} - - documented long->intmax_t shell arithmetic conversion + 6/9 + --- +execute_cmd.c + - make sure that SUBSHELL_ASYNC and SUBSHELL_PIPE are set as flag bits + in subshell_environment, rather than setting only a single value + - change execute_subshell_builtin_or_function to give the `return' + builtin a place to longjmp to when executed in a subshell or pipeline + (mostly as the last command in a pipeline). Bug reported by + Oleg Verych + - in execute_simple_command, make sure to call execute_disk_command + with the_printed_command_except_trap to keep DEBUG trap command + strings from overwriting the command strings associated with jobs + and printed in job control messages. Bug reported by Daniel Kahn + Gillmor -sig.c - - in initialize_terminating_signals, if we've already trapped a - terminating signal, don't reset the signal handler for it +[bash-3.2-alpha frozen] - 1/3 - --- -{arrayfunc,pathexp}.c, parse.y - - changes for multibyte chars + 6/22 + ---- +syntax.h + - add new CBLANK (for [:blank:] class) flag value for syntax table and + shellblank(c) character test macro -parse.y, lib/sh/strtrans.c - - moved ansiexpand from parse.y to lib/sh/strtrans.c +mksyntax.c + - add support for setting CBLANK flag in the syntax table depending on + whether or not isblank(x) returns true for character x -parse.y, locale.c - - moved mk_msgstr and localeexpand from parse.y to locale.c +locale.c + - change locale_setblanks to set or unset CBLANK flag for each + character when locale changes parse.y - - new function, yy_input_name, returns name of input file from - bash_input.name - - broke the code that parses ((...)) constructs out of read_token - into a new function, parse_dparen() + - change call to whitespace(c) in lexical analyzer (read_token()) to + call shellblank(c) instead, so locale-specific blank characters are + treated as white space. Fixes bug reported by Serge van deb Boom + -externs.h - - new extern declaration for ansiexpand(), mk_msgstr(), and - localeexpand() +print_cmd.c + - when printing redirections, add a space between <, >, and <> and the + following word, to avoid conflicts with process substitution. Bug + reported by Ittay Dror -input.h - - new extern declaration for yy_input_name() + 6/26 + ---- +configure.in + - set CROSS_COMPILE to the empty string by default, so we don't inherit + a random value from the environment. Bug reported by + Lee Revell -{error,locale}.c - - use yy_input_name for error and other messages + 6/29 + ---- +lib/glob/xmbsrtowcs.c + - make sure destp is non-null before assigning a 0 to *destp in + xdupmbstowcs. Fix from Louiwa Salem execute_cmd.c - - change shell_execve to make sure that the file is executable - before looking at the interpreter to find out why the execve() - failed (avoids misleading error message) + - fix execute_in_subshell to make sure asynchronous isn't set to 0 + before subshell_environment is set appropriately and + setup_async_signals is run. Based on report by Louiwa Salem + -lib/glob/glob.c - - move code that matches leading `.' and skips those filenames into - a separate function: skipname(), so there can be unibyte and - multibyte versions of that function +lib/readline/bind.c + - in rl_generic_bind(), make sure that the keys array is freed before + an error return. Fix from Louiwa Salem - 1/7 + 7/1 --- -subst.c - - more changes for multibyte characters - -print_cmd.c - - change semicolon() so it doesn't output a `;' immediately after a - newline, since that results in a null command, which is a syntax - error +builtins/read.def + - make sure all editing code is protected with #ifdef READLINE, esp. + unwind-protect that restores the default completion function -variables.c - - fix indirection_level_string to turn off set -x while evaluating - PS4 +lib/readline/display.c + - make sure to set local_prompt_len in rl_message() [in bash-3.2-alpha] - 1/8 + 7/5 --- -builtins/set.def - - make -o options into one struct, instead of separate structs for - option names corresponding to flags and non-flag option names. - This has the side effect of sorting the option names in output - -lib/glob/glob.c - - new function, mbskipname(), multibyte char version of skipname() - - removed all #ifndef SHELL code, this will never be used outside - the shell - -include/posixdir.h - - move REAL_DIR_ENTRY define here from lib/glob/glob.c - -lib/glob/glob_loop.c - - new file, included in glob.c for unibyte and multibyte versions of - glob_pattern_p - - added some forward static function declarations with prototypes - - more changes for multibyte character handling - -lib/glob/Makefile.in - - make glob.c depend on glob_loop.c - - changes for xmbsrtowcs.[co] - -lib/glob/xmbsrtowcs.c - - moved here from lib/sh, since the matching functions use it, and - libglob.a is linked after libsh.a +builtins/printf.def + - add more of echo's write error handling to printf. Suggested by + martin.wilck@fujitsu-siemens.com - 1/9 + 7/7 --- -lib/glob/smatch.c - - new file, with strmatch (now xstrmatch) and associated functions, - with changes for multibyte chars - -lib/glob/sm_loop.c - - new file, included by smatch.c, with `generic' versions of matching - functions that are compiled twice: once each for single-byte and - multibyte characters +lib/readline/display.c + - save and restore local_prompt_len in rl_{save,restore}_prompt + [in bash-3.2-alpha] -lib/glob/strmatch.c - - strip out everything except strmatch(), which either calls fnmatch - (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch + 7/8 + --- +[bash-3.2-alpha released] -lib/glob/collsyms.c - - changes for multibyte chars + 7/9 + --- +lib/readline/display.c + - make sure that _rl_move_cursor_relative sets cpos_adjusted when it + offsets `dpos' by wrap_offset in a multi-byte locale. Bug reported + by Andreas Schwab and Egmont Koblinger -lib/glob/Makefile.in, Makefile.in - - changes for new source files +subst.c + - make sure that the call to mbstowcs in string_extract_verbatim is + passed a string with enough space for the closing NUL. Reported + by Andreas Schwab - 1/10 + 7/18 ---- -lib/readline/complete.c - - new function, rl_completion_mode (rl_command_func_t *func), returns - the appropriate value to pass to rl_complete_internal depending on - FUNC and the value of `show-all-if-ambiguous'. This allows - application completion functions to present the same interface as - rl_complete - -lib/readline/readline.h - - new extern declaration for rl_completion_mode() - -lib/readline/doc/rltech.texinfo - - documented rl_completion_mode - -lib/readline/readline.[ch] - - bumped the version number to 4.3, changing the relevant cpp defines +lib/readline/{display,terminal}.c + - remove #ifdefs for HACK_TERMCAP_MOTION so we can use + _rl_term_forward_char in the redisplay code unconditionally -configure.in - - require that an installed readline version be at least readline-4.3 +lib/readline/rlprivate.h + - new extern declaration for _rl_term_forward_char -bashline.c - - converted bash-specific completion functions to use - rl_completion_mode instead of passing TAB unconditionally +lib/readline/display.c + - in _rl_move_cursor_relative, use `dpos' instead of `new' when + deciding whether or not a CR is faster than moving the cursor from + its current position + - in _rl_move_cursor_relative, we can use _rl_term_forward_char to + move the cursor forward in a multibyte locale, if it's available. + Since that function doesn't have a handle on where the cursor is in + the display buffer, it has to output a cr and print all the data. + Fixes rest of problem reported by Egmont Koblinger + - change variable denoting the position of the cursor in the line buffer + from c_pos (variable local to rl_redisplay) to cpos_buffer_position + (variable local to file) for future use by other functions -builtins/bashgetopt.c - - the `#' option specifier now means a required numeric argument, - not an optional one + 7/25 + ---- +lib/malloc/{stats,table}.h + - include for prototypes for memset, strlen -builtins/type.def - - when converting [-]-{path,type,all} to -[pta], don't bother - freeing and reallocating the option string; just change opt[1] - and null opt[2] +lib/termcap/{termcap,tparam}.c + - include and provide macro replacement for bcopy if + necessary -lib/sh/snprintf.c - - support %ls/%S and %lc/%C for wide strings and characters, - respectively, if HANDLE_MULTIBYTE is defined + 7/27 + ---- +lib/readline/histexpand.c + - add support for `<<<' here-string redirection operator to + history_tokenize_word. Bug reported by agriffis@gentoo.org -mailcheck.c - - don't print a message about new mail if the file has not grown, - even if the access time is less than the modification time +externs.h + - don't add prototype for strerror() if HAVE_STRERROR defined - 1/14 + 7/29 ---- -lib/readline/readline.c - - new function, rl_replace_line, to replace the readline line buffer - with the text supplied as an argument - - new function, rl_replace_from_history, replaces readline line - buffer with text from history entry passed as argument (undocumented, - not in readline.h because it requires a definition of - HIST_ENTRY for the prototype) +subst.c + - in list_string, use `string' instead of `s' -- s is not initialized -lib/readline/readlne.h - - new extern declaration for rl_replace_line + 8/9 + --- +subst.c + - fix parameter_brace_expand to set W_HASQUOTEDNULL in the WORD_DESC it + returns if the result of parameter_brace_substring is a quoted null + ("\177"). Fixes bug reported by Igor Peshansky -lib/readline/doc/rltech.texinfo - - documented rl_replace_line + 8/16 + ---- +lib/readline/readline.h + - new #define, READERR, intended to be used to denote read/input errors -lib/readline/{isearch,readline,search}.c - - use rl_replace_line and rl_replace_from_history where appropriate +lib/readline/input.c + - in rl_getc, if read() returns an error other than EINTR (after the + EWOULDBLOCK/EAGAIN cases are handled), return READERR rather than + converting return value to EOF if readline is reading a top-level + command (RL_STATE_READCMD) lib/readline/readline.c - - broke the code that sets point after moving through the history - (_rl_history_preserve_point and _rl_history_saved_point) out - into a separate function, _rl_history_set_point() - -lib/readline/{complete.c,rlprivate.h} - - find_completion_word -> _rl_find_completion_word - - free_match_list -> _rl_free_match_list - -lib/readline/complete.c - - postprocess_matches and _rl_free_match_list now return immediately - if passed a null match list - -variables.c - - new function, find_local_variable, finds a local variable by name - at the current variable context - - in find_variable_internal, call find_local_variable before searching - any of the temporary environments if variable_context > 0 (meaning - we're in a shell function). This lets a local variable - override a variable whose value was passed in the `function - environment' - - 1/15 - ---- -variables.h, execute_cmd.c - - declare variables describing the temporary environments in - variables.h instead of in C files - -findcmd.c, builtins/setattr.def - - instead of calling find_tempenv_variable, use find_variable_internal - and check whether the returned SHELL_VAR * has the tempvar - attribute + - if rl_read_key returns READERR to readline_internal_char[loop], + abort as if it had read EOF on an empty line, without any conversion + to newline, which would cause a partial line to be executed. This + fixes the bug reported by Mathieu Bonnet -variables.c - - tentative change to lookup order in find_variable_internal so that - function local variables are found before variables in - function_env when executing a shell function - - change make_local_variable to handle making a local variable when - a variable with the same name already appears in one of the - temporary environments - - broke the body of make_var_array out into a new function: - static char **make_env_array_from_var_list (SHELL_VAR **vars) - - new function, make_var_array_internal, takes a hash table to look - in and a pointer to a mapping function and returns a char ** - environment-style list - - make_var_array now just calls make_var_array_internal - - new mapping function, local_and_exported, returns all local variables - in the current variable context with the export attribute set - - new function, make_local_export_array, returns an environment-style - char ** array of exported local variables in current context - - change environment creation order in maybe_make_export_env to - add variables to the environment in opposite order that - find_variable_internal uses. This means that local variables in - shell functions override variables with the same name in the - function_env - - change make_local_variable to set the initial value of the - variable it creates to NULL to make the `is set' and `is null' - tests that the expansion code does work right - - change make_local_variable to inherit the value of a variable with - the same name from the temporary enviroment +aclocal.m4 + - when testing for validity of /dev/fd/3, use /dev/null instead of + standard input, since the standard input fails with linux and `su'. + Bug reported by Greg Shafer - 1/16 + 8/17 ---- Makefile.in - - link bashversion with buildversion.o instead of version.o, for - cross-compiling. version.o is for the target system; - buildversion.o is for the build system - -error.c - - add line numbers to internal_error() messages if the shell is - not interactive and running a shell script or a -c command - - report_error now prints non-zero line numbers for non-interactive - shells + - switch the TAGS and tags targets so TAGS is the output of `etags' and + tags is the output of `ctags'. Suggested by Masatake YAMATO -test.c - - test_syntax_error now calls builtin_error() instead of printing - its own messages + 8/25 + ---- +execute_cmd.c + - change code to match documentation: set BASH_COMMAND (which takes its + value from the_printed_command_except_trap) only when not running a + trap. Rocky says the debugger is ok with this, and this is what his + original diffs did -builtins/common.c - - builtin_error now prints line numbers if a non-interactive shell - is running a shell script or a -c command + 8/29 + ---- +variables.c + - change set_if_not to create shell_variables if it is NULL, since + -o invocation options can cause variables to be set before the + environment is scanned -print_cmd.c - - in cprintf, remove free_argp, since it's not used +[bash-3.2-beta frozen] -builtins/history.def - - make `history -n' increment the number of history lines in this - session by the number of lines read from the history file + 9/5 + --- +[bash-3.2-beta released] -arrayfunc.c - - fix array_value_internal to expand the subscript even if the - variable is unset, so side effects produced by the arithmetic - evaluation will take place + 9/8 + --- +variables.c + - change dispose_used_env_vars to call maybe_make_export_env + immediately if we're disposing a temporary environment, since + `environ' points to the export environment and getenv() will use + that on systems that don't allow getenv() to be replaced. This + could cause the temporary environment to affect the shell. Bug + reported by Vasco Pedro -lib/readline/doc/{rluser,rltech}.texinfo - - some fixes for printing in @smallbook format from Brian - Youmans +builtins/echo.def,doc/{bash.1,bashref.texi} + - clarify that `echo -e' and echo when the `xpg_echo' shell option is + enabled require the \0 to precede any octal constant to be expanded. + Reported by Vasco Pedro - 1/17 + 9/12 ---- -jobs.h - - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous - to RUNNING, STOPPED, and DEADJOB defines for jobs +builtins/printf.def + - make sure `%q' format specifier outputs '' for empty string arguments + Bug reported by Egmont Koblinger -jobs.c - - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field - of a PROCESS - - find_pipeline and find_job now take an additional flags argument - that, if non-zero, means to find only running processes; changed - all callers - - changed calls to find_pipeline and find_job made from waitchld - to find only running processes - - find_pipeline takes a third argument: an int *. If it looks in - the jobs list to find the pid, and the arg is non-null, it passes - the job index back to the caller. Used to avoid calls to - find_pipeline immediately followed by find_job with the same PID - -nojobs.c - - a couple of changes to make sure that set_pid_status is never - called with a pid argument of 0 or -1 +make_cmd.c + - change make_here_document to echo lines in here-doc if set -v has + been executed. Reported by Eduardo Ochs -trap.c - - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin) - if a signal is received for which a trap has been set during - execution of the wait builtin (need to include builtins.h and - builtins/builtext.h and declare some extern variables for the - right things to check) - - new variable to keep track of which signal caused the longjmp to - wait_intr_buf, set by trap_handler (wait_signal_received) - -builtins/wait.def - - set the return value of wait when a longjmp(wait_intr_buf, 1) is - done to 128 + wait_signal_received +aclocal.m4 + - change BASH_CHECK_MULTIBYTE: + o replace check for wctomb with check for wcrtomb + o add checks for wcscoll, iswctype, iswupper, iswlower, + towupper, towlower + o add call to AC_FUNC_MBRTOWC to check for mbrtowc and mbstate_t + define HAVE_MBSTATE_T manually + o add checks for wchar_t, wctype_t, wint_t -{jobs,nojobs}.c - - set wait_signal_received to SIGINT in wait_sigint_handler before - the longjmp(wait_intr_buf, 1) +config.h.in + - add defines for wcscoll, iswctype, iswupper, iswlower, towupper, + towlower functions + - replace define for wctomb with one for wcrtomb + - add defines for wchar_t, wint_t, wctype_t types - 1/18 - ---- -bashline.c - - turn off rl_filename_completion_desired when completing a command - name with a single match only if the first char of that match is - not a `/' - - if there are multiple identical matches for a command name in - attempt_shell_completion, turn off rl_filename_completion_desired - if the first char is not a `/' to avoid readline appending a - slash if there's a directory with the same name in the current - directory +config-bot.h, lib/readline/rlmbutil.h + - add check for HAVE_LOCALE_H before defining HANDLE_MULTIBYTE + - add checks for: ISWCTYPE, ISWLOWER, ISWUPPER, TOWLOWER, TOWUPPER + - add checks for: WCTYPE_T, WCHAR_T, WCTYPE_T - 1/22 + 9/13 ---- -lib/readline/complete.c - - new variable, _rl_page_completions, to control whether we want to - run the internal pager when listing completions (defaults to 1) - -lib/readline/rlprivate.h - - extern declaration for _rl_page_completions - -lib/readline/bind.c - - new bindable variable, `page-completions', controls value of - _rl_page_completions +lib/readline/display.c + - when displaying prompts longer than the screenwidth in rl_redisplay, + and looking for the index of the last character whose buffer index + is <= the screen width to set up the inv_lbreaks array, make sure to + catch the case where the index == the screen width (an off-by-one + error occurs otherwise with prompts one character longer than the + screen width). Bug reported by Alexey Toptygin -lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 - - documented `page-completions' variable +configure.in + - change DEBUGGER_START_FILE to start with ${ac_default_prefix}/share, + like bashdb installs itself. Reported by Nick Brown + -Makefile.in - - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install - `bashbug' + 9/14 + ---- +lib/readline/display.c + - make multibyte code that computes the buffer indices of line breaks + for a multi-line prompt dependent on MB_CUR_MAX, so we don't take + the function call hit unless we're in a locale that can have + multibyte characters -aclocal.m4 - - fix small quoting problem in RL_LIB_READLINE_VERSION macro + 9/19 + ---- +subst.c + - make dequote_list extern so other parts of the shell can use it -lib/readline/terminal.c - - fetch and save terminal's `vs' and `ve' cursor control attributes - - fetch and save terminal's `kI' attribute (string sent by Insert) - - new function, _rl_set_cursor, sets cursor to normal (insert mode) - or very visible (overwrite mode) +subst.h + - extern declaration for dequote_list -lib/readline/readline.c - - new global variable, rl_insert_mode - - new function to toggle overwrite mode, rl_overwrite_mode - - each new line starts in insert mode - - switching to vi mode or emacs mode resets to insert mode - - reset cursor to normal before returning line - - _rl_replace_text now returns the number of characters inserted, - the return value from rl_insert_text - - new function, _rl_insert_or_replace_text (const char *string, int insert), - either inserts STRING or replaces the number of chars in STRING - with STRING starting at rl_point, depending on value of INSERT - - renamed rl_insert to _rl_insert_char, rl_insert just calls - _rl_insert_char with the same arguments when in insert mode - - new function, _rl_overwrite_char, handles self-insert in overwrite - mode. Does multibyte chars by reading an entire multibyte character - before entering overwrite loop - - new function, _rl_overwrite_rubout, handles RUBOUT when in - overwrite mode, called from rl_rubout - - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout - calls this when not in overwrite mode +builtins/read.def + - call dequote_list before assigning words read to array variable if + we saw an escape character. Old code left spurious CTLESCs in the + string after processing backslashes. Bug reported by Daniel Dawson + -lib/readline/readline.h - - extern declarations for rl_insert_mode and rl_overwrite_mode() + 9/21 + ---- +[bash-3.2 frozen] -lib/readline/rldefs.h - - define constants for values of rl_insert_mode + 10/9 + ---- +support/shobj-coonf + - change -fpic to -fPIC for FreeBSD systems (needed for SPARC at least) -lib/readline/rlprivate.h - - extern declarations for _rl_set_cursor and _rl_set_insert_mode - - change type of _rl_replace_text to return int - - extern declarations for _rl_insert_char, _rl_rubout_char + 10/11 + ----- +[bash-3.2 released] -lib/readline/funmap.c - - new bindable name `overwrite-mode', bound to rl_overwrite_mode + 10/12 + ----- +parse.y + - change parse_matched_pair to make sure `` command substitution does + not check for shell comments while parsing. Bug reported against + bash-3.2 by Greg Schaefer -lib/readline/rlconf.h - - define CURSOR_MODE if you want the cursor to show insert or - overwrite mode (only available if both `vs' and `ve' capabilities - are present) + 10/14 + ----- +parse.y + - add new parser_state flag: PST_REGEXP; means we are parsing a + regular expression following the =~ conditional operator + - cond_node sets PST_REGEXP after reading the `=~' operator + - change read_token to call read_token_word immediately if the + PST_REGEXP bit is set in parser_state + - change read_token_word to skip over `(' and `|' if PST_REGEXP is + set, since those characters are legitimate regexp chars (but still + parse matched pairs of parens) -lib/readline/{complete,parens,readline,search,vi_mode}.c - - change calls to rl_insert to _rl_insert_char + 10/16 + ----- +builtins/ulimit.def + - add -e and -r to $SHORT_DOC usage string -lib/readline/{readline,search}.c - - change calls to rl_rubout to _rl_rubout_char to avoid overwrite - mode problems +po/ru.po + - fix encoding; Russian text in the file is actually encoded in KOI8-R -lib/readline/vi_mode.c - - fix rl_vi_overstrike to just call _rl_overwrite_char, which - handles multibyte chars + 10/23 + ----- +shell.c + - make sure that the call to move_to_high_fd in open_shell_script + passes 1 for the `check_new' parameter so open high file descriptors + don't get closed and reused. Bug reported by Mike Stroyan + -lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 - - document new `overwrite-mode' command +doc/bashref.texi + - fixes for typos and misspellings sent in by Brian Gough - 1/23 - ---- -lib/readline/readline.c - - return 0 immediately from rl_insert_text if the string to insert - is NULL or "" + 10/24 + ----- +support/shobj-conf + - make netbsd shared library creation like openbsd's until I hear + differently (called using `gcc -shared') -bashline.c - - if a numeric argument is given to one of the bash-specific glob - pattern completion functions (including TAB), append a `*' to - the word before generating matches - - in attempt_shell_completion, when doing glob completion, only - set the match list to NULL if rl_completion_type == TAB and - there is more than one completion. This permits listing completions - with double tabs and displaying ambiguous completions - - new function, bash_glob_complete_word, appends a `*' to the word - to be completed and then globs it. It uses a new filename - quoting function (bash_glob_quote_filename) to avoid quoting - globbing characters in the filename if there are no matches or - multiple matches + 10/26 + ----- +subst.c + - fix bug in parameter_brace_patsub so if the first character of the + expanded pattern is a `/', it is not taken as a global replacement + specifier. Bug reported on forums.nekochan.net -lib/readline/complete.c - - set completion_changed_buffer to 0 in rl_complete_internal if - no matches were produced by the completion generator function - - new variable, rl_completion_suppress_append, suppresses appending - of rl_completion_append_character. Settable by application - completion functions, always 0 when application completion - functions are called (set to 0 by rl_complete_internal and - rl_menu_complete) - - broke the code that assigns default values to readline completion - variables out of rl_complete_internal and rl_menu_complete into - a new function, set_completion_defaults (int what_to_do) + 10/27 + ----- +builtins/printf.def + - if we need an extern declaration for asprintf, make sure we include + stdarg.h or varargs.h, whichever is appropriate + - if we do not have asprintf, add an extern declaration using + stdarg format. This fixes the bugs with %G on IRIX reported by + Matthew Woehlke and Stuart Shelton + -lib/readline/readline.h - - extern declaration for rl_completion_suppress_append -lib/readline/doc/rluser.texinfo, doc/bash.1 - - documented behavior of glob-expand-word and glob-list-expansions - when supplied a numeric argument - - documented glob-complete-word +lib/sh/snprintf.c + - add note to not call log_10 with 0 argument -- we don't want to do + what real log10 does (-infinity/raise divide-by-zero exception) + - make sure numtoa (used by dtoa) takes the precision into account + when computing the fractional part with an argument of `0.0' + - make sure `g' and `G' formats don't print radix char if there are + no characters to be printed after it (change to floating()) + - change callers of log_10 (exponent, 'g' and 'G' cases in + vsnprintf_internal) to not call it with 0 for argument. This fixes + the hang reported on IRIX by Matthew Woehlke + and Stuart Shelton -lib/readline/doc/rltech.texinfo - - documented rl_completion_suppress_append + 10/28 + ----- +builtins/{caller,pushd}.def + - changed longdoc strings in loadable builtin section to be single + strings, as put in the build directory builtins.c file, to aid + translators - 1/24 + 11/1 ---- -lib/readline/text.c - - new file, text and character handling functions from readline.c +execute_cmd.c + - reset subshell_environment to 0 after make_child() call in + execute_null_command. Fix provided by Roy Marples + -lib/readline/misc.c - - new file, miscellanous bindable functions and their supporting - code from readline.c + 11/7 + ---- +lib/tilde/tilde.c +lib/readline/{util,undo,callback,input,isearch,kill}.c + - make sure that memory allocated with xmalloc is freed with xfree -Makefile.in, lib/readline/Makefile.in - - changes for text.c, misc.c + 11/9 + ---- +lib/readline/display.c + - make sure that _rl_redisplay_after_sigwinch clears the last displayed + line instead of the current line (instead of assuming that the + cursor is on the last line). Fixes bug reported by Egmont + Koblinger -lib/readline/bind.c - - change ISKMAP case of rl_invoking_keyseqs_in_map to output - ESC as "\M-" instead of "\e" -- it's closer to the documentation - - change _rl_get_keyname to output ESC as \e instead of \C-[ - (it's easier to understand) + 11/10 + ----- +lib/readline/display.c + - make sure that _rl_col_width is never called with MB_CUR_MAX == 1, + since it doesn't count invisible characters and they are not + compensated for. Added a warning in _rl_col_width if called when + MB_CUR_MAX == 1. Bug reported and solution suggested by Eric + Blake -pcomplete.h - - new flag, COPT_NOSPACE + 11/11 + ----- +lib/readline/display.c + - make sure _rl_wrapped_line is initialized to inv_lbsize int chars. + inv_lbsize and vis_lbsize are the same at that point, but it makes + the intent clearer. Fix from jan.kratochvil@redhat.com. + - in rl_redisplay, make sure we call memset on _rl_wrapped_line with + its full initialized size: inv_lbsize*sizeof(int). Fix from + jan.kratochvil@redhat.com. + - wrap the invisible and visible line variables and _rl_wrapped_line + into line_state structures, which can be swapped more efficiently. + Have to watch the wrapped_line field, since there's now one for + each struct. Changes from jan.kratochvil@redhat.com. -builtins/complete.def - - new `-o nospace' option for complete and compgen (though it doesn't - really do anything for compgen, since that doesn't hand anything - off to readline) +lib/readline/complete.c + - in stat_char, check for `//server' on cygwin and return `/', since + it will always behave as a directory. Fix from Eric Blake -bashline.c - - if a programmable completion specifies COPT_NOSPACE, set - rl_completion_suppress_append = 1 +lib/readline/histfile.c + - Cygwin's mmap() works in recent versions, so don't #undef HAVE_MMAP. + Recommendation from Eric Blake -lib/readline/doc/rluser.texinfo - - documented new `-o nospace' option to complete and compgen +lib/readline/rlwinsize.h + - make sure tcflow() is defined on SCO Unix. Fix from William Bader -doc/{bash.1,bashref.texi} - - documented $'\cX' escape sequence (forgot to before) +aclocal.m4 + - add check for localeconv to AM_INTL_SUBDIR macro - 1/28 - ---- -variables.c - - make_new_variable now takes the HASH_TABLE * as its second - argument; changed callers - - new function, bind_variable_in_table, takes the HASH_TABLE * as - its third paramter; bind_variable calls bind_variable_in_table - with shell_variables as third argument +config.h.in + - add HAVE_LOCALECONV -variables.h - - new struct var_context, variable context (per-scope -- global, - function local, etc.) - -variables.[ch],builtins/common.[ch] - - moved functions that push and pop a variable context from - builtins/common.c to variables.c; move extern function - declarations to variables.h - - new function, all_local_variables - - variable_in_context is now static, used only by all_local_variables - -variables.[ch],execute_cmd.c - - push_context now takes the function name as an argument for - future use - - push_context takes an indication of whether or not the function is - executing in a subshell and saves the positional parameters only - if not in a subshell - - new functions for managing a stack of variable contexts and - scopes: new_var_context, dispose_var_context, push_var_context, - pop_var_context, push_scope, pop_scope +lib/sh/snprintf.c + - add check for HAVE_LOCALECONV for GETLOCALEDATA macro -builtins/declare.def - - call all_local_variables instead of map_over (...) in declare_internal - - don't call make_local_variable if we're looking at functions - ((flags_on & att_function) != 0), since it's wasted - - make sure VAR is set to NULL if check for variable_context fails - and we didn't just create or fetch a local variable in - declare_internal - - in non-function branch of declare_internal, only call find_variable - if VAR is NULL -- if it's not null, we just created or fetched a - local variable and don't need to do it again +general.[ch] + - first argument to legal_number is now `const char *' - 1/29 - ---- -variables.[ch] - - the temporary environments (temporary_env, builtin_env, function_env) - are now HASH_TABLEs instead of argv-style arrays of strings (this - is an intermediate step on the way to the new lcc-inspired symbol - table scope structure) - - new internal attribute for variables: att_propagate. This means - to propagate the value out of the temporary environment up the - (for now implicit) chain of variable scopes when the containing - temporary environment is deleted + 11/14 + ----- +lib/readline/{readline,rlprivate}.h + - move rl_display_prompt declaration from rlprivate.h to readline.h -variables.c - - assign_in_env now adds to the HASH_TABLE temporary_env instead - of making environment-style strings in an array of strings - - changed the way the temporary environments are merged into the - shell variable table to account for the new HASH_TABLE temp - environments - - changed the way the export environment is created due to the new - structure of the temporary environments - - new function, bind_variable_internal (name, value, table), binds - NAME to have VALUE in TABLE without searching the temporary - environments - - removed: shell_var_from_env_string, bind_name_in_env_array - - variable_in_context now checks the att_local attribute and makes - sure the variable is not invisible - - local_and_exported now makes sure the variable is not invisible +lib/readline/util.h + - new function: rl_free(void *mem), for use by users of readline dlls + on Windows -execute_cmd.c - - we no longer need to copy the temporary environment to function_env - or builtin_env, we can simply use variable assignments - -{findcmd,subst,variables}.c, builtins/{declare,setattr}.def - - since variables from the temporary environments are no longer turned - into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned - by find_variable or find_variable_internal - - need to savestring() the value returned by find_variable if it has - the tempvar attribute before calling bind_variable on it, because - bind_variable will search and bind into the temporary environments - and will free the old value before binding the new. For temporary - environments, these two pointers will be the same, and - bind_tempenv_variable will end up using freed memory - -builtins/{declare,setattr}.def - - set the att_propagate attribute when exporting or making readonly - variables from the temp environment (i.e., `var=value declare -x var' - or `var=value export var' sets the propagate attribute on the entry - for `var' in the temporary environment HASH_TABLE) +lib/readline/readline.h + - new extern declaration for rl_free -lib/readline/isearch.c - - ^W when reading isearch string yanks the current word out of the - current line into the search string, skipping the portion already - matched - - ^Y when reading isearch string yanks the rest of the current line - into the search string, skipping the portion already matched +lib/readline/doc/rltech.texi + - document rl_free and rl_display_prompt for use by application writers - 1/30 - ---- -{print_cmd,variables}.c - - moved indirection_level_string() from variables.c to print_cmd.c + 11/15 + ----- +aclocal.m4 + - change tests for /dev/fd and /dev/stdin to use constructs of the form + (exec test ... ) instead of test ... to avoid bash's /dev/fd and + /dev/stdin emulation -{externs,variables}.h - - moved extern declaration of indirection_level_string to externs.h + 11/16 + ----- +jobs.c + - in delete_job, reset_current was being called before the job slot + was cleared -- moved after job_slots[job] was set to NULL. Fixes + bug reported by Dan Jacobson -{general,variables}.c - - moved assignment() from variables.c to general.c + 11/19 + ----- +findcmd.c + - when the checkhash option is set, fix the check for the hashed + pathname being an existing executable file. Old code required a + hash table deletion and re-addition. Bug reported by Linda + Walsh -{general,variables}.h - - moved extern declaration of assignment() to general.h + 11/21 + ----- +subst.c + - in pos_params, handle case of `start' == 0 by making the list of + positional parameters begin with $0 + - in parameter_brace_substring, increment `len' if start == 0, sicne + we will be adding $0 to the beginning of the list when we process it -{externs,input}.h - - moved extern declaration of decode_prompt_string to externs.h +doc/{bash.1,bashref.texi} + - document new behavior of `0' offset when using substring expansion + with the positional parameters -print_cmd.c - - include flags.h, don't include stdc.h +support/shobj-conf + - changes to shared object creation for loadable builtins on Mac OS X + 10.4 to use libtool instead of ld by specifying -dynamiclib + argument and changing options to be appropriate for libtool. This + winds up creating a dynamic shared library instead of an executable -variables.c - - moved some functions around to group functions better - - changed new_shell_variable to explicitly initialize each member - of the created struct variable instead of calling bzero() - - make_new_variable now just calls new_shell_variable instead - of duplicating what it does - - removed some code in bind_function that duplicated what - new_variable does on the newly-created SHELL_VAR - - since there are no local function variables (functions are always - made at the global scope), kill_all_local_variables() doesn't - need to consider functions + 11/24 + ----- +{jobs,nojobs}.c + - don't set last_asynchronous_pid to the child's pid in the child + for asynchronous jobs (for compatibility -- all other posix shells + seem to do it this way). This means that (echo $! )& echo $! should + display two different pids. Fix from discussion on the + austin-group-l list - 1/31 - ---- -variables.c - - sort the array of special variables - - short-circuit the search in stupidly_hack_special_variables if - the passed name can't be found in the rest of the array - (that is, if name[0] < special_vars[i].name[0]) +builtins/mkbuiltins.c + - change builtins.c file generation so short doc strings are marked for + gettext and available for subsequent translation. Suggestion by + Benno Schulenberg -lib/readline/history.c - - unstifle_history() was returning values exactly opposite of - the documentation +builtins/{bind,cd,hash,inlib,printf,pushd,test,times,ulimit}.def +lib/malloc/malloc.c +{shell,subst}.c + - fix a few strings that were not marked as translatable. Fix from + Benno Schulenberg -lib/readline/doc/{hsuser.texinfo,history.3} - - clarified the unstifle_history() documentation a little +lib/readline/misc.c + - new function, _rl_revert_all_lines(void). Goes through history, + reverting all entries to their initial state by undoing any undo + lists. - 2/4 - --- -variables.c - - in bind_variable, don't call bind_tempenv_variable after a - find_tempenv_variable succeeds -- just change the value inline. - There's no reason to look it up twice - - change makunbound to only call stupidly_hack_special_variables - if we're not unsetting a function +lib/readline/rlprivate.h + - extern declaration for _rl_revert_all_lines -variables.[ch] - - new function, unbind_function, like makunbound but doesn't mess - with previous contexts or calling stupidly_hack_special_variables +rldefs.h + - add #undef HAVE_STRCOLL if STRCOLL_BROKEN is defined, prep to move + from config.h.in. Problem reported by Valerly Ushakov + -builtins/set.def - - change unset_builtin to call either unbind_func or unbind_variable + 11/25 + ----- +lib/readline/readline.c + - call _rl_revert_all_lines from readline_internal_teardown if the + variable _rl_revert_all_at_newline is non-zero + - declare _rl_revert_all_lines initially 0 -builtins/getopts.def - - call unbind_variable(name) instead of makunbound(name, shell_variables) + 11/27 + ----- +doc/{bash.1,bashref.texi} + - make sure to be explicit that `typeset +r' cannot remove the readonly + attribute from a variable - 2/5 - --- -lib/glob/sm_loop.c - - use malloc instead of xmalloc in BRACKMATCH and handle failures + 11/28 + ----- +lib/sh/zmapfd.c + - new file, implements zmapfd(), which takes a file and returns its + contents in a string -error.c - - add extern declaration of executing_line_number with prototype, - since execute_cmd.h can't be included without including other - files +externs.h + - extern declaration for zmapfd -lib/readline/parens.c - - include + 11/29 + ----- +builtins/evalfile.c + - in _evalfile, use zmapfd to read the contents of the file into a + string, rather than using the size reported by stat and reading that + many characters, if the file is not a regular file (for things like + named pipes, stat reports the size as 0) -lib/malloc/stats.c - - include - - add extern declaration of malloc_free_blocks() with prototype + 12/3 + ---- +lib/sh/snprintf.c + - make sure number() sets the FL_UNSIGNED flag for %x and %X, so + fmtulong treats them as unsigned numbers. Fixes bug reported by + James Botte -pathexp.c - - added some forward declarations with prototypes for static functions + 12/13 + ----- +lib/readline/util.c + - new function, _rl_ttymsg, for internal warning messages -- does + redisplay after printing message + - new function, _rl_errmsg, for internal warning/error messages -- + does not do redisplay after printing message lib/readline/rlprivate.h - - removed declarations of rl_untranslate_keyseq, rl_discard_argument, - rl_stop_output, rl_alphabetic since they appear in readline.h + - new extern declaration for _rl_ttymsg, _rl_errmsg - 2/6 - --- -{arrayfunc,execute_cmd,pcomplete,shell}.c - - change calls to makunbound(name, shell_variables) to - unbind_variable (name) - - 2/7 - --- -builtins/getopt.c - - don't defer incrementing of OPTIND when an invalid option is - encountered until the next call to sh_getopt() -- what if OPTIND - is reset before that next call? This means that OPTIND is always - incremented to the next option to be handled when an option is - returned, whether it's valid or not. This is what POSIX-2002 - says to do. - -syntax.h - - new #define, CSUBSTOP - -mksyntax.c - - add "-=?+" with value CSUBSTOP to the syntax table. These are the - valid expansion operators OP in ${param[:]OPword} +lib/readline/{bind,callback,complete,display,rltty}.c + - use _rl_ttymsg/_rl_errmsg instead of direct writes to stderr -subst.c - - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR - - new flags for the string extraction functions: EX_NOALLOC. This - indicates that the functions are being used only to skip over - strings and the result won't be used, so the substring shouldn't - be allocated, copied, and freed - - new flag for string_extract: EX_VARNAME. This serves the same - purpose as the old `varname' parameter. parameter_brace_expand() - changed appropriately - - extract_delimited_string and extract_dollar_brace_string now take - an additional `flags' argument, which may include EX_NOALLOC - - changed callers of extract_delimited_string and - extract_dollar_brace_string appropriately - - string_extract now understands EX_NOALLOC; callers changed - - some smaller code cleanups - - converted char_is_quoted(), unclosed_pair(), and skip_to_delim() - to understand multibyte characters +lib/sh/tmpfile.c + - in get_tmpdir(), make sure that $TMPDIR names a writable directory; + otherwise skip it. This catches names longer than PATH_MAX, but in + case it doesn't test that the length does not exceed PATH_MAX. Fixes + heap overrun bug reported by Eric Blake - 2/11 - ---- -variables.[ch] - - moved to a symbol organization inspired by lcc. The basic structure - is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash - table as one of its members. VAR_CONTEXTs are linked together to do - variable scoping. One nice thing about this is that the entire - symbol table doesn't need to be searched at function scope exit to - remove local variables. Fixes problems with only one instance of - builtin_env and function_env, even though it really is a stack - - shell_variables is now a VAR_CONTEXT *, with a global_variables - variable that points to the bottom of the stack for fast access - - function-scope local variables (assignments specified on the command - line before a function call) and function-local variables (declared - with the `local' builtin) have been unified in the same variable - context, replacing function_env - - assignment statements preceding the `.' and `eval' builtins are now - a separate variable scope VAR_CONTEXT, replacing builtin_env - - temporary_env (a HASH_TABLE) is now the only separate environment - - changes to export environment creation, variable binding, variable - lookup, local variable propagation all changed to work with the - new symbol table/scope structure - - a SHELL_VAR no longer has a `prev_context' member; it's not needed + 12/16 + ----- +builtin/{set,declare,shopt,trap,wait,bind,complete,enable,fc,history,read,setattr}.def +doc/{bash.1,bashref.texi} + - improvements and clarifications to the help text associated with + several builtins, in some cases bringing them into line with the + man page text. From Benno Schulenberg -execute_cmd.c - - changes to push_context calls to include any temporary variables in - temporary_env; pop_context takes care of propagating any temporary - variables if necessary - - calls to push_scope if `eval' or `.' is called with a list of - preceding variable assignments, and pop_scope called at end of - builtin's execution. pop_scope takes care of merging temporary - variables into the shell environment when appropriate - -builtins/{setattr,declare}.def - - changes to account for variable assignments preceding `local', - `export', `readonly', `declare', etc. to work with the new - variable scoping implementation +doc/{bash.1,bashref.texi} + - add `E' and `T' to the synopsis of the set builtin. + From Benno Schulenberg -shell.c - - since shell_variables is now a VAR_CONTEXT, call - delete_all_contexts() when the shell is reinitializing instead of - delete_all_variables() +builtins/{break,exit,fg_bg,hash,jobs,type,ulimit}.def +builtins/{common,evalfile}.c +{error,expr,jobs,mksyntax,nojobs,shell,subst,version,siglist}.c + - add gettextizing marks to untranslated strings + From Benno Schulenberg + 12/19 + ----- builtins/common.c - - new function, get_job_by_name(), used by execute_simple_command() - for the `auto_resume' stuff and get_job_spec() - -builtins/common.h - - new set of #defined constants for flags argument to - get_job_by_name() + - change display_signal_list (used by `trap -l' and `kill -l') to use + five columns instead of 4 to display signal names - 2/12 - ---- -command.h - - new redirection operator: r_reading_string for `here strings' +builtins/help.def + - use the true terminal width instead of assuming 80 when displaying + help topics, leaving two characters of whitespace between horizontal + descriptions instead of 1 + - change to print in columns with entries sorted down rather than across + (that is, like `ls' rather than `ls -x'). Change inspired by Benno + Schulenberg -parse.y - - new token, LESS_LESS_LESS, for new redirection `here string' - operator: [N]<<< word - - recognize LESS_LESS_LESS and create the appropriate redirection +jobs.h + - give values to the JOB_STATE enumerations so they can be used as + bitmasks, too -{dispose_cmd,copy_cmd,make_cmd,print_cmd}.c - - recognize r_reading_string and do the right thing (dispose_redirects, - copy_redirect, print_redirection, and make_redirection, respectively) + 12/22 + ----- +doc/{bash.1,bashref.texi} + - change description of `set' to make it clearer that you can use + `+' to turn off options + - clarify in the description of word splitting that sequences of + IFS whitespace at the beginning or end of the string are ignored -redir.c - - here_document_to_fd now takes the redirection operator as its - second argument - - new function, write_here_string, expands a here string and writes it - to the here document file descriptor - - here_document_to_fd calls write_here_string for r_reading_string - operator - - handle r_reading_string in do_redirection_internal() and - stdin_redirection() + 12/26 + ----- +doc/bashref.texi + - move `shopt' builtin to its own section; change internal references + from `Bash Builtins' to the new shopt builtin + - new section for builtins that modify shell behavior in `Shell + Builtin Commands'; move set and shopt to new section. Changes + inspired by Benno Schulenberg - 2/18 - ---- -doc/{bash.1,bashref.texi} - - documented here strings +{redir,subst}.c + - add MT_USETMPDIR flag to calls to sh_mktmpfd and sh_mktmpname. Bug + reported by Eric Blake {configure,Makefile}.in - - bumped version number up to bash-2.05b and the release status - to alpha1 + - changes so that the pathname for DEBUGGER_START_FILE is substituted + into pathnames.h at make time (allowing more flexibility in setting + `prefix' or `datadir') instead of at configure time. Suggested by + Nick Brown -expr.c - - make expr_streval understand that variables with the `invisible' - attribute are really unset, and accessing such a variable when - `set -u' is set should be an error +shell.c + - declaration for have_devfd; initialized from HAVE_DEV_FD + - declaration for check_jobs_at_exit; initialized to 0 + - declaration for autocd; initialized to 0 -variables.h - - new accessor macros: var_isset(var) and var_isnull(var), test - whether var->value is NULL +variables.c + - new dynamic variable, BASHPID, always set from return value from + getpid() (changes even when $$ doesn't change). Idea from Bruce + Korb -{eval,subst,variables}.c, builtins/{declare,setattr}.def - - be more consistent about using value_cell(var) instead of - directly referencing var->value - - use var_isset and var_isnull where appropriate +builtins/exit.def + - if check_jobs_at_exit is non-zero, list jobs if there are any stopped + or running background jobs; don't exit shell if any running jobs -builtins/help.def - - augmented a couple of help strings with pointers to `info' and - `man -k' +execute_cmd.c + - in execute_simple_command, if the first word of a simple command is + a directory name (after looking for builtins, so `.' isn't caught) + that isn't found in $PATH, and `autocd' is non-zero, prefix a "cd" + to the command words - 2/14 - ---- -variables.h - - new macros to use when setting variable values directly instead of - through bind_variable and its siblings +builtins/shopt.def + - new `checkjobs' option, changes value of check_jobs_at_exit + - new `autocd' option, changes value of autocd -{arrayfunc,variables}.c - - use var_setarray and other lvalue macros instead of assigning to - var->value directly +pcomplete.c + - add COMP_TYPE, set to rl_completion_type, to list of variables set + by bind_compfunc_variables and unset by unbind_compfunc_variables -builtins/setattr.def - - change show_var_attributes to show function definitions separately - from function attributes. This allows the output of `declare -f' - (with other flags), `export -f', and `readonly -f' to be reused as - shell input, instead of the old +doc/{bash.1,bashref.texi} + - document BASHPID + - document new shopt `checkjobs' option + - document new shopt `autocd' option + - document COMP_TYPE completion variable - declare -f[flags] func() - { - foo - } + 12/29 + ----- +aclocal.m4 + - in BASH_SYS_SIGLIST, check HAVE_DECL_SYS_SIGLIST instead of the + obsolete and no-longer-supported SYS_SIGLIST_DECLARED - which has syntax errors. When in posix mode, `export -fp' and - `readonly -fp' still don't print function definitions + 12/30 + ----- +lib/readline/vi_mode.c + - add ` (backquote) to the list of vi motion characters + - in rl_vi_delete_to, rl_vi_change_to, and rl_vi_yank_to, don't delete + character under the cursor if the motion command moves the cursor + backward, so add F and T to the commands that don't cause the + mark to be adjusted + - add ` to the characters that don't cause the mark to be adjusted + when used as a motion command, since it's defined to behave that way + - when a motion character that may adjust the mark moves point + backward, don't adjust the mark so the character under the cursor + isn't deleted - 2/16 - ---- -parse.y - - comment out calls to discard_parser_constructs; no need to call - empty functions +lib/readline/complete.c + - add variable rl_sort_completion_matches; allows application to + inhibit match list sorting + - add variable rl_completion_invoking_key; allows applications to + discover the key that invoked rl_complete or rl_menu_complete - 2/18 - ---- -lib/sh/memset.c - - replacement function for memset(3) +lib/readline/readline.h + - extern declarations for rl_completion_invoking_key and + rl_sort_completion_matches + +lib/readline/doc/rltech.texi + - documented rl_completion_invoking_key and rl_sort_completion_matches -lib/sh/Makefile.in, Makefile.in - - additions for memset.c +pcomplete.c + - export variable COMP_KEY to completion functions; initialized from + rl_completion_invoking_key; unset along with rest of completion + variables -configure.in,config.h.in - - check for memset, define HAVE_MEMSET if found, add memset.o to - LIBOBJS if not +doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi + - document COMP_KEY -lib/malloc/malloc.c - - removed zmemset(), replaced with calls to memset(3) +[many files] + - changes to make variables and function parameters `const' for better + text sharing. Changes originally from Andreas Mohr + -{subst,execute_cmd,lib/sh/netopen}.c - - replaced calls to bzero with calls to memset + 1/4/2007 + -------- +lib/intl/Makefile.in + - use cmp before copying libgnuintl.h to libintl.h -- maybe save a few + rebuilds +lib/builtins/Makefile + - fixes to build LIBINTL_H if necessary, dependency on this for + mkbuiltins.o prevented `make -j 6' from working correctly + + 1/8 + --- subst.c - - word_split() now takes a second argument: the value of $IFS, so - it doesn't have to look up IFS every time - - word_list_split() now calls getifs() and passes the result to - each call to word_split() as its second arg - - do a quick scan for CTLNUL in remove_quoted_nulls before allocating - new string, copying old string to it, copying over original string - and freeing new string + - new function, fifos_pending(), returns the count of FIFOs in + fifo_list (process substitution) -eval.c - - don't bother calling dispose_used_env_vars if temporary_env is NULL +subst.h + - extern declaration for fifos_pending() execute_cmd.c - - fix fix_assignment_words to only look up the builtin corresponding - to the first word if one of the words in the list is marked as - W_ASSIGNMENT - -hashlib.c - - renamed hash_string to hash_bucket, which better reflects what it - does - - extracted the portion of hash_bucket that computes the hash out - into a new hash_string() - - made new body of hash_bucket into a macro HASH_BUCKET; function - just calls the macro - - calls to hash_bucket in this file now call HASH_BUCKET macro - - in add_hash_item, just add a new item at the front of the appropriate - bucket list instead of at the end - -hashcmd.h - - reduced FILENAME_HASH_BUCKETS to 53 from 107 + - in execute_simple_command, if CMD_NO_FORK is set before we call + execute_disk_command, make sure there are no FIFOs in the expanded + words (from process substitution) and turn off CMD_NO_FORK if there + are, so they can get unlinked when the command finishes - 2/19 + 1/10 ---- -hashlib.[ch] - - find_hash_item, remove_hash_item, add_hash_item all take a new - third `flags' argument - - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in - flags arg - - find_hash_item will create a new hash table entry if HASH_CREATE is - passed in flags arg - - new function, hash_walk, takes a pointer to a function and a table - and calls the function for each item in the table. If the function - returns < 0, the walk is terminated - - fixed flush_hash_table to set table->nentries to 0 after freeing - all entries - - BUCKET_CONTENTS now has a new `khash' member, what key hashes to; - set by HASH_BUCKET macro (which calls hash_string), assigned in - find_hash_item (HASH_CREATE) and add_hash_item - - find_hash_item and remove_hash_item check `khash' against the - hash of the string argument before calling strcmp - -{alias,hashlib,hashcmd,pcomplib,variables}.c - - changed all calls to {find,remove,add}_hash_item - -builtins/hash.def - - return immediately from print_hashed_commands if there are no - entries in the hash table (this eliminates need for `any_printed' - variable) - - change print_hashed_commands to use hash_walk - -alias.c - - short-circuit all_aliases and map_over_aliases if - HASH_ENTRIES(aliases) == 0 - - simplify map_over_aliases by just allocating enough room in the - returned list for all entries in the aliases hash table, instead - of doing the check and xrealloc - - add_alias now calls add_hash_item with HASH_NOSRCH argument - -pcomplete.h - - sh_csprint_func_t is no more; use hash_wfunc instead - -pcomplib.c - - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes) - is 0 - - print_all_compspecs now takes a `hash_wfunc *' argument - - print_all_compspecs now just calls hash_walk - -builtins/complete.def - - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts - the right info, and calls print_one_completion +subst.c + - read_comsub now takes a flags parameter and returns appropriate W_* + flags in it + - command_substitute now returns a WORD_DESC *, with the string it used + to return as the `word' and `flags' filled in appropriately -variables.c - - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0 - - short-circuit flatten if the passed table has no entries - - bind_variable_internal takes a new fourth argument: `hflags', - to pass to hash table functions - - make_new_variable now passes HASH_NOSRCH flag to add_hash_item - - set_if_not now calls bind_variable_internal and passes - HASH_NOSRCH as flags argument - - bind_function now calls add_hash_item with HASH_NOSRCH argument - - fixed make_local_variable: old_var == 0 && was_tmpvar can never - be true - - if we didn't find an old variable in make_local_variable, call - bind_variable_internal with HASH_NOSRCH argument - - fix push_temp_var to reset variable context to 0 if binding into - global_variables->table +subst.h + - changed extern declaration for command_substitute -parse.y - - fix to parse_compound_assignment to avoid core dumps on empty - compound array assignments +{pcomplete,subst}.c + - changed callers of command_substitute appropriately subst.c - - getifs() is now global so read_builtin can call it + - string_extract_verbatim now takes an additional int flags argument; + changed callers -subst.h - - extern declaration for getifs() - - 2/20 + 1/11 ---- -hashlib.c - - changed hash_string to use a better hash function - - changed HASH_BUCKET to use masking rather than modulus to hash a - string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS - OF TWO +support/texi2html + - fix problem that caused index links to not be generated if the first + index node had a name different than the node name -hashlib.h - - DEFAULT_HASH_BUCKETS is now 64 +doc/bashref.texi + - encapsulated all indexes into a single `Indexes' appendix; works + around bug fixed in texi2html -hashcmd.h - - FILENAME_HASH_BUCKETS is now 64 + 1/12 + ---- +subst.c + - add call to sv_histtimefmt in initialize_variables so HISTTIMEFORMAT + from the environment is honored. Fix from Ark Submedes (heh) + -pcomplib.c - - COMPLETE_HASH_BUCKETS is now 32 +lib/readline/histfile.c + - make sure that the first character following the history comment + character at the beginning of a line is a digit before interpreting + it as a timestamp for the previous line -variables.c - - TEMPENV_HASH_BUCKETS is now 4 - -alias.c - - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table - -hashlib.c - - removed initialize_hash_table; folded code into make_hash_table - - fixed copy_bucket_array to copy the `khash' member of an item - - renamed functions to be more systematic and easier for me: - make_hash_table -> hash_create - hash_table_nentries -> hash_size - copy_hash_table -> hash_copy - find_hash_item -> hash_search - remove_hash_item -> hash_remove - add_hash_item -> hash_insert - flush_hash_table -> hash_flush - dispose_hash_table -> hash_dispose - print_table_stats -> hash_pstats - get_hash_bucket -> hash_items - - changed hash_search to short-circuit if table->nentries == 0 and - HASH_CREATE has not been passed in the flags argument - -{alias,variables,hashcmd,pcomplib}.c - - renamed calls to all renamed functions from hashlib.c +doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi + - added detail to make it clear exactly how history timestamps are + saved to and read from the history file -builtins/kill.def - - don't drop a leading `-' in a pid argument - - call kill_pid with an explicit third argument of 1 if the pid - argument to kill is < -1, rather than rely on the behavior of - kill(2) +subst.c + - change quote_escapes to add CTLESC before spaces if IFS is null, + just in case we have to split on literal spaces later on (e.g., in + case of unquoted $@). Corresponding changes to dequote_escapes. + Fixes a couple of problems reported by Brett Stahlman + - 2/21 + 1/14 ---- subst.c - - quoted_strchr is no longer declared `inline' - - skip_double_quoted is no longer declared `inline' - - string_extract_double_quoted is no longer declared `inline' + - make same change to read_comsub to add CTLESC before ' ' if $IFS is + null, since we will split on literal spaces later -lib/readline/input.c - - rl_gather_tyi is now an `int' valued function; returns the number - of characters read (0 or 1) or -1 on error - - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1 - and return a newline; something is wrong with the input fd + 1/15 + ---- +array.c + - new function, array_quote_escapes (ARRAY *a), calls quote_escapes + on each element of the array in the same way array_quote calls + quote_string + - call array_quote_escapes if match is not quoted in array_patsub + - array_slice is now used, so remove the #ifdef INCLUDE_UNUSED define + - change structure of array_subrange to call array_slice to create a + new array with the desired subset of elements, then call array_quote + or array_quote_escapes as necessary, like array_patsub. Convert to + a string by calling array_to_string on the sliced-out array - 2/25 +array.h + - new extern declaration for array_quote_escapes + +subst.c + - since array_patsub now calls quote_escapes as necessary, callers + don't need to call it after array_patsub returns. Fixes first bug + reported by Brett Stahlman + - since array_subrange now calls quote_escapes as necessary, callers + don't need to call it after array_patsub returns. Same fix as + for array_patsub + + 1/31 ---- -variables.[ch] - - IFS is now a special variable - - new special var function, sv_ifs(), called when IFS is set or unset - - call setifs() when IFS is first set in initialize_shell_variables - - call setifs() from make_local_variable and assign_in_env if - appropriate - - if assign_in_env() is called with a var assignment like `VAR=', - make the value in the new SHELL_VAR created be "" like - do_assignment_internal does, since certain parts of the shell use - a NULL value as evidence that the variable is unset (though - attributes may have been assigned) - - if push_temp_var pushes something up to the global_variables table, - make sure that the context is set to 0 - - new function dispose_temporary_env, called by both - dispose_used_env_vars and merge_temporary_env with different `free - func' function pointers; calls sv_ifs after disposing the temporary - environment - - push_exported_var now calls bind_variable_internal instead of - bind_variable - - pop_scope and pop_context now call sv_ifs +configure.in + - add -DSOLARIS to LOCAL_CFLAGS for solaris x -subst.[ch] - - new global variables used to keep track of IFS state, to avoid - having to call find_variable("IFS") all the time: - - ifs_var the SHELL_VAR for IFS - ifs_value ifs_var ? value_cell (ifs_var) : " \t\n" - ifs_cmap bitmap of characters in ifs_value - ifs_firstc first character in ifs_value - - - new function setifs(), sets the aforementioned ifs variables each - time IFS is set or unset, and at nested scope exit - - instead of calling getifs() from inside subst.c, use ifs_value - - getifs() now just returns ifs_value - - use ifs_firstc in string_list_dollar_star() - - only call member() in issep() if separators is more than one char - - don't cache a bitmap every time expand_word_internal() is called; - use ifs_cmap instead - - new macro, isifs(c), checks whether C is in ifs_cmap +config-bot.h + - don't #undef HAVE_GETCWD if GETCWD_BROKEN and SOLARIS are both + defined. Solaris's loopback mount implementation breaks some of the + file system assumptions the replacement getcwd uses. -builtins/read.def - - use issep() and isifs() macros instead of looking at $IFS directly +builtins/common.c + - if GETCWD_BROKEN is defined, call getcwd with PATH_MAX for the size + argument, so it will allocate a buffer for the current working dir + with that size, instead of one that's `big enough' -syntax.h - - make sure macros that access sh_syntaxtab cast the argument to - `unsigned char' before array access - - new macros: issyntype(c, type) and notsyntype(c, type), check - sh_syntaxtab[c] for a particular flag value `type' +config.h.in + - add #undef PRI_MACROS_BROKEN for AIX 4.3.3 - 2/26 - ---- -hashlib.h - - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T +pathexp.h + - new flag value for quote_string_for_globbing: QGLOB_REGEXP (quoting + an ERE for matching as a string) + +pathexp.c + - change quote_string_for_globbing to understand QGLOB_REGEXP -{hashlib,alias,variables,hashcmd,pcomplib}.c - - removed some casts when assigning to and using `data' member of a - `BUCKET_CONTENTS' +execute_cmd.c + - change execute_cond_node to pass 2 (regexp match), 1 (shell pattern + match), or 0 (no matching) to cond_expand_word subst.c - - in split_at_delims, call make_word_list instead of allocating and - initializing a WORD_LIST * directly + - change cond_expand_word to translate SPECIAL==2 into passing + QGLOB_REGEXP to quote_string_for_globbing -make_cmd.[ch] - - add_string_to_list is now just a macro that calls make_word_list - - make_simple_command now calls make_word_list instead of allocating - a WORD_LIST * directly +locale.c + - by default, if all else fails, set shell's idea of locale to "" + instead of its idea of `default_locale' -- the library functions + behave better with that value - 2/27 - ---- -copy_cmd.c - - copy_word now calls make_bare_word to allocate the copy - - copy_word_list now calls make_word_list to allocate the copy + 2/2 + --- +builtins/printf.def + - if PRI_MACROS_BROKEN is defined, #undef PRIdMAX (AIX 4.3.3 broken) -shell.h - - include `ocache.h' for simple object caching - - call cmd_init() to initialize the WORD_DESC and WORD_LIST object - caches + 2/3 + --- +Makefile.in,{builtins,doc}/Makefile.in,lib/*/Makefile.in + - add assignment for datarootdir as per GNU coding standards -{make,dispose}_cmd.c - - allocate WORD_DESC * and WORD_LIST * vars from their respective - ocaches, and return them to the cache when disposing +Makefile.in,builtins/Makefile.in,lib/intl/Makefile.in,po/Makefile.in.in + - use @localedir@ instead of $(datadir)/locale in assignment + 2/13 + ---- jobs.c - - renamed old `waiting_for_job' variable to `queue_sigchld', which - better reflects its intent: sigchld_handler does not call waitchld - if `queue_sigchld' is non-zero, it simply increments the count of - waiting children - - cleanup_dead_jobs now just sets and clears queue_sigchld instead of - blocking and unblocking SIGCHLD; it calls waitchld at the end if - `sigchld' is non-zero, but that's not really necessary - - in setjstatus, only call xrealloc if `statsize' is less than the - number of processes passed -- no reason to do it if they're the - same + - fix compact_jobs_list to not return js.j_lastj, since that is in use + and should not be overwritten. Fix from Len Lattanzi + - 2/28 + 2/16 ---- -sig.[ch] - - reinitialize_signals is no more; initialize_signals takes an - argument saying whether or not we are reinitializing - -builtins/exec.def - - reinitialize_signals() -> initialize_signals(1) - -test.c - - fix filecomp() to work right when one file has a non-positive - timestamp and the other file does not exist +lib/readline/text.c + - change rl_forward_char to allow moving to the end of the line when + using the arrow keys in vi insertion mode, rather than having the + behavior identical between vi command and insertion modes. Change + suggested by Hugh Sasse -doc/{bash.1,bashref.texi} - - document what happens for test's -nt and -ot operators when one - file operand exists and the other does not + 2/19 + ---- +CWRU/audit-patch + - patch from Steve Grubb of RedHat to make bash + audit root's behavior by logging commands using his audit + framework. Enabled if the shell's name is `aubash'. + 3/8 + --- jobs.c - - if we haven't messed with SIGTTOU, just manipulate queue_sigchld - in notify_of_job_status instead of calling sigprocmask() - - list_one_job now calls pretty_print_job directly instead of going - through print_job - - pretty_print_job now must be called with SIGCHLD blocked or held - instead of blocking SIGCHLD itself - - changed start_job so that it doesn't call UNBLOCK_CHILD and then - immediately call BLOCK_CHILD again (explicitly or via last_pid()), - call find_last_pid instead of last_pid and then UNBLOCK_CHILD - - changed wait_for_job the same way - - find_last_pid now takes a second argument: block; uses BLOCK_CHILD - if `block' is 1, not otherwise. Changed existing calls: - find_last_pid(j) -> find_last_pid(j, 0) - last_pid(j) -> find_last_pid(j, 1) - `last_pid()' is now gone - - rewrote wait_for_background_pids(); it was a little strange - -copy_cmd.c - - copy_if_command: don't copy null false_case commands - - copy_simple_command: don't copy a null redirection list - -subst.c - - in get_word_from_string and list_string, just check for " \t\n" - directly rather than calling strcmp - - in get_word_from_string and strip_trailing_ifs_whitespace, use - isifs() instead of issep(), since they're never called with - separators != $IFS - - change issep() to call isifs if separators is longer than one - character, since it's never called with anything but "", " ", - or $IFS + - use WSTATUS (p->status) instead of bare p->status. Fix from + Jim Brown - 3/1 + 3/9 --- +lib/readline/{complete,input,isearch,misc,readline,text,vi_mode}.c + - make sure cases where rl_read_key returns -1 (usually due to EIO + because the controlling tty has gone away) are handled correctly. + Prompted by report from Thomas Loeber + + 3/10 + ---- +sig.c + - new function, top_level_cleanup, callable from contexts where some + cleanup needs to be performed before a non-fatal call to + jump_to_top_level + sig.h - - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it - should have been all along + - new extern declaration for top_level_cleanup -lib/readline/doc/rltech.texinfo - - document that readline defaults to stdin/stdout if rl_instream/ - rl_outstream are NULL +builtins/common.c + - add calls to top_level_cleanup before calls to jump_to_top_level + in a builtin command context (no_args(), get_numeric_arg()). Fixes + bug reported by Ian Watson -lib/readline/terminal.c - - if an application is using a custom redisplay function, - rl_resize_terminal just calls rl_forced_update_display to tell - (*rl_redisplay_func) to update the display, otherwise call - _rl_redisplay_after_sigwinch +lib/readline/display.c + - in _rl_move_cursor_relative, use `new' when comparing against + the last invisible character in the prompt, since they both denote + buffer indices when in a multibyte locale, whereas `dpos' is a + display position -lib/readline/readline.c - - change readline_internal_setup() so the change to vi insertion mode - happens even if readline_echoing_p is 0 - - don't print the prompt to rl_outstream in readline_internal_setup - if we're not echoing and the caller has defined a custom redisplay - function -- let the redisplay function deal with it + 3/13 + ---- +lib/readline/complete.c + - set rl_completion_append_character to the default (' ') in + set_completion_defaults(). Fixes bug reported by David Emerson + -configure.in - - new option: --enable-mem-scramble, controls memory scrambling on - free() (on by default; only affects use of bash malloc) + 3/23 + ---- +builtins/evalfile.c + - make sure read() returns a value >= 0 before using it as an index + into string[] + - use a variable of type `ssize_t' for return value from read() + - only try to read the entire contents of a regular file in one shot + if the file size is less than SSIZE_MAX. These fix problems + reported by hooanon05@yahoo.co.jp. -config.h.in - - new option MEMSCRAMBLE, controlled by --enable-mem-scramble +include/typemax.h + - define SSIZE_MAX as 32767 if it's not defined + +lib/readline/display.c + - in rl_redisplay() and update_line(), if redrawing the prompt because + it contains invisible characters, make sure we redraw the character + indicating a modified history line and take it into account when + computing _rl_last_c_pos + - in update_line, if deleting characters and redrawing the new text, + make sure we adjust _rl_last_c_pos by wrap_offset in a multibyte + locale if the text we're drawing starts before or at the last + invisible character in the prompt string. Fixes bug reported on + bug-readline by J Pelkey - 3/5 - --- parse.y - - added ksh-like behavior of [...] to read_token_word: if a `[' is - seen in an assignment context and the previous characters in the - token form a valid identifier, parse the [...] with - parse_matched_pair to allow spaces (and newlines) in the subscript + - when adding at CTLESC character to the current token, do not + escape it with CTLESC if pass_next_character indicates that the + CTLESC was escaped by a backslash. Fixes bug reported by + Paul Bagshaw . -bashline.c - - new function bash_servicename_completion_function, for completing - service names from /etc/services + 3/25 + ---- +lib/readline/text.c + - in rl_forward_char, short-circuit the loop if in emacs mode and + rl_point == rl_end. Fixes problem with multibyte locales + reported by Len Lattanzi -bashline.h - - new extern declaration for bash_servicename_completion_function + 3/29 + ---- +command.h + - new flag for subshell_environment: SUBSHELL_PROCSUB, for process + substitution -builtins/complete.def - - allow new `-s/-A service' option to complete and compgen builtins +subst.c + - add SUBSHELL_PROCSUB to subshell_environment in process_substitute -pcomplete.h - - new CA_SERVICE define, new ITEMLIST variable it_services + 3/30 + ---- +doc/Makefile.in + - fix installation of bash.info to understand that it is in the build + directory, not the source directory -pcomplete.c - - add callback to bash_servicename_completion_function to generate - list of matching service names for completion +mailcheck.c + - new function, init_mail_dates, calls remember_mail_dates only if + there are no mailboxes in `mailfiles' + - new function, init_mail_file, initializes a FILEINFO, using the + last time mail was checked as the mtime and atime (or the time the + shell was started if last_time_mail_checked is uninitialized) + - call init_mail_file instead of update_mail_file in add_mail_file, + called from remember_mail_dates (which is supposed to initialize + the list of mail files) + - new convenience functions, alloc_mail_file and dispose_mail_file to + allocate and free FILEINFO structs + +mailcheck.h + - extern declaration for init_mail_dates -doc/bash.1,lib/readline/doc/rluser.texinfo - - documented new `-s/-A service' option to complete and compgen +shell.c + - call init_mail_dates instead of remember_mail_dates - 3/6 + 4/4 --- builtins/read.def - - change hard-coded `0' to new variable `fd' (initially 0) in - preparation for adding `-u fd' option + - changes to print $PS2 when a line is continued with a backslash in + an interactive shell. This is as POSIX requires -bashline.c - - bash_directory_completion_hook calls expand_prompt_string instead - of expand_string (it does the right thing). This keeps expansion - errors from causing a longjmp, which shouldn't happen because of - completion - - command_subst_completion_function was augmented very slightly to - do filename completion on a non-command-word in a command - substitution - - command_subst_completion_function now skips over the lcd that - rl_completion_matches puts in matches[0] if there is more than - one possible completion + 4/5 + --- +subst.c + - make sure quote_escapes is only ever called when the word to be + escaped is not marked as double-quoted -- cleaner, and allows us + to make certain assumptions - 3/7 + 4/6 + --- +subst.c + - change all EX_* defines to begin with SX_ + - new flag, SX_NOCTLESC, obeyed by string_extract_verbatim, tells it + to not obey CTLESC quoting + - change quote_escapes to not quote CTLESC with CTLESC if one of the + chars in $IFS is CTLESC, since the return value from quote_string + will be passed to word splitting and filename generation + - change read_comsub to do the same thing for unquoted command + substitutions + - change list_string to pass SX_NOCTLESC if CTLESC is one of the + chars in $IFS, so it will split on CTLESC instead of using it as a + quote character + + 4/7 --- +subst.c + - slight change to string_extract_verbatim to allow CTLESC to quote + CTLNUL even if SX_NOCTLESC is set in the flags passed, to protect + the CTLNULs from future calls to remove_quoted_nulls. Only + matters when $IFS contains CTLESC + - changes to cope with $IFS containing CTLNUL in the same way as the + CTLESC changes + builtins/read.def - - only add the unwind_protect to free `rlbuf' if `edit' is non-zero, - since we won't be using readline otherwise + - changes to cope with $IFS containing CTLNUL in the same way as the + CTLESC changes -lib/sh/zread.c - - renamed zread1 -> zreadintr + 4/16 + ---- +lib/sh/strftime.c + - a couple of fixes to the `%z' code -redir.c - - small change to redirection_error() to make a slightly better - guess about the invalid file descriptor if the redirection op is - r_duplicating_input or r_duplicating_output +eval.c + - add an fflush after printing the auto-logout message -include/stdc.h - - new macro, SH_VA_START, to encapsulate the difference between - stdarg va_start and varargs va_start + 4/24 + ---- +subst.c + - add call to top_level_cleanup in exp_jump_to_top_level to get things + like unwind-protects and the loop levels cleaned up -{error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c - - use SH_VA_START +{arrayfunc,expr,variables}.c + - add calls to top_level_cleanup before jump_to_top_level() - 3/8 - --- -builtins/read.def - - support for the ksh-like `-u fd' option + 4/27 + ---- +builtins/complete.def + - make sure the `command' argument to the -C option is printed with + single quotes, since multi-word commands will require them. Bug + reported by martin@snowplow.org -general.c - - new function sh_validfd(fd), returns 1 if fd is a valid open file - descriptor +execute_cmd.c + - change execute_builtin_or_function and execute_subshell_builtin_or_function + to call fflush(stdout) after the builtin or function returns, to + make sure that all output is flushed before the call returns. It + matters on cygwin. Fix suggested by Eric Blake -general.h - - extern decl for sh_validfd +redir.c + - in do_redirection_internal, if the file descriptor being acted upon + is the same one used by the stdout stream, call fflush(stdout) to + make sure all output is flushed before changing the underlying fd + out from underneath stdio. Fix suggested by Eric Blake -bashline.c - - don't call posix_readline_initialize() from initialize_readline(); - sv_strict_posix() should already have taken care of it - 3/11 + 4/30 ---- -{error,pcomplete,print_cmd}.c, builtins/common.c - - removed non-varargs versions of functions -builtins/printf.def - - if the string argument to %q has non-printing characters, call - ansic_quote to quote it rather than sh_backslash_quote +builtins/common.c + - new function, sh_chkwrite(int), fflushes stdout and checks for error; + printing an error message and returning a new exit status if there's + an error on stdout. Takes exit status as argument; returns new exit + status (EXECUTION_FAILURE if write error) -variables.h - - new attribute: att_trace (and corresponding trace_p() macro). - Functions with this attribute will inherit the DEBUG trap. - Currently ignored for variables +builtins/common.h + - new extern declaration for sh_chkwrite -builtins/declare.def - - new `-t' option to declare/typeset toggle the `att_trace' attribute +builtins/{alias,cd,complete,echo,fc,history,pushd,shopt,times,trap,type,ulimit,umask}.def + - change to use sh_chkwrite to report write errors -builtins/setattr.def - - check for att_trace and output `-t' flag in show_var_attributes +builtins/fc.def + - if an error occurs while writing commands from the history to a file + to be executed, report a write error and return failure without + attempting to execute any commands -execute_cmd.c - - if a function is being traced (it has the `-t' attribute set), - don't turn off the DEBUG trap when it executes + 5/1 + --- +builtins/{bind,declare,set,setattr}.def + - change to use sh_chkwrite to report write errors -doc/{bash.1,bashref.texi} - - document the new `-t' option to declare/typeset + 5/2 + --- +lib/readline/input.c + - fix off-by-one errors in _rl_get_char (pop_index) and rl_stuff_char + (push_index) that caused the 511th character in the buffer to be + discarded. Fixes bug reported by Tom Bjorkholm + + 5/8 + --- +subst.c + - fix parameter_brace_remove_pattern to pass getpattern() newly-allocated + memory. If word expansions (particularly brace expansions) are + required, the expansion code will free the string passed to + expand_word_internal, and we don't want to free unallocated memory + (patstr++) or have duplicate frees (patstr). Fixes bug reported on + Red Hat bugzilla + + 5/9 + --- +lib/readline/signals.c + - fix bug in rl_set_signals that caught SIGINT twice and didn't catch + SIGTERM. Bug reported by Ed Kwan - 3/12 + 5/18 ---- -execute_cmd.c - - don't execute the debug trap in the `cm_simple:' case of - execute_command_internal; run it in execute_simple_command so we - get the line number information right when executing in a shell - function - - run a DEBUG trap before executing ((...)) arithmetic commands, - like ksh93 - - run a DEBUG trap before executing [[...]] conditional commands, - like ksh93 +jobs.c + - change compact_jobs_list to return 1 if js.j_lastj == 0 and there is + a job in jobs[0]; compact_jobs_list should never return an index + already occupied + - change reset_job_indices to avoid infinite looping when js.j_firstj + == 0 or js.j_firstj == js.j_jobslots upon function entry. Fixes + bug reported by osicka@post.cz -eval.c - - add a static forward declaration for alrm_catcher() + 5/20 + ---- -general.c - - add static forward declarations for bash_special_tilde_expansions, - unquoted_tilde_word, initialize_group_array +execute_cmd.c + - new variable, executing_builtin, keeps track of number of "levels" + of builtins being executed; incremented by execute_builtin; saved + and restored by execute_simple_command -variables.h - - add extern declarations for sh_get_env_value, map_over_funcs, - local_exported_variables +subst.c + - new variable, assigning_in_environment, set and unset around calls + to assign_in_env by the expansion code variables.c - - add static forward declarations for dispose_temporary_env, - make_func_export_array - -bashhist.c - - add static forward declaration for check_history_control + - use executing_builtin and assigning_in_environment to decide whether + or not to look into temporary_env when calling find_variable_internal. + Fixes problem reported by Kevin Quinn -configure.in - - add a call to AC_CHECK_DECLS for strcpy + 5/22 + ---- +redir.c + - change add_undo_redirect to differentiate between file descriptors + greater than SHELL_FD_BASE (currently 10) used internally to save + others and then being the targets of user redirection and fds that + are just the target of user redirections. The former need to have + an `exec undo' redirect added to undo it in case exec throws away + redirections; the latter does not. We use the close-on-exec flag + for this: if it's set, we assume that the file descriptor is being + used internally to save another. Fixes problem reported by Ian + Jackson -config.h.in - - add placeholder for HAVE_DECL_STRCPY define, set by configure +shell.c + - new function, init_interactive_script(), does interactive initialization + for a script run with `bash -i script' -- does everything the same + as init_interactive except set `interactive == 1', which causes the + shell to read from the standard input, after calling + init_noninteractive + - call init_interactive_script if a script is run as `bash -i script'. + Fixes problem reported by Joseph Michaud -general.h - - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero - value + 5/24 + ---- +builtins/printf.def + - change vbadd to only call FASTCOPY if the passed buffer length is + > 1 + - if the `-v' option is supplied and `vbuf' is already non-null from a + previous `printf -v var' call, set vbuf[0]=0 explicitly instead of + relying on vbadd to do it -- vbadd may not be called. + - fix PRETURN macro to set vbuf[0] == 0 if vbuf is not freed. These + should fix problem reported by Elmar Stellnberger -sig.h - - add prototype to typedef of SigHandler +lib/readline/display.c + - fix update_line to deal with the case where col_lendiff > 0 (meaning + the new string takes up more screen real estate than the old) but + lendiff < 0 (meaning that it takes fewer bytes to do so). This can + happen when a multibyte prompt string is replaced with a longer one + containing only single-byte characters (e.g., when doing a reverse + i-search). Fixes gentoo bug reported by Peter Volkov + -lib/readline/histlib.h - - removed extern declaration of strcpy() - - include string.h/strings.h directly in histlib.h instead of source - files +builtins/read.def + - make sure we only print $PS2 if the standard input is a terminal + - new function, read_mbchar, to read a multibyte character so we + can make sure we read entire multibyte chars when `read -n' is + used, rather than bytes. Only called when -n is supplied. + Fixes problem reported by Stanislav Brabec -lib/readline/{histexpand,histfile,history,histsearch}.c - - don't include string.h/strings.h now that histlib.h includes it + 5/25 + ---- +externs.h + - new #defines for third argument to named_function_string: + FUNC_MULTILINE (don't suppress newlines) and FUNC_EXTERNAL (convert + to external display form) -lib/tilde/tilde.c - - removed extern declaration of strcpy(), rely on string.h/strings.h +subst.h + - new extern declaration for remove_quoted_escapes -command.h - - four new redirection types: r_move_input, r_move_output, - r_move_input_word, r_move_output_word, for - [N]<&word- and [N]>&word- from ksh93 +subst.c + - remove_quoted_escapes is now global print_cmd.c - - changes to print r_move_input[_word] and r_move_output[_word] + - in named_function_string, if FUNC_EXTERNAL is in the flags argument, + call remove_quoted_escapes to convert from internal to external form. + Fixes bug reported by Bo Andresen -copy_cmd.c - - changes to copy r_move_input[_word] and r_move_output[_word] +variables.c,builtins/{declare,setattr,type}.def + - use FUNC_MULTILINE in calls to named_function_string as appropriate + - add FUNC_EXTERNAL to calls to named_function_string as appropriate -dispose_cmd.c - - changes to dispose r_move_input_word and r_move_output_word + 5/27 + ---- +{make_cmd,variables}.c + - changes to enable the shell to compile when debugger support is + configured out (function_def hash table and access functions). Fixes + bug reported by Horst Wente -make_cmd.c - - changes to make r_move_input[_word] and r_move_output[_word] from - r_duplicating_{input,output}_word, which is how the new redirs - are passed by the parser +builtins/help.def + - fix bug in `help' two-column printing to avoid referencing + shell_builtins[num_shell_builtins] -redir.c - - changes to make r_move_input[_word] and r_move_output[_word] do - the right thing when executed +error.c + - in get_name_for_error, use dollar_vars[0] if the name returned from + looking in $BASH_SOURCE[0] is the empty string as well as if it's + null -builtins/read.def - - print an error message and return failure immediately if zread/zreadc - return < 0 + 5/31 + ---- +arrayfunc.c + - change array_value_internal to set *RTYPE to 1 if the reference is + array[*] and 2 if the reference is array[@] -doc/{bash.1,bashref.texi} - - documented new [n]<&word- and [n]>&word- redirections +subst.c + - in parameter_brace_expand_word, set the flags returned by the word + desc to include W_HASQUOTEDNULL if array_value returns QUOTED_NULL + for an array reference like x[*] and the word is quoted. Fixes bug + reported by Christophe Martin - 3/13 + 6/1 + --- +jobs.c + - several changes to preserve errno if tcgetpgrp/tcgetattr/tcsetattr + fail, for subsequent error messages + - change initialize_job_control to turn off job control if the terminal + pgrp == -1 or is not equal to shell_pgrp (with an error message) + - in initialize_job_control, if the shell has been forced interactive + with -i, make sure stderr is hooked to a tty before using it as + the controlling terminal. If it's not, try to open /dev/tty and + assign it to shell_tty. Fixes problems reported by Derek Fawcus + + + 6/13 ---- -lib/readline/isearch.c - - enabled code to allow chars bound to rl_rubout to delete characters - from the incremental search string - -shell.c - - add `-l' invocation option to parse_shell_options; equivalent to - `--login' - - fixed set_login_shell to check first char of base pathname of argv0 - for `-', like other shells - - move the check for make_login_shell after the call to - parse_shell_options because the `-l' option might set it - -doc/{bash.1,bashref.texi} - - documented new `-l' invocation option - -array.c - - new function, array_shift, shifts an array left by a specified - number of elements - - array_walk is now compiled in by default - - array_to_assignment_string now takes a second argument: int quoted. - If non-zero, the result is single-quoted before being returned - - quoted_array_assignment_string has been removed - -array.[ch] - - renamed most of the array functions so that all have an array_ - prefix and are more systematically named - - array_slice now preserves the indicies from the original array - - change array_to_assign to use a static buffer for expanding the - array indices, instead of malloc/free - -{arrayfunc,subst,variables}.c, builtins/read.def - - changed calls to various array functions to use new names - -lib/sh/stringvec.c, externs.h - - renamed all of the functions to have a strvec_ prefix and to have - a more sensible name scheme - - strvec_search's arguments are now supplied in reverse order, so - the char **array is first, like the other functions - - new function, strvec_resize, xrealloc for strvecs - -{alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp, -pcomplete,variables}.c -lib/sh/stringlist.c -builtins/{bind,complete,exec,getopts,pushd,set}.def - - change calls to all functions from lib/sh/stringvec.c - - use strvec_resize where appropriate +support/shobj-conf + - changes to support shared object and shared library creation on AIX + 5.x and later versions. From Niklas Edmundsson -externs.h - - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is - defined + 6/17 + ---- +builtins/mkbuiltins.c + - new array of builtins, posix_builtins, containing builtins listed + as special to the command search order by POSIX + - add POSIX_BUILTIN to the builtin flags if the builtin name is one + that's special to the posix command search order -lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h - - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF) +builtins.h + - new define, POSIX_BUILTIN, means that a builtin is special to the + posix command search order -lib/readline/readline.h - - new struct readline_state, encapsulates most of readline's internal - state in case you need reentrancy or nested calls to readline() - - extern declarations for rl_save_state, rl_restore_state + 6/22 + ---- +lib/readline/display.c + - new macro, WRAP_OFFSET, intended to replace W_OFFSET. Takes prompt + strings longer than one physical line with invisible characters on + the second line into account when calculating the number of + invisible characters on the current screen line + - use WRAP_OFFSET where appropriate (update_line, _rl_move_cursor_relative) + - change update_line to deal with adjusting _rl_last_c_pos in a + multibyte environment when the prompt has invisible chars on the + second line and redisplay has output the invisible characters + - change _rl_move_cursor_relative to adjust _rl_last_c_pos in a + multibyte environment when the prompt has invisible chars on the + second line and the redisplay draws the invisible character. Fixes + redisplay bug reported by Andreas Schwab -lib/readline/readline.c - - add (undocumented) int rl_save_state (struct readline_state *), - int rl_restore_state (struct readline_state *) - 3/14 + 7/11 ---- -array.[ch] - - new function, array_rshift, shifts an array right by a specified - number of elements, optionally inserting a new element 0 -examples/bashdb/bashdb - - new single-file version of bash debugger, originally modified from - version in bash-2.04 by Gary Vaughan (the old debugger still - appears in examples/obashdb). This version has a more gdb-like - command set +lib/readline/rltty.c + - enable flush-output code for systems other than AIX 4.1. Problem + reported by Jan Kratochvil -examples/bashdb/bashdb.el - - new emacs bashdb debugger mode from Masatake YAMATO + 7/12 + ---- +lib/readline/display.c + - set prompt_invis_chars_first_line from the portion of the prompt + following the final newline, instead of from the prefix. Fixes + bug reported on the Ubuntu bug list by dAniel hAhler + -execute_cmd.c - - don't make $LINENO relative to function start unless the shell is - currently interactive -- this is what ksh93 does and what I - believe to be the intent of POSIX.2 (this required changing some - of the test checks because the output has changed) - - run the debug trap for each command in an arithmetic for expression, - like ksh93 does + 7/13 + ---- +variables.c + - use native __QNX__ and __QNXNTO__ cpp defines instead of qnx and + qnx6, respectively. Patch from Sean Boudreau -lib/readline/vi_mode.c - - redid rl_vi_subst (binding func for `s' and `S') in terms of - rl_vi_change_to: `S' == `cc' and `s' == `c '. This makes undo - work right +lib/sh/getcwd.c + - #undef HAVE_LSTAT on qnx, so it uses stat instead. Patch from + Sean Boudreau - 3/18 + 7/21 ---- -hashlib.c - - fixed hash_walk to return if the item function returns < 0, instead - of breaking out of the current hash chain - -array.c - - fixed array_walk to return if the item function returns < 0, like - hash_walk - -lib/sh/stringlist.c, externs.h - - new function: strlist_walk, takes a stringlist and a pointer to an - item func. Like other _walk funcs, if item func returns < 0 the - walk is cancelled - - new function: strlist_flush, frees items in the contained list - with strvec_flush - - renamed functions to have a strlist_ prefix and be more systematic - -pcomplib.c,pcomplete.h - - removed redundant `progcomp_initialized' variable - - renamed functions to have `progcomp_' or `compspec_' prefixes - like the hash library - -{bashline,pcomplete}.c,builtins/complete.def - - fixed calls to stringlist functions to use new names - - fixed calls to functions in pcomplib.c to use new names +builtins/common.c + - change sh_invalidnum to be a little smarter about octal and hex + numbers and change the message appropriately. Bug originally + reported on coreutils list by Jürgen Niinre -pcomplete.c - - made the debugging code #ifdef DEBUG -- it should be mature enough + 7/26 + ---- +test.c + - make sure the string passed to test_unop has only a single character + following the `-'. Fixes bug reported by Michael A. Smith + -builtins/hash.def,parse.y - - use REVERSE_LIST(x, t) instead of (t)reverse_list(x) +parse.y + - better input validation: make sure a word looks like a conditional + unary operator (-X) before calling test_unop -list.c,{externs,general}.h - - renamed the list functions to have a list_ prefix, changed callers + 7/28 + ---- +trap.c + - in trap_handler, if it's called directly from the signal handler + (e.g., SIGINT sighandler, set by set_sigint_handler), but the + trap disposition has been reset to the default between the + assignment and receipt of the signal, check that the signal is + trapped and issue a warning if the shell was compiled with + debugging enabled. Fixes bug reported by Fergus Henderson + -externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c - - word_list_to_argv -> strvec_from_word_list - - argv_to_word_list -> strvec_to_word_list - - moved functions to lib/sh/stringvec.c + 8/1 + --- +lib/readline/{util,histexpand}.c + - fixes for small memory leaks from Michael Snyder -lib/sh/stringvec.c - - changed name of second argument to strvec_from_word_list from `copy' - to `alloc' so the use of `copy' between strvec_from_word_list and - strvec_to_word_list isn't as confusing - - changed name and sense of second argument to - strvec_to_word_list from `copy' to `alloc' for the same reason -- - now both functions agree on semantics of second argument + 8/18 + ---- +Makefile.in + - add dependency on builtins/builtext.h to nojobs.o list. Fixes + `make -j 5' issue reported by Chris MacGregor -lib/sh/stringlist.c - - ditto for strlist_from_word_list and strlist_to_word_list +examples/loadables/Makefile.in + - add @LDFLAGS@ to SHOBJ_LDFLAGS assignment -- experimental. Suggested + by Mike Frysinger -subst.c - - changed callers of strvec_to_word_list +examples/loadables/{basename,cut,dirname,finfo,head,ln,logname,mkdir,pathchk,print,printenv,push,realpath,rmdir,sleep,tee,truefalse,tty,uname,unlink,whoami}.c + - fix up some includes. Fix from Mike Frysinger - 3/19 + 8/21 ---- -builtins/hash.def - - added `-l' option to list table or individual targets in reusable - format - - added `-d' option to remove one or more names from the table of - hashed commands (provides `unhash' or `unalias -t' functionality) - -doc/{bash.1,bashref.texi} - - documented new `-l' and `-d' options to `hash' +histexpand.c + - fix another memory leak in history_find_word. Bug report originally + from Michael Snyder ; test case suggested by Jim + Blandy -hashcmd.[ch] - - renamed functions to have a `phash_' prefix and follow new naming - convention - - phash_remove now returns an int: 1 if command not in hash table, - 0 if filename removed OK + 8/26 + ---- +subst.c + - change to do_assignment_internal to make an assignment to a variable + with the `noassign' internal attribute not a variable assignment + error. + - fix do_assignment_internal so assignment to a `noassign' variable + does not cause it to suddenly become visible if it's currently + invisible -{findcmd,variables}.c, builtins/{hash,type}.def - - changed callers to use new names from hashcmd.c + 9/3 + --- +stringlib.c + - change strsub to check whether or not temp is non-null before + trying to null-terminate it. Also make sure temp is allocated + even if the pattern and replacement strings are empty, and set + to a copy of string (like ${foo//}) + Bug report from Timo Lindfors -builtins/common.[ch] - - new function, sh_notfound(s), prints standard `not found' message - - new function, sh_invalidid(s), prints standard `invalid identifier' - message - - new function, sh_restricted(s), prints standard `restricted' message - for restricted shells - - new function, sh_invalidnum(s), prints standard `invalid number' - message - - renamed bad_option to sh_invalidopt, changed to print - `invalid option' instead of `unknown option' - - new function, sh_invalidoptname, prints standard `invalid option - name' for long options - - new function, sh_badjob (s), prints standard `no such job' message - - new function, sh_invalidsig (s), prints standard `invalid signal - specification' message - - new function, sh_nojobs (s), prints standard `no job control' message - - new function, sh_needarg (s), prints standard `option requires an - argument' message - - new function, sh_neednumarg (s), prints standard `numeric - argument required' message - - new function, sh_badpid(s), prints standard `not a pid...' message - - new function, sh_erange (s, desc) prints standard `out of range' - message, optionally using `desc' to say what the argument is - -builtins/{alias,command,declare,exec,hash,type}.def - - call sh_notfound() instead of calling builtin_error directly - -builtins/{declare,getopts,read,set,setattr}.def - - call sh_invalidid() instead of calling builtin_error directly - -builtins/{cd,command,enable,exec,hash,source}.def - - call sh_restricted() instead of calling builtin_error directly - -builtins/{printf,read,ulimit}.def, builtins/common.c - - call sh_invalidnum instead of calling builtin_error directly - -builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c - - call sh_invalidopt instead of bad_option or builtin_error directly - -builtins/{complete,set,shopt}.def - - call sh_invalidoptname instead of builtin_error directly - -builtins/{fg_bg,jobs,kill,wait}.def - - call sh_badjob instead of calling builtin_error directly - -builtins/common.c, builtins/{kill,signal}.def - - call sh_invalidsig instead of calling builtin_error directly - -builtins/{fg_bg,suspend,wait}.def - - call sh_nojobs instead of calling builtin_error directly - -builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def - - call sh_neednumarg and sh_needarg where required - -builtins/{kill,wait}.def - - call sh_badpid where required - -builtins/{break,fc,history,pushd,shift,ulimit,umask}.def - - call sh_erange where appropriate + 9/10 + ---- +{config.h,Makefile,configure}.in,aclocal.m4 + - new tests for fpurge and __fpurge -builtins/printf.def - - new static function, printf_erange, prints standard out-of-range - warning message +lib/sh/fpurge.c, externs.h + - new file, fpurge(3) implementation with external decl in externs.h -builtins/set.def - - changed so that calls to sh_invalidopt always include the leading - `+' or `-' +builtins/common.c + - add call to fpurge(stdout) to sh_chkwrite -builtins/shopt.def - - changed SHOPT_ERROR macro to shopt_error function +{redir,execute_cmd}.c + - add call to fpurge(stdout) after fflush(stdout) before changing + stdout file descriptor and after a builtin or function executes -builtins/bind.def - - regularized error messages to `bind: object: error string' like - other error messages + 9/12 + ---- +expr.c + - make sure noeval is set to 0 when a longjmp occurs, since it will + not be reset otherwise, and it can be set to 1 while processing + a {pre,post}-increment or {pre,post}-decrement token + - set noeval to 0 at the beginning of evalexp, since it's never + called recursively -builtins.h - - the `short_doc' member of a `struct builtin' is now of type - `const char *' - - the strings in `long_doc' array of a struct builtin are now const + 9/14 + ---- +config-top.h + - new builder-modifiable define: DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS + Turning it on will cause errors from EPIPE to not be reported by + the normal shell write error message mechanism -builtins/mkbuiltins.c - - changes for new `const' members of struct builtin +builtins/common.c + - if DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS is defined, don't print an + error message from sh_wrerror if errno == EPIPE. Suggestion from + Petr Sumbera - 3/20 + 9/19 ---- -lib/readline/histfile.c - - use pointers instead of indexing into buffer when reading the - contents of the history file in read_history_range and - history_truncate_file +{jobs,nojobs}.c,jobs.h + - add code to retry fork() after EAGAIN, with a progressively longer + sleep between attempts, up to FORKSLEEP_MAX (16) seconds. Suggested + by Martin Koeppe - 3/21 + 9/21 ---- -lib/readline/histfile.c - - new file, with code to mmap the history file for reading and - writing (depends on HAVE_MMAP, currently nothing checks for that) +version.c + - change copyright year to 2007 - 3/25 + 9/25 ---- -error.[ch] - - new function, err_badarraysub(s), calls report_error with standard - `bad array subscript' message - - new function, err_unboundvar(s), calls report_error with standard - `unbound variable' message - - new function, err_readonly(s), calls report_error with standard - `readonly variable' message - -{arrayfunc,subst}.c - - call err_badarraysub where appropriate +pathexp.c + - change quote_string_for_globbing to add a backslash in front of a + backslash appearing in the pathname string, since the globbing + code will interpret backslashes as quoting characters internally. + Bug reported by on the debian list + (443685) -{expr,subst}.c - - call err_unboundvar where appropriate + 10/8 + ---- +lib/readline/display.c + - in update_line, make sure _rl_last_c_pos is > 0 before setting + cpos_adjusted (or we actually moved the cursor to column 0 in + _rl_move_cursor_relative). Fixes redisplay bug with prompt with + only invisible characters reported by dAniel hAhler + -{arrayfunc,variables}.c - - call err_readonly where appropriate + 10/10 + ----- +lib/readline/display.c + - in rl_redisplay, when calculating the new physical cursor position + in a multibyte locale (`tx'), do not call rl_backspace if tx ends + up < 0. Rest of fix for bug reported by dAniel hAhler + -shell.c - - changed text of bad option error messages to be the same as that - printed for builtin errors + 10/12 + ----- +lib/sh/getcwd.c + - fix memory overwrite problem that's possible if buf is NULL and + passed size is greater than the pathname length. Reported by + Ian Campbell -builtins/common.c - - changed sh_invalidopt to print the invalid option before the rest - of the error message (required some tests to be modified) - - new function, sh_readonly, calls builtin_error with standard - `readonly variable' message +builtins/ulimit.def + - change the multiplier for the -c and -f options (`blocks') to 512, + the traditional value (and the one POSIX specifies). Bug reported + by Pete Graner -variables.c,builtins/declare.def - - call sh_readonly where appropriate +braces.c + - pass process substitution through unchanged the same as command + substitution. Prompted by suggestion from Stephane Chazelas + -lib/sh/stringvec.c - - added strvec_remove (sv, s), removes S from SV and shuffles rest of - elements down 1 +lib/readline/input.c + - in rl_unget_char, fix off-by-one error when resetting pop_index if + it's < 0. Bug reported by Uwe Doering -lib/sh/stringlist.c - - added strlist_remove(sl, s), just calls strvec_remove on the - component list +builtins/type.def + - change exit status of `type' to not successful if any of the + requested commands are not found. Reported by Stephane Chazleas + -externs.h - - new extern declarations for strvec_remove and strlist_remove - - fixed extern declaration for strvec_search; the arguments were - reversed (unimportant, it's not compiled into the shell) +pcomplete.c + - change command_line_to_word_list to use rl_completer_word_break_characters + instead of the shell metacharacters to split words, so programmable + completion does the same thing readline does internally. Reported + by Vasily Tarasov -subst.c - - change param_expand to call quote_escapes on values retrieved when - expanding the positional parameters - - change parameter_brace_expand_word to quote escapes on values - retrieved when expanding the positional parameters - - fix parameter_brace_substring to quote escape characters on unquoted - substrings extracted from variable values (needed to separate case - VT_VARIABLE from VT_ARRAYMEMBER for this, since, because - get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to - skip over quoted characters in an already-appropriately-quoted - string to find the substring we want) - - fix parameter_brace_substring to quote escape characters in the - value returned by pos_params when expanding subsets of the - positional parameters and not within double quotes (in which case - pos_params() quotes the string for us) - - fix parameter_brace_substring to quote escape characters in the - value returned by array_subrange when expanding subsets of an - array and not within double quotes (in which case - array_subrange() quotes the string for us) - - new function, quoted_strlen(s), does strlen(s) while skipping over - characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's - not used yet) - - changed pos_params() so it always returns a list whose members are - quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 + 10/16 + ----- +bashline.c + - When completing a command name beginning with a tilde and containing + escaped specical characters, dequote the filename before prefixing + it to the matches, so the escapes are not quoted again. Reported + by neil@s-z.org -arrayfunc.c - - fix array_value to consistently call quote_escapes, even when a - non-array variable is being subscripted with element 0, in which - case we return the variable value + 10/17 + ----- +expr.c + - in readtok(), don't reset lasttp if we've consumed the whitespace + at the end of the expression string. Fixes error message problem + reported by -lib/sh/strtrans.c - - make the for_echo parameter to ansicstr a `flags' parameter that - has its old `for echo' meaning if flags&1 is non-zero (which is - consistent with the old code) - - Added code to the `flags' parameter to ansicstr so that if flags&2 - is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the - expanded string - - change ansiexpand() to call ansicstr with a `flags' parameter of 2 + 11/1 + ---- +builtins/printf.def + - change asciicode() to return intmax_t; add multibyte character + support instead of assuming ASCII (depending on behavior of system + multibyte support functions). Fixes bug reported by Rich + Felker - 3/26 + 11/5 ---- -lib/readline/histfile.c - - when reading and writing the history file, use malloc instead of - xmalloc and handle failures gracefully, so the application doesn't - abort if the history file or history list is too big +execute_cmd.c + - if redirections attached to a compound command fail, make sure to + set last_command_exit_value when returning EXECUTION_FAILURE. + Fixes bug reported separately by Andreas Schwab + and Paul Eggert - 3/27 + 11/9 ---- -arrayfunc.c - - changed array_value_internal to take an additional `int *' - parameter, in which is returned the type of array indexing - performed (array[@] vs. array or array[index]) - - changed array_value and get_array_value to take a corresponding - extra parameter and pass it to array_value_internal - - changed array_value_internal to no longer return newly-allocated - memory or quote CTLESC and CTLNUL in the returned string if - `simple' array indexing (subscript not `@' or `*') is being - performed. This makes it more like a variable lookup +builtins/read.def + - make sure the return value from get_word_from_string is freed if + non-null. Fixes memory leak bug reported by Lars Ellenberg + -arrayfunc.h - - changed prototypes for array_value and get_array_value + 11/10 + ----- +variables.c + - use getpid() as value of seeded_subshell to avoid problems with + random number generator not getting re-seeded correctly when + subshells are created. Fix from Tomas Janousek -expr.c - - added new parameter to call to get_array_value in expr_streval - - don't need to free memory returned by get_array_value any more +lib/readline/display.c + - in update_line(), when outputting characters at the end of the line, + e.g., when displaying the prompt string, adjust _rl_last_c_pos by + wrap_offset if the text we're drawing begins before the last + invisible character in the line. Similar to fix from 5/24. Fixes + bug reported by Miroslav Lichvar + 11/14 + ----- subst.c - - quote_escapes now works with multibyte characters - - dequote_string now works with multibyte characters - - dequote_escapes is now needed, so it's compiled in, and it - now works with multibyte characters - - remove_quoted_escapes now just calls dequote_escapes and copies the - result over the argument string - - remove_quoted_nulls now returns its char * argument, parallels - remove_quoted_escapes - - parameter_brace_expand_word now passes the new argument to - array_value and quotes CTLESC and CTLNUL in the result if it's a - `simple' array expansion by calling quote_escapes - - get_var_and_type now returns VT_ARRAYMEMBER for references like - ${array} where `array' is an array variable (just like ${array[0]}). - Documented (in comment) that a VT_VARIABLE return value means that - quote_escapes has been called at some point - - changed callers of get_var_and_type to no longer free value if - VT_ARRAYMEMBER is returned as type - - changed parameter_brace_substring and parameter_brace_patsub to - call dequote_escapes on the value from get_var_and_type if the - type is VT_VARIABLE, since the substring and pattern substitution - code doesn't understand CTLESC quoting - - parameter_brace_substring no longer needs to call quoted_substring - for the VT_ARRAYMEMBER case - - changed parameter_brace_patsub to call quote_escapes on the result - of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to - quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases - if the `MATCH_QUOTED' flag isn't set (if it is, the pattern - substitution functions perform any necessary quoting) - - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED - -lib/malloc/mstats.h - - new member in _malstats: u_bits32_t bytesreq, the total number of - bytes requested by the caller via calls to malloc() and realloc() - -lib/malloc/stats.c - - print bytesreq member in _print_malloc_stats - - don't print statistics for buckets for which nmal == 0 (no mallocs) + - fix $[ expansion case to deal with extract_arithmetic_subst + returning NULL (if the `]' is missing) and return the construct + unchanged in that case. Fixes tab completion bug reported by + Heikki Hokkanen (debian bug 451263) -lib/malloc/malloc.c - - modified internal_malloc, internal_realloc to keep running total of - number of bytes requested by calling application +lib/readline/mbutil.c + - fix _rl_find_next_mbchar_internal to deal with invalid multibyte + character sequences when finding non-zero-length chars. Fixes + bug reported by Morita Sho -shell.c - - sh_exit is now compiled in; exit_shell calls sh_exit + 11/15 + ----- +variables.c + - add new function `seedrand' to seed the bash random number + generator from more random data. Suggestion from Steve Grubb + + - replace the rng in brand() with a slightly better one from FreeBSD + (filtered through Mac OS X 10.5). Replacement suggested by + Steve Grubb -error.c - - changed fatal_error, report_error, parser_error to call sh_exit + 11/21 + ----- +configure.in + - darwin 9 also requires linking against libreadline.a and + libhistory.a because of Apple's questionable decision to ship a + libreadline "replacement" that doesn't provide all functions - 3/28 +doc/{bash.1,bashref.texi} + - slight change to the text describing the effect of set -e when + in a || or && list + + 12/5 ---- -subst.[ch] - - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear +jobs.c + - fix raw_job_exit_status to correct mixing of int/WAIT values (need + to return a WAIT) + - arrange so that children run as part of command substitutions also + set the SIGINT handler to wait_sigint_handler, since they effectively + don't do job control + - in wait_for, if a child run as part of a command substitution exits + due to SIGINT, resend the SIGINT to the waiting shell with kill(2). + This makes sure the exit status propagates + +doc/{bash.1,bashref.texi} + - tighten up the language describing when bash tries to see if its + stdin is a socket, so it can run the startup files. Suggested by + Vincent Lefevre + +eval.c + - in the DISCARD case of a longjmp to top_level, make sure + last_command_exit_value is set to EXECUTION_FAILURE if it's 0, + but leave existing non-zero values alone subst.c - - moved code from parameter_brace_expand into a new function that - dispatches for pattern substitution: parameter_brace_remove_pattern - - changed structure of parameter_brace_remove_pattern to be like - parameter_brace_patsub and its ilk: call get_var_and_type to - isolate the variable name, move the pattern isolation code out of - the various *_remove_pattern functions into - parameter_brace_remove_pattern and pass the results to the various - functions, use a switch on the return value from get_var_and_type - to decide which function to call, regularized the arguments to the - separate pattern removal functions - - parameter_brace_remove_pattern now properly quotes escape chars in - the returned value - - changed get_var_and_type to call dequote_escapes on the `value' - parameter for case VT_VARIABLE and return the result in *valp, - so the calling functions don't have to do it themselves; changed - callers appropriately - - fixed getpattern() where it broke posix compliance: if you enclose - a pattern removal spec in double quotes, the outer double quotes - have no effect on the pattern (POSIX.1-200x 2.6.2). This uncovered - a bug in the test suite (!) + - in command_substitute, don't reset pipeline_pgrp in the child + process -- this means that second and subsequent children spawned by + this comsub shell get put into the wrong process group, not the + shell's. Fix for bug reported by Ingo Molnar -pathexp.c - - fixed a problem with quote_string_for_globbing where it would change - consecutive CTLESC chars all to \ instead of changing every other - quoted char + 12/6 + ---- +support/shobj-conf + - make sure the cases for darwin8.x (Mac OS X 10.4.x) are extended to + darwin9.x (Mac OS X 10.5.x). Fixes problem originally reported + against readline-5.2 by schneecrash@gmail.com - 3/31 + 12/8 ---- -lib/malloc/{malloc,stats}.c - - moved declaration of _mstats to malloc.c so stats.o doesn't get - linked into the shell if the stats functions aren't called +subst.c + - make sure to add the results of (successful) tilde expansion as a + quoted string, to inhibit pathname expansion and word splitting. + From recent Austin Group interpretation. - 4/2 - --- -lib/glob/smatch.c - - introduce `XCHAR' define, which is the type of arguments passed to - strcoll/strcmp/strlen and their wide-character equivalents, added - appropriate casts - - static arrays in single-byte version of rangecmp() are `char', not - `unsigned char', so compilers don't complain about calls to strcoll +include/shtty.h, lib/sh/shtty.c + - add ttfd_onechar, ttfd_noecho, ttfd_eightbit, ttfd_nocanon, and + ttfd_cbreak to set tty attributes associated with a particular + file descriptor (which is presumed to point to a terminal). Support + for fix for bug reported by b_bashbug@thebellsplace.com -lib/glob/sm_loop.c - - casts for `XCHAR' and `XCHAR *' arguments to libc functions - - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined - to avoid problems with type promotion (unsigned char -> int) +lib/readline/display.c + - make sure we only use rl_invis_chars_first_line when the number of + physical characters exceeds the screen width, since that's the + only time expand_prompt sets it to a valid value -lib/glob/collsyms.h - - `name' member of struct _COLLSYM is now of type `XCHAR *', since - some compilers don't like `unsigned char *' initializers from - constant strings + 12/12 + ----- +builtins/set.def + - change set_minus_o_option to return EX_USAGE if an invalid option + name is supplied. All callers can handle it. + - change set_builtin to return what set_minus_o_option returns if it's + not EXECUTION_SUCCESS. This allows EX_USAGE errors to abort a + shell running in posix mode -[bash-2.05b-alpha1 released] + 12/14 + ----- +builtins/read.def + - generalize the calls to the tty attribute functions to maintain a + local copy of the terminal attributes and use the fd supplied as + the argument to the -u option (default 0). Fix for bug reported + by b_bashbug@thebellsplace.com - 4/3 - --- -builtins/{evalstring.c,common.h} - - new flag for parse_and_execute, SEVAL_NOFREE, means to not free - the argument string when finished +doc/bashref.texi, lib/readline/doc/{history,rlman,rluser,rluserman}.texi + - Slight changes to conform to the latest FSF documentation standards. + Patch from Karl Berry -lib/readline/text.c - - fixed a trivial typo in _rl_insert_char when reading multibyte - char sequences - - replace calls to ding() with rl_ding() + 12/20 + ----- +execute_cmd.c + - after calling clear_unwind_protect_list, make sure we reset + parse_and_execute_level to 0, since there's nothing left to + restore it if top_level_cleanup tests it. Fixes bug reported + by Len Lattanzi -include/chartypes.h - - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused + 12/31 + ----- +lib/sh/getcwd.c + - new function, _path_checkino, checks whether the inode corresponding + to the path constructed from the first two arguments is the same as + the inode number passed as the third argument + - if BROKEN_DIRENT_D_INO is defined, meaning the d_ino/d_fileno + member of struct dirent doesn't contain valid values, use + _path_checkino instead of directly comparing against d_fileno. + Fixes Interix problem reported by Michael Haubenwallner + + + 1/7/2008 + -------- +array.c + - fix array_subrange to separate elements in returned string with + first char of $IFS if QUOTED is non-zero, since this indicates + the caller used ${array[@]:foo}. Fixes bug reported by Lea + Wiemann -make_cmd.c - - include dispose_cmd.h for extern function declarations + 1/8 + --- +subst.c + - new function returning a string containing the first character of + $IFS: char *ifs_firstchar(int *) -lib/glob/glob.c - - include `shmbutil.h' and `xmalloc.h' for extern function declarations +subst.h + - extern declaration for ifs_firstchar() -lib/glob/smatch.c - - include `xmalloc.h' for extern function declarations +array.c + - call ifs_firstchar() to get first character of $IFS when needed + (array_subrange() and array_patsub()) -shell.c - - fix maybe_make_restricted to use its argument instead of global - `shell_name' + 1/11 + ---- +lib/readline/display.c + - use sentinel variable set at end of init_line_structures to decide + whether to call it from rl_redisplay, since early SIGWINCH on + Mac OS X that hits during this function can cause _rl_wrapped_line + to be referenced before initialization. Fix for bug reported by + Len Lattanzi -version.c - - update copyright message to include this year +subst.[ch] + - skip_to_delim is now compiled into the shell all the time, not just + when readline is linked in -lib/readline/display.c - - fixes from Jiro SEKIBA to fix autowrapping - when using multibyte characters +subst.c + - use skip_to_delim to find the `/' denoting the end of a pattern + in pattern substitution, since it knows more shell syntax than + quoted_strchr and understands multibyte characters. Fixes bug + reported by Dmitry V Golovashkin -lib/glob/sm_loop.c - - fixed a problem in BRACKMATCH where not enough memory was allocated - to hold a multibyte character when parsing POSIX.2 char class names + 1/15 + ---- +subst.c + - add `flags' argument to skip_to_delim telling it whether or not to + set no_longjmp_on_fatal_error; set this flag when calling from the + readline completion code -support/config.{guess,sub} - - updated via patch from Paul Eggert with latest GNU additions +subst.h + - update extern declaration for skip_to_delim -variables.c - - var_lookup should use its `vcontext' argument instead of - unconditionally using `shell_variables' + 1/17 + ---- +subst.c + - expand_prompt_string takes a third argument: the initial flags for + the WORD - 4/4 - --- -builtins/bind.def,doc/{bash.1,bashref.texi} - - changed the usage summary and help text to make it clear that any - readline command that may appear in ~/.inputrc may be supplied as - one of the non-option arguments to `bind' +subst.h + - change extern declaration for expand_prompt_string to add third arg -builtins/mkbuiltins.c - - added support for `-H' option, which means to write long documentation - for each builtin to a separate file in the `helpfiles' directory +bashline.c + - pass W_NOCOMSUB as third argment to expand_prompt_string when + calling from bash_directory_completion_hook, since we don't want + to do command substitution from the completion code -builtins/Makefile.in - - new target `helpdoc', just creates long doc files in helpfiles +parse.y + - change call to expand_prompt_string + + 1/18 + ---- +doc/Makefile.in + - added an `install_builtins' rule to install the builtins.1 man page, + preprocessing it with sed to force `.so man1/bash.1', which some + versions of man require. Suggestion from Peter Breitenlohner + + - new target `install_everything' that will install normal documentation + and builtins man page + - changed uninstall target to remove bash_builtins page from man directory -lib/sh/zcatfd.c - - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from - FD to OFD +lib/readline/vi_mode.c + - new function, rl_vi_insert_mode, which calls rl_vi_start_inserting + to make sure the value of `last command to repeat' is set correctly. + Fix from Thomas Janousek + - add support for redoing inserts made with the `I' command. Fix + from Thomas Janousek + - add support for redoing inserts made with the `A' command -Makefile.in,lib/sh/Makefile.in - - added zcatfd.c, zcatfd.o member of libsh.a +lib/readline/readline.h + - new extern declaration for rl_vi_insert_mode -builtins/evalstring.c - - changed cat_file to call zcatfd(fd, 1, fn) +lib/readline/{misc,readline,vi_mode,vi_keymap}.c + - change calls to rl_vi_insertion_mode to rl_vi_insert_mode -builtins/{shopt,colon}.def - - removed the $DOCNAME directive for `shopt', `true', and `false'; - just use the names - - changed $DOCNAME for `:' to just be `colon' instead of - `colon_builtin' + 1/19 + ---- +builtins/read.def + - change timeout behavior when not reading from a tty device to save + any partial input in the variable list, but still return failure. + This also causes variables specified as arguments to read to be + set to null when there is no input available. Fix inspired by + Brian Craft -builtins/reserved.def - - added help entries for ((, [[, `for ((' + 1/21 + ---- +builtins/fc.def + - change computation of last_hist to use remember_on_history instead + of a hard-coded `1'. This keeps fc -l -1 in PROMPT_COMMAND from + looking too far back -builtins/let.def - - add id++, id--, ++id, --id, ** to help text + 1/25 + ---- +lib/readline/complete.c + - fix fnwidth to use string[pos] instead of *string when testing the + current character for a control character or rubout - 4/8 + 2/2 --- -builtins/bashgetopt.[ch] - - changed to allow options beginning with `+', enabled by a leading - `+' in the option string - - new variable, list_opttype, set to `-' or `+' +general.c + - change posix_initialize to turn off source/. searching $PWD when + the file sourced is not found in $PATH. Fixes bug reported by + Paolo Bonzini and Eric Blake -builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def - - changes to allow a `--' option for every builtin that accepts - operands but not options, as per posix.1-2001 + 2/9 + --- +builtins/*.def + - changes to text and formatting suggested by Jan Schampera + -builtins/{declare,setattr}.def - - use internal_getopt for parsing options, now that it supports `+' + 2/16 + ---- +bashline.c + - change command_word_completion_function to use the word completion + found by readline, which matters only when ignoring case is on + and the completion found in the file system differs in case from + the text the user typed (this is what readline does for normal + filename completion). Fixes issue reported by Jian Wang + . -builtins/set.def - - use internal_getopt for initial option parse, now that it supports - a leading `+' + 2/18 + ---- +builtins/source.def + - if the filename passed as an argument contains a `/', don't search + $PATH. Not sure why it wasn't like this before + 2/21 + ---- +lib/readline/terminal.c + - change rl_crlf so that the MINT system on ATARI systems adds a + carriage return before the \n -{configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c} - - support for a new configure option, ``--enable-separate-helpfiles'', - moves the `long' help text to separate help files, installed by - default into ${datadir}/bash, one file per builtin. Off by - default -- it saves 47K, but it's only 47K, and it's in the text - segment + 2/22 + ---- +doc/{bash.1,bashref.texi} + - added text to the EXIT STATUS section noting that exit statuses + fall between 0 and 255, inclusive -flags.c - - build internal_getopt() option string argument from flags array at - runtime in shell.c +support/mkversion.sh + - output a #define for DEFAULT_COMPAT_LEVEL (${major}${minor}; e.g. 32) + to version.h -shell.c - - new variable to control writing malloc stats at exit: - malloc_trace_at_exit, 0 by default - -lib/malloc/malloc.c - - heavily updated: - o partial page allocated on first call to malloc to make - subsequent sbrks page-aligned no longer wasted - o begin and end range guards are now the same value: the chunk - requested - o coalescing code was changed to attempt to coalesce first two - adjacent blocks on the free list; enabled by default - o blocks of size 32 are now candidates for larger block - splitting, since 32 is the most popular size - o blocks of size 32 are now candidates for smaller block - coalescing - o the IN_BUCKET check was changed to just make sure that the - size isn't too big for the bucket, since the `busy block' - checking code may increase the bucket by one or more, - meaning that the old check would fail and cause a panic when - a chunk allocated in such a way was freed - o bin sizes are now precomputed and looked up in an array - rather than being computed at runtime - o moved the _mstats declaration here to avoid the stats code - being linked in even when no stats functions were called - (only matters if MALLOC_DEBUG is defined) - o malloc now keeps track of the address of the top of the heap - and will return large chunks to the system with calls to - sbrk with a negative argument when freeing the top chunk. - Two thresholds: LESSCORE_FRC means to unconditionally return - memory to the system; LESSCORE_MIN means to return memory if - there's at least one block already on the free list - -lib/malloc/mstats.h - - stats struct now keeps track of number of block coalesces by bin, - and the number of times memory was returned to the system by bin - -lib/malloc/stats.c - - trace_malloc_stats now takes a second argument: the name of the file - to write to. The first `%p' in the template file name is replaced - by the pid - - 4/9 - --- -lib/malloc/imalloc.h - - added some macros derived from dlmalloc and glibc malloc to inline - memcpy and memset if the requested size is <= 32 bytes - -lib/malloc/malloc.c - - use MALLOC_MEMSET instead of memset in internal_{malloc,free} - -include/ocache.h - - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free +version.c + - int variable, shell_compatibility_level, set to DEFAULT_COMPAT_LEVEL + by default -configure.in, config.h.in - - check for getservent(), define HAVE_GETSERVENT if found +builtins/shopt.def + - new shopt variable, compat31, sets shell_compatibility_level to 31 + (or back to default if unset) -bashline.c - - punt immediately from bash_servicename_completion_function if - HAVE_GETSERVENT is not defined (cygwin seems to not define it) - - include "input.h" for extern save_token_state() and - restore_token_state() declarations - - change bash_execute_unix_command to call parse_and_execute with - SEVAL_NOHIST flag so the command doesn't get saved on the history - list - - change bash_execute_unix_command to save and restore the current - command line count and the token state (last_read_token, etc.). - Everything else is saved by either parse_and_execute directly or - the call it makes to push_stream(). The shell_input_line stuff - doesn't need to be saved and restored; it's not computed until - readline() returns +execute_cmd.c + - in execute_cond_node, restore bash-3.1 behavior of quoted rhs of + regexp matches if shell_compatibility_level == 31 - 4/10 + 2/28 ---- -lib/glob/glob.[ch] - - glob_filename and glob_vector now take an additional `flags' arg - - define GX_MARKDIRS as possible flag value for glob_filename and - glob_vector - -lib/sh/snprintf.c - - fixed some bugs with handling of `g' and `G' formats - - make sure numtoa returns the fractional part correctly when passed 0 - - implemented thousands grouping for `'' flag character +lib/readline/rltty.c + - set readline_echoing_p = 1 if tcgetattr fails and sets errno to + EINVAL, as Linux does when the fd is a pipe. Reported by Mike + Frysinger -lib/sh/rename.c - - a few changes to make it more bulletproof + 3/6 + --- +{MANIFEST,Makefile.in},lib/sh/{casemod,uconvert,ufuncs}.c + - new library sources from bash-4.0-devel tree - 4/11 - ---- -lib/glob/glob.c - - added the couple of dozen lines of code to glob_dir_to_array to - finish implementing GX_MARKDIRS +lib/sh/spell.c + - moved cdspell() here from builtins/cd.def, renamed dirspell() -builtins/set.def - - changed unset builtin so that it no longer considers unsetting an - unset variable or function to be an error +externs.h + - new declarations for extern functions from new library files + - new extern declaration for lib/sh/spell.c:dirspell() -lib/readline/display.c - - fix to rl_redisplay for a problem which caused display to be messed - up when the last line of a multi-line prompt (possibly containing - invisible characters) was longer than the screen width +builtins/cd.def + - call extern library function dirspell(); remove static cdspell() - 4/15 - ---- -aclocal.m4 - - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of - enumerating all of the possible values and using AC_DEFINE +builtins/read.def + - when read times out, make sure input_string is null-terminated before + assigning any partial input read to the named variables - 4/16 + 3/10 ---- -Makefile.in, {builtins,support}/Makefile.in - - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted - by `configure' - - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS); - CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with - (possibly) different values for CPPFLAGS and CFLAGS - - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS) - instead of CCFLAGS_FOR_BUILD - - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS - - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and - mksyntax - -configure.in - - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and - LDFLAGS_FOR_BUILD - - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting - everything in LOCAL_LDFLAGS - -builtins/Makefile.in - - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins' - - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building - `mkbuiltins' - -Makefile.in - - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary - test programs (printenv, recho, zecho) - -support/Makefile.in - - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building - `man2html' - -lib/tilde/Makefile.in - - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS) +lib/glob/xmbsrtowcs.c + - cut the number of memory allocations in xdupmbstowcs by not keeping + track of the indices if the caller hasn't asked for it - 4/25 + 3/17 ---- -Makefile.in, configure.in - - moved RELSTATUS to configure.in; configure substitutes it into - the generated Makefile +builtins/fc.def + - make sure the adjustment to i in fc_gethnum uses the same formula + fc_builtin uses to calculate last_hist + - make sure that every time fc_gethnum is called, the fc command last + in the history list has not yet been deleted, since fc_gethnum + assumes that it has not. Fix from John Haxby -lib/sh/snprintf.c - - fix wchars() to deal with systems where MB_CUR_MAX is not a - constant expression +lib/readline/complete.c + - new private library function, _rl_reset_completion_state(), used to + reset any completion state internal to the library when a signal + is received + - call _rl_reset_completion_state() before returning from + rl_complete_internal - 5/2 - --- -lib/sh/shquote.c - - add `,' to list of chars that are backslash-quoted. It doesn't - hurt normal usage and prevents filenames with commas from being - inappropriately split by brace expansion after using - complete-into-braces +lib/readline/rlprivate.h + - new extern declaration for _rl_reset_completion_state - 5/6 - --- -lib/sh/xstrchr.c - - we only need the check of MB_CUR_MAX and the slow code for a - few encodings, and even then only for a subset of the charset +lib/readline/signals.c + - call _rl_reset_completion_state from rl_signal_handler on SIGINT. + This fixes one of the problems identified by Mika Fischer + -arrayfunc.c - - some speedups for skipsubscript and multibyte chars from Bruno Haible +pcomplete.c + - programmable_completions now saves pointer to the compspec it's + working with in new global variable CURCS + - new function, pcomp_set_readline_variables, that sets or unsets + readline variables based on a passed flags value (COPT_FILENAMES, + etc.) + - new function, pcomp_set_compspec_options, to set or unset bits in + the options word of a passed compspec (default CURCS) + - only call bash_dequote_filename (via rl_filename_dequoting_function) + from pcomp_filename_completion_function if the readline state + word indicates word completion is in progress -locale.c - - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't - already have a value, but doesn't change any shell variables +pcomplete.h + - new extern declaration for curcs + - new extern declaration for pcomp_set_readline_variables + - new extern declaration for pcomp_set_compspec_options -include/shmbutil.h - - major speedups from Bruno Haible, mostly concerned with reducing - the number of strlen(3) calls +bashline.c + - fix bash_dequote_filename to implement shell quoting conventions: + 1. Inhibit backslash stripping within single quotes + 2. Inhibit backslash stripping within double quotes only if + the following character is one of the special ones + - call pcomp_set_readline_variables from attempt_shell_completion + instead of doing the equivalent inline -subst.c - - change callers of macros in shmbutil.h to add extra argument as - necessary - - skip_single_quoted and skip_double_quoted take another argument: - the length of the string; mostly useful when using multibyte chars - - many speedups from precomputing string lengths at function start - - fixed a small bug in de_backslash in the midst of rewriting for - better efficiency - -{braces,make_cmd,pathexp}.c - - change callers of macros in shmbutil.h to add extra argument as - necessary + 3/18 + ---- +bracecomp.c + - make sure we sort array of matches in byte order (using strcmp). so + the brace calculations work correctly even when the locale orders + characters like aAbBcC...zZ. Fixes bug reported by Torsten Nahm + -pathexp.c - - fix a one-too-far problem with multibyte chars in - unquoted_glob_pattern_p + 3/20 + ---- +lib/readline/{rltty,signals}.c + - move block_sigint and release_sigint from rltty.c to signals.c; add + _rl_ prefix to make them public to the library; change callers. + From Jan Kratochvil -braces.c - - brace_gobbler takes a new argument, the length of the passed string - - expand_amble takes a new argument, the length of the passed string +lib/readline/rlprivate.h + - new extern declarations for _rl_block_sigint and _rl_release_sigint - 5/7 - --- -subst.c - - modified remove_quoted_nulls to eliminate the memory allocation and - do the copy in place using the same strategy as de_backslash +lib/readline/display.c + - add calls to _rl_block_sigint and _rl_release_sigint to rl_redisplay, + since it maniupluates global data structures. Fix from Jan + Kratochvil -lib/readline/{rldefs.h,complete.c} - - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note - that it found a quoting character other than \'" that appears in - rl_completer_quote_characters +builtins/printf.def + - change calls to asprintf and manually adding to vbuf to use calls + to vsnprintf against vbuf directly -- if the number of characters + to be written overflows the buffer, realloc the buffer and use + vsnprintf again. This should reduce the memory used by printf. + Idea from Yuya Katayama - 5/9 - --- -jobs.c - - save and restore old value of jobs_list_frozen when calling trap - handlers from set_job_status_and_cleanup to avoid seg faults when - running recursive trap handlers +lib/readline/doc/rltech.texi + - documented rest of readline's state flags, including RL_STATE_CALLBACK + - documented rl_save_state and rl_restore_state - 5/10 + 3/27 ---- -builtins/common.h - - new #defines to use for value of changed_dollar_vars (provides - information about the caller who wants to blow away the old dollar - variables) +lib/readline/{rlprivate.h,{display,readline,rltty,terminal,text}.c} + - rename readline_echoing_p to _rl_echoing_p for namespace consistency -builtins/common.c - - changed set_dollar_vars_changed to set changed_dollar_vars to one - of the ARGS_* values depending on the caller and environment +lib/readline/{rlprivate.h,{callback,readline,util}.c} + - rename readline_top_level to _rl_top_level for namespace consistency -builtins/source.def - - source restores the positional parameters unless the `set' builtin - was called to specify a new set while not executing a shell function +builtins/ulimit.def + - new -b (socket buffer size) and -T (number of threads) options - 5/13 - ---- -POSIX - - new file, was in CWRU/POSIX.NOTES +array.c + - fix bug in calculation of the array element assignment string length: + use length of `is' instead of `indstr'. Reported as ubuntu bug + #202885 by John McCabe-Dansted -doc/{Makefile.in,Makefile} - - changed `posix' rule to modify ../POSIX +builtins/setattr.def + - new function, show_all_var_attributes, displays attributes and + values for all shell variables (or shell functions) in a reusable + format -doc/mkposix - - write to `POSIX' by default +builtins/common.h + - new extern declaration for show_all_var_attributes -lib/sh/strtrans.c - - when ansicstr is parsing a format string for `echo -e' (or the - equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3 - standard and accept 0-3 octal digits after a leading `0' +builtins/declare.def + - change `declare -p' to print out all variable attributes and values, + and `declare -fp' to print out all function attributes and + definitions. Inspired by request from John Love-Jensen + doc/{bash.1,bashref.texi} - - updated `echo' description to note that up to three octal digits - are now accepted following `\0' + - document new -b and -T options to ulimit + - tighten up language describing AND and OR lists + - add description of new behavior of `declare -p' - 5/16 + 3/28 ---- -doc/Makefile.in - - remove the generated documentation on `make distclean' if the - build directory and source directory are not the same - -Makefile.in - - descend into `support' subdirectory on a `make clean' and - `make distclean' - - remove parser-built, y.tab[ch] on a `make distclean' if the build - directory and source directory are not the same - -support/Makefile.in - - support various `clean' targets and remove man2html.o and man2html +pcomplete.c + - rename curcs -> pcomp_curcs + - new global completion variable, pcomp_curcmd, the current command + name being completed -{configure,Makefile}.in - - move values for DEBUG and MALLOC_DEBUG into configure.in; on by - default for development versions; off by default for releases - (off for profiling, too) +builtins/complete.def + - new builtin, compopt, allows completion options for command names + supplied as arguments or the current completion being executed to + be modified. Suggested by Mika Fischer - 5/21 + 3/30 ---- -parse.y - - modified the grammar to allow a simple_list followed by yacc_EOF - to terminate a command. This fixes problems with things like - a backslash-newline at the end of an `eval'd string - - change handle_eof_input_unit() to reset the token state before - calling prompt_again(), in case the prompt to be evaluated contains - a command substitution +doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi + - document new compopt builtin - 5/23 - ---- -lib/readline/vi_mode.c - - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined - but MB_CUR_MAX == 1 + 4/5 + --- +support/shobj-conf + - change solaris10 stanza to use -fPIC to fix 64-bit sparc_v9/solaris10 + compilations. Fix from Fabian Groffen - 5/24 - ---- -lib/malloc/watch.c - - don't try to print `file' argument to _watch_warn if it's null +builtins/read.def + - added `-i text' option, inserts `text' into line if using readline. + Suggested by many, used some ideas from Kevin Pulo -lib/malloc/malloc.c - - changed guard checking code in internal_{malloc,free,realloc} to - access memory as (char *) and copy into a union instead of - casting and dereferencing a pointer to u_bits32_t, since that - results in unaligned accesses which will cause Sparcs to upchuck +doc/{bash.1,bashref.texi} + - document new `-i text' option to read builtin - 5/30 - ---- -[bash-2.05b-beta1 released] + 4/7 + --- +lib/readline/bind.c + - new settable variable, `history-size', sets the max number of + entries in the history list -lib/readline/text.c - - fixed a problem with rl_transpose_chars on systems supporting - multibyte characters with a locale that doesn't have any multibyte - chars +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - document new `history-size' settable readline variable - 6/4 + 4/8 --- -expr.c - - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps - -lib/readline/display.c - - fix core dump when line wrapping a multibyte character (line - accidentally dropped from the original patch) +builtins/complete.def + - change build_actions calling sequence to take a struct with `other' + (non-action) flag arguments (-p, -r) + - add support for `-E' option to build_actions and complete builtin -- + modifies or displays (internal) `_EmptycmD_' completion spec -lib/readline/mbutil.c - - fix reversed return value from _rl_is_mbchar_matched; fixes problem - with backward-char-search +bashline.c + - change attempt_shell_completion to try programmable completion on an + `empty' command line and return the results - 6/10 - ---- -lib/sh/getenv.c - - fix getenv to not free value returned by find_tempenv_variable - - add setenv, putenv, unsetenv for completeness +doc/bash.1,lib/readline/doc/rluser.texi + - documented new `-E' option to `complete' - 6/12 - ---- -shell.c - - change init_noninteractive to init expand_aliases to the value of - posixly_correct - - don't initialize expand_aliases to posixly_correct anywhere else. - This allows the -O expand_aliases invocation option to work correctly + 4/9 + --- +bashhist.c + - new variable, `enable_history_list', used to reflect setting of + `-o history' option + - change bash_history_{enable,disable,reinit} to set enable_history_list + as well as remember_on_history -general.c - - fix move_to_high_fd to not try the dup2 unless the fd loop results - in an fd > 3; just return the passed file descriptor otherwise - - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256 - as highest file descriptor to try +builtins/set.def + - use `enable_history_list' instead of `remember_on_history' to keep + value of `-o history' option -subst.c - - in process_substitute, call move_to_high_fd with `maxfd' parameter - of -1 instead of 64, so move_to_high_fd will use its maximum +builtins/evalstring.c + - instead of unwind-protecting remember_on_history, use a function to + restore it to the value of `enable_history_list' after + parse_and_execute runs the commands in the string. This allows + history to be turned off in a startup file, for instance. Problem + reported by Dan Jacobson - 6/21 + 4/11 ---- -lib/malloc/malloc.c - - don't bother calling MALLOC_MEMSET if the requested size is 0 - -builtins/setattr.def - - note in short doc that export and readonly can take assignment - statements as arguments +bashline.c + - limited support for completing command words with globbing characters + (only a single match completed on TAB, absolute or relative + pathnames supported, no $PATH searching, some support for displaying + possible matches, can be used with menu completion). + Suggested by Harald Koenig -error.c - - new function, error_prolog(), to capture common error message - prefix code (except for parser errors) +print_cmd.c + - change redirection printing to output r_err_and_out as `&>file', + since the man page says that's the preferred form - 6/25 + 4/12 ---- -aclocal.m4 - - add tests for standard-conforming declarations for putenv and - unsetenv in system header files +builtins/*.def + - change long doc so the first line is a short description + - add `Exit Status:' section to each longdoc describing exit values -{configure,config.h}.in - - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define - HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they - succeed +builtins/help.def + - new `-d' option to print short description of each utility + - new `-m' option to print description of each builtin in a + pseudo-manpage format (inspired by ksh93) -lib/sh/getenv.c - - change putenv and unsetenv to take differing prototypes in - stdlib.h into account +doc/{bash.1,bashref.texi} + - document new `-d' and `-m' options to `help' - 6/27 - ---- -[bash-2.05b-beta2 released] +builtins/mapfile.def + - new builtin, `mapfile', imported from bash-4.0-devel branch - 6/28 - ---- -builtins/common.c - - fix get_job_spec so that %N works when N is the size of the jobs - list (%8 means job 8, but the 7th member of the jobs array, so - it's OK if N == job_slots because the function returns N-1) +tests/{mapfile.{data,right,tests},run-mapfile} + - tests for `mapfile' builtin - 7/1 - --- -shell.c - - turn off line editing if $EMACS is set to `t' +doc/{bash.1,bashref.texi} + - added description of `mapfile' builtin - 7/10 - ---- -builtins/set.def - - remove mention of `-i' from long help doc, since it has no effect +MANIFEST,Makefile.in,builtins/Makefile.in + - added entries for mapfile source files - 7/17 - ---- -[bash-2.05b released] +arrayfunc.[ch] + - new function, bind_array_element, to support mapfile builtin - 7/18 + 4/20 ---- +expr.c + - fix operator precendence in expcond(): term after the `:' is + a conditional-expression, not a logical-OR-expression (using C + terminology). Bug reported by -lib/malloc/malloc.c - - make sure that the `free_return' label has a non-empty statement - to branch to - - 7/19 + 4/22 ---- -locale.c - - only call setlocale() from set_lang() if HAVE_SETLOCALE is defined; - otherwise just return 0 - -lib/readline/mbutil.c - - only try to memset `ps' in _rl_get_char_len if it's non-NULL. Ditto - for _rl_adjust_point +bashintl.h + - new P_ define for using ngettext to decide on plural forms + (currently unused) - 7/23 + 4/25 ---- execute_cmd.c - - fix for executing_line_number() when compiling without conditional - commands, dparen arithmetic or the arithmetic for command + - in execute_disk_command, if the command is not found, search for + a shell function named `command_not_found_handle' and call it + with the words in the command as arguments. Inspired by Debian + feature. - - 7/24 +doc/{bash.1,bashref.texi} + - document new command_not_found_handle behavior in COMMAND EXECUTION + section + +configure.in + - change default version to bash-4.0-devel + + 4/28 ---- -support/Makefile.in - - fix maintainer-clean, distclean, mostlyclean targets +variables.c + - change push_func_var and push_exported_var to call + stupidly_hack_special_variables if the temporary variable is going + to be disposed. This undoes any internal changes caused by a local + variable assignment in the environment or in a shell function. Bug + reported by Morita Sho in + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096 -builtins/common.c - - fix bug in sh_nojobs where it doesn't pass the right number of args - to builtin_error + 5/3 + --- +builtins/fc.def + - fixed a problem caused by change of 1/21 to use remember_on_history, + since it's turned off by parse_and_execute(), but can cause the + last command in history to be deleted and leave last_hist pointing + beyond the end of the history list. edit_and_execute_command can + do this. bashline.c - - when using command completion and trying to avoid appending a slash - if there's a directory with the same name in the current directory, - use absolute_pathname() instead of just checking whether the first - char of the match is a slash to catch things like ./ and ../ + - new define, RL_BOOLEAN_VAR_VALUE, to take a readline boolean variable + and get its value as 0 or 1 (consider making readline global) + - put tty back into canonical mode before calling parse_and_execute in + edit_and_execute_command and then back into raw mode after it + returns. Fixes problem identified by . -examples/complete/bashcc-1.0.1.tar.gz - - a package of completions for Clear Case, from Richard S. Smith - (http://www.rssnet.org/bashcc.html) + 5/4 + --- +lib/glob/glob.c + - code to support `globstar' option: GX_GLOBSTAR and two internal + flags. Changes to skipname, glob_vector, mbskipname, glob_filename. + New function finddirs(). -input.c - - fix check_bash_input to call sync_buffered_stream if the passed fd - is 0 and the shell is currently reading input from fd 0 -- all it - should cost is maybe an additional read system call, and it fixes - the bug where an input redirection to a builtin inside a script - which is being read from stdin causes the already-read-and-buffered - part of the script to be thrown away, e.g.: +lib/glob/glob.h + - new defines to support globstar code - bash < x1 +builtins/shopt.def + - new shell option, `globstar', enables special handling of `**' in + glob patterns -- matches all directories recursively - where x1 is +pathexp.h + - extern declaration for glob_star - hostname - read Input < t.in - echo $Input - echo xxx +pathexp.c + - break inline code out of quote_globbing_chars into a separate + function to decide whether a character is a globbing char: + glob_char_p + - change shell_glob_filename to call glob_filename with the + GX_GLOBSTAR flag if glob_star is set -execute_cmd.c - - in initialize_subshell(), call unset_bash_input (0) to not mess with - fd 0 if that's where bash thinks it's reading input from. Fixes - bug reported by jg@cs.tu-berlin.de on 17 July 2002. Should be a way - to check whether or not the current fd 0 at the time of the call has - not been redirected, like in the bug report. Also might eventually - want to throw in a sync_buffered_stream if bash is reading input - from fd 0 in a non-interactive shell into a buffered stream, so the - stream is sync'd -- might be necessary for some uses +doc/{bash.1,bashref.texi} + - document new `globstar' shell option - 7/25 - ---- -lib/readline/signals.c - - make sure rl_catch_sigwinch is declared even if SIGWINCH is not - defined, so the readline state saving and restoring functions in - readline.c are always the same size even if SIGWINCH is not defined, - and undefined references don't occur when SIGWINCH is not defined +arrayfunc.c + - new function, broken out of quote_array_assignment_chars: + quote_assign; extended from old code to make sure that globbing + chars and chars in $IFS are quoted when displaying assignment + statements, especially in compound array assignments - 7/30 - ---- + 5/5 + --- bashline.c - - augment patch from 7/24 to not disable rl_filename_completion_desired - if the first char of the match is `~' + - new variable, dircomplete_spelling, controls spelling correction + of directory names when doing filename completion + - change bash_directory_completion_hook to incorporate spelling + correction if initial canonicalization of directory name fails -lib/readline/bind.c - - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind - a key whose type is ISFUNC but whose function is the `fake' - rl_do_lowercase_version (fixes debian bash bug #154123) +builtins/shopt.def + - new shell option, `dirspell', enables and disables spelling + correction of directory names during word completion -lib/readline/readline.c - - don't call _rl_vi_set_last from _rl_dispatch_subseq if - key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0, - which strchr will find in `vi_textmod') +builtins/read.def + - support for fractional timeout values (ival.uval); uses uconvert + and falarm/setitimer - 7/31 - ---- -lib/readline/input.c - - fix rl_gather_tyi to only slurp up one line of available input, even - if more than one line is available (fixes debian bash bug #144585) +config.h.in + - new `HAVE_SETITIMER' define - 8/3 - --- -bashline.c - - better fix for command completion problem -- test for directory - explicitly with test_for_directory before turning off - rl_filename_completion_desired, since that's the case we're trying - to protect against +configure.in + - look for setitimer(2), define HAVE_SETITIMER if found - 8/5 +doc/{bash.1,bashref.texi} + - document new `dirspell' shopt option + - document new fractional values to `read -t timeout' + + 5/6 --- -include/shmbutil.h - - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen - returns 0, indicating that the null wide character (wide string - terminator) was found (debian bash bug #155436) +assoc.[ch] + - new files, basic support for associative array implementation -lib/readline/mbutil.c - - fix _rl_adjust_point to increment the string pointer if mbrlen - returns 0 +general.h + - new extern declarations for sh_openpipe, sh_closepipe, trim_pathname -support/shobj-conf - - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for - Darwin from the fink folks +general.c + - new functions: sh_openpipe to create a pipe and move the file + descriptors to a high range; sh_closepipe, to close pipe fds and + clean up, and trim_pathname, to replace portions of a pathname + with `...' (for prompting) - 8/6 - --- -builtins/exit.def - - broke code that runs ~/.bash_logout out into a separate function: - bash_logout() +jobs.c + - don't set last_asynchronous_pid in child shell (messes up $!, among + other things) -builtins/common.h - - extern declaration for bash_logout() +parse.y,parser.h + - moved definitions of parser flags to parser.h -eval.c - - call bash_logout() from alrm_catcher(), so timed-out login shells - run ~/.bash_logout before processing the exit trap +array.c + - imported array_modcase (case-changing operations on arrays) from + 4.0-devel branch -lib/sh/strtrans.c - - implemented $'\x{hexdigits}' expansion from ksh93 +array.h + - new extern declaration for array_modcase -configure.in - - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to - link with -luser32 +lib/readline/complete.c + - new variable, rl_menu_completion_entry_function, generator for + rl_menu_complete + - new menu completion `browsing' implementation, with several + improvements over the old code. Inspired by Sami -examples/loadables/strftime.c - - new loadable builtin, interface to strftime(3) +lib/readline/readline.h + - extern declaration for rl_menu_completion_entry_function - 8/7 + 5/8 --- -parse.y - - parse_arith_cmd now takes a second argument, a flag saying whether - or not to add double quotes to a parsed arithmetic command; changed - callers - - changed parse_dparen so it tells parse_arith_cmd to not add the - double quotes and therefore doesn't need to remove them - - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word - created when parsing (( ... )) arithmetic command, since the double - quotes are no longer added +lib/readline/complete.c + - add support for a third argument to fnprint and print_filename, + which supports replacing a specified portion of the pathnames + printed when displaying possible completions with a `...' (or + `___', if the prefix would be confused with a portion of the + filename) + - new variable, _rl_completion_prefix_display_length, sets the + number of characters in a common prefix to be replaced with an + ellipsis when displaying possible completions + - add support to _rl_display_match_list to find the length of the + common prefix of all items being displayed, and passing that + value to print_filename for possible replacement with an ellipsis + if that length is longer than _rl_completion_prefix_display_length -make_cmd.c - - in make_arith_for_expr, set the flags on the created word to - W_NOGLOB|W_NOSPLIT|W_QUOTED +lib/readline/bind.c + - add support for retrieving value of history-size variable to + _rl_get_string_variable_value + - new bindable variable, completion-prefix-display-length. When + displaying possible completions, matches with a common prefix + longer than this value have the common prefix replaced with an + ellipsis + - support for retrieving value of completion-prefix-display-length + variable to _rl_get_string_variable_value + - new bindable variable, revert-all-at-newline: if enabled, causes + all changes in history lines to be undone before readline returns + after processing a newline + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - document new `completion-prefix-display-length' variable + - document new `revert-all-at-newline' variable execute_cmd.c - - change execute_arith_command to expand the expression with - expand_words_no_vars, like the arithmetic for command code does - - fix execute_arith_command to handle the case where the expanded - expression results in a NULL word without crashing + - change execute_builtin to not inherit the `-e' flag into commands + executed by the `command' or `source/.' builtins if we are supposed + to be ignoring the return value. This is like `eval'. Fixes bug + reported by Hiroshi Fujishima -tests/{arith-for,cprint}.tests - - change expected output to account for no longer adding quotes to - ((...)) commands + 5/10 + ---- +variables.c + - when reading the initial environment, don't create variables with + names that are not valid shell identifiers. Fixes bug reported by + Stephane Chazleas - 8/8 - --- -print_cmd.c - - take out the space after printing the `((' and before printing the - `))' in print_arith_command, print_arith_for_command, and - xtrace_print_arith_cmd - -tests/{arith-for,cprint}.tests - - change expected output to account for no longer adding leading and - trailing spaces when printing ((...)) and arithmetic for commands - - 8/17 + 5/13 ---- subst.c - - fix issep() define to handle case where separators[0] == '\0', in - which case it always returns false - -lib/readline/histexpand.c - - fix off-by-one error in history_expand_internal when using the `g' - modifier that causes it to skip every other match when matching a - single character (reported by gjyun90@resl.auto.inha.ac.kr) - -doc/{bash.1,bashref.texi} - - make sure that the name=word form of argument to declare/typeset, - export, and readonly is documented in the description + - fix string_quote_removal to gracefully handle the case where a + backslash is the final character in the string (leaves the backslash + in place). Fixes bug reported by Ian Robertson + - 8/30 + 5/16 ---- -lib/readline/histexpand.c - - make history_expand_internal understand double quotes, because - single quotes are not special inside double quotes, according to - our shell-like quoting conventions. We don't want unmatched - single quotes inside double-quoted strings inhibiting history - expansion - - make `a' modifier equivalent to `g' modifier for compatibility with - the BSD csh - - add a `G' modifier that performs a given substitution once per word - (tokenized as the shell would do it) like the BSD csh `g' modifier +support/checkbashisms + - Perl script that purports to check for bash-specific features in a + shell script. Lifted from Debian via ubuntu - 8/31 + 5/20 ---- -braces.c - - when compiling for the shell, treat ${...} like \{...} instead of - trying to peek backward when we see a `{'. This makes it easier - to handle things like \${, which should be brace expanded because - the $ is quoted - - 9/7 - --- -aclocal.m4 - - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing - the readability of /dev/fd/0, so we're dealing with a known quantity +lib/readline/display.c + - in update_line, when deciding whether or not to adjust _rl_last_c_pos + in a multibyte environment after printing the last line of a multiline + prompt with invisible characters on the first and last lines, use + the number of inivisible chars on the first line in the calculation + deciding whether or not we're past the last invisible character and + need to adjust the cursor position. Old code used the number of + invisible chars on the last prompt line. Fixes bug reported by + stuff@slinkp.com. + - in update_line, when fixing _rl_last_c_pos after drawing the first + line of the prompt, use the number of invisible chars on the first + line as the offset, instead of the total number of invisible chars + - use prompt_multibyte_characters, the number of multibyte chars in + the prompt string, to short-circuit some relatively expensive + multibyte text processing in rl_redisplay - 9/11 + 5/21 ---- -[prayers for the victims of 9/11/01] +variables.c + - new function, reinit_special_variables(), a hook for special + vars that need their hook functions called when they're unset as + a result of the shell reinitializing itself to run a script shell.c - - fix maybe_make_restricted to handle a restricted login shell with a - base pathname of `-rbash' and skip over any leading `-' - - 9/13 - ---- -builtins/evalstring.c - - in parse_and_execute, make sure we don't try to run unwind-protects - back to `pe_dispose' after a longjmp back to top_level if the - pe_dispose frame hasn't been initialized - -lib/readline/display.c - - fix problem with prompt overwriting previous output when the output - doesn't contain a newline in a multi-byte locale. This also should - fix the problem of bash slowing down drastically on long lines when - using a multi-byte locale, because it no longer tries to rewrite the - entire line each time. Patch from Jiro SEKIBA + - shell_reinitialize now calls reinit_special_variables + - shell_reinitialize now calls bashline_reset -parse.y - - move the typedef for alias_t that is compiled in if ALIAS is not - defined up before the prototype for push_string, since that takes - an alias_t * parameter +variables.h + - new extern declaration for reinit_special_variables -lib/readline/terminal.c - - bind the termcap description's left and right arrow keys to - rl_backward_char and rl_forward_char, respectively, instead of - rl_forward and rl_backward (which are just there for backwards - compatibility) +bashline.c + - new function, bashline_reset(), called when the shell reinitializes + in shell_reinitialize. Right now, just resets + bash_readline_initialized to 0. -aclocal.m4 - - when testing readability of /dev/stdin, redirect stdin from /dev/null - to make sure it's a readable file +bashline.h + - new extern declaration for bashline_reset() - 9/17 + 5/23 ---- -config-bot.h - - don't test __STDC__ when deciding whether or not to use stdarg.h; - just use it if it's present +bashhist.c + - new function, bash_clear_history, clears the history and resets any + associated internal bash state -tests/read2.sub - - redirect from /dev/tty when using `read -t' +bashhist.h + - extern declaration for bash_clear_history - 9/20 - ---- builtins/history.def - - when reading `new' entries from the history file with `history -n', - fix increment of history_lines_this_session by taking any change - in history_base into account - -lib/sh/pathphys.c - - changes to sh_physpath to deal with pathnames that end up being - longer than PATH_MAX without dumping core + - call bash_clear_history instead of clear_history for `history -c'. + Fixes part of problem reported by Scott McDermott + + - decrement history_lines_this_session in delete_histent, called for + `history -d' -lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1 - - documented new `a' and `G' history modifiers +builtins/history.def,bashhist.[ch] + - move delete_histent() to bashhist.c; rename to bash_delete_histent + - move delete_last_history() to bashhist.c; rename to + bash_delete_last_history() - 9/25 + 5/25 ---- -lib/readline/misc.c - - when traversing the history list with arrow keys in vi insertion - mode, put the cursor at the end of the line (like in emacs mode) +braces.c + - add another parameter to mkseq(), the number of digits to put into + each member of a numeric sequence (width), changes to determine + any zero-padding go into expand_seqterm + - changes to expand_seqterm to allow user-specified increments + +bashline.[ch],shell.c,sig.c + - switched names of bashline_reinitialize and bashline_reset to better + reflect their functions + - when searching $PATH for directories to use for command completion, + make sure to free `current_path' before going out of scope + - new bindable function `dabbrev-expand', which is more or less + menu completion using dynamic history completion as the generator + - changes to bash_execute_unix_command to set variables for the + executed command like programmable completion: READLINE_LINE + (rl_line_buffer) and READLINE_POINT (rl_point) + - change to bash_execute_unix_command to allow the executed command + to change the readline line buffer by modifying the value of + READLINE_LINE and to change rl_point by modifying the value of + READLINE_POINT + +common.h + - new SEVAL_ defines for later parse_string changes from 4.0-devel + branch -mksyntax.c - - don't try to use \a and \v unless __STDC__ is defined; use the - ascii integer equivalents otherwise - - include "config.h" in the generated syntax.c file for a possible - definition of `const' +command.h + - new defines for new &>> r_append_err_and_out redirection -doc/{bash.1,bashref.texi} - - document the meaning of a null directory in $PATH +builtins/evalstring.c + - new function, parse_string, parses a command from a passed string + and returns the number of characters consumed. For satisfying + Posix rules when parsing command substitutions, from bash-4.0-devel + branch + - split out common prolog code from parse_string and + parse_and_execute into a separate function called from both - 9/26 - ---- parse.y - - fix set_line_mbstate to handle case where mbrlen() returns 0, - indicating the null wide character - - fix set_line_mbstate so we don't directly compare a char variable - to EOF, since char can (and is) unsigned on some machines + - small changes to add symbols needed for parse_string + - parser change to add `|&' as synonym for `2>&1 |'; translation is + performed at parse time so |& never shows up in output of + print_command, for instance. Picked up from zsh, merged in from + bash-4.0-devel branch + +parse.y,{redir,copy_cmd,dispose_cmd,make_cmd,print_cmd}.c + - implement new &>> r_append_err_and_out (like >>foo 2>&1); merged + in from bash-4.0-devel branch + +doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi + - document new optional increment in brace expansion + - document new zero-padded fixed-width integer brace expansion + - document new `dabbrev-expand' bindable readline command + - document new effects of `bind -x' setting and reading the values of + READLINE_LINE and READLINE_POINT + - document new |& synonym for `2>&1 |' pipeline operator + + 5/26 + ---- +parse.y - recognize new ;& and ;;& case action list terminator tokens and + implement them in the grammar, setting CASEPAT_FALLTHROUGH and + CASEPAT_TESTNEXT flags as appropriate -bashline.c - - change bash_execute_unix_command to save a little bit more state: - last_shell_builtin, this_shell_builtin, last_command_exit_value +print_cmd.c + - print new ;& and ;;& case clause action list terminators as + appropriate - 9/27 - ---- execute_cmd.c - - tentative change to execute_simple_command to avoid freeing freed - memory in the case where bash forks early but still ends up calling - execute_disk_command, without passing newly-allocated memory to - make_child. This may fix the core dumps with the linux-from-scratch - folks + - implement new case clause action list terminators: + ;& - fall through to actions associated with next pattern list + ;;& - fall through to tests in next pattern list - 9/28 +doc/{bash.1,bashref.texi} + - document new ;& and ;;& case clause action list terminators + + 5/28 ---- -Makefile.in,{builtins,lib/sh}/Makefile.in - - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that - parallel makes work with GNU and BSD makes +jobs.c + - change waitchld so it treats SIGCHLD like SIGINT if `wait' is being + executed, and allows wait to jump out before running any trap set + on SIGCHLD. Fixes debian bug #483016 reported by Miroslav Rudisin + + - run_sigchld_trap is no longer static, so the trap code in trap.c + can call it + - change run_sigchld_trap to call set_impossible_sigchld_trap instead + of just using a call to restore_default_signal -shell.h - - new struct to save partial parsing state when doing things like - bash_execute_unix_command and other operations that execute - commands while a line is being entered and parsed +jobs.h + - new extern declaration for run_sigchld_trap -parse.y - - new functions, save_parser_state() and restore_parser_state(), to - save and restore partial parsing state +trap.c + - fix run_pending_traps to run a SIGCHLD trap if the trap handler isn't + set to IMPOSSIBLE_TRAP_HANDLER + - in trap_handler, don't reset the SIGCHLD trap handler to trap_handler + if MUST_REINSTALL_SIGHANDLERS is defined + - new function, set_impossible_sigchld_handler, sets the trap string + associated with SIGCHLD to IMPOSSIBLE_TRAP_HANDLER; used as a sentinel + by run_sigchld_trap and maybe_set_sigchld_handler + - change maybe_set_sigchld_handler to set the SIGCHLD trap string only + if the current value is IMPOSSIBLE_TRAP_HANDLER. This ensures that + any traps on SIGCHLD set in a SIGCHLD handler will persist. Fixes + debian bug #483016 reported by Miroslav Rudisin + -bashline.c - - change bash_execute_unix_command to call {save,restore}_parser_state +trap.h + - new extern declaration for set_impossible_sigchld_trap -builtins/jobs.def - - change execute_list_with_replacements to eliminate a run_unwind_frame - in favor of calling the cleanup explicitly and discarding the frame + 5/31 + ---- +parse.y + - new function: parse_comsub(), parses $(...) by parsing command + between parens and making sure the next token is `)'. From + the bash-4.0-devel branch + - new function: xparse_dolparen, helper function for parsing + command substitutions in $(...). Called from subst.c to extract + a command substitution during word expansion. From bash-4.0-devel + branch + - new function: rewind_input_stream(). Rewinds bash_input.location.string + back to where it was before the shell parsed a $() command + substitution. From bash-4.0-devel branch + - changes to parse_matched_pair to combine most of the flag variables + (was_dollar, in_comment, and so on) into a local flags word -execute_cmd.c - - change execute_for_command to avoid a run_unwind_frame in the case - where the loop variable is readonly or otherwise not assignable - - change execute_select_command and execute_simple_command to use - discard_unwind_frame by running the cleanup code explicitly, instead - of using run_unwind_frame - - make sure execute_select_command decreases loop_level even on error + 6/2 + --- +parse.y + - call trim_pathname, which retains only the last $PROMPT_DIRTRIM + directories and replaces the intervening characters with `...', + when expanding \w and \W - 9/30 - ---- doc/{bash.1,bashref.texi} - - fixed description of `unset' now that unsetting a previously-unset - variable is no longer an error + - document the effect of setting PROMPT_DIRTRIM - 10/3 - ---- -{configure,config.h}.in - - augment check for strtold with additional check to detect the - horribly broken hp/ux 11.x implementation that returns `long_double'; - defines STRTOLD_BROKEN if so + 6/3 + --- +builtins/ulimit.def + - make the multiplier (block size) for -c and -f 512 bytes only if in + Posix mode and 1024 bytes otherwise (as in previous versions). Uses + POSIXBLK and BLOCK_SIZE defines to parameterize size based on value + of posixly_correct -builtins/printf.def - - define floatmax_t as `double' if STRTOLD_BROKEN is defined +doc/bashref.texi + - document this addition to posix mode - 10/5 - ---- -lib/readline/keymaps.c - - don't automatically bind uppercase keys to rl_do_lowercase_version - in rl_make_bare_keymap +builtins/common.c + - change get_numeric_arg to have a calling sequence and return value + more closely mimicking general.c:legal_number(), with the addition + of a flags word + - add extra value for `fatal' argument to get_numeric_arg to force it + to return failure to the caller rather than longjmping -lib/readline/readline.c - - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version - and dispatch to lowercase of key when a prefix is not matched +builtins/common.h + - change prototype declaration for get_numeric_arg - 10/12 - ----- -bashline.c - - set COMP_WORDBREAKS in enable_hostname_completion to the value - of rl_completer_word_break_characters +builtins/{break,shift}.def + - change calls to get_numeric_arg to deal with new semantics and calling + sequence -variables.c - - new special variable COMP_WORDBREAKS, controls the value of - rl_completer_word_break_characters +builtins/history.def + - display_history now returns an int + - change calling sequence for get_numeric_arg in display_history + - display_history now returns failure to the caller if get_numeric_arg + detects an invalid number, rather than jumping back to the top level + - use value returned by display_history as return status of history + builtin, filtered through sh_chkwrite + - history no longer aborts compound commands on invalid arguments. + fixes problem reported by Chu Li + +{braces,subst}.c + - extract_command_subst now takes a third flags argument; passed flags + are ORd into flags passed to other functions; changed callers -variables.h - - new extern declaration for sv_comp_wordbreaks() +subst.h + - move SX_* defines here from subst.c so parse.y:xparse_dolparen can + see them and behave appropriately + - extract_command_subst now takes a third flags argument; change + prototype subst.c - - change split_at_delims to behave more like shell word splitting if - the passed value for the delimiters is NULL, indicating that the - function is to use $IFS to split - -{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c -builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def -lib/sh/netconn.c -lib/termcap/termcap.c -lib/readline/histfile.c - - make sure all inclusions of are protected by - HAVE_SYS_FILE_H - -bashline.c - - don't turn off rl_filename_completion_desired in - attempt_shell_completion if the partial pathname contains a slash. - This still doesn't solve the problem of partial pathname completion - starting with a directory in the current directory without a - leading `./'. There's no way to tell the difference between that - and a file found in $PATH (which may contain `.') at the point that - attempt_shell_completion acts - - 10/18 - ----- -locale.c - - don't set lc_all to the default locale when LC_ALL is being unset - - new function, reset_locale_vars(), called to recompute the correct - locale variable values when LC_ALL is unset - - changed set_lang to not set LC_ALL, which it never should have been - doing in the first place, and to maintain a local variable `lang' - corresponding to $LANG - - change get_locale_var to use the precedence posix.2 specifies: - LC_ALL overrides individual variables; LANG, if set, is the default - - change set_locale_var to call get_locale_var to get the appropriate - value for the variable being set or unset - - call get_locale_var instead of using passed value in set_locale_var - to get the defaulting and precedence right - -lib/readline/nls.c - - new function, _rl_get_locale_var(), which does the same thing as - locale.c:get_locale_var(), with the right precedence and defaulting, - using sh_get_env_value to get the right bash variable values - - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls - _rl_get_locale_var to get the right value for LC_CTYPE, and uses - that in the call to setlocale. If _rl_get_locale_var returns NULL, - call setlocale() to get the current international environment, and, - finally, if that returns null, call setlocale with a second argument - of "" to force the implementation's `native' environment + - change extract_command_subst to call xparse_dolparen when extracting + a $() construct + - change calls to extract_delimited_string to extract_command_subst + as appropriate + - if command_substitute returns a NULL word desc, don't call + dispose_word_desc on it -pcomplete.c - - change gen_wordlist_completions to dequote the text before comparing - it against the expanded word list - - changed gen_matches_from_itemlist to do the same thing +parse.y + - change xparse_dolparen to use the SX_* flags now in subst.h -bashline.c - - new global function, bash_dequote_word, calls bash_dequote_filename - on the text passed. Used by the programmable completion code + 6/16 + ---- +subst.c + - in quote_list, set W_HASQUOTEDNULL flag in the word if quote_string + turns "" into CTLNUL + - in dequote_list, turn off W_HASQUOTEDNULL flag in the word if + dequote_string turns CTLNUL into "" + - new function, string_list_pos_params, encapsulates everything + needed to turn the positional parameters or an array indexed with + '@' or '*' into a string, including taking care of quoting and + using the first char of $IFS, when used in another expansion like + pattern removal or pattern substitution + - change list_remove_pattern, pos_params, pos_params_pat_subst to + call string_list_pos_params. Fixes problems reported by + Stephane Chazelas -lib/readline/histfile.c - - make sure that whenever read_history_range returns a non-zero value - that it sets errno to some useful value + 6/22 + ---- +variables.h + - include assoc.h for associative arrays + - defines for case-modifying expansions and associative array variables + - sh_var_assign_func_t functions now take an extra char * parameter - 10/19 - ----- + 6/25 + ---- variables.c - - COMP_WORDBREAKS is now a dynamic variable, mirroring value of - rl_completer_word_break_characters. Makes sure that the variable - always points to dynamic memory if it's not null or the readline - default + - change declarations and definitions of sh_var_assign_func_t functions + to add the extra char * parameter: null_assign, null_array_assign, + assign_seconds, assign_random, assign_lineno, assign_subshell, + assign_dirstack + - change calls to var->assign_func to add extra char * argument + - broke part of body of dispose_variable out into a new function, + dispose_variable_value, which knows how to free all kinds of shell + variable data + - changes to deal with variables with the internal `nofree' attribute -bashline.c - - change enable_hostname_completion to manage a dynamic value of - rl_completer_word_break_characters, since assignments to - COMP_WORDBREAKS can change its value unpredictably - -lib/readline/{complete.c,readline.h} - - rl_completer_word_break_characters no longer has `const' attribute - -bashline.c - - clean up necessary places due to rl_completer_word_break_characters - no longer being `const' +arrayfunc.c + - change calls to var->assign_func to add extra char * argument + - bind_array_var_internal now takes an extra `char *key' argument + - additions for associative array implementation; from bash-4.0-devel + tree -doc/{bash.1,bashref.texi} - - document new COMP_WORDBREAKS variable +arrayfunc.[ch],subst.c + - expand_compound_array_assignment now takes the variable as the first + argument (SHELL_VAR *); changed function definition and callers - 10/21 - ----- -print_cmd.c - - fix indirection_level_string to handle the case where the decoded - $PS4 is null without seg faulting +builtins/set.def + - changes to handle associative arrays in `unset' - 10/22 - ----- -builtins/shift.def - - make sure that there is actually an argument when reporting a shift - count that exceeds the number of positional paramters and - shift_verbose is enabled +{execute_cmd,command}.h + - definitions for coproc implementation; from bash-4.0-devel tree -lib/readline/rltty.c - - change SET_SPECIAL to call a new function, set_special_char, since - it contains a block. It's called infrequently, so the performance - impact of making it a function should be negligible, and it helps - debugging +variables.c + - new functions for associative arrays: make_new_assoc_variable, + make_local_assoc_variable - 10/29 - ----- -bashline.c - - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is - quoted; it might contain spaces (e.g., `emacs -nw') + 6/26 + ---- +variables.c + - more infrastructure for associative arrays; from bash-4.0-devel tree + - infrastructure for handling assignments to variables with + case-modifying attributes; from bash-4.0-devel tree -aclocal.m4 - - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro +config.h.in + - add #defines controlling case-modifying variable attributes and word + expansions configure.in - - change logic that sets RL_INCLUDEDIR so that it doesn't try to set - a bogus include path if the argument to --with-installed-readline - is `yes' -- helps with cross-compiling + - add enable options for case-modifying variable attributes and word + expansions (--enable-casemod-attributes and --enable-casemod-expansions, + respectively); from bash-4.0-devel tree -lib/readline/histexpand.c - - fix history_tokenize_word so that it handles <( and >( better +execute_cmd.c + - add code to fix_assignment_words to handle assignment statements to + "assignment builtins" that seem to be associative arrays. Imperfect - 10/30 - ----- -redir.c - - fix write_here_string so it handles the case where `herestr' expands - to NULL without seg faulting +subst.c + - array_remove_pattern now takes a SHELL_VAR * as its first argument + instead of an ARRAY *; from the bash-4.0-devel tree + - changes to array_length_reference for associative arrays; from the + bash-4.0-devel tree + - changes to get_var_and_type for associative arrays; from the + bash-4.0-devel tree + - changes to parameter_brace_substring for associative arrays; from the + bash-4.0-devel tree + - changes to param_expand for associative arrays; from the + bash-4.0-devel tree - 10/31 - ----- -mailcheck.c - - reverse logic flip from bash-2.05 that handled systems that don't - change the atime when the mailbox is accessed; make sure the file - is bigger before we report new mail. This is the case in the vast - majority of cases. Reported by jim@jtan.com +builtins/declare.def + - changes for associative arrays: new `-A' option, changes to make + local and global associative array variables; from the bash-4.0-devel + tree - 11/5 + 6/27 ---- -parse.y - - change action for `for x; { list; }' and corresponding `select' - production to use \"$@\" instead of just $@, as it is with all the - other actions +execute_cmd.c + - in execute_command_internal, when short-circuiting execution + because `breaking' or `continuing' is non-zero, preserve the exit + status by returning `last_command_exit_value' instead of an + unconditional EXECUTION_SUCCESS. Fixes bug reported by Roman + Rakus - 11/9 + 6/28 ---- -parse.y - - new flag for parse_matched_pair: P_DQUOTE, indicating that the - pair of characters being matched is between double quotes - - parse_matched_pair now passes P_DQUOTE down to recursive calls: - if the open char to be matched is a `"' or the passed-in flags - include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and - pass `rflags' down to recursive calls - - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or - locale expand $"..."; consistent with other quoting constructs +variables.c + - fix get_var_and_type to appropriately handle references like + ${varname[0]}, where `varname' is a scalar variable - 11/11 - ----- -doc/{bash.1,bashref.texi} - - explicitly note that variables referenced in arithmetic expressions - without using `$' evaluate to 0 if they are null or unset - - note that a null variable value evaluates to 0 when used in an - arithmetic context, like when a variable with the `-i' attribute is - assigned a null value - - document the ${!prefix@} expansion as equivalent to ${!prefix*} +make_cmd.[ch],parse.y + - make_here_document now takes a second argument: the current line + number; changed caller (gather_here_documents) - 11/12 - ----- -doc/{bash.1,bashref.texi} - - note that the value of an arithmetic expression is as in C - - change the wording to note that `arithmetic evaluation' (not - arithmetic expansion, which has a different meaning) is performed - on the value assigned to a variable whose integer attribute is set +builtins/setattr.def + - added support for associative arrays and the `-A' variable attribute + option; from the bash-4.0-devel tree - 11/13 - ----- -execute_cmd.c - - fix execute_disk_command so it calls exit() after printing the error - message in a restricted shell context if the shell has already forked - (nofork != 0 && there are no pipes) +subst.c + - change code that transforms `declare -A xxx=(yyy)' to perform the + internal `declare -A xxx' before doing the variable assignment, + because associative arrays have to be declared before being assigned + to as such; uses new function make_internal_declare - 11/19 - ----- -builtins/type.def - - don't report on aliases unless expand_aliases is set and the parser - is performing alias expansion; changed tests/type.tests and - tests/type.right accordingly + 6/30 + ---- +subst.[ch] + - dequote_escapes is now external; add declaration in subst.h + - remove_quoted_nulls is now external; add declaration in subst.h - 11/25 - ----- -general.c - - fix for full pathnames including drive letters on cygwin from - Corinna (convert to posix-style paths, which the rest of the - code handles much better) +array.[ch] + - new functions for completeness: array_dequote, array_dequote_escapes, + array_remove_quoted_nulls + - array_subrange now calls array_remove_quoted_nulls for "${array[*]}". + Fixes bug reported by Vitor De Araujo + - array_patsub now calls array_remove_quoted_nulls for "${array[*]}" + - array_modcase now calls array_remove_quoted_nulls for "${array[*]}" + - array_patsub now handles the mflags&MATCH_QUOTED case appropriately + (that implies "${array[@]}") -lib/readline/text.c - - fixes to overwrite mode from jimmy@is-vn.bg: - o in _rl_overwrite_char, do the overwrite mode self-insert - as one group, even when overwriting more than 1 char - o in _rl_overwrite_char, do the insert before the delete so - that an undo positions the cursor on the character restored, - not to the right of it - o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless - rl_point < rl_end. Since overwrite-mode self-insert acts as - in insert-mode when at eol, make rubout behave like - insert-mode rubout +subst.c + - new functions for case-modifying word expansion suppport: + pos_params_casemod, parameter_brace_casemod; from bash-4.0-devel branch - 11/30 - ----- -lib/readline/misc.c - - call rl_replace_line with `1' as second parameter if we're going to - immediately overwrite the undo list +assoc.c + - new functions for completeness: assoc_remove_quoted_nulls + - assoc_patsub now calls assoc_remove_quoted_nulls for "${assoc[*]}" + - assoc_modcase now calls assoc_remove_quoted_nulls for "${array[*]}" + - assoc_patsub now handles the mflags&MATCH_QUOTED case appropriately + (that implies "${assoc[@]}") -lib/readline/search.c - - in make_history_line_current, use _rl_replace_text to make the line - replacement an undoable operation. Affects all non-incremental - search functions. + 7/1 + --- +assoc.[ch] + - new function, assoc_subrange: takes a hash table, converts it to a + word list, and performs the subrange and indexing on that list + - new functions for completeness: assoc_dequote, assoc_dequote_escapes -parse.y - - make behavior introduced on 11/9 dependent on extended_quote - variable, controllable by extquote shopt option. Default setting is - on for backwards compatibility +subst.c + - verify_substring_values now takes the variable SHELL_VAR * as its + new first argument; changed callers + - change verify_substring_values to handle associative arrays using the + number of elements as the upper bound + - brought in code to do case-modifying word expansions from + bash-4.0-devel branch, conditional on CASEMOD_EXPANSIONS -builtins/shopt.def - - new `extquote' option to control extended_quote variable +input.c + - if the read(2) in getc_with_restart returns -1/EAGAIN, turn off + non-blocking mode on the file descriptor and try again. Fixes + problem reported by Glynn Clements - 12/3 - ---- -jobs.c - - change message printed when attempting to put a background job in - the background with `bg' to include the job id and make the - statement declarative + 7/2 + --- +doc/{bash.1,bashref.texi} + - documented new case-modifying word expansions - 12/10 - ----- -bashhist.h - - define explicit flag values for history_control +make_cmd.c + - change make_here_document to display a warning message including the + start line of a here document if it ends up delimited by EOF. + Addresses issue raised by Richard Neill -variables.c - - change sv_history_control to use new flag values - - change sv_history_control to parse $HISTCONTROL as a colon-separated - list of values for the history_control variable +subst.c + - in do_assignment_internal, make sure the `invisible' attribute is + unset before returning success -bashhist.c - - change check_history_control to use new flag values and restructure - to remove case statement - - new function hc_erasedups(line); removes all entries matching LINE - from the history list - - call hc_erasedups() from check_add_history after we've determined - that we're saving the line + 7/3 + --- +config-top.h + - add `CASEMOD_CAPCASE' define to include or exclude the ~[~] word + expansion and the `capcase' variable attribute (declare -c) + +builtins/declare.def + - add support for manipulating the case-modifying attributes (new + declare -clu); from bash-4.0-devel branch + +builtins/setattr.def + - add support for reporting case-modifying attributes (-clu attributes); + from bash-4.0-devel branch doc/{bash.1,bashref.texi} - - documented new options available for $HISTCONTROL and that it can - be a colon-separated list of history control options + - specify that the read builtin timing out results in a return value + greater than 128 + - document new `-l' and `-u' options to declare/typeset/local. Leave + `-c' undocumented for now - 12/11 - ----- -subst.c - - fix pat_subst() to not increment `e' (pointer to the end of the - matched portion of the string) until after we're sure we're going - around the loop again; fixes problem with empty replacements for - a pattern that doesn't match (bug reported by Don Coleman - ) + 7/4 + --- +make_cmd.[ch] + - make_coproc_command: construct a coproc; from bash-4.0-devel tree - 12/17 - ----- -lib/readline/display.c - - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA): - o speed up calculation of first difference between old and new - lines in the common case - o don't try to see if we're in the middle of a multbyte char - in update_line (we'll see how this one works out) +dispose_cmd.c + - dispose coproc command; from bash-4.0-devel tree - 12/18 - ----- -doc/bashref.texi - - make it clear that the `command-list' function definition may be - terminated by an ampersand before the closing brace +copy_cmd.c + - copy a coproc command; from bash-4.0-devel tree + +print_cmd.c + - print a coproc command; from bash-4.0-devel tree + +shell.c + - dispoe the current coproc on shell exit; from bash-4.0-devel tree - 12/28 - ----- redir.c - - set `expanding_redir' flag when expanding words in a redirection + - when closing redirects as part of user redirections, check whether + or not active coprocess fds are being closed and close the coproc + if so; from bash-4.0-devel tree -subst.c - - new function, exp_jump_to_top_level(), to do any word expansion - cleanup before a call to jump_to_top_level from within that file; - sets expanding_redir back to 0 before jump_to_top_level +config.h.in + - add define for COPROCESS_SUPPORT to include coprocesses -variables.c - - in find_variable(), don't call find_variable_internal with a second - parameter of 1 if expanding_redir is non-zero - - in find_variable_internal(), don't search the temporary env if - subshell_environment includes SUBSHELL_FORK (indicating a simple - command) and expanding_redir is non-zero +configure.in + - add support for configuring coprocesses into and out of the build -parse.y - - increment line_number when we read a \ pair +jobs.c + - in waitchld, check whether or not a coproc processs has exited; + from the bash-4.0-devel tree -array.c - - added array_unshift_element and array_shift_element (which just call - array_shift and array_rshift, respectively), for bash debugger + 7/5 + --- +doc/bashref.texi + - document new --enable-coprocesses option that includes coprocess support - 1/4/2003 - -------- -doc/{bash.1,bashref.texi} - - note in the section describing the execution environment passed to - children that subshells inherit shell functions marked for export - - note in the section describing shell functions the possibility - that exported functions may result in two entries in the environment - with the same name +execute_cmd.c + - add functions for coprocess support, including execute_coproc and + code to call it when command->type == cm_coproc; from + bash-4.0-devel tree -parse.y - - when pushing an alias expansion onto the pushed_string list, append - a space to the expanded definition to make the parser's lookahead - work without using the `mustpop' hack in shell_getc +lib/sh/fdprintf.c + - new library function fdprintf(int fd, const char *format, ...); + printf to a file descriptor - 1/8 - --- -shell.c - - change calls to exit() with EX_USAGE as a parameter to use - EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is - technically out of range +{configure,config.h}.in + - support for detecting fdprintf and compiling in replacement - 1/14 - ---- -aclocal.m4 - - check for the termcap functions in libc first: if we don't have - to link in another library, let's not do it - - change the test for mbstate_t to use AC_TRY_COMPILE instead of - AC_TRY_RUN +Makefile.in,lib/sh/Makefile.in + - add rules to include fdprintf.o doc/{bash.1,bashref.texi} - - document that bash turns line editing off if environment variable - EMACS is set to `t' when it starts up - -doc/bash.1 - - minor change to give the ftp url for the latest version of bash in - the bug reports section + - documented coprocesses and `coproc' reserved word -lib/readline/histexpand.c - - in get_history_event, cast a couple of `const char *' variables to - `char *' in function call parameter lists to avoid compiler warnings - - 1/21 - ---- -builtins/cd.def - - change `cd -' so it prints the current working directory after a - successful chdir even when the shell is not interactive + 7/7 + --- +subst.c + - fix array_length_reference to use MB_STRLEN instead of STRLEN, so + multibyte characters in array values are computed correctly. Fixes + bug reported by Wang Xin - 1/31 + 7/10 ---- -lib/readline/doc/rltech.texinfo - - clarified exactly what is meant by the term `application-specific - completion function', made its use consistent, and documented - what variables are changed before such a function is called +jobs.c + - new function, maybe_give_terminal_to (old, new, flags), sets the + terminal pgrp to NEW if and only if it's currently set to OLD + - call maybe_give_terminal_to when the parent sets the terminal pgrp + to the pipeline pgrp in stop_pipeline, so we don't give the + terminal to the new job's pgrp unless it's currently owned by the + shell. Fixes race condition described by Joe Peterson + , where parent bash may change tty pgrp after a + grandchild (interactive bash child of su) has changed it to + something else. The call to maybe_give_terminal_to makes explicit + a previously-implicit assumption -lib/readline/input.c - - new function, _rl_pushed_input_available(), returns non-zero if - there are characters in the input queue managed by rl_get_char - and _rl_unget_char +aclocal.m4 + - remove dependency on writable /tmp by creating directories in + build directory -lib/readline/rlprivate.h - - new extern declaration for _rl_pushed_input_available +shell.c + - make changes to how bash sets no_line_editing and running_under_emacs + to deal with various emacs terminal emulators; use better check + for `eterm', since bash sends $PWD to eterm with control sequences + that confuse other programs. Problem reported by Micah Cowan + -lib/readline/callback.c - - change rl_callback_read_char to check _rl_pushed_input_available - and loop if there's something there, so characters don't languish - until more keyboard input is read -execute_cmd.c - - new variable, last_command_exit_signal, non-zero if - last_command_exit_value result from wait_for was result of a signal - -nojobs.c - - keep track of whether or not a given pid was killed by a signal with - a new flag in the pid_list array - - new function int find_termsig_by_pid(pid_t pid) to get the - terminating signal, if any, for a particular pid - - new function int get_termsig(WAIT status) returns the terminating - signal corresponding to status - - set last_command_exit_signal in wait_for and the various wait_for_xx - functions + 7/12 + ---- +print_cmd.c + - break code that prints here-documents into two functions: + print_heredoc_header, which prints the operator and delimiter, and + print_heredoc_body, which prints the body text and closing delimiter + - change print_redirection to call print_heredoc_{header,body} + - sentinel variable, printing_connection, used when printing a command + of type `connection' (|, &&, ||, etc.) + - change print_redirection_list to save any here documents it finds + while printing a connection and save them in `deferred_heredocs' + - new function, print_deferred_heredocs, called from print_redirection + in the cm_connection case, calls print_heredoc_header for all the + here documents, then prints the operator (|, &&, ||, etc.), then + the here-document body. This preserves syntactic correctness; the + old code printed the control operator after the body of the here + document. Fixes bug reported by -jobs.c - - new functions, process_exit_signal and job_exit_signal, return the - signal that killed a given process or job, if a signal caused its - death - - set last_command_exit_signal in wait_for by calling job_exit_signal - or process_exit_signal appropriately + 7/16 + ---- +locale.c + - in set_locale_var, print a warning message if setlocale() fails any + time it's called -- required some code restructuring -subst.c - - don't resend SIGINT to ourselves unless last_command_exit_signal is - SIGINT and last_command_exit_value == 128 + SIGINT. This fixes the - $(exit 130) bug reported by Paul Jarc + 7/19 + ---- +support/shobj-conf + - support for mingw32, contributed by Carlo Bramix + -expr.c - - new function, expr_bind_variable, calls bind_int_variable and - then stupidly_hack_special_variables. This fixes the - `let OPTIND=1' bug + 7/23 + ---- +execute_cmd.c + - added support (currently unused) to manage a list of coprocs + 7/25 + ---- bashline.c - - change history_and_alias_expand_line and shell_expand_line to call - history_expand_line_internal so calls to pre_process_line are - localized - - change history_expand_line_internal and cleanup_expansion_error to - temporarily turn off hist_verify before calling pre_process_line - to avoid the effects described by teirllm@dms.auburn.edu + - add extern declarations for literal_history and force_append_history + +builtins/shopt.def + - include "bashhist.h" instead of having extern declarations for the + appropriate history variables + +parser.h + - new parser_state value: PST_HEREDOC, set when reading body of here- + document in parse.y:read_secondary_line parse.y - - don't unconditionally turn off PST_ALEXPNEXT in push_string. This - fixes the multiple alias expansion bug reported by Paul Jarc. + - set PST_HEREDOC bit in parser_state when reading a secondary line + for the body of a here-document + - change read_secondary_line to save lines in the body of a here- + document in the shell history list if remember_on_history is + set. Fixes bug reported by Gene Golub -lib/readline/vi_mode.c - - change rl_vi_subst to push `l' instead of ` ' -- it should be - equivalent, but this has been reported to fix a problem in multibyte - locales + 8/4 + --- +configure.in + - changed to 4.0-alpha lib/readline/readline.h - - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars - has been called. Since it's only used and visible internally, it's - undocumented + - changed constants to reflect readline-6.0 version -lib/readline/rltty.h - - changed all of the members of _rl_tty_chars struct to `unsigned char' + 8/11 + ---- +lib/readline/signals.c + - make sure we don't use SIGWINCH without checking whether or not it's + defined. Fix from Pedro Alves -lib/readline/rltty.c - - set the RL_STATE_TTYCSAVED after save_tty_chars is called - - new function, rl_tty_unset_default_bindings(), resets bindings for - everything rl_tty_set_default_bindings() messes with back to - rl_insert, so rl_tty_set_default_bindings can be called again with - possible changes - - new function that does the bulk of the work for - rltty_set_default_bindings: _rl_bind_tty_special_chars() - - change prepare_terminal_settings so that it can track changes to the - terminal special chars made by stty(1): unset the bindings with - rl_tty_unset_default_bindings before calling save_tty_chars, and - _rl_tty_set_default_bindings after, with the new values from - get_tty_settings(). This implements a long-standing request, most - recently made by Tim Waugh of Red Hat. + 8/12 + ---- -lib/readline/readline.h - - extern declaration for rl_tty_unset_default_bindings() +COPYING + - updated to GPLv3; edits in every file with a copyright or license + declaration to update to gpl3 -lib/readline/readline.c - - new function, reset_default_bindings, calls - rl_tty_unset_default_bindings() to reset the terminal special chars - back to rl_insert and then read the new ones +version.c + - update extended version info to latest gnu standard -lib/readline/doc/rltech.texinfo - - documented rl_tty_unset_default_bindings() + 8/17 + ---- +subst.c + - change exp_jump_to_top_level to only call top_level_cleanup if + parse_and_execute_level is 0. If it's not, the longjmp to + parse_and_execute will run the unwind-protect stack. Fixes bug + most recently reported by Roman Rakus - 2/1 - --- -[prayers and condolences to the families of the space shuttle crew members] + 8/18 + ---- +support/config.{guess,sub} + - updated to newer versions from autoconf-2.62 distribution -aclocal.m4 - - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE - - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype - functions handle non-ascii characters correctly + 8/20 + ---- +subst.c + - fixed parameter_brace_substring to differentiate between indexed and + associative arrays when computing second offset, instead of + assuming indexed array -config.h.in - - add HAVE_MBRTOWC and HAVE_MBRLEN - - add NO_MULTIBYTE_SUPPORT for new configure argument - - add CTYPE_NON_ASCII + 8/21 + ---- +support/xcase.c + - simple program to convert input from lower to uppercase and vice + versa. Now used by coproc test suite, since `tr -u' is not + portable. -config-bot.h, lib/readline/rlmbutil.h - - make sure that mbrtowc, mbrlen, and wcwidth are all present before - turning on HANDLE_MULTIBYTE - - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined + 8/22 + ---- +doc/bash.1 + - fixed description of the bindable edit-and-execute commands to note + they check $VISUAL first, instead of $FCEDIT. Fixed bug reported + by -configure.in - - new argument --enable-multibyte (enabled by default), allows - multibyte support to be turned off even on systems that support it +[bash-4.0-alpha frozen] -lib/readline/chardefs.h - - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined + 8/28 + ---- +[bash-4.0-alpha released] - 2/3 + 9/1 --- -config.h.in - - add HAVE_WCTOMB +builtins/evalstring.c + - fixed typo in parse_string (ostring used uninitialized). Bug + reported by Andreas Schwab -aclocal.m4 - - check for wctomb in BASH_CHECK_MULTIBYTE +subst.c + - fix return value of parameter_brace_expand to set the + W_HASQUOTEDNULL flag in the returned WORD_DESC * if the return value + from parameter_brace_remove_pattern is a quoted null string. Fixes + bug reported by Andreas Schwab + - set the W_HASQUOTEDNULL flag in the return value from + parameter_brace_expand if the return value from parameter_brace_patsub + is a quoted null string - 2/4 + 9/6 --- -lib/readline/vi_mode.c - - in _rl_vi_change_mbchar_case, make sure the result from wctomb() - is NULL-terminated before trying to insert it with rl_insert_text() +builtins/read.def + - change read -t 0 to return success if there is input available to be + read -- allows scripts to poll for input. Uses input_avail libsh + function - 2/5 + 9/9 --- -lib/readline/display.c - - fix to update_line to avoid problems on systems with multibyte - characters when moving between history lines when the new line - has more glyphs but fewer bytes (twaugh@redhat.com) - -lib/readline/vi_mode.c - - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case - -pcomplete.c - - fix init_itemlist_from_varlist to handle the case where the - `varlist' is NULL +externs.h + - fix extern fpurge declaration -- use HAVE_DECL_FPURGE instead of + NEED_FPURGE_DECL, since the former is set by `configure' -doc/{bash.1,bashref.texi} - - clarified when a simple command may fail without the shell exiting - when -e is set +jobs.h + - add extern declaration for close_pgrp_pipe + - add a new job state JNONE (-1) to the enum - 2/13 - ---- -parse.y - - when bash is started with --nolineediting, ignore \[ and \] when - decoding the prompt string +jobs.c + - include execute_cmd.h for extern declarations for coproc functions subst.c - - fix remove_quoted_nulls so that a string with a CTLESC appearing - after a CTLNUL (which was removed) does not leave characters in - the string inappropriately - - 2/14 - ---- -builtins/common.h - - new flag value for parse_and_execute(): SEVAL_RESETLINE, which - allows the caller to specify whether or not the internal idea - of the line number should be reset to 1 - -builtins/evalstring.c - - parse_and_execute() now tells push_string to reset the line - number only if the SEVAL_RESETLINE flag is set by the caller - - 2/15 - ---- -builtins/evalfile.c - - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute() + - include builtins/builtext.h for extern declarations for functions + implementing builtins (e.g., declare_builtin) -subst.c - - if the shell is currently interactive, pass SEVAL_RESETLINE to - parse_and_execute() when doing command substitution +arrayfunc.c + - include "pathexp.h" for extern declaration for glob_char_p -jobs.c - - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap +braces.c + - add extern declaration for `asprintf' -command.h - - add `line' members to case_com, for_com, select_com - - rearranged order of members in some of the command structs, so - `flags' and `line' are first - - added a `source_file' member to the function_def struct; keeps - track of where the function was defined +lib/readline/rlprivate.h + - add extern declarations for _rl_trace, _rl_tropen -doc/Makefile.in - - add some new suffix rules: .dvi.ps +lib/sh/zgetline.c + - add extern declarations for zread, zreadc -doc/{bash.1,bashref.texi} - - added text to the description of the `trap' builtin tightening up - the language describing when the ERR trap will be run +lib/sh/mktime.c + - include "bashansi.h" for string function declarations -error.c - - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0] - in get_name_for_error if the shell is not interactive +builtins/common.h + - add extern declaration for parse_string -array.h - - new convenience defines: array_push and array_pop +trap.c + - include jobs.h for extern declaration for run_sigchld_trap -variables.c - - change get_funcname to return this_shell_function->name only if - arrays have not been compiled into the shell - - change init_funcname_var to initialize FUNCNAME as an array variable - if we have arrays - - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value' - function for dynamic variables - - new function: init_dynamic_array_var(), a generic dynamic array - variable initializer to handle the common case - - use init_dynamic_array_var() instead of explicit init_dirstack_var() - - use init_dynamic_array_var() instead of explicit init_groups_var() - - new dynamic array variables: BASH_ARGC, BASH_ARGV, BASH_SOURCE, - BASH_LINENO, initialized with init_dynamic_array_var +general.c + - fix call to strtoimax in legal_number; if ep == string when function + returns, the number was not converted, even if errno is not set. + Fix from Paul Jarc -shell.c - - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script + 9/11 + ---- +[prayers for the victims of 9/11/2001] -{execute_cmd,trap}.c - - take out trap_line_number, since parse_and_execute doesn't reset the - line number any more when running the trap commands +builtins/return.def + - call no_options, as Posix requires. This also has the effect of + disallowing negative return values unless they're prefixed by `--' -make_cmd.c - - augment make_function_def to get source file name and call - bind_function_def to save the entire FUNCTION_DEF + 9/13 + ---- +builtins/bind.def + - add an error message when bind is used without line editing active, + instead of just returning an error status variables.c - - new hash table: shell_function_defs, keeps table of shell function - definitions including source file and line number info corresponding - to shell_functions table - - new functions: find_function_def and bind_function_def to manage - the shell_function_defs hash table - - new function: unbind_function_def to remove a function definition - from the shell_function_defs table (right now uncalled) - -variables.h - - extern declaration for bind_function_def, find_function_def - - new extern declaration for unbind_function_def + - make sure make_local_variable never creates visible variables with + a value, whether or not a variable with the same name existed in a + previous context. This is consistent with ksh93. Fix from + + 9/16 + ---- execute_cmd.c - - in function prologue and epilogue, push and pop FUNCNAME, - BASH_SOURCE, and BASH_LINENO information + - add call to CHECK_TERMSIG in shell_execve after the call to execve + returns. Recommended by Roman Rakus + - add QUIT check in execute_connection after executing first command + in a `&' connection -dispose_cmd.c - - broke the code that disposes a FUNCTION_DEF out into two new - functions: dispose_function_def and dispose_function_def_contents + 9/22 + ---- +execute_cmd.c + - new semaphore variable, executing_list, incremented every time a + list (command1;command2 or command1 || command2 or command1 && + command2) is executed; used as sentinel for rest of shell -dispose_cmd.h - - new extern declarations for dispose_function_def_contents and - dispose_function_def +sig.c,builtins/evalstring.c + - set executing_list to 0 when throwing execution back to top level; + make sure to unwind-protect it in appropriate places -copy_cmd.c - - move body of copy_function_def (other than allocating a new - FUNCTION_DEF) to copy_function_def_contents - - make sure to copy the new source_file member of a function_def in - copy_function_def_contents - - copy_function_def is no longer static, copy_function_def_contents - is not either +jobs.c + - if a pipeline is killed by SIGINT while executing a list (when + executing_list is non-zero), make sure the shell acts as if an + interrupt occurred. The behavior is dependent on the shell + compatibility level being > 32 (bash-4.0 and above) -command.h - - new extern declaration for copy_function_def_contents and - copy_function_def + 9/23 + ---- +redir.c + - don't bother reporting an error with a file descriptor, even if + the errno is EBADF, if the redirection error (e.g., NOCLOBBER) + can't have anything to do with the fd. Fixes bug reported by + "David A. Harding" , debian bug #499633. -parse.y - - keep a stack of line numbers where case, select, and for commands - start, with a maximum nesting level of 128; increment when reading - word after `for', `select' or `case' in read_token_word; decrement - in grammar actions after parsing a complete for, arith_for, select, - or case command - - create for, case, arith_for, and select commands with an extra - line number (word_lineno[word_top]) argument + 9/24 + ---- +builtins/declare.def + - make `declare [option] var' (and the `typeset' equivalent) create + invisible variables, instead of assigning the null string to a + visible variable. Fixes bug reported by Bernd Eggink -make_cmd.c - - make_for_or_select, make_for_command, make_case_command, and - make_select_command all take an extra `line_number' argument + 9/25 + ---- +builtins/common.[ch] + - new function, builtin_warning(), like builtin_error but for warning + messages -make_cmd.h - - corresponding changes to extern declarations for those functions +builtins/bind.def + - experimental: print a warning, but go on, if line editing not active + when bind is invoked. Suggested by Rocky Bernstein + - 2/16 + 10/3 ---- -{execute_cmd,shell,variables}.c - - follow each call to remember_args with a call to push_args or - pop_args to manage the BASH_ARGV and BASH_ARGC arrays. Only set - when the shell is started to run shell script or runs a shell - function. Doesn't handle `set' or `shift' yet, nor `source'. +test.c + - use same_file instead of directly comparing st_dev and st_ino when + comparing files in filecomp(). From mingw32 patches submitted + by Hector Chu -execute_cmd.c - - keep track of the level of subshells with a new variable, manipulated - in execute_in_subshell - - set currently_executing_command in execute_command_internal(), - even if we're running a trap - - better line number management when executing simple commands, - conditional commands, for commands in execute_command_internal() - and the various functions that implement the commands - (execute_cond_command, execute_for_command, execute_etc.) + 10/4 + ---- -variables.c - - new dynamic variable BASH_SUBSHELL, with new get_subshell and - assign_subshell functions to manipulate it - - new functions push_args (WORD_LIST *list) and pop_args (void) to - manage the BASH_ARGC and BASH_ARGV dynamic array variables +redir.c + - in redirection_error(), use `error' instead of errno when comparing + against EBADF. From mingw32 patches submitted by Hector Chu + -variables.h - - new extern declarations for push_args and pop_args +shell.c + - in unset_bash_input(), reset bash_input.type to st_none after + closing the default buffered fd. From mingw32 patches submitted + by Hector Chu -builtins/evalfile.c - - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV, - BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables +builtins/cd.def + - ignore CDPATH when in privileged mode. Suggested by Paul Jarc + -support/mksignames.c - - add another fake signal for `trap'; make NSIG+2 == `RETURN' +variables.c + - change sv_globignore to only act if privileged mode is not enabled. + Suggested by Paul Jarc -trap.c - - _run_trap_internal now returns an int: the exit value of the command - run as the result of the trap - - run_debug_trap now returns an int: the exit value of the command - run as the result of the trap - - RETURN is a new special trap - - new function: set_return_trap(char *command) interface for the rest - of the shell, like set_{debug,error}_trap - - new function: run_return_trap() - - command substitution and other child processes don't inherit the - return trap +doc/bash.1,bashref.texi + - document new treatment of CDPATH and GLOBIGNORE when privileged + mode is enabled -trap.h - - new extern declaration for set_return_trap() and run_return_trap - - new defines for RETURN_TRAP; increment BASH_NSIG - - change extern declaration for run_debug_trap() since it now returns - an int +builtins/read.def + - change prompt printing to occur after terminal is set to no-echo + mode. Based on suggestion from Stephane Chazelas + -shell.c - - new invocation long option: --debugger, turns on debugging and - sets internal `debugging_mode' variable +lib/readline/signals.c + - new variables to keep track of special characters corresponding to + SIGINT, SIGQUIT, and SIGTSTP + - new variable to keep track of whether tty is echoing control + characters corresponding to SIGINT, SIGQUIT, and SIGTSTP + - new function, _rl_echo_signal_char(int sig) to display the tty + special char generating SIGINT, SIGQUIT, or SIGTSTP. Based on + idea and code from Joe Peterson + - call rl_echo_signal_char in rl_signal_handler: if the terminal + settings indicate it, readline will echo characters that generate + keyboard signals -execute_cmd.c - - new code to save return trap when executing a shell function, so - shell functions don't inherit it - - run debug trap before binding the variable and running the action - list in a `for' command - - run debug trap before binding the selection variable and running - the query in a `select' command - - run debug trap before running matcher in a `case' command +lib/readline/rltty.c + - set _rl_intr_char, _rl_quit_char, and _rl_susp_char to special + characters that generate signals from keyboard + - set _rl_echoctl if ECHOCTL tty flag is set -builtins/set.def - - new `set -o functrace' (set -T), causes DEBUG trap to be inherited - by shell functions - - new `set -o errtrace' (set -E), causes ERR trap to be inherited - by shell functions +lib/readline/rlprivate.h + - extern declarations for _rl_intr_char, _rl_quit_char, and + _rl_susp_char + - extern declaration for _rl_echoctl -flags.c - - new flags -E and -T, control error_trace_mode and - function_trace_mode respectively +lib/readline/readline.h + - extern declaration for rl_echo_signal_char() -flags.h - - new extern declarations for error_trace_mode and function_trace_mode +lib/readline/doc/rltech.texi + - document rl_echo_signal_handler(): available for applications + that install their own signal handlers - 2/17 + 10/5 ---- -doc/bashref.texi - - changed the `dircategory' as per Karl Berry's suggestion - -doc/texinfo.tex - - update to version of 2003/02/04 from texinfo.org - -support/texi2dvi - - update to version 1.14 from texinfo-4.5 distribution +execute_cmd.c + - fix errexit logic to not cause the shell to exit when a command in + a pipeline fails. Fixes bug reported by Marcin Owsiany + - 2/20 - ---- -support/config.{guess,sub} - - update to versions of 2002/11/30 + 10/14 + ----- +builtins/evalstring.c + - don't short-circuit execution in parse_and_execute if we want to + run an exit trap. Fixes bug reported by Steffen Kiess + -lib/readline/doc/manvers.texinfo - - renamed to version.texi to match other GNU software - - UPDATE-MONTH variable is now `UPDATED-MONTH' + 10/18 + ----- +parse.y + - fix error production to only call YYACCEPT if the shell is currently + interactive and not in parse_and_execute (so parser errors in + things like eval will correctly set $?). Fixes bug reported by + marco-oweber@gmx.de -lib/readline/doc/{hist,rlman,rluserman}.texinfo - - include version.texi +execute_cmd.c + - make sure variable name errors in execute_for_command and non- + identifier function names in execute_intern_function set the + return status to EX_BADUSAGE (2), not EX_USAGE (258) -doc/version.texi - - new file, with standard stuff matching other GNU distributions +parser.h + - new parser state, PST_REPARSE -{doc,lib/readline/doc}/Makefile.in - - include right stuff for `version.texi' +parse.y + - turn PST_REPARSE on in parse_string_to_word_list + - in parse_matched_pair, if parsing a single-quoted string and + PST_REPARSE is set, don't requote CTLESC or CTLNUL. Fixes bug with + compound array assignment using $'\x7f' reported by Antonio Macchi + -lib/readline/doc/{rluserman,rlman,hist}.texinfo - - use @copying and @insertcopying and @ifnottex instead of @ifinfo - - add FDL as an appendix entitled `Copying This Manual' + 10/23 + ----- +configure.in + - define LOCAL_LDFLAGS as `-z interpose' on Solaris 8, 9, and 10 to + allow the bash malloc to interpose the libc malloc when called by + library functions pre-bound to the libc malloc. Suggested by + Serge Dussud -lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi - - changed the suffix from `texinfo' to `texi' + 10/26 + ----- +doc/bash.1 + - add single-sentence descriptions to rest of parameter expansions. + Suggested by Ken Irving -lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi - - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi + 10/27 + ----- +subst.c + - rearrange code in skip_to_delims to allow quote characters and other + shell expansion characters to be delimiters + - add new flags value for inverting search: skip to the next character + NOT in the set of delimiters passed as an argument -lib/readline/doc/Makefile.in,doc/Makefile.in - - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi +subst.h + - define for new SD_INVERT flag value for skip_to_delims -lib/readline/doc/{rlman,rluserman}.texinfo - - changed the suffix from `texinfo' to `texi' + 10/28 + ----- +bashline.c + - new bindable functions: shell-forward-word and shell-backward-word. + Like forward-word and backward-word, but understand shell quoting + and use shell metacharacters and whitespace as delimiters. + Suggested by Andre Majorel + - new bindable functions: shell-kill-word and shell-backward-kill-word. + Like kill-word and backward-kill-word, but understand shell quoting + and use shell metacharacters and whitespace as delimiters. + Suggested by Andre Majorel -lib/readline/doc/hist.texinfo - - renamed to history.texi +doc/bash.1,lib/readline/doc/rluser.texi + - documented shell-forward-word and shell-backward-word + - documented shell-kill-word and shell-backward-kill-word - 2/25 + 11/1 ---- -pathnames.h.in - - moved pathnames.h here so value of DEBUGGER_START_FILE can be - substituted by configure - -aclocal.m4 - - added AM_PATH_LISPDIR for debugger - -configure.in - - added some variables: `bashvers', `relstatus' to use info in more - than one place - - call AM_PATH_LISPDIR - - new option: --enable-debugger, sets DEBUGGER cpp option - - new option with AC_ARG_VAR: DEBUGGER_START_FILE - - make `pathnames.h' a file generated by configure - -Makefile.in - - add rule to create pathnames.h +redir.c + - add extra argument to add_undo_redirect: fdbase. FD used to save + a file descriptor must be > fdbase if fdbase >= SHELL_FD_BASE. A + value of -1 for fdbase means to just use SHELL_FD_BASE. Fixes bug + with 0<&10 reported by Clark Jian Wang -builtins/declare.def - - added extra line number and source file name to `declare -F' output - if `--debugger' is used at startup + 11/5 + ---- +unwind_prot.c + - new function: have_unwind_protects(); returns 1 if unwind_protect_list + is not empty -builtins/evalfile.c - - call run_return_trap from source_file before returning the result - from _evalfile() +unwind_prot.h + - extern declaration for have_unwind_protects -execute_cmd.c - - call run_return_trap in execute_function before restoring the old - context +builtins/evalstring.c + - in parse_and_execute_cleanup, make sure that we don't call + run_unwind_frame and expect it to decrement parse_and_execute_level + if there's no unwind_protect_list, since there's a while loop in + throw_to_top_level that calls parse_and_execute_cleanup as long as + parse_and_execute_level is non-zero -builtins/source.def - - arrange to save and restore DEBUG traps when sourcing files if - function_trace_mode (set -o functrace) is not set + 11/9 + ---- +variables.c + - fix the assign function for COMP_WORDBREAKS to allocate new memory + to store as the variable's value, to avoid freeing memory twice + if the variable is unset after rl_completer_word_break_characters + is freed and reallocated. Fix from Mike Stroyan ) + - call set_pipestatus_from_exit in exp_jump_to_top_level so that + failed expansions that set $? will set $PIPESTATUS. Fixes bug + reported by Eric Blake -variables.c - - change bind_int_variable to use valid_array_reference instead - of looking for `[' + 11/20 + ----- +general.c + - new 'file_exists(fn)' primitive; just calls stat(2) -lib/readline/vi_mode.c - - check for `a' in _rl_vi_done_inserting so the text inserted by an - `a' command can be reinserted with a `.' +general.h + - new extern declaration for file_exists -lib/readline/readline.c - - when entering vi insertion mode in readline_internal_setup(), make - sure that _rl_vi_last_key_before_insert is set to `i' so that undo - groups and redo work better (reported by ) +bashline.c + - add `~' to rl_filename_quote_characters so make_quoted_replacement + will call bash_quote_filename for words containing `~'. Then + bash_quote_filename can make choices based on that + - change quote_word_break_chars to backslash-quote the tilde in a + filename with a leading tilde that exists in the current directory, + since we want to inhibit tilde expansion in this case -lib/glob/sm_loop.c - - handle ?(...) in a pattern immediately following a `*', instead of - ignoring the `(' and treating the `?' as a single-char match, as - long as FNM_EXTFLAG is set (reported by ) +execute_cmd.c + - call file_isdir from shell_execve instead of stat(2) directly -aclocal.m4 - - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE +bashhist.c + - use file_exists and file_isdir primitives instead of calling stat -config.h.in - - add HAVE_STRUCT_TIMEZONE + 11/21 + ----- +redir.c + - When undoing saving of non-standard file descriptors (>=3) using + file descriptors >= SHELL_FD_BASE, we set the saving fd to be + close-on-exec and use a flag (RX_SAVCLEXEC) to decide how to set + close-on-exec when the fd is restored. Set flag in add_undo_redirect, + check in do_redirection_internal. Fixes problem reported by Andreas + Schwab -configure.in - - call BASH_STRUCT_TIMEZONE - -execute_cmd.c - - don't try to use `struct timezone' in calls to gettimeofday unless - HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise + 11/26 + ----- +subst.c + - fix param_expand to have expansions of $@ and $* exit the shell if + there are no positional parameters and `set -u' is enabled. Fixes + bug reported by Dan Jacobson - 3/20 - ---- -execute_cmd.c - - new variable, the_printed_command_except_trap, saves the command - being executed before a trap is executed, for the debugger + 11/27 + ----- +lib/readline/display.c + - fix update_line to not call space_to_eol if current cursor position + (_rl_last_c_pos) indicates that we're already at end of line. + Partial fix for bug reported by Mike Frysinger + - in update_line, don't call insert_some_chars if that will start + before the last invisible character in the prompt string and not + draw the entire prompt string. More of the partial fix for bug + reported by Mike Frysinger + - fix update_line to adjust _rl_last_c_pos by wrap_offset when adding + characters beginning before the last invisible character in the + prompt. New code is same as previously existed in a different code + path. Rest of fix for bug from Mike Frysinger + - fix assignment of newline breaks (inv_lbreaks) to correctly account + for prompts longer than two screen lines containing invisible + characters. The assumption is that part of the invisible characters + are on the first line (prompt_invis_chars_first_line) and the + remainder are on the last (wrap_offset - prompt_invis_chars_first_line). + Fix is in rl_redisplay. part of fix for bug reported by + "Wesley J. Landaker" in + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265182 + [TENTATIVE] + - fix _rl_move_cursor_relative to correctly offset `dpos' by `woff' + when there are invisible characters on lines after the second by + using (_rl_screenwidth*_rl_last_v_pos) when seeing whether or not + we just wrote some invisible characters. Rest of fix for bug + reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265182 + [TENTATIVE] -trap.c - - if in debugging mode, let command substitutions and other child - processes inherit the DEBUG and ERR traps if the `functrace' - (which is really a bad name, given this semantic) or `errtrace' - options, respectively, have been set + 12/11 + ----- +sig.c + - reset the execution context before running the exit trap in + termsig_handler -shell.c - - local_pending_command renamed to command_execution_string; no longer - static +general.c + - set and unset terminate_immediately like interrupt_immediately in + bash_tilde_expand -variables.c - - new dynamic variable, BASH_COMMAND, set to the command string - currently executing, or the one that caused a trap to execute - (mapped to the_printed_command_except_trap) - - new variable, BASH_EXECUTION_STRING, set to the argument to the - -c invocation option, if the shell was started that way +builtins/read.def + - change terminate_immediately to a counter instead of a flag, as + interrupt_immediately is used - 3/22 - ---- -execute_cmd.c - - changed execute_for_command, eval_arith_for_expr, - execute_select_command, execute_arith_command, execute_cond_command, - execute_simple_command to implement new DEBUG trap semantics - for the debugger: if the DEBUG trap commands return a non-zero - status and debugging_mode is non-zero, we skip the command to be - executed +lib/readline/display.c + - slight change to fix from 11/27 to deal with prompts longer than a + screen line where the invisible characters all appear after the + line wrap. Fixes bug reported by Andreas Schwab -trap.c - - change run_debug_trap for the debugger: if we're in the debugger - and the DEBUG trap returns 2 while we're in a function or sourced - script, we force a `return' +builtins/{echo,printf}.def + - increment terminate_immediately at entry; decrement before returning. + Fix for bug reported by Ralf.Wildenhues@gmx.de -shell.c - - new function, start_debugger(), that sources the debugger start file - and turns the debugger on + 12/16 + ----- +subst.c + - fix off-by-one error in /dev/fd version of add_fifo_list; make + sure we add to totfds when it is == fd, not just when fd > totfds. + Fixes bug reported by marciso@gmail.com -builtins/shopt.def - - new settable option, `extdebug', turns on debugging_mode, as if - --debugger had been supplied at invocation (but does not source - debugger startup file) +[bash-4.0-beta2 frozen] -trap.c - - make sure that run_exit_trap arranges for `returns' to come back - there, too, so a `return' executed by an `exit' invoked within a - shell function behaves correctly + 12/29 + ----- +doc/{bash.1,bashref.texi} + - document more clearly that when not in Posix mode, command + substitution does not inherit the -e option. From bug report from + Freddy Vulto + +{execute_cmd,sig,builtins/evalstring}.c + - sentinel variable to keep track of whether or not we're supposed to + ignore the failure status of a command executed in a command + substitution even if the `-e' option is set: comsub_ignore_return + - increment and decrement comsub_ignore_return in execute_simple_command + before calling expand_words + - in parse_and_execute, if comsub_ignore_return is non-zero and the + SUBSHELL_COMSUB bit is set in subshell_environment, enable the + CMD_IGNORE_RETURN flag in every command executed from the passed + string. Fixes problem reported by Freddy Vulto + - make sure to reset comsub_ignore_return every time we throw to the + top level, like executing_list flag + + 1/2/2009 + -------- +parse.y + - fix to rewind_input_stream to handle case of $(...) command + substitution followed by a quoted literal newline. Report and fix + from Andreas Schwab -support/shobj-conf - - change darwin/MacOS X stanza based on advice from mac os x developers + 1/7 + --- -lib/sh/mailstat.c - - set the atime member of the synthesized stat struct to 0 if `cur/' - is empty, rather than leaving it undefined +subst.c + - fix match_wpattern and match_upattern to prefix a `*' to the + pattern even if it starts with a `*(' (if extglob is enabled) + before checking whether or not it can match anywhere in the + string. Fixes bug reported by os@sernet.de. - 3/24 - ---- -builtins/caller.def - - new builtin to provide a call stack for the debugger +[bash-4.0-rc1 frozen] -builtins/evalfile.c - - added a second `flags' argument to source_file() - - new flag value for flags argument to _evalfile(): FEVAL_NOPUSHARGS. - If included in flags arg, it means to not manipulate the BASH_ARGV - and BASH_ARGC arrays + 1/9 + --- +locale.c + - since setlocale() doesn't set errno to anything meaningful, + don't include the strerror() result in the error message if + it fails + - make sure the error messages printed when setlocale fails are + localizable -builtins/common.h - - change prototype for source_file() + 1/11 + ---- +lib/readline/histexpand.c + - make sure that every time history_no_expand_chars is tested, we + also call the history_inhibit_expansion_function if it's set. + Fixes bug reported by Yang Zhang -builtins/source.def - - add flag value to call to source_file(): set to 1 if we replaced - the positional parameters - - add call to push_args if additional arguments supplied to the - source builtin - - add call to pop_args in maybe_pop_dollar_vars + 1/12 + ---- +trap.c + - make sure to call parse_and_execute with the SEVAL_RESETLINE bit + set in the flags so it will reset the line number when running + the trap commands. Partial fix for bug reported by + peter360@fastmail.us -execute_cmd.c - - run the debug trap in execute_function so the debugger can stop - before the first command in a function body is executed - - modify subshell_level before executing a builtin or function in a - subshell - - print `for', `select', `case' command heads when set -x is enabled + 1/14 + ---- +builtins/reserved.def + - document `coproc' so it can be used with `help' builtin. Pointed + out by Pierre Gaston -print_cmd.c - - `xtrace_print_word_list' now takes an additional flags argument, - which, if non-zero, says to print indirection_level_string() - - new functions to print for, select, and case command heads when - set -x is enabled - - add spaces after `((' and before `))' in xtrace_print_arith_command +lib/sh/casemod.c + - added two new flags: CASE_UPFIRST and CASE_LOWFIRST to casemod + the first character of the passed string and pass the rest + through unchanged. Fixes bug reported by Jan Schampera + externs.h - - changed extern declaration for xtrace_print_word_list - - new declarations for xtrace_print_{for,case,select}_command_head() + - new defines for CASE_UPFIRST and CASE_LOWFIRST subst.c - - modify subshell_level when executing a command substitution - - 3/25 - ---- -execute_cmd.c - - use `line_number' in executing_line_number instead of looking into - the current command if it's a simple command; rearrange code to - make this simpler to compile in and out - - need to save and restore value of currently_executing_command around - calls to debug trap and return trap in execute_function + - use CASE_UPFIRST for ^ and CASE_LOWFIRST for , casemod operators -make_cmd.c - - make sure make_arith_for_command() disposes the WORD_LIST * it is - passed, since nothing else does and it's not used directly +builtins/mapfile.def + - call zreset() before calling first zgetline(), to clean out any + remaining data in local buffer used by zreadc. Fixes bug + reported by Pierre Gaston - 3/28 + 1/15 ---- -Makefile.in - - fixed dependencies for `error.o' on shell.h and version.h -- makes - parallel makes (gmake -j 4) work correctly +lib/sh/zread.c + - renamed zreadintr to zreadretry -- not perfect, but better + - new functions: zreadintr, which just calls read so it can be + interruptible, and zreadcintr, which is like zreadc but uses + zreadintr to fill the buffer + +lib/sh/zgetline.c + - in zgetline, when zread/zreadc return <= 0, make sure line is + non-null before assigning to line[nr] + +builtins/mapfile.def + - return an error right away if the supplied array variable name + refers to a readonly or noassign array + - set interrupt_immediately so calls to zgetline can be + interrupted. Fixes bug reported by Pierre Gaston + + - if interactive, pass the SEVAL_INTERACT and SEVAL_NOHIST flags + to parse_and_execute when calling callbacks. Fixes bug reported + by Pierre Gaston + - add `readarray' as a synonym for mapfile doc/{bash.1,bashref.texi} - - documented all new features added to support the debugger - - 4/1 - --- -lib/sh/shquote.c - - make sure CTLESC and CTLNUL characters are escaped with CTLESC - by sh_double_quote, sh_backslash_quote and - sh_backslash_quote_for_double_quotes - Fixes vulnerability reported by svdb@stack.nl + - document behavior of mapfile builtin adding index of array element + to be assigned as additional argument to callback string. Reported + by Pierre Gaston + - document readarray as synonym for mapfile -shell.h - - new `pipestatus' member of sh_parser_state_t, to save and restore - $PIPESTATUS - -parse.y - - changes to save_parser_state and restore_parser_state to save and - restore $PIPESTATUS +builtins/common.c + - new error function, sh_ttyerror(set), prints an error message having + to do with setting or getting terminal attributes builtins/read.def - - add a call to word_list_remove_quoted_nulls before assigning the - word list read from standard input to an array variable. Fixes - bug reported by holzhey@ppprs1.phy.tu-dresden.de + - print error message if read fails to set terminal attributes - 4/3 - --- + 1/16 + ---- execute_cmd.c - - in execute_null_command, if redirections are supplied, make sure - things like 3 -lib/readline/misc.c - - in rl_replace_from_history, don't force rl_replace_line to clear - the undo_list, since it might point directly at an undo list - from a history entry (to which we have no handle) +execute_cmd.h + - new extern declaration for coproc_reap - 4/4 - --- -trap.c - - initialize RETURN_TRAP stuff appropriately in initialize_traps() - - let command substitutions inherit the RETURN trap if we're in - the debugger and function tracing has been enabled +command.h + - new flags for c_flags member of a struct coproc -redir.c - - do_redirections and do_redirection_internal now take a single - flags argument instead of multiple boolean flags +{jobs,nojobs}.c + - add call to coproc_reap in cleanup_dead_jobs, which will do the + right queueing or blocking of SIGCHLD -redir.h - - new #defines for flags argument to do_redirection{s,_internal} +trap.c + - modify change from 1/12 to not reset the line number when running + the DEBUG and RETURN traps -execute_cmd.c - - change all calls to do_redirection to use new flag values + 1/18 + ---- +lib/sh/casemod.c + - change default operations to work on entire passed string instead + of breaking into words at non-alpha-numerics. Use new + CASE_USEWORDS flag to enable by-word behavior. Fixes bug reported + by Jan Schampera -parse.y - - new function, free_pushed_string_input(), an external interface to - clear the pushed_string list (alias expansion) - - new define SHOULD_PROMPT to say when it's OK to call prompt_again - (if the shell is currently interactive and is reading input from - the terminal or readline) - - make sure shell_getc and read_secondary_line only call prompt_again - if SHOULD_PROMPT evaluates to true - - prompt_again shouldn't do anything if the shell is currently in the - middle of expanding a multiline alias, since we won't be printing a - prompt anyway +builtins/printf.def + - in vbprintf, bracket each call to vsnprintf (which uses the args + passed to vbprintf) with SH_VA_START and va_end, so we can + reninitialize the argument list for each call. This is actually + what the C standard requires. Fixes bug that caused printf -b + to `ignore' first % format specifier if it came first in the + string. Reported by David Leverton + +builtins/mapfile.def + - start the line count at 1, since it doesn't get incremented before + (or after) reading the first line, so things like + `mapfile -n 5 -c 1 -C 'echo foo' array < file' work right and call + the callback after the first line is read. Fixes bug reported by + Pierre Gaston -externs.h - - new extern declaration for free_pushed_string_input() + 1/22 + ---- +lib/readline/complete.c + - set _rl_interrupt_immediately non-zero before reading from the file + system or calling an application-defined completion function -execute_cmd.c - - command_substitute and process_substitute now call - free_pushed_string_input because they shouldn't deal with any - partial alias expansion the parent shell may have started +lib/readline/signals.c + - renamed rl_signal_handler to _rl_handle_signal; new version of + rl_signal_handler that just calls _rl_handle_signal (for now) + - new function _rl_signal_handler that calls _rl_handle_signal without + any checking - 4/5 - --- -braces.c - - added {x..y} brace expansion, shorthand for {x,x+1,x+2,...,y}: - x, y can be integers or single characters; the sequence can be - ascending or descending; increment is always 1. Beware that - something like {a..A} can lead to non-letters. +lib/readline/rlprivate.h + - new extern declaration for _rl_signal_handler + - new define, RL_CHECK_SIGNALS, checks whether or not _rl_caught_signal + is set and calls _rl_signal_handler if so - 4/7 - --- -subst.c - - change extract_delimited_string and extract_dollar_brace_string to - return NULL on an expansion error when no_longjmp_on_fatal_error - is set, so the calling functions don't assume that the expansion - was successful (primarily the prompt expansion and completion code) +lib/readline/{bind,input,readline}.c + - add RL_CHECK_SIGNALS in appropriate places -doc/{bash.1,bashref.texi} - - documented new sequence generation feature of brace expansion +lib/readline/signals.c + - change rl_signal_handler to set a flag and return rather than + run through the entire signal handling process. If + _rl_interrupt_immediately is set, call the signal handling code + right away instead of setting the flag. Initial fix for crash + bug reported by Roman Rakus - 4/8 - --- -lib/sh/strstr.c - - replacement for strstr(3), in case the C library doesn't provide it +aclocal.m4 + - new macro, BASH_TYPE_SIG_ATOMIC_T, tests for sig_atomic_t in + , defines as int if not defined configure.in - - check for strstr, add to LIBOBJS if not found - -array.c - - array_walk now takes a third void * argument; it's passed to `func' - as its second argument + - call BASH_TYPE_SIG_ATOMIC_T + - call AC_C_VOLATILE -array.h - - change sh_ae_map_func_t prototype to add void * second argument +config.h.in + - empty define for sig_atomic_t + - empty define for volatile - 4/10 + 1/27 ---- -array.c - - new function: array_keys_to_word_list, returns a list of indices for - a given array - -array.h - - new extern declaration for array_keys_to_word_list - -arrayfunc.c -3 - new function: char *array_keys(), returns a string with keys for a - given array, with the appropriate quoting - -arrayfunc.h - - new extern declaration for array_keys - subst.c - - code to implement ksh93-like ${!array[@]} expansion (array[*] works, - too), which expands to all the keys (indices) of ARRAY - -doc/{bash.1,bashref.texi} - - documented new ${!array[@]} expansion - - 4/19 - ---- -builtins/setattr.def - - remove any mention of the `-n' option from readonly builtin's short - and long documentation - -pcomplib.c - - fix progcomp_insert to increase the refcount on the `cs' argument - before calling hash_insert -- fixes the problem of multiple calls - to progcomp_insert with the same compspec + - audit calls to add_character and change to add_ifs_character (which + quotes characters in $IFS). Affects primarily `:', `=', and `~'. + Fixes bug reported by Jan Schampera ; fix + suggested by Stephane Chazelas -doc/bash.1 - - add mention of characters that inhibit history expansion when found - immediately following an unquoted `!' + 2/1 + --- +configure.in + - call AC_C_RESTRICT -bashline.c - - convert the code conditionally compiled in by the NO_FORCE_FIGNORE - #define to something runtime-tunable with the `force_fignore' - variable (opposite sense). force_fignore is 1 by default +config.h.in + - add empty defintion for `restrict' -builtins/shopt.def - - new tunable `shopt' option: `force_fignore', controls force_fignore - variable and behavior of FIGNORE handling +pcomplete.c + - use unwind_protects around call to execute_shell_function in + gen_shell_function_matches to prevent data corruption if + throw_to_top_level is called. Bug report and fix from + werner@suse.de. -lib/readline/complete.c - - new variable, _rl_complete_show_unmodified, causes completer to list - possible completions if more than one completion and partial - completion cannot be done - - new value for what_to_do argument to rl_complete_internal, `@', - indicating that we want the show-unmodified behavior - - change rl_completion_type to return `@' when appropriate +execute_cmd.c + - don't clamp CPU usage at 100% in print_formatted_time. Bug reported + by Linda Walsh -lib/readline/bind.c - - new bindable variable, show-all-if-unmodified, which controls value - of _rl_complete_show_unmodified + 2/5 + --- +locale.c + - in set_locale_var, set errno to 0 before calling setlocale(), and + print strerror (errno) if setlocale fails and errno ends up non-zero -lib/readline/rlprivate.h - - extern declaration for _rl_complete_show_unmodified + 2/6 + --- +configure.in + - backed out of solaris change from 10/23/2008 (adding `-z interpose' + to LDFLAGS) due to solaris updates to fix a linker problem. + Updatted by Serge Dussud -lib/readline/doc/rluser.texi - - documented show-all-if-unmodified + 2/12 + ---- +execute_cmd.c + - change execute_connection so failure of a pipeline will cause the + shell to exit if -e is on. From discussion on austin-group + mailing list + - change execute_command_internal so failure of a user-specified + subshell will cause the shell to exit if -e is on. From discussion + on austin-group mailing list -lib/readline/doc/rltech.texi - - documented new `@' value for second argument to rl_complete_internal - - documented new return value from rl_completion_type + 2/13 + ---- +doc/{bash.1,bashref.texi} + - clarified description of set -e option to accurately reflect current + implementation - 4/22 + 2/19 ---- -lib/readline/signals.c - - in rl_set_signal, set sa_flags to SA_RESTART for SIGWINCH, if we - have POSIX signals -- this is what most applications expect, and - they're not prepared to deal with EINTR +print_cmd.c + - fix print_deferred_heredocs to not print a space if the separator + string is null + - change print_deferred_heredocs to set `was_heredoc' after printing + something + - change connection printing code to only print the `;' separator + if we haven't just printed a here-document + - change connection printing code to print any deferred here + documents after the rhs of the connection. Fixes bug reported by + Bo Andresen + +[bash-4.0 frozen] - 4/25 + 2/20 ---- -bashline.c - - take out attempts to suppress readline filename completion when - attempting command completion and there is a directory with the - same name in the current directory. #if 0'd for now; maybe make - it conditional later -error.c - - new variable, gnu_error_format, causes non-interactive errors with - line numbers to be printed in the `gnu style' (filename:lineno:) - instead of the `shell style' (filename: line lineno:) by - error_prolog and parser_error +[bash-4.0 released] -version.h,support/mkversion - - don't put extern function declarations into created version.h any - more + 2/22 + ---- -version.c,externs.h - - add extern declarations for show_shell_version() and - shell_version_string(), since they're no longer in version.h - (this backs out change from 9/10/2001) +parse.y + - fix parse_comsub to not test a character for being a possible shell + metacharacter if LEX_PASSNEXT flag is set. Fixes bug reported by + Mike Frysinger -shell.h - - don't include version.h +pcomplete.c + - add call to save_parser_state (accidentally dropped from patch) to + gen_shell_function_matches. Fixes bug with bash_completion and + file/directory completion reported by phil@Arcturus.universe Makefile.in - - remove unneeded dependencies on version.h -- only version.o - needs it now + - fix assignment to LDFLAGS_FOR_BUILD to match those in subdir + Makefiles. Fixes bug reported by Mike Frysinger -builtins/shopt.def - - new option `gnu_errfmt', changes error messages with line numbers - to use the `standard' gnu format +builtins/mapfile.def + - make sure the callback quantum (-c option argument) is > 0. Fixes + bug reported by Stephane Chazleas -pcomplete.h - - new COPT_BASHDEFAULT and COPT_PLUSDIRS defines + 2/23 + ---- +parse.y + - fix save_token_state and restore_token_state to save and restore + current_token. Fixes bug reported by Bernd Eggink + -bashline.c - - if the COPT_BASHDEFAULT flag is set, try the rest of the bash - default completions if a compspec with that flag set generates - no matches - - broke bash completions out into separate function: - bash_default_completion(const char *text, int start, int end, - int qc, int in_command_position); change attempt_shell_completion - to call it +builtins/exit.def + - check jobs[i] before checking whether or not it's running when + the checkjobs option is set and we're looking for running jobs + at exit. Fixes bug reported by Mike Frysinger -bashline.h - - new extern declaration for bash_default_completion + 2/24 + ---- +siglist.c + - include bashintl.h for definition of _. Fixes bug reported by + Greg Wooledge -builtins/complete.def - - added code to compgen to call bash_default_completion if a compspec - with the COPT_BASHDEFAULT flag set generates no matches from the - programmable completion options + 2/25 + ---- +subst.c + - new function, skip_matched_pair. Similar to skip_to_delim and + the extract_XXX family + - move skipsubscript here from arrayfunc.c; re-implement in terms of + skip_matched_pair. Fixes bugs reported by -doc/{bash.1,bashref.texi} - - document new `gnu_errfmt' shopt option +arrayfunc.c + - remove skipsubscript; moved to subst.c -doc/bash.1,lib/readline/doc/rluser.texi - - document new `-o bashdefault' option to complete and compgen +parse.y + - change reset_parser to set current_token to '\n'. Rest of fix for + bug reported by Bernd Eggink ; earlier fix on + 2/23 - 4/26 + 2/26 ---- -pcomplete.c - - if a compspec has the COPT_PLUSDIRS flag set, generate any - directory name completions and add them to the set of possible - completions as the last thing in gen_compspec_completions - -builtins/complete.def - - add new `-o plusdirs' option to complete and compgen; means to - do directory name completion in addition to other actions - specified by the compspec, and do it last +builtins/declare.def + - when given something like array[x]=y (which sets making_array_special + to 1), don't convert an associative array to an indexed array (line + 493). Part of fix for bug reported by Pierre Gaston + + - if offset == 0, indicating that we do not have a valid assignment, + make sure any `name' containing a `[' is a valid array reference + before trying to go on. Not doing this leads to creating crazy + variables like `name[foo[bar]=bax'. Rest of fix for bug reported + by Pierre Gaston + +assoc.c + - change assoc_to_assign to single-quote the array keys if `quoted' is + non-zero. Makes things easier to read with weird characters in the + key - 5/12 - ---- -copy_cmd.c - - fix copy_{for,select,case}_command to copy the line member +parse.y + - fix parse_comsub to not set LEX_HEREDELIM when it sees "<<<". Fixes + bug reported by Mike Frysinger - 5/13 + 2/27 ---- -lib/readline/rlmbutil.h,include/shmbutil.h - - new #define MB_INVALIDCH, evaluates to true if return value from - mbrtowc or mbrlen denotes an invalid multibyte character - - new #define MB_NULLWCH, evaluates to true if return value from - mbrtowc or mbrlen denotes a null multibyte character +parse.y + - fix report_syntax_error to set last_command_exit_value to + EX_BADUSAGE (2) instead of EX_USAGE (258), since there's nothing + that will translate that to something < 128 before reading the + next command. Partial fix for bug reported by Mike Frysinger + -lib/readline/complete.c - - new function, fnwidth(), returns printed length of a filename, - correctly handling multibyte characters - - new function, fnprint(), displays a filename on rl_outstream - correctly handling multibyte characters - - use fnwidth() instead of simple strlen() for length calculations - in display_matches +sig.c + - fix sigint_sighandler to set last_command_exit_value to sig+128 + before calling throw_to_top_level. Rest of fix for bug reported + by Mike Frysinger -lib/readline/{display,mbutil}.c - - use MB_INVALIDCH and MB_NULLWCH as appropriate +jobs.c + - if fork() fails, set last_command_exit_value to 126 before calling + throw_to_top_level - 5/21 - ---- -configure.in - - turn off the builtin malloc on GNU/FreeBSD systems (GNU userland, - FreeBSD kernel) +execute_cmd.c + - defer calling unlink_fifo_list in parent branch of + execute_disk_command if we're executing in a shell function + - change execute_function to call unlink_fifo_list before returning + if it's the top-level function - 5/24 - ---- -pcomplete.c - - in programmable_completions, copy the compspec before using it to - generate the possible completions, allowing the completion for the - command to be changed by the compspec itself without causing a - core dump because the shell frees freed memory (reported by - marcus.harnish@gmx.net) + 3/2 + --- +builtins/read.def + - if read times out, make sure we remove the top element from the + unwind-protect stack (the free of input_string) and run the rest, + to reset the tty and readline and alarm states. Then we jump to + assigning the variables to any partial input. Fixes bug reported + by Christopher F. A. Johnson + 3/3 + --- parse.y - - in shell_getc, don't call notify_and_cleanup in an interactive shell - unless the shell is currently reading from the terminal and would - print a prompt. This fixes programmable completions printing job - notifications (reported by r.d.green@lancaster.ac.uk) - - use SHOULD_PROMPT macro consistently + - break comment checking code into a common COMMENT_BEGIN define so + we can use it in multiple places in parse_comsub + - in parse_comsub, don't alter the LEX_RESWDOK flag if we read a + `#' and we're checking comments, even though `#' isn't a `shell break' + character. Fixes bug reported by Mike Frysinger -shell.c - - use get_string_value instead of getenv when looking up $TERM and - $EMACS to see whether the shell is running under emacs - - check for `TERM=dumb' as well as `EMACS=t' to decide whether or - not to turn off command-line editing in emacs shell windows - (reported by jik@kamens.brookline.ma.us) +braces.c + - in expand_seqterm, decrease the total length of the rhs by the length + of any (optional) increment, so we don't end up with unwanted zero + padding because the rhs length is wrong. Fixes bug reported by + Carl Albing - 5/28 - ---- -expr.c - - save and restore the `evalbuf' context, since evalexp can be - called recursively (e.g. a[b[c]]) + 3/4 + --- +doc/{bash.1,bashref.texi} + - changes to clean up some of the language describing the effects of + terminal process groups on the ability to read from and write to + the terminal - 5/29 - ---- -builtins/common.c - - in display_signal_list, when displaying for `kill -l' in posix mode, - display signal names without the `SIG' prefix + 3/5 + --- +support/shobj-conf + - add host_vendor to string tested in switch to handle things like + gentoo/freebsd + - beginning with version 7, FreeBSD no longer has /usr/bin/objformat + or a.out binaries and libraries. It's always ELF. Fix from + Timothy Redaelli -doc/bashref.texi - - documented changed to posix mode behavior of kill -l +parse.y + - in parse_comsub, allow comments if we are ready to read a + reserved word (tflags & LEX_RESWDOK), haven't read anything from + one yet (lex_rwlen == 0) and the current character is a '#' -builtins/kill.def - - changed the error message printed when argument is not a pid or - job id + 3/6 + --- +parse.y + - new lex flag for parse_comsub: LEX_INWORD. Turn it off when + we see a shell break character; turn it on or keep it on when + not a break character. Keep track of word length (reset to 0 + when we turn on LEX_INWORD when it was off). + - don't use COMMENT_BEGIN in parse_comsub any more; test + whether or not LEX_INWORD is set and lex_wlen == 0 in addition + to tests for LEX_RESWDOK and lex_rwlen. Comments are valid + when at the start of a word + - move LEX_PASSNEXT code to the top of parse_comsub, so the rest + of the function doesn't have to check for the flag at different + places -doc/{bash.1,bashref.texi} - - fixed a slight inconsistency in the different sections describing - the `promptvars' option + 3/7 + --- +parse.y + - in parse_comsub, when looking for a reserved word (LEX_RESWDOK + non-zero), and in a case statement, we can see either an esac + or a pattern list. We handle an esac separately. We should + turn off LEX_RESWDOK if we see anything but a newline, since + we'll be reading a pattern list. Other part of fix for bug + reported by Mike Frysinger (rest of fix + on 3/3) -doc/Makefile.in - - new rule to create `bash.info' from `bashref.info' by running sed - to change the internal references. This makes the installed - bash.info work right - - make the install target install bash.info after it's been modified - from bashref.info + 3/10 + ---- +{.,lib/readline}/doc/fdl.texi + - updated to FDL version 1.3 - 5/30 + 3/11 ---- -builtins/cd.def - - after testing with ferror(), call clearerr if ferror() evaluates - to true +parse.y + - when using the |& construct with a simple command preceding it, add + the implicit redirection to the simple command's redirection list, + since the redirections associated with the command struct are never + executed. Fixes bug reported by Matt Zyzik + 3/14 + ---- execute_cmd.c - - call clearerr(stdout) after executing a builtin or function, - before restoring any redirections + - in execute_case_command, if ;& is used with no following pattern + list, make sure we don't reference a NULL pointer. Bug report and + fix from Clark Jian Wang -bashhist.c - - initialize history_comment_char in bash_history_initialize +parse.y + - make parser_state global, so other files can use it + - command_word_acceptable now returns non-zero if PST_REDIRLIST bit + set in parser_state, so we accept assignment statements and + perform alias expansion. Fix for bug reported by Vincent + Lefevre (2/24/2009) -builtins/alias.def - - if posix mode is enabled, and the `-p' option is not supplied, don't - list aliases with a preceding `alias ', as POSIX.2 specifies +parser.h + - add PST_REDIRLIST flag, notes that parser is currently parsing a + redirection list preceding a simple command -doc/bashref.texi - - note new posix mode behavior of displaying alias names and values - - note new posix mode behavior of trap builtin not checking first - argument to be a possible signal specification - - note new posix mode behavior of `kill' not accepting signal names - with a leading `SIG' +make_cmd.c + - make_simple_command now turns on PST_REDIRLIST in parser_state when + creating a new simple command + - make_simple_command turns off PST_REDIRLIST in parser_state if it + adds a non-redirection to the command it's building + - clean_simple_command turns off PST_REDIRLIST to make sure it's off -include/stdc.h,lib/readline/rlstdc.h - - don't check the __STRICT_ANSI__ define when deciding whether or not - to #undef __attribute__ +subst.c + - new flag for param_expand: PF_IGNUNBOUND, means to not exit if the + variable is unbound even if `set -u' is enabled + - change param_expand to not call err_unboundvar if the `pflags' + argument has the PF_IGNUNBOUND bit set + - parameter_brace_expand_word now takes an extra `pflags' argument to + pass down to param_expand; changed callers + - changed call to parameter_brace_expand_word in parameter_brace_expand + to add PF_IGNUNBOUND flag so ${@:-foo} doesn't cause the shell to + exit (but ${@} does) when there are no positional parameters. Fixes + Debian bug 519165 from Dan Jacobson -trap.[ch] - - decode_signal and signal_object_p take an additional flags arg to - satisfy POSIX.2 signal name translation requirements - - change decode_signal to honor the new DSIG_NOCASE (match case- - insensitively) and DSIG_SIGPREFIX (allow signal specifications - with the `SIG' prefix) flags - -builtins/{common.c,{trap,kill}.def} - - change calls to decode_signal to add the new argument with - appropriate values. For kill, POSIX.2 says case-insensitive without - the `SIG' prefix. For trap, POSIX.2 says applications may decode - case-insensitively and with the SIG prefix - -builtins/trap.def - - when in posix mode, don't check for the first argument being a - possible signal spec and revert the signal handling to the - original disposition +parse.y + - add code to parse_comsub to allow here-documents within command + substitutions to be delimited by the closing right paren, with the + usual warning about here documents delimited by EOF on execution. + Fixes regression from bash-3.2 noted in Red Hat bugzilla 485664 by + Ralf Corsepius - 6/1 - --- -shell.h - - new MATCH_STARSUB define, to tell the callers of the various pattern - substitution and removal functions that call string_list to treat - "$*" and "${array[*]}" appropriately + 3/15 + ---- subst.c - - if get_var_and_type encounters an array variable subscripted by `*' - or `$*', return VT_STARSUB or'd into the variable type value - - callers of get_var_and_type check for VT_STARSUB in the returned type - this will fix problems with ${*...} not being separated with the - first character of $IFS when double-quoted - - in parameter_brace_patsub, set MATCH_STARSUB if VT_STARSUB is set by - get_var_and_type - - change pos_params_pat_subst to call string_list_dollar_star if - the match flags include MATCH_STARSUB - - change parameter_brace_substring to call array_subrange with an - additional argument indicating the character indexing the array - -array.c - - change array_patsub to join the modified array elements with the - first character of $IFS if MATCH_STARSUB is set in the match flags - passed in - - array_subrange now takes an additional argument indicating the - index type -- used to separate with first char of $IFS if the - index char is `*' and the expression is double-quoted + - string_list_dollar_at now checks for Q_PATQUOTE, which getpattern() + uses to denote Q_DOUBLE_QUOTES (?). Fixes a=abcd echo "${a#$*}" + when IFS= and args are `a b' as noted by Stephane Chazleas + + - param_expand now checks for Q_PATQUOTE and treats it identically + to Q_DOUBLE_QUOTES when expanding $* + - expand_word_unsplit now sets W_NOSPLIT in the flags of the word it + passes to expand_word_internal if $IFS is NULL + - expand_word_leave_quoted now sets expand_no_split_dollar_star and + the W_NOSPLIT bit in the word flags before calling + expand_word_internal if $IFS is NULL, just like expand_word_unsplit. + It is now virtually identical to expand_word_unsplit. Rest of fix for + problems reported by Stephane Chazleas -array.h - - change prototype declaration of array_subrange to add additional arg + 3/20 + ---- +trap.c + - in _run_trap_internal, don't pass SEVAL_RESETLINE as flag to + parse_and_execute if running the ERR trap (further modification + of change from 1/12) - 6/2 - --- -doc/FAQ - - merged in some updates about POSIX from Andrew Josey +execute_cmd.c + - in execute_simple_command, set line_number to line_number_for_err_trap + before calling run_error_trap. Part of fix for bug reported by + Brian J. Murrell + - change other places calling run_error_trap() to set and use + line_number_for_err_trap - 6/3 - --- -bashjmp.h - - new value for jump_to_top_level: ERREXIT + 3/21 + ---- +builtins/fc.def + - Even though command substitution through parse_and_execute turns + off remember_on_history, command substitution in a shell when + set -o history has been enabled (interactive or not) should use it + in the last_hist calculation as if it were on. Same calculation + in fc_gethnum and fc_builtin. Fixes bug reported by + Ian Kelling -{eval,shell,subst,trap}.c,builtins/evalstring.c - - ERREXIT is (for now) equivalent to EXITPROG as a value from - jump_to_top_level +sig.c + - change termsig_sighandler to terminate immediately if it gets called + twice with the same signal before termsig_handler gets called. This + fixes the `looping on SIGSEGV' phenomenon reported by Linux users. - 6/9 - --- -doc/bash.1,lib/readline/doc/readline.3 - - documented new `show-all-if-unmodified' readline variable +parse.y + - in read_secondary_line, don't try to add NULL lines to the history + list. Report and patch from Lubomir Rintel - 6/14 + 3/22 ---- -lib/readline/history.c - - new function, histdata_t free_history_entry (HIST_ENTRY *h), - frees H and its line, returning the application-specific data - - use free_history_entry where appropriate - -lib/readline/history.h - - extern declaration for free_history_entry() - -lib/readline/doc/{history.3,hstech.texi} - - document free_history_entry +sig.c + - Augment change from 3/21 with explicit check for signals we *don't* + want this to happen for. Patch from Lubomir Rintel - 6/16 + 3/28 ---- -lib/readline/readline.[ch] - - changed varions defines for readline/history library versions to 5.0 +array.c + - in array_reference, return NULL immediately if the desired index + is larger than the maximum + - add cache of last array referenced and last array element referenced; + use in array_reference to optimize case of sequential access; + invalidated where necessary in other functions + - array_rshift needs to set max_index to 0 if the array was empty + before shifting in the new element 0 + - array_shift needs to use element_index(a->head->prev) to set the + max_index, not a simple decrement, to deal with sparse arrays + + 4/1 + --- +bashline.c + - in bash_dequote_filename, return right away after copying the + backslash if the last character in the string to be expanded + is a backslash. The old code copied an extra NUL and overwrote + the bounds checking. Fixes bug reported by Shawn Starr + https://bugzilla.redhat.com/show_bug.cgi?id=488649 + 4/3 + --- subst.c - - pass information about whether or not an indirectly-expanded variable - contains ${array[@]}, ${array[*]}, $@, or $* - - new function, chk_atstar, performs checks for ${array[@]}, - ${array[*]}, $@, or $* for the parameter_brace_expand* functions and - sets flags (passed as args) to the results - - call chk_atstar from parameter_brace_expand_indir and - parameter_brace_expand + - in pat_subst.c, make sure to copy one character from the input + string in the case of a null pattern match, since we substitute + on the null match and then increment past the current character. + Not doing this means that each character of the original string + is replaced because of the null matches. Fixes debian bug + reported bhy Louis-David Mitterrand + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=522160 - 6/28 - ---- +lib/sh/winsize.c + - incorporate contents of readline/rlwinsize.h to get all the various + system dependencies right when trying to find TIOCGWINSZ. Fixes + bug reported by Dan Price + + 4/6 + --- doc/{bash.1,bashref.texi} - - clarified that (...) commands are executed in a subshell environment + - fix description of conditional `>' and `<' to remove statement that + the comparison pays attention to the current locale -- it has + always used strcmp - 6/30 - ---- -lib/readline/bind.c - - fix a problem with parsing nested if statements in inputrc files - (fix from dimakar@yahoo.com) +lib/glob/glob.c + - fixed a bug in glob_filename that caused glob_dir_to_array to be + called to prepend a (globbed) directory name onto the results from + glob_vector, which, if we were globbing `**', glob_vector has + already done. Effect is to have the directory name(s) on there + twice. Fixes "dir*/**" bug reported by Matt Zyzik + - 7/3 + 4/8 --- -{jobs,nojobs}.c - - fix places that use the return value from strsignal() to check - for NULL return values using a new function, j_strsignal() +doc/{bash.1,bashref.texi} + - fix short syntax summary of for command to reflect full bash + syntax (which is a superset of Posix syntax). Fixes bug reported + by Reuben Thomas -builtins/kill.def - - removed JOB_CONTROL restriction; kill is now available as a builtin - when the shell is built without job control + 4/10 + ---- +{expr,subst}.c + - make sure last_command_exit_value is set to EXECUTION_FAILURE + before calling err_unboundvar, in case set -e is enabled and + the shell exits from there. Fixes bug reported by Freddy + Vulto and Piotr Zielinski + - 7/10 + 4/11 ---- jobs.c - - some systems have WIFCONTINUED but not WCONTINUED; separate the - #defines + - in restore_pipeline, don't call discard_pipeline with a NULL + argument - 7/14 +trap.c + - in run_debug_trap, make sure to save and restore the pipeline, + pipeline_pgrp, and state of the pipeline around running the debug + trap, then remove any job created by running the debug trap from + the jobs table when it completes. Fixes for two bugs reported + by lex@upc.ua + + 4/12 ---- -lib/readline/history.h - - new `timestamp' member of a HIST_ENTRY - - extern declarations for add_history_time and history_get_time +lib/readline/signals.c + - new functions to block and release SIGWINCH like the SIGINT blocking + and releasing functions -lib/readline/doc/{history.3,hstech.texi} - - document add_history_time and history_get_time +lib/readline/rlprivate.h + - new extern declarations for _rl_block_sigwinch and _rl_release_sigwinch -lib/readline/history.c - - implementations of history_get_time and add_history_time - - change add_history to initialize the timestamp information - - change free_history_entry to free the timestamp - - change replace_history_entry to duplicate the timestamp - - change history_total_bytes to add the memory taken by the time - stamps +lib/readline/display.c + - block SIGWINCH during redisplay like SIGINT. Should fix bug reported + by Nicolai Lissner -bashhist.c,builtins/history.def - - use free_history_entry where appropriate + 4/13 + ---- +lib/readline/readline.h + - new readline state variable: RL_STATE_REDISPLAYING -lib/readline/histfile.c - - changes to read_history_range to deal with new history file format - including timestamps - - changes to history_do_write to write out the timestamp information - - changes to history_truncate_file to understand the timestamp - information +lib/readline/display.c + - in rl_redisplay, don't block SIGWINCH during redisplay; just set + the REDISPLAYING state - 7/22 - ---- -doc/{bash.1,bashref.texi} - - fixed function declaration documentation to specify that any compound - command may be used as the function body, not just a group command +lib/readline/terminal.c + - in rl_resize_terminal, don't call rl_redisplay_after_sigwinch() if + we're already in the middle of redisplay (RL_STATE_REDISPLAYING). + Fix for bug reported by Nicolai Lissner - 7/23 + 4/15 ---- -lib/readline/histfile.c - - don't allocate space for null timestamps in history_do_write, and - don't write out null timestamp entries - parse.y - - fix CHECK_FOR_RESERVED_WORD to call time_command_acceptable() and - return TIME if the token is "time" and `time' is legal in that - context + - fix parse_comsub to add check for \n when seeing whether the current + character can change to a state where a reserved word is legal, + since it is not a shell meta character. Fixes bug reported by + Bernd Eggink . - 7/29 + 4/17 ---- -lib/sh/fmtulong.c - - include for possible definitions of intmax_t, uintmax_t - (reported by ro@techfak.uni-bielefeld.de) +jobs.c + - new functions to save and restore the pgrp_pipe (since there's only + one): save_pgrp_pipe and restore_pgrp_pipe - 7/30 - ---- -parse.y - - remove checking for `time' reserved word from special_case_tokens(); - use regular mechanism in CHECK_FOR_RESERVED_WORD. This allows `time' - to be aliased. (Reported by Glenn Morris - ) +trap.c + - run_debug_trap now saves and restores the pgrp_pipe before and + after calling the debug trap + - run_debug_trap now makes sure the terminal is owned by the pipeline + pgrp after the debug trap runs. Rest of fix for bug reported by + Oleksly Melnyk (lex@upc.ca) - 7/31 + 4/19 ---- -lib/readline/history.h - - extern declaration for history_write_timestamps +include/posixselect.h + - new include file, encapsulates select(2) includes and defines for + bash and readline. Inspired by patch from Mike Frysinger + -lib/readline/histfile.c - - don't write timestamps to the history file in history_do_write - unless history_write_timestamps is set to non-zero by the application - (set to 0 by default) +lib/sh/input_avail.c + - include "posixselect.h" -lib/readline/doc/{hstech.texi,history.3} - - document history_write_timestamps +lib/readline/{input,parens}.c + - include "posixselect.h" instead of using inline includes + - use new USEC_TO_TIMEVAL define to make sure that values for timeouts + greater than one second are handled properly -variables.[ch] - - new special variable function, HISTTIMEFORMAT; special function - sets history_write_timestamps to 1 if HISTTIMEFORMAT is set +lib/sh/fpurge.c + - updated implementation, taken from gnulib - 8/4 - --- -builtins/history.def - - added support for printing time stamps based on the value of the - HISTTIMEFORMAT variable when displaying history entries + 4/21 + ---- +lib/glob/glob.c + - in finddirs, don't try to free a return value of glob_error_return + from glob_vector. Bug and fix from werner@suse.de -doc/{bash.1,bashref.texi} - - added description of new HISTTIMEFORMAT variable +lib/readline/signals.c + - in rl_echo_signal_char, check that SIGQUIT and SIGTSTP are defined + before trying to use them. Bug report and fix from Volker Grabsch + - 8/5 - --- -config-top.h - - remove /usr/ucb from any default paths + 4/24 + ---- +aclocal.m4 + - add conditional inclusion of to BASH_CHECK_TYPE -mailcheck.c - - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY - is not defined - - remember_mail_dates now returns if make_default_mailpath returns - NULL +bashtypes.h,lib/sh/strto[iu]max.c + - include if present for any existing declaration of + intmax_t and uintmax_t. Fixes Interix problem reported by + Markus Duft -config-bot.h - - reorganized the sections; provide an explicit placeholder for - builders to #undef any feature defines they don't want that - configure creates for them, like the default mail path +lib/sh/strindex.c,externs.h,builtins/common.h + - renamed strindex to strcasestr to agree with other implementations + (e.g., BSD, MacOS X, gnulib); changed callers - 8/9 - --- -config.h.in - - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2 - regular expression functions - - add COND_REGEXP define to enable and disable the =~ operator for - matching extended regular expressions in [[...]] commands +lib/sh/{strindex.c,Makefile.in},Makefile.in + - renamed strindex.c to strcasestr.c configure.in - - new option, --enable-cond-regexp, enables =~ and code to perform - regular expression matching in [[...]] + - add strcasestr to call to AC_REPLACE_FUNCS, take advantage of + existing libc implementations -config-bot.h - - undef COND_REGEXP if the OS doesn't provide posix regexp support +config.h.in + - add define for HAVE_STRCASESTR -doc/bashref.texi - - documnent new --enable-cond-regexp option to configure +lib/sh/mbscmp.c + - fix mbscmp to return correct values when the strings do not contain + valid multibyte characters. Ideas from gnulib - 8/18 - ---- -support/shobj-conf - - support for shared objects on FreeBSD-gnu (from Robert Millan) +xstrchr.c + - only compare current character against C if mblength == 1 - 8/25 - ---- -lib/sh/shmatch.c - - new file, shell interface to posix extended regular expression - matching +{shell,variables}.c + - changed some xstrchr calls back to strchr when the arguments cannot + contain multibyte characters + +lib/sh/{xstrchr.c,Makefile.in},Makefile.in + - renamed xstrchr to mbschr; renamed file to mbschr.c + +aclocal.m4 + - change BASH_CHECK_MULTIBYTE to use AC_REPLACE_FUNCS(mbschr) externs.h - - new extern declarations for functions in shmatch.c + - extern declarations for mbscmp and mbschr, conditional on the usual + HAVE_MBSCMP and HAVE_MBSCHR defines -execute_cmd.c - - incorporate code into execute_cond_node that does extended regular - expression matching for the =~ operator +general.h,{alias,arrayfunc,bashline,general,execute_cmd,subst}.c + - changed calls to xstrchr to mbschr -parse.y - - add `=~' to the list of binary operators accepted by the conditional - command parser +doc/bash.1 + - use `pathname expansion' consistently, not `filename expansion' or + `filename generation' -doc/{bash.1,bashref.texi} - - documented =~ conditional binary operator and the BASH_REMATCH - variable +doc/bashref.texi + - use the phrase `filename expansion' consistently (since this is + what the Gnu people prefer) instead of `pathname expansion' or + `filename generation' - 8/27 - ---- -lib/readline/display.c - - take multibyte characters into account when looking for quoted - substrings on which to do completion (fix from jir@yamato.ibm.com) +aclocal.m4,config.h.in + - check for mbscasecmp in BASH_CHECK_MULTIBYTE, define HAVE_MBSCASECMP + if found -lib/readline/util.c - - fix typo in _rl_strpbrk +lib/sh/{mbscasecmp.c,Makefile.in} + - new file, case-insensitive multibyte string comparison -lib/readline/rldefs.h - - use function version of _rl_strpbrk in multibyte locales, because - it understands to skip over special characters in multibyte - character sequences +externs.h + - extern declaration for mbscasecmp - 8/28 + 4/25 ---- -jobs.c - - in wait_for, check for window size changes if a job that exits due - to a signal or is stopped was in the foreground, not just if it's - the current job +lib/readline/display.c + - in _rl_move_cursor_relative, don't adjust dpos by woff if it's + already less than woff (don't want it less than 0) + - in _rl_move_cursor_relative, short-circuit right away if the cursor + is at columns 0 and `new' is 0 (doesn't matter if it's a multibyte + locale or not, or whether there are invisible chars in the prompt) + - in _rl_move_cursor_relative, go ahead and adjust dpos if + prompt_physical_chars >= _rl_screenwidth (previous check was just > ) + Fixes bug reported by Andreas Schwab - 9/10 + 4/28 ---- -support/config.{guess,sub} - - add support to recognize FreeBSD running on the amd64 +lib/glob/glob.c + - in glob_vector, don't add an empty pathname ("") if we're adding the + currect directory to the dirlist and GX_NULLDIR is set -- we can just + ignore it, since the passed directory name (".") was created by + the caller. Fixes bug reported by Matt Zyzik + 5/5 + --- subst.c - - if the new `fail_glob_expansion' variable is non-zero, globbing that - fails to match anything causes an expansion error + - make expansion of $@ and $* when set -u is in effect and there are + no positional parameters be a non-fatal error. This is the + consensus of the austin group, though it is not historical practice. + Message from Geoff Clare <20090505091501.GA10097@squonk.masqnet> of + 5 May 2009 and http://austingroupbugs.net/view.php?id=155 -builtins/shopt.def - - new `failglob' expansion: if enabled, failed globs cause an error - -test/shopt.right - - take `failglob' into account - -doc/{bash.1,bashref.texi} - - documented new `failglob' option and its effects - 9/12 + 5/20 ---- -findcmd.c - - fix file_status to treat the mode bits and uid right -- in particular, - don't assume the `other' bits always apply. Bug reported by - ; fix inspired by - -command.h - - new word flag: W_NOCOMSUB, meaning to not perform command - substitution on a word - -subst.c - - new flag for param_expand: PF_NOCOMSUB. If non-zero, $(...) - command substitutions are not expanded, but returned unchanged - - change expand_word_internal to pass through `` command substitutions - unchanged if (word->flags & W_NOCOMSUB) != 0 - - change expand_word_internal to pass PF_NOCOMSUB to param_expand - if (word->flags & W_NOCOMSUB) != 0 - -builtins/shopt.def - - rename set_interactive_comments to set_shellopts_after_change, which - more accurately reflects its purpose +lib/glob/glob.c + - tentative fix to glob_filename to compensate for glob_vector putting + null pathname at front of result vector when dflags&GX_NULLDIR. + Current fix manually removes empty string element from front of + result vector; a better fix would be to use a flag so glob_vector + doesn't add it at all. Augments patch from 4/28, which appears to + have broken some things. Fixes bug reported by Matt Zyzik + -syntax.h - - add a define for isblank() in case the system doesn't provide one + 5/22 + ---- -jobs.c - - change raw_job_exit_status to understand `pipefail', using the new - `pipefail_opt' variable +lib/glob/glob.c + - better fix for glob_filename; supersedes patch of 5/20. Now the + code does not set GX_ADDCURDIR if directory_len == 0 and the + function has not been called recursively ((flags & GX_ALLDIRS) == 0). + Better fix for bug reported by Matt Zyzik -flags.[ch] - - declare pipefail_opt - - reset pipefail_opt to 0 in reset_shell_flags +Makefile.in + - fix build race condition that occurs in some makes caused by + libreadline.a and libhistory.a containing some of the same files + (e.g., xmalloc.o) and conflicting when trying to build both at + the same time. Reported by Mike Frysinger -builtins/set.def - - add `set -o pipefail' and document it in help output + 5/25 + ---- +lib/readline/vi_mode.c + - fix _rl_vi_initialize_line so that the loop counter is not + unsigned (it doesn't matter, but it eliminates a compiler warning). + Bug reported by Dave Caroline + 5/26 + ---- doc/{bash.1,bashref.texi} - - document `set -o pipefail' and the effect of the pipefail option - -mksyntax.c,syntax.h - - sh_syntaxtab is no longer `const' - - new generated variable, sh_syntabsiz, set to number of entries in - sh_syntaxtab, written to generated syntax.c + - add text to the description of array variables making it clear + that an array variable is not considered set until a subscript + has been assigned a value -locale.c - - new function, locale_setblanks(), sets each member of the current - locale's class to have the CSHBRK flag in sh_syntaxtab - - 9/17 + 5/29 ---- -arrayfunc.c - - change convert_var_to_array to not set array[0] to a NULL value - (if the scalar variable had no value; e.g., after being created - with `local arrayvar') +lib/readline/text.c + - fix rl_change_case to handle case where mbrtowc doesn't find a + valid multibyte character -lib/readline/display.c - - save and restore the value of prompt_invis_chars_first_line in - rl_{save,restore}_prompt, and reinitialize it to 0 before printing - something in the message area +lib/readline/vi_mode.c + - fix _rl_vi_change_mbchar_case to handle case where mbrtowc doesn't + find a valid multibyte character -lib/readline/bind.c - - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap); - binds key sequence KS to function FUNC in keymap KMAP, and - rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to - function FUNC in the current keymap +lib/sh/casemod.c + - fix sh_modcase to handle case where mbrtowc doesn't find a valid + multibyte character -lib/readline/readline.h - - extern function declarations for rl_bind_keyseq_if_unbound_in_map and - rl_bind_keyseq_if_unbound +lib/readline/mbutil.c + - fix _rl_find_next_mbchar_internal to not call mbrtowc at the end of + the string, since implementations return different values -- just + break the loop immediately -lib/readline/{readline,terminal}.c - - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound +lib/readline/display.c + - fix rl_redisplay to make same sort of cursor position adjustments + based on multibyte locale and _rl_last_c_pos when performing + horizontal scrolling rather than line wrapping. Probably still + more to do. Fixes bug reported by jim@jim.sh -lib/readline/{bind.c,rlprivate.h} - - remove _rl_bind_if_unbound + 6/5 + --- +doc/{bash.1,bashref.texi} + - added some more explanation of the inheritance of the ERR trap at + the suggestion of Thomas Pospisek - 9/18 - ---- -lib/readline/doc/rltech.texi - - document rl_bind_keyseq_if_unbound and - rl_bind_keyseq_if_unbound_in_map +findcmd.c + - use eaccess(2) if available in file_status to take other file + access mechanisms such as ACLs into account. Patch supplied + by werner@suse.de - 9/19 + 6/12 ---- -lib/readline/bind.c - - new functions rl_bind_key_if_unbound_in_map and - rl_bind_key_if_unbound; analogous to (and implemented in terms of) - keyseq functions - - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key - (which remains for backwards compatibility); changed callers to - use it - - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map - with a third argument of _rl_keymap +xmalloc.c + - also calculate lowest brk() value the first time xmalloc/xrealloc + (and their sh_ counterparts) are called + - error messages consolidated into a single function (allocerr/ + sh_allocerr) to avoid string duplication -lib/readline/readline.h - - extern declarations for rl_bind_key_if_unbound_in_map and - rl_bind_key_if_unbound - - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq + 6/16 + ---- +variables.c + - changes to allow variables.c to be compiled if ALIAS is not defined. + Bug and fix from John Gatewood Ham -lib/readline/doc/rltech.texi - - document rl_bind_keyseq and rl_bind_keyseq_in_map +lib/sh/getcwd.c + - fix so systems defining BROKEN_DIRENT_D_INO have the necessary + defines. Fix from Jay Krell configure.in - - require at least readline-5.0 - -config-bot.h - - define SYS_SIGLIST_DECLARED if it's not defined, but - HAVE_DECL_SYS_SIGLIST is, to deal with differences between - autoconf versions - -bashline.c - - use rl_bind_key_if_unbound_in_map when binding bash keybindings in - initialize_readline(), so inputrc files can override them + - add -D_ALL_SOURCE to interix CFLAGS for struct timezone definition. + Bug and fix from John Gatewood Ham - 9/22 + 6/29 ---- -lib/readline/histsearch.c - - do better bounds checking for history_offset and history_length in - history_search_internal +variables.c + - change initialize_shell_variables to add environment variables with + invalid names to the variables hash table, but marking them as + invisible and imported + - new function, export_environment_candidate. Used when creating the + export environment for commands to include variables with invalid + names inherited from the initial environment. Apparently this + behavior is widespread + - change make_var_export_array to use export_environment_candidate + rather than visible_and_exported to test variables for inclusion + in the export environment -builtins/history.def - - in delete_last_history(), make sure we don't leave the history - offset longer than the history length after calling delete_histent + 7/1 + --- +builtins/read.def + - fix a memory leak where the number of fields is not the same as + the number of variables passed to `read'. Bug report from + werner@suse.de - 9/23 - ---- -jobs.c - - small change to notify_of_job_status so job status messages get - printed even if the shell was started to run `-c command'. The - old behavior was intentional, but I cannot remember why, so we'll - try it the other way for a while (debian bash bug #211693) +builtins/command.def + - move section of code that sets PATH from -p option before the + verbose-handling section, so command -v and command -V honor + the PATH set by command -p. Bug report and fix from + ohki@gssm.otsuka.tsukuba.ac.jp - 9/24 - ---- -jobs.c - - slightly modify change from 9/23 so that jobs started to run - command substitutions don't print job status messages + 7/9 + --- +subst.c + - change brace_expand_word_list to defer brace expansion on compound + array assignments that are arguments to builtins like `declare', + deferring the expansion until the assignment statement is processed. + Fixes inconsistency reported by agriffis@n01se.net - 9/25 + 7/16 ---- -lib/readline/search.c - - when reading a non-incremental search string from the terminal, - use a separate undo list rather than chaining it to the undo list - from the rest of the line, since the whole undo list will get - freed when the search string is complete +bashline.c + - fix bash_execute_unix_command to set rl_point correctly based on + READLINE_POINT. The old method of using save_point will not + work because maybe_make_readline_line will change rl_point. Bug + reported by Henning Bekel -lib/readline/readline.h - - changed the defines guarding the stdarg prototype for rl_message to - match what's actually used in display.c, where it's defined +trap.c + - fix _run_trap_internal and run_pending_traps to save and restore + value of subst_assign_varlist so the dispose_words on it doesn't + leave dangling pointers after the trap handler runs. Fixes bug + reported by Marc Herbert - 9/26 + 7/22 ---- -[bash-3.0-alpha released] +subst.c + - fix off-by-one error in pos_params when computing positional + parameters beginning with index 0. Bug and fix from Isaac Good + - 9/29 + 7/24 ---- -lib/sh/shmatch.c - - fix to build correctly when arrays are not compiled into the shell +lib/readline/display.c + - add code to _rl_move_cursor_relative and _rl_col_width to short- + circuit a few special cases: prompt string and prompt string plus + line contents, both starting from 0. Saves a bunch of calls to + multibyte character functions using already-computed information. + As a side effect, fixes bug reported by Lasse Karkkainen + subst.c - - fix command substitution to run any exit trap defined in the - command substitution before returning; the exit trap is not inherited - from the calling shell - -lib/readline/shell.c - - change sh_set_lines_and_columns to free the memory allocated and - passed to setenv(), since setenv is specified by POSIX to allocate - new memory and copy its arguments + - fixed a problem in split_at_delims that could leave *cwp set to -1 + if the line ends in IFS whitespace and SENTINEL is one of those + whitespace characters. Fixes problem with setting COMP_CWORD for + programmable completion reported by Ville Skytta -jobs.c - - change logic in make_child so that every child process attempts to - set the terminal's process group to the pipeline's process group - when PGRP_PIPE is defined, just like when it's undefined. This is - reported to fix some tricky synchronization problems on Red Hat - Enterprise Linux 3. Fix from Ernie Petrides . +bashline.c + - change bash_execute_unix_command to clear the current line (if the + terminal supplies the "ce" attribute) instead of moving to a new + line. Inspired by report from Henning Bekel - 9/30 - ---- builtins/printf.def - - tescape no longer needs a `trans_squote' argument, since it's the - same as the `sawc' argument. The `sawc' argument now means to do - the %b argument processing if non-null - - fix processing of octal constants for %b arguments (\0 followed by - up to three octal digits) and other escape sequences (\ followed by - up to three octal digits) - - hex constants `\xHHH' are now allowed to contain any positive - number of digits; previously they were restricted to two [removed] - - allow two new escape sequences: \" and \?, for compatibility with - ksh93 and ANSI C - -doc/{bash.1,bashref.texi} - - documented processing that printf performs for arguments to %b - escape sequences + - changes to allow printf -v var to assign to array indices, the way + the read builtin can. Suggested by Christopher F. A. Johnson + -lib/sh/strtrans.c - - add \" and \? to escape sequences recognized by `echo -e' +lib/readline/complete.c + - fix rl_old_menu_complete and rl_menu_complete to appropriately set + and unset RL_STATE_COMPLETING while generating the list of matches. + Fixes debian bug #538013 reported by Jerome Reybert + - 10/1 + 7/25 ---- -version.c - - use snprintf instead of sprintf if configure tells us we have it +execute_cmd.c + - change execute_builtin to temporarily turn off and restore the ERR + trap for the eval/source/command builtins in the same way as we + temporarily disable and restore the setting of the -e option. + Fixes bug reported by Henning Garus - 10/3 + 7/27 ---- -subst.c - - in list_remove_pattern, take into account the fact that one of the - list elements may be NULL, and don't free the result of - remove_pattern() without checking - - in remove_pattern, return savestring(param) if *param == '\0', - since callers expect to free() non-null return values +shell.c + - add fflush(stdout) and fflush(stderr) to exit_shell before closing + any file descriptors at exit time (e.g., coproc pipes) - 10/4 + 7/30 ---- -subst.c - - change verify_substring_values to make it clearer that the first - offset deals with array indices and the second deals with numbers - of elements, when doing array subranges with ${a[@]:e1:e2} +lib/readline/complete.c + - new function rl_backward_menu_complete, just passes negative count + argument to rl_menu_complete + - change rl_menu_complete to act appropriately if rl_last_command is + rl_backward_menu_complete, so we can cycle forward and backward + through the list of completions -array.c - - change array_subrange to make it explicit that the second offset - argument is a count of the desired number of elements, not an - ending index. This deals with sparse arrays correctly. +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - document new "menu-complete-backward" bindable readline function. + Suggested by Jason Spiro - 10/6 - ---- -variables.c - - fix memory leak in assign_in_env +lib/readline/vi_keymap.c + - add binding of C-n to menu-complete and C-p to menu-complete-backward + in vi-insert keymap, as suggested by Jason Spiro + - 10/8 +pcomplete.c + - fixed a bug in programmable_completions: the options it returned from + the compspec it found were set before generating the completions, + which meant that any changes made by "compopt" were overridden and + only in effect for the duration of the executing shell function + rather than the entire completion. Fixes bug reported by Ville + Skytta + + 7/31 ---- -subst.c - - in parameter_brace_expand, check that the last characters are `]}' - before checking for ${!array[@]} +lib/readline/keymaps.c + - fixed memory leak in rl_discard_keymap by freeing storage associated + with hierarchical keymaps + - new convenience function, rl_free_keymap, that calls rl_discard_keymap + and frees the keymap passed as an argument -execute_cmd.c,builtins/source.def - - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a - shell function or sourcing a script only when in debugging mode +lib/readline/util.c + - new bindable keymap function, _rl_null_function, to be used internally - 10/11 - ----- -arrayfunc.c - - make sure array_variable_name returns values for the SUBP and LENP - arguments if they're non-null, since callers expect to use them - even if the array subscript is bad +lib/readline/rlprivate.h + - extern declaration for _rl_null_function -error.c - - call exit_shell instead of sh_exit from parser_error and - report_error so the right things happen (running exit trap, doing - the right interactive cleanup, etc.) +lib/readline/bind.c + - fix rl_generic_bind in the case where we are trying to override a + keymap with a null function (e.g., when trying to unbind it). We + can't use a NULL function pointer in ANYOTHERKEY since that's + indistinguishable from the keymap not having been overridden at all. + We use _rl_null_function instead, which simply does nothing. We + could add an rl_ding to it later. Fixes problem with hitting ESC + repeatedly while in vi command mode reported by James Rowell + -lib/readline/complete.c - - new variable, rl_completion_quote_character, set to any quote char - readline thinks it finds before any application completion - function is called - - new variable, rl_completion_suppress_quote, settable by an - application-specific completion function. If set to non-zero, the - completion code does not append a closing quote in append_to_match +builtins/bind.def + - call rl_bind_keyseq instead of rl_set_key for -r option -lib/readline/readline.h - - extern declarations for rl_completion_quote_character and - rl_completion_suppress_quote +lib/readline/readline.c + - Set vi_movement_keymap[ESC] to _rl_null_function after binding the + arrow keys in bind_arrow_keys() to allow vi-mode users to hit ESC + multiple times in vi command mode while still allowing the arrow + keys to work + 8/2 + --- bashline.c - - set rl_completion_suppress_quote in command_subst_completion_function - because that would be inserted before any closing "`" or ")", which - is somewhat disconcerting + - fix clear_hostname_list by setting hostname_list_initialized to 0 + after freeing all list members. Fixes bug reported by Freddy + Vulto -lib/readline/doc/rltech.texi - - documented rl_completion_suppress_quote and - rl_completion_quote_character +lib/readline/display.c + - in update_line, if we copy data from one line to another because we + are wrapping a multibyte character from, say, the first line to the + second, we need to update OMAX and the line indices to account for + the moved data. Bug report and fix from Martin Hamrle + - 10/13 - ----- -bashhist.c - - use sv_histchars instead of setting history_comment_char directly in - bash_initialize_history so assignments to $histchars made in - ~/.bashrc are honored + 8/3 + --- +pcomplete.h + - defines for EMPTYCMD ("_EmptycmD_") and DEFAULTCMD ("_DefaultCmD_") - 10/21 - ----- -trap.c - - make sure run_exit_trap sets `running_trap' appropriately - - new variable, trap_saved_exit_value, set to last_command_exit_value - before running any trap commands; available to the rest of the - shell; use trap_saved_exit_value to replace some function-local - variables +builtins/complete.def + - change compopt_builtin to make -E work on the "empty" command + completion + - fix print_compitem and print_compopts to replace EMPTYCMD with -E + - added -D (default) option to complete/compgen/compopt. No supporting + code yet -builtins/exit.def - - if the shell is running the exit trap, and no argument is given - to `exit', use trap_saved_exit_value as the exit status instead - of the last command exit value (which could be the previous command - run in the exit trap), as required by POSIX.2 +doc/bash.1,lib/readline/doc/rluser.texi + - document new -D, -E options to compopt + - document new -D option to complete/compgen - 10/25 - ----- -doc/{bash.1,bashref.texi} - - add `alias' to the list of documented `assignment statement' builtins +shell.h + - new define, EX_WEXPCOMSUB, value of 125 + - new define, EX_RETRYFAIL, value of 124 (for programmable completion) - 11/1 - ---- -doc/bash.1 - - remove the `.' from the sample $PATH value +subst.c + - use EX_WEXPCOMSUB instead of literal 125 as exit status when a shell + invoked to run wordexp(3) with the -n option supplied attempts a + command substitution -parse.y - - make sure parse_compound_assignment prompts with $PS2 if it reads - a newline while parsing the compound assignment statement. Bug - reported by Stephane Chazelas - - parse_string_to_word_list now takes a new second argument: `int flags' - - new parser state flag: PST_COMPASSIGN; indicates that the shell is - parsing a compound assignment statement - - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg - has low bit set - - turn PST_COMPASSIGN on and off in parse_compound_assignment +pcomplete.c + - new define, PCOMP_RETRYFAIL, used to indicate a "failure, retry with + next completion" status to the programmable completion code -externs.h - - change prototype declaration for parse_string_to_word_list + 8/4 + --- +pcomplete.c + - changed gen_shell_function_matches to take an extra parameter + indicating whether the specified shell function was not found or + returned the special "fail/retry" status, and, if it was either, + to not bother returning any matches list + - changed gen_compspec_completions to take an extra parameter to pass + through the "found" status from gen_shell_function_completions + - new function gen_progcomp_completions to take care of searching for + and evaluating a compspec for a particular word, saving its status, + and returning to its caller (programmable_completions) whether or + not to retry completion. This function also checks whether a + retry changed the compspec associated with a command and short- + circuits the retry if it has not + - changed programmable_completions to try default completion (if set) + if a specific completion was not found for a command + - changed programmable_completions to implement "fail/retry" semantics + for a shell function that returns 124 and changes the compspec + associated with the command. All based on proposal and changes from + Behdad Esfahbod (Red Hat bugzilla 475229) -arrayfunc.c - - change call to parse_string_to_word_list to add new flags arg +doc/bash.1,lib/readline/doc/rluser.texi + - documented new dynamic programmable completion functionality -general.c - - assignment() takes a new `flags' second argument - - if `flags' is non-zero, accept `[' as a legal assignment statement - starter character (for parsing compound array assignments) + 8/5 + --- +stringlib.c + - first argument to substring() is now `const char *' -general.h - - add new argument to prototype declaration for assignment() +externs.h + - changed extern declaration for substring() + +subst.c + - skipsubscript now takes a third FLAGS argument, passes to + skip_matched_pair + - skip_matched_pair now interprets flags&1 to mean not to parse + matched pairs of quotes, backquotes, or shell word expansion + constructs -parse.y,{subst,variables}.c, builtins/{setattr,declare}.def - - change calls to assignment() (parse.y calls with flags == 1 when - parser_state inlcudes PST_COMPASSIGN) +{subst,general,expr}.c + - changed skipsubscript() callers + +assoc.c + - changed assoc_to_assign to double-quote the key if it contains any + shell metacharacters arrayfunc.c - - in assign_array_var_from_string(), don't treat an expanded word - of the form [ind]=value specially unless the W_ASSIGNMENT flag is - set. This means that words that are the result of expansions but - happen to have the same format as compound assignment statement - words will not be treated as such. For instance + - use skipsubscript in quote_assign rather than quote any glob + characters in the subscript of an array assignment + - in assign_compound_array_list, call skipsubscript with a flags + argument of 1 if assigning an associative array to avoid trying + to re-parse quoted strings - v='[12]=foobar' - a=( $v ) +redir.c + - set expanding_redir before expanding body of here documents and + here strings to avoid looking for variables in temporary env - will result in a[0]='[12]=foobar' instead of a[12]=foobar. This - is closer to how `regular' assignment statements are treated and - compatible with ksh93. Bug reported by Stephane Chazelas + 8/7 + --- +lib/readline/readline.c + - in _rl_dispatch_callback, return value of -3 means that we have + added to a key sequence, but there are previous matches in the + sequence. Don't call _rl_subseq_result if we get a -3 from a + previous context in the chain; just go back up the chain. Report + and fix from -shell.c - - new --protected argument, disables command substitution when used - with --wordexp (like --wordexp, it remains undocumented) - - change run_wordexp to turn on the W_NOCOMSUB flag in each word - to be expanded if protected_mode is set +bashline.c + - fixes to history_completion_generator and bash_dabbrev_expand to + make dabbrev-expand inhibit suppressing of appending space char + to matches. Have to do it with the generator too because + rl_menu_complete turns off suppressing the appended space in + set_completion_defaults(). Suggestion from Dan Nicolaescu + + - suppress completion match sorting in bash_dabbrev_expand by + setting rl_sort_completion_matches = 0. Suggestion from Dan + Nicolaescu + - don't qsort history match list in build_history_completion_array + if dabbrev_expand_active == 1 + - start the loop in build_history_completion_array that gathers words + from history for possible completions from the end of the list + rather than the beginning. It doesn't matter where you start if + the results are sorted, and dabbrev-expand is supposed to offer + the most recent completions first - 11/7 + 8/12 ---- -doc/{bash.1,bashref.texi} - - clarified the language concerning inherited signal dispositions and - when traps are run +execute_cmd.c + - change to execute_command_internal to make [[ ... ]] conditional + command subject to settings of `set -e' and the ERR trap -support/shobj-conf - - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3 - (for the readline shared library builds, which shares this script) + 8/14 + ---- +execute_cmd.c + - change to execute_command_internal to make (( ... )) arithmetic + command subject to settings of `set -e' and the ERR trap -lib/readline/histexpand.c - - change to make `^' behave as equivalent to word one, as csh does, - and as the documentation states +lib/readline/text.c + - new bindable function, rl_skip_csi_sequence, reads the characters + that make up a control sequence as defined by ECMA-48. Sequences + are introduced by the Control Sequence Indicator (CSI) and + contain a defined set of characters. Insert, End, Page Up and so + on are CSI sequences. Report and code from Andy Koppe + -lib/readline/display.c - - in update_line, make sure to use col_lendiff in all calculations - where the cursor position is concerned (like when calculating - the value of _rl_last_c_pos). Fixes bug reported by Andreas - Schwab +lib/readline/readline.h + - extern declaration for rl_skip_csi_sequence - 11/12 - ----- -trap.c - - make _run_trap_internal catch `return' builtin longjmps and clean - up before longjmping on to where the return was intended to go - (fixes bug with not turning off SIG_INPROGRESS flag when `return' - executed in trap command) +lib/readline/funmap.c + - new bindable command "skip-csi-sequence", runs rl_skip_csi_sequence - 11/18 - ----- -builtins/cd.def - - in posix mode, set errno to ENOTDIR if canonicalization fails, - unless the canonicalization functions leave it set to ENOENT +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - documented new bindable command "skip-csi-sequence", unbound by + default - 11/25 - ----- -make_cmd.c - - in make_simple_command, don't blindly dereference element.redirect +builtins/evalfile.c + - fix _evalfile to remove embedded null bytes from the file read + into the string. Report and proposed fix from Roman Rakus + -parse.y - - the list_terminator production now has an `int' value so it can be - used in other grammar productions - - add a rule that makes `time' on a line by itself time a null - command (this is iffy) +{configure,config.h}.in + - check for syslog(3), define HAVE_SYSLOG + - check for syslog.h, define HAVE_SYSLOG_H - 11/28 - ----- -subst.c - - change the pattern substitution code (${var//pat/rep}) to use the - same pattern expansion function (getpattern()) as the pattern - removal expansions. This has the effect of no longer performing - quote removal on the pattern before trying to match it. This - fixes an incompatibility with ksh93 reported on comp.unix.shell +config-top.h + - new define SYSLOG_HISTORY, disabled by default -nojobs.c - - add replacement function for siginterrupt on the off chance that a - system has posix signals but lacks siginterrrupt +config-bot.h + - if HAVE_SYSLOG or HAVE_SYSLOG_H are not defined, undef SYSLOG_HISTORY -lib/readline/display.c - - fix from Tim Waugh at Red Hat to speed up inserting characters into - long lines in a UTF-8 environment by optimizing the calculation of - the first difference between old and new lines by checking to see - whether the old line is a subset of the new +bashhist.c + - if SYSLOG_HISTORY is defined, call bash_syslog_history with the + line added to the history in bash_add_history. + - new function, bash_syslog_history(line), sends line to syslog at + user.info. The line is truncated to send no more than 600 + (SYSLOG_MAXLEN) bytes to syslog. Feature requested by many, and + required by some national laws - 11/29 - ----- -lib/malloc/stats.c - - break code that opens file (and interprets %p) into separate function - _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz) - for use by rest of library - - default stats file is now `stats.PID' +sig.c + - in termsig_handler, resend SIGHUP to children if subshell_environment + indicates we're a shell performing command or process substitution -lib/malloc/trace.c - - new function, malloc_set_tracefn (char *s, char *fn), sets tracing - to the file named by FN (with %p interpolated as the pid), using - some default if FN is NULL +jobs.c + - add CHECK_TERMSIG calls to wait_for in addition to the ones in + waitchld() -lib/malloc/shmalloc.h - - new extern declaration for malloc_set_tracefn +builtins/shopt.def + - new functions set_bashopts, parse_bashopts, and initialize_bashopts + to manage new environment variable $BASHOPTS, like $SHELLOPTS but + for shopt options + - change toggle_shopts to call set_bashopts after setting options, so + $BASHOPTS reflects new values - 12/4 - ---- -execute_cmd.c - - combined several common strings from do_piping() into one - dup_error() function +shell.c + - call initialize_bashopts after calling initialize_shell_options at + shell startup -builtins/common.[ch] - - new function, `sh_notbuiltin(s)' prints error message about s not - being a shell builtin +configure.in + - new configure `enable' option --enable-exended-glob-default, to + set the initial default value of the `extglob' shell option -builtins/{builtin,enable}.def - - call sh_notbuiltin instead of using literal string +config.h + - new define, EXTGLOB_DEFAULT, controlled by the `extended-glob-default' + configure option -{arrayfunc,expr,error}.c - - use one string variable for `bad array subscript' error message; use - in calls to various error reporting functions +pathexp.c + - initialize extended_glob variable to EXTGLOB_DEFAULT -Makefile.in - - add variables for localedir and the PACKAGE_* variables, auto-set - by configure +doc/{bash.1,bashref.texi} + - document new $BASHOPTS variable and its behavior -configure.in - - un-cache values for gettext, textdomain, and bindtextdomain if they're - not in libc but in libintl so the right variables get set +doc/bashref.texi + - document new --enable-extended-glob-default configure option -bashintl.h - - add necessary defines for marking strings to be translated using - gettext + 8/16 + ---- +print_cmd.c + - new variables: xtrace_fd and xtrace_fp, the file descriptor and + FILE * to which we send `set -x' tracing output. If fd == -1 + then fp == STDERR, the default mode + - new function xtrace_init, sets xtrace_fd == -1 and xtrace_fp = stderr + - new function xtrace_set (fd, fp), sets xtrace_fd and xtrace_fp + to the arguments + - new function xtrace_reset, handles closing old xtrace fd/fp and + moving them back to -1/stderr + - new function xtrace_fdchck, calls xtrace_reset if the fd passed as + an argument is xtrace_fd + - change xtrace functions to fprintf to xtrace_fp instead of stderr -locale.c - - set textdomain and directory in set_default_locale - - don't call textdomain with the value of $TEXTDOMAIN, since we don't - want to override the default domain ("bash") - - don't call bindtextdomain unless default_domain already has a value - - when translating $"..." strings, use dgettext with the script's - default domain (value of $TEXTDOMAIN) +shell.c + - call xtrace_init() very early in main() - 12/9 - ---- -builtins/mkbuiltins.c - - include "bashintl.h" in the generated "builtins.c" +variables.c + - new special variable, BASH_XTRACEFD, holds file descriptor used for + set -x trace output. Inspired by suggestion from Bruce Korb + -support/{config.rpath,mkinstalldirs} - - new files to support gettext i18n +doc/{bash.1,bashref.texi} + - added description of new BASH_XTRACEFD variable -ABOUT-NLS - - new readme file for gettext internationalization +redir.c + - add calls to xtrace_fdchk to the redirections that close file + descriptors, so we notice if we close BASH_XTRACEFD and compensate + accordingly (same places that call coproc_fdchk()) -po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin} -po/{POTFILES.in,bash.pot} - - new files for gettext + 8/18 + ---- +lib/readline/text.c + - change to _rl_replace_text to add error checks: start must be <= + end, and we don't call rl_insert_text if passed the empty string -lib/intl - - new directory, with libintl stuff from gettext +config.h.in + - add define for HAVE_ICONV, already found by intl autoconf macros + - add define for HAVE_LOCALE_CHARSET aclocal.m4 - - add m4 files from gettext distribution needed by libintl - -configure.in - - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT - - add call to AM_GNU_GETTEXT to initialize gettext stuff + - add check for locale_charset() to BASH_CHECK_MULTIBYTE + +lib/sh/fnxform.c + - new file with two public function: fnx_tofs and fnx_fromfs. + Primarily intended for use on MacOS X, they use iconv to convert + between whatever the current locale encoding is and "UTF-8-MAC", + a special encoding on OS X in which all characters are + decomposed unicode, as the HFS+ filesystem stores them. These + functions return a pointer to a local buffer, allocated once and + resized as necessary, to avoid too many allocations; callers + should not free the return value, since it may be the string + passed Makefile.in - - use mkinstalldirs instead of mkdirs in the `installdirs' target - - changes for intl/ and po/ subdirectories in build and install - - changes to have libintl linked in, as determined by configure - - changes to have libintl built, just in case it's used (though I'd - rather not) + - make sure LIBICONV is set by autoconf (@LIBICONV@) and added to + list of link libraries - 12/10 - ----- -config.h.in - - additional #defines required by the libintl library - - add ENABLE_NLS define for AM_GNU_GETTEXT - - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN} +externs.h + - new extern declarations for fnx_fromfs and fnx_tofs -configure.in - - removed old tests for libintl and gettext/textdomain/bindtextdomain +lib/glob/glob.c + - convert the filename read using readdir() in glob_vector() using + fnx_fromfs and use that value in the call to strmatch. This + ensures that we're using the precomposed Unicode value of the + filename rather than the native decomposed form. Original bug + report from Len Lattanzi ; fix inspired by + Guillaume Outters -locale.c - - remove HAVE_GETTEXT code; we have gettext unconditionally now + 8/19 + ---- +lib/readline/complete.c + - new completion hook: rl_filename_rewrite_hook, can rewrite or modify + filenames read from the filesystem before they are compared to the + word to be completed -bashintl.h - - change to include "gettext.h" and remove the conditional code based - on whether or not gettext is present +lib/readline/readline.h + - extern declaration for rl_filename_rewrite_hook - 12/16 - ----- -lib/readline/vi_mode.c - - fix problem with rl_vi_eWord that caused it to skip over the last - character of a word if invoked while point was on the next-to-last - character +lib/readline/doc/rltech.texi + - document rl_filename_rewrite_hook - 12/18 - ----- -{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c -{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c -{subst,test,trap,variables,version,xmalloc}.c -parse.y -builtins/{common,evalfile,getopt}.c -builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def -builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def -builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def -lib/sh/{fmtulong,netopen}.c - - include "bashintl.h" for gettext defines +bashline.c + - new function, bash_filename_rewrite_hook, assigned to + rl_filename_rewrite_hook. Calls fnx_fromfs to convert from + filesystem format to "input" format. This makes completing + filenames with accented characters work on Mac OS X -Makefile.in - - add `-DBUILDTOOL' to CFLAGS for buildversion.o + 8/20 + ---- +lib/readline/bind.c + - new bindable variable "skip-completed-text", bound to + _rl_skip_completed_text. If enabled, it means to note when + completing before the end of a word and skipping over characters + after rl_point that match in both the completion to be inserted + and the word being completed. It means that completing + `Makefile' with the cursor after the `e' results in `Makefile' + instead of `Makefilefile'. Inspired by an idea from Jared + Yanovich from back in 2004 -bashintl.h - - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have - to compile and link in the gettext stuff +lib/readline/rlprivate.h + - extern declaration for _rl_skip_completed_text -Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in - - update dependencies on bashintl.h and include/gettext.h +lib/readline/complete.c + - implement semantics of _rl_skip_completed_text in insert_match: + skip characters in `replacement' that match chars in rl_line_buffer + from the start of the word to be completed - 12/19 - ----- -{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c -{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c -{subst,test,trap,variables,version,xmalloc}.c -builtins/{common,evalfile,getopt}.c -builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def -builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def -builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def -lib/sh/{fmtulong,netopen}.c -lib/malloc/{malloc,stats,table,watch}.c - - mark up strings in source files for gettext processing + 8/21 + ---- +error.c + - change parser_error to set last_command_exit_value to 2 before + calling exit_shell (if set -e is enabled), so any exit or ERR + trap gets the right value of $?. Suggestion from Stefano + Lattarini -lib/malloc/imalloc.h - - include "bashintl.h" if SHELL is defined, otherwise make _(x) an - identity define +braces.c + - fix expand_seqterm so that a non-zero-prefixed term that's longer + than a zero-prefixed term determines the length of each term + in the brace-expanded sequence. This means that things like + {01..100} will have three digits in all the elements of the + expanded list. Fixes bug reported by Jeff Haemer + -lib/malloc/Makefile.in - - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h + 8/24 + ---- +{arrayfunc,variables}.c + - when inserting a value into an associative array using syntax like + T=v where T is an already-declared associative array using key "0", + make sure the key is in newly-allocated memory so it can be freed + when the variable is unset. Fixes bug reported as redhat 518644 + by Jon Fairbairn - 12/21 - ----- -bashline.c - - make sure we index into rl_line_buffer with indexes > 0 in - attempt_shell_completion + 8/26 + ---- +lib/readline/funmap.c + - add "old-menu-complete" binding for rl_old_menu_complete - 12/31 - ----- -Makefile.in - - descend into `po' and run make recursively for the various clean - targets +lib/readline/readline.h + - add extern declaration for rl_old_menu_complete - 1/4 - --- -include/shmbutil.h - - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one - multibyte character in STR starting at index I, and - BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte - character in STR starting at P, which is a char * +subst.c + - fix memory leak when processing ${!prefix@}. Need to dispose all + words in the word list created from all matching variable. Fixes + bug reported by muszi@muszi.kite.hu. - 1/6 - --- -pcomplete.c - - in pcomp_filename_completion_function, use the quote character - readline found (and assigned to rl_complete_quote_character) when - dequoting the filename by a completion call from readline (when - rl_dispatching != 0) + 8/29 + ---- +execute_cmd.c + - add fflush(stdout) and fflush(stderr) to child coproc code before + calling exit after execute_in_subshell -bashline.c - - ditto for bash_directory_completion_matches + 8/31 + ---- +lib/readline/{{bind,readline}.c,rlprivate.h} + - new bindable variable, "echo-control-characters", enabled by default. + This controls whether or not readline honors the tty ECHOCTL bit + and displays characters corresponding to keyboard-generated signals. + Controlled by _rl_echo_control_chars variable, declared in readline.c - 1/7 - --- -lib/readline/complete.c - - new variable, rl_completion_found_quote, set to non-zero value if - readline finds what it thinks is quoting in the word to be completed +lib/readline/signals.c + - if _rl_echo_control_chars == 0, don't go through _rl_echo_signal_char -lib/readline/readline.h - - extern declaration for rl_completion_found_quote - 1/8 - --- -lib/readline/doc/rltech.texi - - documented rl_completion_found_quote +lib/readline/doc/{readline.3,rluser.texi} + - document "echo-control-characters" bindable variable -lib/readline/complete.c - - in compute_lcd_of_matches, if it looks like what the user typed was - dequoted before generating filename matches, dequote the user's - text again before figuring out the case-insensitive lcd + 9/1 + --- +lib/readline/histexpand.c + - hist_string_extract_single_quoted now takes an additional argument: + a flags word. The only defined value (flags & 1) allows backslash + to quote the single quote. This is to inhibit history expansion + inside $'...' containing an escaped single quote. + - change history_expand to call hist_string_extract_single_quoted + with flags == 1 if it sees $'. Fixes bug reported by Sean + Donner - 1/9 + 9/2 --- -lib/readline/display.c - - fix from Edward Catmur to logic that handles - invisible characters in prompt string. Original code was wrong - about local_prompt_prefix; it gave incorrect results when prompt - contained invisible characters after a line break +builtins/printf.def + - add a call to sh_wrerror if ferror() succeeds in the PRETURN macro, + to print an error message in the case that the final fflush fails + (for instance, because it attempts to write data that didn't have a + trailing newline). Fixes bug reported by Stefano Lattarini + - 1/10 - ---- -subst.c - - new function, mb_substring(), does character (possibly multibyte) - oriented rather than strictly byte-oriented substring extraction. - The passed indices, rather than strictly indexing into the string, - indicate character positions that need to be calculated. From - Tim Waugh - - change parameter_brace_substring to use mb_substring if necessary - -included/shmbutil.h - - new define SADD_MBQCHAR_BODY, common code for adding a quoted - (preceded by CTLESC) multibyte character to an accumulating string - in the subst.c expansion code + 9/7 + --- +arrayfunc.c + - some fixes to assign_compound_array_list to avoid null pointer + dereferences pointed out by clang/scan-build -subst.c - - use SADD_MBQCHAR_BODY in expand_word_internal - - new static function, mb_getcharlens, allocates and returns an array - of character lengths for (possibly multibyte) characters in the - argument string - - change pattern matching operations to use while loops instead of - for loops to handle multibyte characters better (no more simple - increment or decrement) - - change pattern matching operations to use multibyte character - operations instead of simple increments and decrements. Don't - use BACKUP_CHAR_P -- use the mblen array instead, because that - avoids the N**2 behavior of having to count from the beginning - of the string each time you want to back up one character. Changes - to remove_pattern and match_pattern +lib/glob/glob.c + - fixes to udequote_pathname and wdequote_pathname to avoid possible + null pointer dereferences pointed out by clang/scan-build - 1/12 - ---- -lib/readline/display.c - - make expand_prompt count multbyte characters in the prompt string - by using _rl_find_next_mbchar (and copying possibly more than one - byte) instead of a simple increment and single byte copy +lib/readline/undo.c + - fix to _rl_copy_undo_list (function unused) to avoid deref of + uninitialized pointer pointed out by clang/scan-build - 1/13 - ---- -lib/readline/display.c - - expand_prompt takes a new reference argument -- it returns - the actual count of (possibly multibyte) characters displayed - on the screen - - don't short-circuit in expand_prompt unless we're not going to - be using any multibyte characters - - change calls to expand_prompt to pass an argument for the - number of physical characters the prompt occupies - (prompt_physical_chars) - - initialize `lpos' (the physical cursor position) from - prompt_physical_chars in rl_redisplay +general.c + - fix string_to_rlimtype so it works if passed a null pointer (though + it never is) -lib/readline/mbutil.c - - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and - we assume that the character is a single-byte char, make sure we - update `prev' so it doesn't get lost. Fixes problems encountered - when a non-ascii char is the last char on the line and we're moving - back past it with ^B, and other display problems caused by the same - situation +builtins/mapfile.def + - fix to mapfile() to avoid possible null pointer dereference pointed + out by clang/scan-build - 1/15 - ---- -lib/readline/doc/rltech.texi - - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the - description of rl_expand_prompt() +variables.c + - fix to valid_exportstr to avoid possible null pointer dereferences + pointed out by clang/scan-build - 1/20 - ---- bashline.c - - in initialize_readline, make sure M-C-j and M-C-m are still bound to - vi-editing-mode before unbinding them -- they may have been rebound - in an inputrc + - fix to bash_execute_unix_command to avoid possible null pointer + dereference if READLINE_LINE or READLINE_POINT is not bound -variables.c - - in unbind_variable, unset attributes other than `local' and exported - (if the variable came from a temporary environment) when unsetting a - local variable inside a function - - 1/21 + 9/11 ---- -configure.in - - add libintl build directory to the list of include directories if - it's being built (using INTL_BUILDDIR) +[Prayers for the victimes of 9/11/2001] + +command.h + - add `rflags' member to struct redirect to hold private flags and + state information + - change redirector to a REDIRECTEE instead of int to prepare for + possible future changes -Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in - - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR} - - define INTL_BUILDDIR as ${LIBBUILD}/intl +{copy_cmd,dispose_cmd,make_cmd,print_cmd,redir}.c + - changes resulting from type change of `redirector' member of struct + redirect: change x->redirector to x->redirector.dest and add code + where appropriate to deal with x->redirector.filename -{builtins,lib/sh}/Makefile.in - - make sure INTL_INC is added to the list of include directories - - make sure INTL_LIBSRC is defined with the correct value +make_cmd.h + - change extern declaration for make_redirection -{configure,Makefile,{builtins,lib/sh}/Makefile}.in - - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h +make_cmd.c + - first argument of make_redirection is now a `REDIRECTEE' to prepare + for possible future changes. First arg is now assigned directly to + redirector member instead of assigning int to redirector.dest -Makefile.in,builtins/Makefile.iin - - all files depending on bashintl.h also depend on ${LIBINTL_H} - (which may be empty) +{make_cmd,redir}.c,parse.y + - changes resulting from type change of first argument to + make_redirection from int to REDIRECTEE. In general, changes are + using REDIRECTEE sd and assigning old argument to sd.dest, then + passing sd to make_redirection -Makefile.in - - make a rule telling how to build lib/intl/libintl.h if necessary +make_cmd.[ch],parse.y + - add fourth argument to make_redirection: flags. Sets initial value + of `rflags' member of struct redirect + - changed all callers of make_redirection to add fourth argument of 0 - 1/24 + 9/15 ---- -builtins/read.def - - make sure that the array name supplied as an argument to -a is a - valid identifier - parse.y - - make the \W expansion abbreviate $HOME with a ~ (seems to be more - useful) + - change read_token_word to return REDIR_WORD for tokens of the form + {var} where `var' is a valid shell identifier and the character + following the } is a `<' or `>' + - add REDIR_WORD versions of all input and output file redirections + and here documents -doc/{bash.1,bashref.texi} - - document new behavior of \W +print_cmd.c + - change input and output file redirection direction and here + document cases of print_redirection to print a varname + specification of the form {var} when appropriate. Still need + to fix rest of cases -subst.c - - make sure parameter_brace_expand_rhs uses the first character of - $IFS when making the string to return from the expanded word - (which, in the case of "$@" or $@, contains multiple words that - need to be separated) +redir.c + - implement REDIR_VARASSIGN semantics for file input and output + redirections and here documents - 1/25 + 9/16 ---- -builtins/common.c - - change get_job_spec to make `%' by itself or an empty argument - return NO_JOB +parse.y + - added REDIR_WORD versions of remaining redirection constructs except + for err_and_out ones -jobs.h - - new possible value for a job spec return value: BAD_JOBSPEC - (for syntactically invalid specs, like the empty string) +redir.c + - handle REDIR_VARASSIGN semantics for rest of redirection constructs + - accommodate REDIR_VARASSIGN when translating redirections + - new function, redir_varvalue, does variable lookup for {v} when + redirection needs the value (e.g., r_close_this) -shell.c - - in open_shell_script, check to see whether or not we can find and - open the filename argument before setting dollar_vars[0] or - manipulating BASH_SOURCE, so the error messages come out better - -subst.c - - in string_list_internal, short-circuit right away to savestring() - if the list only has a single element - - 1/28 - ---- -lib/readline/rltypedefs.h - - new set of typedefs for functions returning char * with various - arguments (standard set) - -lib/readline/complete.c - - new function pointer, rl_completion_word_break_hook, called by - _rl_find_completion_word, used to set word break characters at - completion time, allowing them to be position-based - -lib/readline/doc/rltech.texi - - documented rl_completion_word_break_hook - -lib/readline/kill.c - - added new rl_unix_filename_rubout, which deletes one filename - component in a Unix pathname backward (delimiters are whitespace - and `/') - -lib/readline/readline.h - - extern declaration for rl_unix_filename_rubout - -lib/readline/funmap.c - - new bindable readline command `unix-filename-rubout' +print_cmd.c + - fix rest of cases to print {varname} when REDIR_VARASSIGN is set in + redirect->rflags -lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 - - documented `unix-filename-rubout' +doc/{bash.1,bashref.texi} + - document new {varname} REDIR_VARASSIGN form of redirections - 1/29 - ---- -lib/readline/histexpand.c - - change history_tokenize_internal to handle non-whitespace delimiter - characters by creating separate fields (like the shell does when - splitting on $IFS) +tests/vredir.{right,tests},vredir[1-5].sub + - tests for new {varname} REDIR_VARASSIGN form of redirections - 1/30 + 9/18 ---- -lib/glob/xmbsrtowcs.c - - new function, xdupmbstowcs, for convenience: calls xmbsrtowcs - while allocating memory for the new wide character string - - some small efficiency improvments to xmbsrtowcs - -include/shmbutil.h - - extern declaration for xdupmbstowcs - -lib/glob/strmatch.h - - include config.h for definition of HANDLE_MULTIBYTE - - remove the HAVE_LIBC_FNM_EXTMATCH tests - - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int) +subst.c + - new flags argument to split_at_delims: these flags are ORd with + SD_NOJMP and passed to skip_to_delim + - change skip_to_delim to honor new SD_NOQUOTEDELIM flag by not + checking whether or not single and double quotes are delimiters + if it's set in passed flags until after skipping quoted strings. -configure.in - - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used +subst.h + - change extern declaration for split_at_delims + - new define for SD_NOQUOTEDELIM flag -lib/glob/smatch.c - - simplify xstrmatch() by using xdupmbstowcs() instead of inline code +pcomplete.c + - pass SD_NOQUOTEDELIM in flags argument to split_at_delims so single + and double quotes, even though they're in + rl_completer_word_break_characters, don't act as word delimiters + for programmable completion. Fixes bug reported by Freddy + Vulto lib/glob/glob.c - - modify mbskipname() to avoid the use of alloca - - simplify mbskipname() by using xdupmbstowcs() instead of inline code - - simplify glob_pattern_p() by using xdupmbstowcs() instead of - inline code - - fix memory leak in wdequote_pathname - - simplify wdequote_pathname() by using xdupmbstowcs() instead of - inline code - -lib/glob/strmatch.c - - new function, wcsmatch(), `exported' wide-character equivalent of - strmatch() + - in glob_filename, after recursively scanning a directory specified + with `**', turn off GX_ALLDIRS|GX_ADDCURDIR before calling + glob_vector on the rest of the pathname, since it may not apply to + the rest of the pattern. Turned back on if the filename makes it + appropriate. Fixes bug reported by Anders Kaseorg -subst.c - - old match_pattern is now match_upattern - - match_pattern now either calls match_upattern or converts - mbstrings to wide chars and calls match_wpattern - - match_upattern reverted to old non-multibyte code - - new function: match_pattern_wchar, wide character version of - match_pattern_char +redir.c + - change execute_null_command to fork a child to execute if any of + the commands redirections have the REDIR_VARASSIGN flag set, since + those commands are not supposed to have side effects - 2/1 - --- -subst.c - - old remove_pattern is now remove_upattern - - remove_upattern reverted to old non-multibyte code (pre-Waugh patch) - - new multibyte version of remove_pattern: remove_wpattern - - remove_pattern now calls either remove_upattern or converts a - multibyte string to a wide character string and calls - remove_wpattern - - new function, wcsdup, wide-character version of strdup(3) +test.c + - < and > binary operators will obey the locale by using strcoll if + the TEST_LOCALE flag is passed to binary_test - 2/4 - --- -print_cmd.c - - temporarily translate a >&filename redirection from - r_duplicating_output_word to r_err_and_out (as the expansion code - in redir.c does) so it prints without a leading `1' (file - descriptor) +test.h + - new define for TEST_LOCALE - 2/5 - --- -aclocal.m4 - - add a check for wcsdup to BASH_CHECK_MULTIBYTE +execute_cmd.c + - execute_cond_node sets TEST_LOCALE so [[ str1 < str2 ]] (and >) + obey the locale. Fixes bug/incompatibility reported by Greg + Wooledge -config.h.in - - add HAVE_WCSDUP define +doc/{bash.1,bashref.texi} + - documented [[ command new locale-sensitive treatment of < and > - 2/9 - --- -builtins/shift.def - - fix a call to sh_erange that possibly dereferences a NULL pointer + 9/24 + ---- +configure.in + - add "darwin10" cases like darwin8 and darwin9 to handle linking with + included readline and history libraries - 2/12 + 9/26 ---- -general.c - - start at a general set of file property checking functions: - file_isdir(), file_iswdir() (is writable directory) +lib/readline/display.c + - modify change of 7/24 to use prompt_physical_chars instead of + prompt_visible_length to account for visible multibyte characters in + the line (usually in the prompt). Fixes debian bug #547264 + reported by Pietro Battiston + - add flags argument to _rl_col_width; changed callers. flags > 0 + means that it's ok to use the already-computed prompt information; + flags == 0 means that we're expanding the prompt and we should not + short-circuit -general.h - - extern declarations for new functions +parse.y + - in decode_prompt_string, when expanding \w and \W on Mac OS X, + use fnx_fromfs to convert from "filesystem" form to "input" form. + This makes $PWD with multibyte characters work in the prompt + string on Mac OS X -lib/sh/tmpfile.c - - use file_iswdir() to make sure the temporary directory used for - here documents and other temp files is writable in get_sys_tmpdir() +lib/sh/fnxform.c + - in fnx_fromfs and fnx_tofs, use templen instead of outlen as last + argument in calls to iconv, since outlen is used to keep track of + the size of the buffer, and iconv potentially modifies its + `outbytesleft' argument - 2/17 + 9/29 ---- -bashline.c - - fix conditional binding of emacs-mode M-~ -- there is a default - binding for it (rl_tilde_expand), so a straight call to - rl_bind_key_if_unbound_in_map doesn't do the right thing +subst.c + - make skip_to_delim understand how to skip over process substitution + constructs the way it skips $(...) command substitution - 2/27 + 9/30 ---- -[bash-3.0-beta1 released] +lib/readline/terminal.c + - don't set the `terminal has meta key' flag if the `MT' capability is + available; that means something completely different - 2/29 + 10/1 ---- -subst.c - - fixed expansion so referencing $a, when a is an array variable - without an element assigned to index 0, exits the shell when - `-u' is enabled - -expr.c - - make the exponentiation operator (**) associative, so things like - 2**3**4 work right (change `if' to `while') +builtins/help.def + - make sure width is at least 7, since we pass `width/2 - 3' to strncpy + as the length argument. Terminal widths <= 6 are converted to 80. + Fixes bug reported by Chris Hall - 3/3 - --- -lib/sh/strftime.c - - SCO Unix 3.2, like Solaris, requires that the system's `timezone' - variable be declared as long +configure.in + - changed version to 4.1-alpha -lib/readline/{bind,histfile,input,parens}.c - - changes for Tandem (including `floss.h' (?)) +subst.h + - new flag for skip_to_delim: SD_NOSKIPCMD, which means to not skip + over embedded command and process substitutions, but rather to look + for delimiters within them - 3/4 - --- subst.c - - change param_expand to quote the entire expanded string instead - of just the escape characters if the expansion appears between - double quotes or in a here-document (for simple variable expansions - or expansions of positional parameters) + - implement semantics of SD_NOSKIPCMD in skip_to_delim - 3/8 - --- -subst.c - - analogous changes to parameter_brace_expand_word to fix the same - quoting problem as on 3/4; fix callers to understand that the - value returned might be quoted now and should be dequoted if - necessary - - add a `quoted' argument to get_var_and_type, change callers - - change today's fix and fix from 3/4 to not call quote_string if the - value is "" (because quote_string turns that into CTLNUL\0) +bashline.c + - call skip_to_delim with SD_NOSKIPCMD from find_cmd_start, so + programmable completion can use the completion defined for `b' for + command lines like "a $(b c". Fixes inconsistency/bug reported by + Freddy Vulto - 3/9 - --- -builtins/cd.def - - resetpwd() now takes a `caller' argument so it can be used by pwd - as well as cd - - change pwd_builtin to call resetpwd() if sh_physpath() fails to - return a valid pathname +parser.h + - replace unused PST_CMDTOKEN parser state value with PST_EXTPAT, + means currently parsing an extended glob pattern (extglob) - 3/14 - ---- -expr.c - - reworked exp0 and readtok() to make post-increment and post-decrement - into real tokens, which may be separated from their accompanying - variables by whitesapce - - made analogous changes to readtok() to make pre-increment and - pre-decrement work when separated from their accompanying identifier - by whitespace +parse.y + - fix cond_node() so that extended_glob is set before parsing the + rhs of the `==' or `!=' operators. For ksh93 compatibility. + - reset extended_glob to global value (saved in parse_cond_command()) + in reset_parser() - 3/18 + 10/5 ---- -lib/readline/misc.c - - in rl_maybe_unsave_line, don't force rl_replace_line to clear - the undo_list, since it might point directly at an undo list - from a history entry (to which we have no handle) +jobs.c + - change waitchld() to only interrupt the wait builtin when the shell + receives SIGCHLD in Posix mode. It's a posix requirement, but + makes easy things hard to do, like run a SIGCHLD trap for every + exiting child. Change prompted by question from Alex Efros + - 3/19 - ---- -lib/readline/display.c - - rl_save_prompt and rl_restore_prompt now save and restore the value - of prompt_physical_chars - - set prompt_physical_chars in rl_redisplay when expand_prompt has - not been called (e.g., when rl_display_prompt is set and is not - equal to rl_prompt, like when searching) +doc/bashref.texi + - document new posix mode behavior about SIGCHLD arriving while the + wait builtin is executing when a trap on SIGCHLD has been set + 10/6 + ---- lib/readline/histexpand.c - - don't call add_history in history_expand if the `:p' modifier is - supplied; leave that to the calling application. This means that - `history -p', for example, will not add anything to the history - list (as documented), nor will history expansions invoked by - emacs-mode M-C-e line editing + - fix hist_expand to keep from stopping history expansion after the + first multibyte character (a `break' instead of a `continue'). + Fixes debian bug (#549933) reported by Nikolaus Schulz + -config-bot.h - - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just - defined, to work around newer versions of autoconf defining it to 0 - -config.h.in - - change default status of HAVE_MALLOC to #undef instead of #define + 10/8 + ---- +builtins/read.def + - implement new `-N nchars' option: read exactly NCHARS characters, + ignoring any delimiter, and don't split the result on $IFS. + Feature requested by Richard Stallman -bashhist.c - - extern declarations for rl_done and rl_dispatching - - don't call re_edit from pre_process_line unless rl_dispatcing is zero, - so we don't call it from something like shell-expand-line - - change pre_process_line to add an expanded history specification - that returned `print only' to the history list, since history_expand - no longer does it (and, when using readline, do it only when - rl_dispatching is zero) +doc/{bash.1,bashref.texi} + - document new `read -N' option - 3/22 + 10/9 ---- -config.h.in,aclocal.m4 - - change bash-specific functions that look in struct dirent to define - HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the - functions are otherwise the same) - - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define - HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member +lib/readline/bind.c + - new bindable variable, "enable-meta-key", controls whether or not + readline enables any meta modifier key the terminal claims to + support. Suggested by Werner Fink -configure.in - - call BASH_STRUCT_DIRENT_D_NAMLEN +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - document new readline "enable-meta-key" bindable variable -include/posixdir.h - - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines + 10/10 + ----- +trap.c + - new function, free_trap_string(), does what it says and turns off + SIG_TRAPPED flag without changing signal disposition - 4/7 - --- -builtins/cd.def - - ensure that we print out a non-null pathname after getting a - directory from CDPATH and canonicalizing it (e.g., if the result - exceeds PATH_MAX in length and the_current_working_directory is - set to NULL) +[bash-4.1-alpha frozen] - 4/12 - ---- -print_cmd.c - - new function to print out assignment statements when `set -x' has - been enabled: xtrace_print_assignment + 10/16 + ----- +builtins/mapfile.def + - return an error if the variable passed is not an indexed array. + Fixes bug reported by Nick Hobson + - change help text to make it clear that an indexed array is required -externs.h - - extern declaration for xtrace_print_assignment +doc/{bash.1,bashref.texi} + - changed description of mapfile to note that the array variable + argument must be an indexed array, and mapfile will return an + error if it is not - 4/13 - ---- -{subst,variables}.c - - call xtrace_print_assignment instead of using inline code +subst.c + - change expand_string_unsplit and expand_string_leave_quoted to + add the (previously unused) W_NOSPLIT2 flag to the created word + - change expand_word_internal to understand W_NOSPLIT2 to mean that + we're not going to split on $IFS, so we should not quote any + characters in IFS that we add to the result string. Fixes bug + reported by Enrique Perez-Terron + - change cond_expand_word similarly. Fixes rest of bug reported by + Enrique Perez-Terron -jobs.c - - if turning on job control when it was previously off, set - pipeline_pgrp to 0 in set_job_control so make_child puts - subsequent children in their own process group +parse.y + - save and restore value of last_command_subst_pid around call to + expand_prompt_string in decode_prompt_string. Fixes bug that causes + $? to be set wrong when using a construct like false || A=3 when + set -x is enabled and $PS4 contains a command substitution. Reported + by Jeff Haemer - 4/14 - ---- -general.c - - new function, legal_alias_name, called to decide whether an - argument to add_alias is a valid alias name -- essentially any - character except one which must be quoted to the shell parser - and `/' + 10/17 + ----- +execute_cmd.c + - in execute_in_subshell, make sure we set setjmp(return_catch) before + running the command, in case the command or its word expansion + calls jump_to_top_level. Fixes bug reported by Nils Bernhard + -general.h - - new extern declaration for legal_alias_name +subst.c + - new PF_NOSPLIT2 flag for param_expand + - parameter_brace_expand takes a new `pflags' argument, before the + `output' parameters; passes to param_expand as necessary + - change parameter_brace_expand to call parameter_brace_expand_word + with the PF_NOSPLIT2 flag if the pflags argument to + parameter_brace_expand has it set -builtins/alias.def - - `unalias' now returns failure status if no NAME arguments are - supplied and -a is not given - - call legal_alias_name to make sure alias name is valid before - calling add_alias from alias_builtin +parse.y + - change report_syntax_error to set last_command_exit_value to + EX_BADSYNTAX if parse_and_execute_level is > 0, indicating a + syntax error while we're executing a dot script, eval string, + trap command, etc. - 4/19 - ---- -include/shmbutil.h - - include for definition of HANDLE_MULTIBYTE rather than - duplicating logic +builtins/evalstring.c + - in parse_and_execute, if parse_command() returns non-zero, + indicating a parse error, print a warning message if the conditions + would require a posix-mode shell to abort (parse error in a `.' + script or eval string) - 4/20 - ---- + 10/19 + ----- +builtins/evalfile.c + - even if the `check binary' flag is not passed to _evalfile, return an + error after reading 128 null characters if called by `source', on + the assumption that it's probably a binary file. [This will be in + bash-4.1-beta] -doc/{bash.1,bashref.texi} - - make sure $0 is consistently referred to as a `special parameter' - - document which characters are now not allowed in alias names + 10/24 + ----- +[bash-4.1-alpha released] - 4/23 - ---- +bashline.c + - don't call command_substitution_completion_function if we're + completing a substring delimited by a single quote. Fixes bug + reported by bash-bugs@atu.cjb.net -builtins/{jobs,kill,wait}.def - - removed requirement that job control be enabled to use job control - notation, as SUSv3 implies +lib/readline/complete.c + - make sure _rl_skip_completed_text defaults to 0, as the + documentation states (incorrect in bash-4.1-alpha) + - in insert_match, skip over a close quote in the replacement text if + the character at point when completion is invoked is a single + quote. Fixes complaint from bash-bugs@atu.cjb.net -subst.c - - based on a message from David Korn, change param_expand to not call - string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT -- - quoted here documents are like double quoting, but not exactly - - analogous changes to list_remove_pattern and pos_params + 10/26 + ----- +shell.c + - in main, make sure "$EMACS" is non-null before calling strstr on its + value. Fixes Red Hat bug 530911 submitted by Mitchell Berger - 4/24 - ---- -lib/readline/doc/rluser.texi - - fix error in description of emacs-mode C-xC-e command (uses $VISUAL - instead of $FCEDIT) +builtins/mapfile.def + - don't save callback commands in shell history. Suggested by + Jan Schampera - 4/28 - ---- -support/bashbug.sh - - integrate a patch from Stefan Nordhausen - that reduces race conditions - by using a temporary directory inside $TMPDIR and creating the - temp files in that +mailcheck.c + - in file_mod_date_changed, make sure the modification time is later + than the saved modification date, not just that it's not equal. + Fix from Evgeniy Dushistov + - in file_access_date_changed, make sure the access time is later + than the saved access time, not just that it's not equal - 4/30 - ---- -builtins/common.c - - use pathconf(".", _PC_PATH_MAX) where available to size the argument - to getcwd() rather than using a straight PATH_MAX + 10/27 + ----- +builtins/shopt.def + - added new `compat40' compatibility variable, with associated changes + to shell_compatibility_level(), since the default compatibility level + is now 41 -builtins/cd.def - - if get_working_directory fails and returns null (causing resetpwd - to return NULL), use set_working_directory to set $PWD to the - absolute pathname for which chdir just succeeded +test.c + - make the < and > operators to [[ use strcoll() only if the shell + compatibility level is greater than 40 (it is 41 by default in + bash-4.1) - 5/1 - --- -lib/readline/vi_mode.c - - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead - of `last', since they're equal at call time and rl_vi_domove can - change rl_numeric_arg (which vi apparently updates). Fixes redo bug - of `c2....' reported by Marion Berryman + 10/28 + ----- +support/shobj-conf + - decrease the default version of FreeBSD that creates shared libraries + to 4.x. Advice from Peter Jeremy - 5/4 - --- + 11/2 + ---- parse.y - - fix decode_prompt_string to properly deal with strftime() returning 0 + - change parse_comsub to free `heredelim' and set it to 0 whenever the + comsub scanner finds the end of a here document. Really need to + implement a stack of here doc delimiters like in the parser (can we + use redir_stack here, too?) + - fix parse_comsub to not attempt to read another here doc delimiter + after seeing a shell break character (that is not newline) if we + already have one. Fixes Debian bash bug #553485, submitted by + Samuel Hym - 5/6 - --- + 11/3 + ---- variables.c - - in make_local_array_variable, return an already-existing local array - variable immediately rather than creating a new array (causing a - memory leak) + - fix bind_variable_internal to call a variable's dynamic 'set function' + with the right arguments depending on whether its an associative + array, an indexed array, or a scalar. Fixes Ubuntu bug #471504 + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/471504 reported + by AJ Slater - 5/8 - --- -lib/readline/vi_mode.c - - change rl_vi_domove to set rl_explicit_arg before calling - rl_digit_loop1 so that multi-digit numeric arguments work right - - _rl_vi_last_command is no longer static +[bash-4.1-beta frozen] -lib/readline/rlprivate.h - - new extern declaration for _rl_vi_last_command + 11/11 + ----- +builtins/printf.def + - in getintmax(), in the case of a conversion error, return the partial + value accumulated so far, which is suppose to be what + strtoimax/strtoll/strtol returns -lib/readline/text.c - - change rl_newline to only call _rl_vi_reset_last if the last command - (_rl_vi_last_command) is not a text modification command. This lets - the last-command and last-argument work across command lines + 11/17 + ----- +[bash-4.1-beta released] - 5/13 - ---- -builtins/common.c - - use getcwd(0,0) rather than providing a fixed pathname with a fixed - length (PATH_MAX) so getcwd() will allocate sufficient memory + 11/18 + ----- +builtins/{common.h,shopt.def},shell.c + - changed shopt variable "set functions" to take the option name as + the first argument; changed function prototypes and callers -aclocal.m4 - - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will - allocate memory for the returned value -- nobody implements that - and getcwd-via-popen, so it should capture the old test as well +builtins/shopt.def + - change set_compatibility_level() to turn off other compatNN options + when one is set -- enforce mutual exclusivity. Fixes problem noted + by Jan Schampera - 5/27 - ---- + 11/19 + ----- +lib/readline/rltty.c + - make sure prepare_terminal_settings() tests for the presence of + ECHOCTL before using it. Fixes bug reported by Joachim Schmitz + -builtins/trap.def - - the historical behavior of assuming that a signal's handling should - be set to its original disposition is only in effect if a single - argument is given, otherwise the first argument is assumed to be a - command to execute - - when in posix mode, if trap gets a single argument, display an - error message and return EX_USAGE - - change the help message and usage string to better explain trap's - behavior +config-top.h + - new WORDEXP_OPTION define (off by default) -doc/{bash.1,bashref.texi} - - describe the new default behavior when the first argument is a - signal spec - - note that signal names are case insensitive and the SIG prefix is - optional in arguments to `trap' - - note that signal name arguments to `kill' are case-insensitive +shell.c + - don't include the --wordexp option or the supporting function + (run_wordexp) if WORDEXP_OPTION is not defined. Suggested by + Aharon Robbins -lib/readline/display.c - - make sure rl_on_new_line_with_prompt sets rl_display_prompt to - rl_prompt (just to make sure it's set) - - have rl_on_new_line_with_prompt use local_prompt if it's set +execute_cmd.c + - in execute_cond_node, turn on comsub_ignore_return if the flags + indicate we're ignoring the return value before calling + cond_expand_word. Fixes bug reported by Anirban Sinha + - 6/2 - --- + 11/20 + ----- +lib/sh/snprintf.c,builtins/printf.def + - change check for HAVE_ASPRINTF and HAVE_SNPRINTF to check if value + is 1 or 0 rather than whether they are defined or not. This allows + a value of 0 to enable function replacement + +configure.in,aclocal.m4 + - new autoconf macro, BASH_FUNC_SNPRINTF, checks for snprintf present + and working as C99 specifies with a zero length argument. Idea + from Greg Wooledge + - new macro BASH_FUNC_VSNPRINTF, does same thing for vsnprintf + + 11/25 + ----- subst.c - - in string_extract_double_quoted, cope with extract_delimited_string - returning NULL, as it can when attempting completion on an unclosed - command substitution + - in command_substitute, only tell parse_and_execute to reset the line + number in an interactive shell if sourcelevel == 0 -- we'll use the + line numbers from the sourced file - 6/24 - ---- -lib/readline/complete.c - - change print_filename to add a `/' to listed directory names if - `mark-directories' has been enabled +execute_cmd.c + - in execute_simple_command, only subtract function_line_number from + line_number if sourcelevel == 0. If sourcing, we'll use the line + numbers from the sourced file. Fixes bug reported by Hugo + Mildenberger -builtins/umask.def - - make sure that the mask passed to parse_symbolic_mode has all but - the operative low eight bits masked off, to avoid complementing - all 0s to -1, which is the error return code. This makes things - like `a=rwx' and `ugo=rwx' work and turn off the umask +builtins/declare.def + - in declare_internal, call bind_assoc_variable instead of + bind_array_variable in the case of declare -A foo=bar. Fixes bug + reported by Bernd Eggink . - 6/26 - ---- -builtins/getopts.def - - when `getopts' reaches the end of options, unset OPTARG before - returning EOF. In response to a bug report from Apple + 11/27 + ----- +lib/readline/util.c + - change declaration for _rl_walphabetic to use prototype, assuming + that any system with multibyte characters has a compiler that can + handle prototypes. Fix for AIX compilation problem reported by + Nick Hillman -configure.in - - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and - LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since - those are for the target instead of the build platform (report - from robert@schwebel.de) + 11/28 + ----- +execute_cmd.c + - make funcnest file-scope static and unwind-protect its value in + execute_function, so it can be used as a real measure of function + call nesting -shell.c - - a shell whose standard error (but not standard output) is directed - to a terminal should be interactive, according to POSIX/SUS. This - means that sh > sh.out will start an interactive shell. Bug report - from llattanzi@apple.com +general.c + - fix off-by-one error in trim_pathname that caused it to short-circuit + when PROMPT_DIRTRIM == number of directories - 1. Fixes bug + reported by Dennis Williamson -doc/{bash.1,bashref.texi} - - change mention of standard output to standard error in definition - of interactive shell + 11/29 + ----- +jobs.c + - when fork() returns -1/EAGAIN, call waitchld(-1, 0) so the shell can + reap any dead jobs before trying fork again. Currently disabled + until bash-4.2 development starts -lib/readline/vi_mode.c - - new convenience function, rl_vi_start_inserting, calls - _rl_vi_set_last to save the last textmod command state and then calls - rl_vi_insertion_mode to enter insert mode - - change functions to use rl_vi_start_inserting +lib/readline/complete.c + - when incrementing _rl_interrupt_immediately, make sure it's greater + than 0 before decrementing it. In practice, not a problem, but + the right way to do it. Suggested by Jan Kratochvil + -lib/readline/readline.h - - extern declaration for rl_vi_start_inserting +lib/readline/signals.c + - make sure rl_signal_handler doesn't set rl_caught_signal if + _rl_interrupt_immediately is set, so RL_CHECK_SIGNALS doesn't + cause it to be processed twice. Suggested by Jan Kratochvil + + - if the callback interface is being used, use the code path that + immediately handles signals. This restores the readline-5.2 + behavior. Fixes GDB readline bug reported by Jan Kratochvil + -bashline.c - - new function for vi-mode completion, bash_vi_complete. Does - filename expansion as POSIX specifies, unlike the default readline - bindings (which don't know about globbing). Bound to `\', `*', - and `=' in vi command keymap. Internals very similar to - rl_vi_complete; just calls bash glob expansion functions + 12/18 + ----- +[bash-4.1-rc1 released] -lib/readline/vi_mode.c - - change rl_vi_change_char so that an entire change is a single - undoable event, rather than each individual change in a [count]r - command - - fix rl_vi_change_char so that replacing characters up to EOL works - rather than generating rl_ding - - fix rl_vi_change_case so that replacing characters up to EOL works - rather than generating rl_ding + 12/22 + ----- +config-top.h + - don't have SYSLOG_HISTORY enabled by default - 6/28 - ---- -builtins/echo.def - - call clearerr(stdout) before writing anything and testing its - failure or success - - 6/29 - ---- -bashline.c - - only set rl_explicit_arg in bash_glob_complete_word if readline is - in emacs mode; let bash_vi_complete take care of setting it in vi - mode - - fix bash_vi_complete to only set rl_explicit_arg unless the posix - conditions are met: no globbing characters in the vi `bigword' - being completed - - 6/30 - ---- -[bash-3.0-rc1 released] - - 7/1 - --- -lib/readline/complete.c - - make sure `extension_char' is initialized before deciding whether - or not the append a `/' to a possible completion when visible-stats - is not enabled - - 7/2 - --- -subst.c - - fix a boundary overrun in string_extract_double_quoted that could - occur when the word completion code attempts to expand an incomplete - construct (like a quoted unclosed command substitution) - - 7/4 - --- -subst.c - - set tempenv_assign_error to non-zero if an assignment to the - temporary environment fails for some reason (e.g., attempted - assignment to a readonly variable) - -execute_cmd.c - - fix execute_simple_command to force a non-interactive shell in - POSIX mode to exit if an assignment to the temporary environment - preceding a special builtin fails (bug report from - llattanzi@apple.com) - - 7/5 - --- -bashline.c - - in bash_directory_completion_hook, don't perform word expansions - if the filename appears to have been completed from the file - system rather than typed in by the user. Bug reported by Tim - Waugh - - 7/7 - --- -lib/readline/misc.c - - if _rl_maybe_save_line is being asked to save a line other than - what's already saved, free up the current saved line and save the - current contents of rl_line_buffer. Bug reported by - llattanzi@apple.com - - 7/12 - ---- -lib/readline/input.c - - do better EOF detection in rl_gather_tyi -- if a read returns 0 when - the fd is in non-blocking mode, stuff an EOF into the input stream - (reported by mattias@virtutech.se) - - 7/13 - ---- -lib/readline/vi_mode.c - - make sure rl_vi_put honors `count' arguments and yanks things - multiple times if requested - - 7/16 - ---- -builtins/umask.def - - make sure that the `who' part of the umask symbolic mode argument - defaults to `a' if it's missing - -flags.c - - make sure that maybe_make_restricted only gets called after the - shell is initialized, so `bash -r' doesn't result in inappropriate - error messages - -[bash-3.0 frozen] - - 7/27 - ---- -doc/Makefile.in - - small fixes - -[bash-3.0-released] - - 7/28 - ---- -array.c - - in array_insert(), make sure the value to be added is non-NULL before - calling savestring() on it - -builtins/reserved.def - - fix description of `CDPATH' - -lib/readline/display.c - - when expanding a prompt that spans multiple lines with embedded - newlines, set prompt_physical_chars from the portion after the - final newline, not the preceding portion. Bug reported by - "Ralf S. Engelschall" - -make_cmd.c - - explicitly declare `lineno' in function prologue for make_case_command - -builtins/evalfile.c - - include `trap.h' for declaration for run_return_trap - -bashline.c - - fix a `return' without a value in enable_hostname_completion - -general.c - - include test.h for extern declaration for test_eaccess +lib/sh/Makefile.in + - add explicit dependency on pathnames.h for parallel make support externs.h - - add declaration for zcatfd - -tests/{history,histexp}.tests - - unset HISTFILESIZE to avoid problems if a value of 0 is inherited - from the environment - - 7/30 - ---- -bashline.c - - small changes to glob_expand_word to perform tilde expansion before - attempting globbing - -builtins/Makefile.in - - fix the install-help target to not cd into the `helpfiles' - subdirectory, so a value of $INSTALL_DATA containing a relative - pathname (e.g., .././support/install.sh) remains valid - - 7/31 - ---- -subst.c - - new function, mbstrlen(s), returns length of a multibyte character - string - -include/shmbutil.h - - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate - -builtins/trap.def - - small change so that a first argument that's a valid signal number - (digits only -- no symbolic names) will be treated as a signal and - reverted back to the original handling disposition. Fixes debian - complaints - -subst.c - - call MB_STRLEN instead of STRLEN where appropriate in - parameter_brace_expand_length to handle multibyte characters properly - - call MB_STRLEN instead of strlen in verify_substring_values so that - negative substrings of strings with multibyte chars work properly - - 8/1 - --- -jobs.c - - describe_pid needs to write to stderr, not stdout (POSIX) - - start_job, since it's only used by builtins (fg/bg), needs to write - its output to stdout, not stderr (POSIX) - -sig.c - - add an `orig_flags' member to struct terminating_signal so the - original signal handling flags (SA_RESTART, etc.) can be preserved - on POSIX systems - - make sure to preserve the signal flags state in - initialize_terminating_signals and reset them for child processes - in reset_terminating_signals - -builtins/fc.def - - fixed an off-by-one error that caused `fc -l' to list one too many - history entries - - in posix mode, `fc' should not list any indication as to whether or - not history lines have been modified (POSIX) - - when in posix mode, the default editor for `fc' should be `ed' (POSIX) - -doc/bashref.texi - - updated the description of `trap' behavior when given a first - argument that is a valid signal number - - noted that `fc -l' won't indicate whether a history entry has been - modified if the shell is in posix mode - -builtins/command.def - - fixed bug: `command -v' is supposed to be silent if a command is not - found - -builtins/hash.def - - `hash' should print its `hash table empty' message to stderr - -lib/readline/misc.c - - back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P - -general.c - - changed base_pathname so that it will return reasonable results for - non-absolute pathnames -- this is what is intended by all of its - callers - -arrayfunc.c - - fix array_variable_part to return NULL if it finds an invisible - variable in the hash table. Fixes seg fault caused by referring to - unset local variable using array notation - -{locale,variables}.c - - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks - the current locale - - 8/2 - --- -variables.c - - fixed small memory leak in makunbound() when a local array variable - is unset. Fix from William Park - -lib/readline/display.c - - fixed a problem when computing the number of invisible characters on - the first line of a prompt whose length exceeds the screen width - (should only happen when invisible characters occur after the - line wrap). Bug reported by agriffis@gentoo.org - -builtins/command.def - - `command -V' passes a new flag, CDESC_ABSPATH, which means to convert - to an absolute path + - add extern declaration for xtrace_fdchk -builtins/type.def - - in posix mode, `type' and `command -v/-V' should not report - non-executable files, even if the execution code will attempt to - run them. Other posix shells do this +lib/sh/snprintf.c + - add local prototype declarations for isinf, isnan if we are providing + local definitions -doc/bashref.texi - - add note to POSIX Mode section describing behavior of type and command - when finding a non-executable file +lib/sh/fnxform.c + - add extern declaration for get_locale_var if HAVE_LOCALE_CHARSET not + defined execute_cmd.c - - force extended_glob to 1 before calling binary_test in - execute_cond_node so that the right extended pattern matching gets - performed - - 8/3 - --- -braces.c - - make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars - with values > 128 are handled correctly - -builtins/printf.def - - change bexpand() and printstr() to handle strings with a leading - '\0' whose length is non-zero, since that's valid input for the - `%b' format specifier - -subst.c - - fix a couple of instances of find_variable that didn't check the - result for an invisible variable - -variables.c - - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as - invisible vars - -pcomplete.c - - make sure COMP_WORDS is not invisible when bind_comp_words returns - - ditto for COMPREPLY in gen_shell_function_matches - - 8/4 - --- -braces.c - - fix problem where ${ was ignored but did not increment the open - brace count. Bug reported by Tim Waugh - -variables.c - - if make_local_variable finds a variable in the correct context in - the right variable scope, make sure it's not invisible before - returning it + - define NEED_FPURGE_DECL so we pick up any extern declaration for + fpurge (e.g., if the system doesn't provide it) - 8/5 - --- -builtins/trap.def - - fixed usage message to show `action' as not optional, though it - actually is when not in posix mode (for a single argument) +builtins/shopt.def + - correct prototype and declaration for set_shellopts_after_change so + it's the correct type for shopt_set_func_t + - add new function shopt_enable_hostname_completion that is the correct + type for shopt_set_func_t; just calls enable_hostname_completion and + returns its result - 8/7 - --- -configure.in - - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs - to be configured --without-gnu-malloc + 12/26 + ----- +doc/{bash.1,bashref.texi} + - add \E and \" escape sequences to ANSI-C quoting description. + Suggested by Aharon Robbins -lib/readline/vi_mode.c - - in rl_vi_search, free any saved history line before starting the - search, so failure leaves you at that line, not the last line in - the history (assuming the current line is not the last history line). - Fix from llattanzi@apple.com to replace fix of 7/7 + 12/29 + ----- +doc/bash.1 + - make sure shell and environment variable names are always in + `small caps' bold. Suggested by Aharon Robbins - 8/9 - --- -support/Makefile.in - - renamed `mostly-clean' target to `mostlyclean' + 12/30 + ----- +{execute_cmd.c,parse.y,Makefile} + - changes for building minimal configuration from Matthias Klose + - 8/11 - ---- -lib/readline/vi_mode.c - - make same change for EOL in multibyte character case of - rl_vi_change_char - - 8/12 - ---- -subst.c - - in verify_substring_values, fix off-by-one error checking bounds of - `offset', esp. in array values (e.g., getting the highest element - of an array) - - 8/16 - ---- -aclocal.m4 - - change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are - accessible via /dev/fd, unlike FreeBSD 5.x - -lib/sh/strftime.c - - make sure `zone' is initialized with gettimeofday before it is used - - work around HPUX lack of `altzone' and differing definitions of - `timezone' - -lib/malloc/malloc.c - - internal_memalign and memalign now take a `size_t' as their first - argument, which seems to be the prevailing standard - -lib/malloc/{malloc.c,shmalloc.h} - - change sh_memalign to take a `size_t' as its first argument - -builtins/echo.def - - if posixly_correct and xpg_echo are both set, don't try to interpret - any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul - Eggert) - -doc/bashref.texi - - amend description of bash posix mode to include new echo behavior - -builtins/fg_bg.def - - allow bg to take multiple job arguments, as posix seems to specify, - placing them all in the background, returning the status of the last - one as the status of `bg' - -lib/readline/vi_mode - - fix _rl_vi_change_mbchar_case (multibyte-char version of `~' - command) to have the right behavior at EOL -- handle case where vi - mode backs up at the end of the line - - 8/18 - ---- -array.c - - check for an empty array in array_rshift before shifting elements - and adjusting max_index - - check for null array in array_subrange - -jobs.c - - fix raw_job_exit_status to not ignore exit status of the last - process in the pipeline when `set -o pipefail' is enabled - - 8/19 - ---- -lib/readline/mbutil.c - - make sure _rl_find_next_mbchar_internal has a valid multibyte - character before it checks whether or not it's a zero-width - wide character and adjusts point accordingly - - 8/24 - ---- -bashline.c - - new function, bash_directory_expansion, duplicates the expansions - performed on the directory name by rl_filename_completion_function - - call bash_directory_expansion in command_word_completion_function - if we decide we're doing tilde expansion (and any other - canonicalization) on the directory name being completed - - 8/25 - ---- -configure.in - - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires - sys/stream.h). The correct checks are in the code, but autoconf - complains if sys/stream.h is not included, rather than simply - checking for the header's presence - - 8/26 - ---- -builtins/hash.def - - fix a bug that prevented `hash -d' from working right (as soon as - hash removed a command from the table, the bug caused it to be added - right back) - - 8/27 - ---- -doc/{bash.1,bashref.texi} - - explicitly note that conditional primaries that operate on files - operate on the targets of symbolic links rather than the links - themselves - - 8/30 - ---- -lib/readline/display.c - - fix multibyte calculation of `physchars' in prompt expansion, to - handle double-width multibyte characters correctly - - changes to rl_redisplay to handle prompts longer than the screenwidth - that might contain double-width multibyte characters. Fixes from - Tomohiro Kubota - - 9/6 - --- -subst.c - - change word_list_split to avoid really bad behavior caused by calling - list_append for each split word -- as the list gets long, you have - to traverse it every time. Keep a pointer to the end of the list and - and just tack onto it - - 9/8 - --- -lib/readline/complete.c - - change fnprint to calculate the displayed width of a filename in - the same way as fnwidth - -subst.c - - in verify_substring_values, when expanding ${array[@]:offset}, make - sure negative offsets count from one greater than the array's - maximum index so things like ${x[@}: -1} work to give the last element - (requires fixing array tests) - -builtins/common.c - - new error function, sh_wrerror(), for builtins to call when a write - error occurs - -builtins/common.h - - extern declaration for sh_wrerror() - -builtins/cd.def - - change builtin_error call to use sh_wrerror() - -builtins/echo.def - - report write errors with sh_wrerror() instead of just returning - failure - -builtins/printf.def - - change printstr to return failure (-1) or success (0) indication - rather than void - - report write errors when printstr() fails, return failure - - if any of the PF/printf calls fail, report write error and return - failure - -execute_cmd.c - - change execute_in_subshell so the subshell command inherits the - command timing flags from the enclosing COMMAND * - - 9/11 - ---- -[prayers for the victims of 9/11/2001] - -lib/sh/strnlen.c - - new file, implementation of GNU libc extension function strnlen - -lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST - - changes for strnlen - -configure.in - - version changed to 3.1-devel - -doc/bash.1, lib/readline/doc/rluser.texi - - added description of `-o plusdirs' to complete/compgen (thanks, - Arnold) - -parse.y - - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing - arguments to a builtin that accepts assignment statement arguments - - turn on PST_ASSIGNOK in read_token_word when appropriate - - turn off PST_ASSIGNOK in read_token when appropriate - - don't attempt to parse a compound assignment specially unless we're - in a position where an assignment statement is acceptable, or - PST_ASSIGNOK is set - - 9/13 - ---- -variables.c - - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE - non-unsettable, since the shell uses those values internally - -expr.c - - make exponentiation right-associative, as is apparently correct - - 9/16 - ---- -arrayfunc.c - - make sure convert_var_to_array marks the environment as needing - recreation if the converted variable was exported - - 9/17 - ---- -braces.c - - mark ${ as introducing an additional level of braces only if it's - not in a quoted string -- quoted strings are handled before brace - matching is done - -parse.y - - fixed an obscure problem in history_delimiting_chars where the `in' - in a case statement could have a semicolon added after it, if the - `case word' was on a previous line - -support/config.guess - - support for newest versions of tandem non-stop kernel - -lib/readline/display.c - - in compute_lcd_of_matches, explicitly cast `text' to `char *' before - passing it to rl_filename_dequoting_function - -lib/readline/terminal.c - - bind the key sequence sent by the keypad `delete' key to delete-char - (same as ^D in emacs mode) - -builtins/ulimit.def - - in print_all_limits, don't print anything if get_limit returns - -1/EINVAL, indicating that the kernel doesn't support that particular - limit - - add -i (max number of pending signals), -q (max size of posix msg - queues), -x (max number of file locks) for systems (Linux) that - support them - -doc/{bash.1,bashref.texi} - - fix description of correspondence between FUNCNAME, BASH_LINENO, - and BASH_SOURCE indices in description of BASH_LINENO - - 9/18 - ---- -lib/sh/shquote.c - - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as - long as the resultant string never gets sent to the word expansion - functions without going through the shell parser - -externs.h - - add extern declarations for strnlen and strpbkrk from lib/sh - -subst.[ch] - - changes to handle case where IFS consists of multibyte characters. - Changed: string_extract_verbatim, split_at_delims, - string_list_dollar_star, string_list_dollar_at, list_string, - get_word_from_string, setifs - - 9/19 - ---- -mailcheck.c - - change file_mod_date_changed to reset the cached mail file data if - the file size drops to zero - -lib/readline/complete.c - - change append_to_match so that a non-zero value for - rl_completion_suppress_append will cause no `/' to be appended to a - directory name - -bashline.c - - experimental change to suppress appending a slash for a completed - filename that is found in PATH as well as a directory in the current - directory under certain circumstances: a single instance found in - $PATH when `.' is not in $PATH, and multiple instances found in the - $PATH, even when `.' is in the $PATH - - 9/24 - ---- -command.h - - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement - - new word flag: W_NOTILDE, means word is not to be tilde expanded - - new word flag (internal): W_ITILDE, means the next character is a - tilde that should be expanded - -general.c - - new set of tilde suffixes for use when parsing the RHS of an - assignment statement and =~ should not be subject to tilde expansion - - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes - for parsing RHS of assignment statement - -general.[ch] - - new function bash_tilde_find_word, drop-in replacement for - tilde_find_word - -subst.c - - call bash_tilde_expand with secord argument of 2 when expanding rhs - of an assignment statement, so tildes after second and subsequent - `=' in an assignment are not expanded - - new function, expand_string_assignment, to expand the rhs of an - assignment statement - - add `~' to EXP_CHAR, the characters that will cause the word - expansion functions to be called - - move tilde expansion into expand_word_internal instead of many - different calls to bash_tilde_expand scattered across different - functions. NOTE: This means that double quotes surrounding a - {paramOPword} expansion will cause tilde expansion to NOT be - performed on `word'. I think this is right, what POSIX specifies, - and consistent with the behavior of other characters in the rhs - -execute_cmd.c - - take out calls to bash_tilde_expand before calling word expansion - functions - - 9/26 - ---- -execute_cmd.c - - make sure to call UNBLOCK_CHILD before returning on a pipe creation - failure in execute_pipeline - - 9/27 - ---- -variables.c - - change get_bash_command to deal with the_printed_command_except_trap - being NULL - -execute_cmd.c - - fix execute_simple_command to deal with the_printed_command being - NULL when assigning to the_printed_command_except_trap -- fixes - seg fault in savestring() - -parse.y - - change the parser so that the closing `)' in a compound variable - assignment delimits a token -- ksh93 does it this way - -doc/{bash.1,bashref.texi} - - change description of tilde expansion to note that expansion is - attempted only after the first =~ in an assignment statement - -builtins/declare.def - - when assigning to an array variable with declare -a x=(...), make - sure the last character in the rhs of the variable assignment is - `)', not just that it appears somewhere - - 9/28 - ---- -command.h - - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal - - add a `W_COMPASSIGN' flag to denote a word is a compound assignment - statement - -parse.y - - set W_COMPASSIGN on words that appear to be compound assignments - -subst.c - - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal - -subst.[ch] - - new function, expand_assignment_string_to_string, calls - expand_string_assignment and then string_list on the result - -variables.c - - assign_in_env now calls expand_assignment_string_to_string - - 9/30 - ---- -builtins/common.c - - change get_job_spec so the null job `%' once again means the current - job - - 10/1 - ---- -subst.c - - do_assignment_internal now takes a WORD_DESC * as its first - argument, and uses its `word' member as the assignment string - - change expand_word_list_internal to call do_word_assignment instead - of do_assignment, passing it `word' instead of, e.g., `word->word' - - change extract_array_assignment_list to just return the passed - string minus a trailing `)' if the last character is a right - paren - - change do_assignment_internal to call extract_array_assignment_list - -subst.[ch] - - change do_assignment and do_assignment_no_expand to take a `char *' - instead of `const char *' first argument; change extern prototypes - - new function, do_word_assignment, takes a WORD_DESC * and calls - do_assignment_internal on it; add extern declaration with prototype - -general.h - - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a - WORD_DESC * as its first argument - -variables.[ch] - - assign_in_env now takes a WORD_DESC * as its first argument - - 10/2 - ---- -command.h - - new word flag, W_ASSNBLTIN, denotes that the word is a builtin - command (in a command position) that takes assignment statements - as arguments, like `declare' - - new word flags, W_ASSIGNARG, denotes that word is an assignment - statement given as argument to assignment builtin - -execute_cmd.c - - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there - are any arguments that are assignment statements) - - set W_ASSIGNARG flag in fix_assignment_words if necessary - -subst.c - - new function, do_compound_assignment, encapsulates the necessary - code to perform a compound array assignment (including creation of - local variables); called from do_assignment_internal - - to fix the double-expansion problem with compound array assignments - that are arguments to builtins like `declare', changed - shell_expand_word_list to treat those arguments like assignment - statements (with proper creation of local variables inside shell - functions) and pass the attribute-setting portion of the statement - onto the builtin. This is what ksh93 appears to do, from inspection - of the `ksh93 -x' output - -execute_cmd.c - - fix execute_simple_command: in case of pipeline or async command, - when forking early, set `subshell_environment' so that it can contain - both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be - mutually exclusive. Fixes bug reported by pierre.humblet@ieee.org - - remove references to last_pid, old_command_subst_pid; use NO_PID as - a sentinel value to decide whether or not a child process has been - created and needs to be waited for. Submitted by - pierre.humblet@ieee.org to fix recycling-pid problem on cygwin - -doc/{bash.1,bashref.texi} - - fixed documentation of `@(pattern)' extended globbing operator -- - it succeeds if the string matches one of the patterns, not exactly - one. This is what ksh93 does, too - -lib/readline/complete.c - - fixed rl_menu_complete so that a negative argument cycles backwards - through the list - - 10/3 - ---- -subst.c - - use W_COMPASSIGN flag in do_assignment_internal instead of deciding - lexically which assignments are compound array assignments - - 10/6 - ---- -support/shobj-conf - - additions for System V.5 from Boyd Gerber - -subst.c - - in command_substitute, if subshell_environment includes - SUBSHELL_ASYNC, call make_child with the `async_p' argument set to - non-zero. This keeps command substitutions for async commands or - pipelines from trying to give the terminal back to the shell's - pgrp. make sure to save and restore last_asynchronous_pid. Fix - suggested by - - 10/7 - ---- -config.h.in - - add a placeholder definition for WCONTINUED_BROKEN - - 10/9 - ---- -aclocal.m4 - - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is - defined but rejected as invalid by waitpid(2) - -configure.in - - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN - -redir.c - - experimental change to add_undo_redirect to save manipulations to - file descriptors >= SHELL_FD_BASE (10) on the list of redirections - to be undone even if `exec' causes the list to be discarded - -doc/{bash.1,bashref.texi} - - note that redirections using file descriptors > 9 should be used - carefully, because they might conflict with file descriptors the - shell uses internally - - 10/11 - ----- -parse.y - - fix pipeline_command production to handle case where `pipeline' - as `argument' of `!' or `time' is null (e.g., a syntax error not - handled by the grammar) - - 10/13 - ----- -lib/readline/readline.c - - new internal variable, _rl_bind_stty_chars; if non-zero, bind the - terminal special characters to readline equivalents at startup - - change readline_default_bindings() and reset_default_bindings() to - understand _rl_bind_stty_chars - -lib/readline/rlprivate.h - - new extern declaration for _rl_bind_stty_chars - -lib/readline/rltty.c - - change rl_prep_terminal to add support for _rl_bind_stty_chars - - 10/15 - ----- -lib/readline/bind.c - - new bindable variable, `bind-tty-special-chars', bound to value of - _rl_bind_stty_chars - -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - documented new readline variable `bind-tty-special-chars' - -builtins/pushd.def - - make the first check for option `--' skip the rest of option - checking - - 10/16 - ----- -lib/readline/shell.c - - change sh_set_lines_and_columns to prefer setenv, which has - predictable memory allocation behavior, to putenv, which does not - - 10/19 - ----- -variables.c - - change push_exported_var so that a tempenv variable has to have the - export attribute set (which they all do -- something to look at) and - the `propagate' attribute set to be propagated down to the next - scope - -execute_cmd.c - - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the - passed flags argument, call pop_scope with a value that says the - builtin is not special, since `command' means that preceding variable - assignments don't persist in the environment. Fixes problem with - variable assignments preceding command preceding special builtin - keeping those variable assignments around (when in posix mode) - - 10/20 - ----- -lib/sh/shquote.c - - new function, sh_mkdoublequoted, brackets a given string with - double quotes and returns a new string. Flags argument, if non- - zero, means to quote embedded double quotes with backslashes - -externs.h - - new extern declaration for sh_mkdoublequoted - -parse.y - - use sh_mkdoublequoted after calling localeexpand() - -lib/sh/strtrans.c - - change ansicstr to understand that (flags & 4) != 0 means to remove - backslash from unrecognized escape sequences - -general.c - - fix logic problem in assignment() that caused non-variable-starter - characters to be allowed, resulting in things like `1=xxx' creating - a variable `1' in the hash table - - 10/21 - ----- -bashline.c - - don't call programmable_completions with an assignment statement - argument - - 10/22 - ----- -lib/readline/rltty.c - - in prepare_terminal_settings, turn echoing on (readline_echoing_p) - if get_tty_settings fails because the input is not a terminal - - 10/24 - ----- -lib/readline/util.c - - include rlmbutil.h for multibyte definitions - - new function, _rl_walphabetic, wide char version of rl_alphabetic - -lib/readline/mbutil.c - - new function, _rl_char_value(buf, ind), returns value of (possibly - multibyte) character at buf[ind] - -lib/readline/rlmbutil.h - - extern defines for _rl_walphabetic and _rl_char_value for when - multibyte chars are not being used - - new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and - _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded - function calls - -lib/readline/text.c - - fix rl_foward_word to work with multibyte characters (or in a - multibyte locale) using above utility functions - - fix rl_backward_word to work with multibyte characters (or in a - multibyte locale) using above utility functions - - 10/26 - ----- -parse.y - - fix parse_matched_pair so that it doesn't swallow \ when - parsing a $'...' construct (call shell_getc with different arg) - - 10/28 - ----- -lib/glob/glob.c - - after some (compiled-in) threshold, glob_vector will stop using - alloca to allocate `struct globval's and will switch to using - malloc, with appropriate cleanup before returning - -subst.c - - don't expand tildes after `=' in expand_word_internal, even if the - W_TILDEEXP flag is set, unless it's the first tilde in a word - marked W_ASSIGNMENT - - 10/31 - ----- -lib/readline/text.c - - make sure rl_point doesn't go below 0 in rl_delete_horizontal_space - (from SUSE, but not sent in) - -shell.c - - make sure shell_is_restricted skips over a single leading `-' in - the shell name (from SUSE, but not sent in) - -lib/readline/display.c - - disable `fast redisplay' at the end of the line if in a locale that - supports multibyte characters (from SUSE, but not sent in) - -lib/readline/histexpand.c - - fix a problem with finding the delimiter of a `?' substring when - compiled for multibyte characters (from SUSE, but not sent in) - - 11/1 - ---- -lib/readline/display.c - - correct some assignments to _rl_last_c_pos: when in a multibyte - locale, it's used as an absolute cursor position; when not using - multibyte characters, it's a buffer offset. I should have caught - this when the multibyte character support was donated - - 11/5 - ---- -general.c - - change `assignment()' to accept `+=' assignment operator - -arrayfunc.[ch] - - bind_array_variable and assign_array_element both take a new `flags' - argument - - assign_array_var_from_string, assign_array_from_string, and - assign_array_var_from_word_list now all take a new `flags' argument - - change assign_array_var_from_word_list to understand how to append - to an array variable - - change assign_array_var_from_string to understand how to append - to an array variable. It does not unset the previous value if - appending, allowing both old values to be changed and new ones to - be added - -subst.h - - new flag #defines to use for evaluating assignment statements - -{subst,variables}.c, builtins/{declare,read}.def - - change callers of assign_array_element and bind_array_variable - - change do_compound_assignment to understand assignment flags - - change do_assignment_internal to set assignment flags and pass them - to underlying functions - -pcomplete.c,builtins/{declare,read}.def - - fix callers of assign_array_var_from_string, assign_array_var_from_word_list - -variables.[ch] - - make_variable_value now takes a new `flags' argument - - make_variable_value now understands how to append to a particular - variable, using the old value - - bind_variable_value now takes a new `flags' argument - - change make_variable_value to understand ASS_APPEND flag - - bind_variable now takes a new `flags' argument - - bind_variable_internal now takes a new `flags' argument - -arrayfunc.c - - change callers of make_variable_value to add flags arg - -builtins/declare.def - - change callers of bind_variable_value to add flags arg - -{execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y -builtins/{cd,command,declare,getopts,read,set,setattr}.def - - change callers of bind_variable to add flags arg - -variables.c - - change callers of bind_variable_internal - - change bind_variable_internal to pass assignment flags on to - make_variable_value - - change assign_in_env to treat `var+=value' like `var=value' - -arrayfunc.c - - break code that actually constructs the new value and assigns it - to a particular array index out into a new functions: - bind_array_var_internal. This fakes out make_variable_value by - passing a dummy SHELL_VAR * so it can do proper appending and other - += processing - - changes to assign_array_var_from_string to accept and process as if - they were `standalone' assignment statements array assignment words - of the form [ind]+=val - - 11/7 - ---- -builtins/declare.def - - added support for `declare [flags] var+=value'. `Flags' are applied - before the assignment is performed, which has implications for things - like `-i' -- if -i is supplied, arithmetic evaluation and increment - will be performed - -builtins/setattr.def - - add support for `+=' assignment for rest of `assignment builtins': - export, readonly - - 11/12 - ----- -lib/readline/display.c - - make sure prompt_physical_chars and prompt_invis_chars_first_line - are reset to 0 if the prompt string passed to rl_expand_prompt is - NULL or empty - - 11/14 - ----- -{configure,config.h}.in - - check for `raise', define HAVE_RAISE if available - -lib/intl/dcigettext.c - - make sure `raise' is defined if HAVE_RAISE is not before - eval-plurah.h is included - -lib/malloc/trace.c - - put extern declaration for imalloc_fopen inside the MALLOC_TRACE - #ifdef - - 11/16 - ----- -lib/intl/Makefile.in - - make sure SHELL is defined to cpp - -lib/intl/dcigettext.c - - make sure we use getcwd() even if HAVE_GETCWD is not defined after - including config.h; if SHELL is defined, #define HAVE_GETCWD - - 11/18 - ----- -trap.[ch] - - new function, int signal_in_progress(int sig), returns TRUE if the - trap handler for signal SIG is currently executing - - 11/19 - ----- -redir.c - - slightly change do_redirection_internal to set the close-on-exec - flag for file descriptors > 2 used to save file descriptors < 2 - using explicit redirections (e.g., `exec 3>&1'). This keeps file - descriptors pointing to pipes from being left open but doesn't - change the shell's file descriptor semantics - - 11/20 - ----- -doc/{bash.1,bashref.texi} - - correct some minor typos, forwarded from doko@debian.org - - 11/22 - ----- -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - documented detail that yank-last-arg and yank-nth-arg use the history - arg expansion code (and, as a result, are subject to restrictions - of the history-comment character) - - 11/23 - ----- -execute_cmd.c - - changes so that BASH_COMMAND preserves its value into a DEBUG trap: - for commands, arithmetic for command expressions, select commands, - case commands, (( commands, [[ commands, simple commands - - 11/24 - ----- -doc/{bash.1,bashref.texi} - - changed description of `set' builtin slightly so that it is clear - that only variables are displayed in posix mode and that read-only - variables can't be reset by simply sourcing the output of `set' - -lib/sh/strftime.c - - don't try to redefine `inline' if it's already defined - - 11/26 - ----- -execute_cmd.c - - fix execute_function to check funcname_a after function execution, - since FUNCNAME can be changed or unset within a function - - 11/27 - ----- -builtins/evalfile.c - - make same changes as 11/26, this time to _evalfile - -execute_cmd.c - - change execute_function to run the return trap after a function - completes execution even if the shell is compiled without DEBUGGER - defined - -trap.c - - change reset_or_restore_signal_handlers so that the RETURN trap is - not inherited by command substitution when DEBUGGER is not defined - - 11/30 - ----- -lib/readline/misc.c - - fix memory leaks in _rl_free_history_entry and rl_maybe_replace_line - caused by not freeing `timestamp' member of history entry - - make sure timestamp is initialized to NULL in rl_maybe_save_line - - 12/1 - ---- -execute_cmd.c - - fix execute_function so a function calling `return' will run the - RETURN trap, if one's defined - -doc/{bash.1,bashref.texi} - - fix description of RETURN trap in various places to indicate that it's - only inherited by shell functions if function tracing is on globally - or has been enabled for that function - - fix documentation to indicate that the DEBUG and RETURN traps are - inherited under the same conditions - -execute_cmd.c - - a function does not inherit the RETURN trap if a DEBUG trap is - currently running - - 12/2 - ---- -lib/glob/xmbsrtowcs.c - - change xmbsrtowcs to handle the one case where malloc can fail - (though it should not matter) -- don't try to free a null pointer - - 12/9 - ---- -subst.c - - fix get_var_and_type to handle var[@], where `var' is a scalar - variable, identically to var -- all calling expansions can now - handle var[@] like var. Bug reported by agriffis@gentoo.org - - 12/10 - ----- -lib/readline/bind.c - - make new-style "\M-x" keybindings obey `convert-meta' settings - (bug reported by twaugh@redhat.com) - - 12/14 - ----- -builtins/set.def - - added description of `-' option to help text - -builtins/shopt.def - - fix bug that caused `gnu_errfmt' to not be compiled in unless - READLINE is defined - - 12/16 - ----- -subst.c - - fixed a typo in string_extract_verbatim in first call to MBLEN - (used `slen - 1' instead of `slen - i') - - 12/17 - ----- -subst.c - - avoid some calls to strlen if the value is only being used for - ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need - it unless multibyte characters are possible) - - change string_extract_verbatim so it takes the length of the string - as a parameter, so we don't have to recompute the length of the same - string over and over again when doing word splitting (that kills if - it's a long string) - - 12/18 - ----- -subst.c - - in string_list_dollar_star, make sure to null-terminate the - separator if the character is longer than one byte - - 12/22 - ----- -doc/{bash.1,bashref.texi} - - changed text in quoting section explaining that double quotes do - not prevent history expansion from taking place, and that backslashes - escaping ! are not removed - - 12/28 - ----- -shell.c - - set gnu_error_format to 1 if running under emacs. This should allow - the emacs `next-error' stuff to work, at least for interactive shells - -parse.y - - change yy_stream_get to set interrupt_immediately before calling - getc_with_restart when the shell is interactive. This avoids the - synchronization problem caused by the call to QUIT in read_a_line, - which results in the first character after a SIGINT/^C to be - dropped - - 12/30 - ----- -builtins/mkbuiltins.c - - changes to write long documentation to arrays as a single string by - default, rather than an array of strings -- enabled by default - - new option, -S, to restore old behavior of writing multiple strings - for long documentation - - changes to avoid filenames written when the separate-filenames option - (-H) has been supplied being run through gettext - -configure.in - - new cofiguration option, --enable-single-help-strings (on by default), - causes help text to be stored as a single string (or smaller set than - one string per line) - -builtins/Makefile.in - - pass `-S' to mkbuiltins if single-help-strings is turned off - -doc/bashref.texi - - documented new `single-help-strings' configure option - - 1/3/2005 - -------- -jobs.c - - make wait_for return a non-zero status if the job or processed - waited for is suspended. Returns 128 + stop signal. This fixes - the problem with `echo one && sleep 5 && echo two' displaying - `two' after the sleep is suspended - - 1/5 - --- -print_cmd.c - - change indirection_level_string so the code duplicates the first - character of $PS4 to indicate the indirection level, rather than - the first byte - - 1/8 - --- -variables.c - - new special variable hook function for COMP_WORDBREAKS; sets - rl_completer_word_break_characters back to NULL when the variable - is unset - - change bind_variable_value to understand dynamic variables with - assign_function set, and handle them correctly. If the variable is - being appended to, use make_variable_value to create the new - value - - change bind_variable_internal to understand dynamic variables with - assign_function set, and handle them the same way - - RANDOM and LINENO now get the integer attribute, so appending works - as expected - - ditto for HISTCMD, MAILCHECK, OPTIND - -lib/readline/display.c - - change _rl_make_prompt_for_search to set prompt_physical_chars - appropriately - - rl_save_prompt and rl_restore_prompt save and restore - prompt_prefix_length - - change redraw_prompt to use rl_save_prompt and rl_restore_prompt - - change rl_restore_prompt to set the `save' variables back to - NULL/0 so code can check whether or not the prompt has been saved - - change rl_message and rl_clear_message to save and restore the - prompt if the caller has not already done it (using a simple - semaphore-like variable) - - change rl_message to call expand_prompt, so that local_prompt and - local_prompt prefix are set before calling the redisplay functions, - in case the prompt is longer than a screenwidth (fixes bug - reported to debian by epl@unimelb.edu.au) - -lib/readline/doc/rltech.texi - - make sure to note that rl_save_prompt should be called before - rl_message, and rl_restore_prompt before rl_clear_message - -pcomplete.c - - make sure to save and restore the parser state around the call to - execute_shell_function in gen_shell_function_matches. Fixes bug - reported by a050106.1.keeLae3x@captaincrumb.com (cute) - -lib/readline/readline.c - - fix _rl_dispatch_subseq in the case where we're recursing back up - the chain (r == -2) and we encounter a key shadowed by a keymap, - but originally bound to self-insert. Calling rl_dispatch with - ANYOTHERKEY as the first argument will call rl_insert, but with - ANYOTHERKEY (256) as the char to insert. Use the shadow keymap - and set things up to dispatch to rl_insert with the shadowed key - as the argument. Fixes the bug reported by Thomas Glanzmann - (sithglan@stud.uni-erlangen.de) - - 1/13 - ---- -command.h - - new word flag: W_HASQUOTEDNULL - -make_cmd.c - - new function to allocate a WORD_DESC * without doing anything with a - containing string: alloc_word_desc - -make_cmd.h - - extern declaration for alloc_word_desc - -dispose_cmd.c - - new function to just free a WORD_DESC * without freeing the contained - string: dispose_word_desc - -dispose_cmd.h - - extern declaration for dispose_word_desc - -subst.c - - change some places to use alloc_word_desc - - make same changes to word_list_quote_removal as were made to - word_list_split - - set W_HASQUOTEDNULL when a word is created with w->word[0] == - CTLNUL and w->word[1] == '\0' - -subst.c - - parameter_brace_expand_word now returns a WORD_DESC * -- changed - callers to understand - - parameter_brace_expand_indir now returns a WORD_DESC * -- changed - callers to understand - - parameter_brace_expand_rhs now returns a WORD_DESC * -- changed - callers to understand - - remove W_HASQUOTEDNULL from a word's flags when remove_quoted_nulls - is called on the word's enclosed string - - 1/15 - ---- -subst.c - - param_expand now returns a WORD_DESC * -- changed callers to - understand - - parameter_brace_expand now returns a WORD_DESC * -- changed - callers to understand - - in expand_word_internal, only call remove_quoted_nulls after a word - is returned with W_HASQUOTEDNULL - - changes to pass W_HASQUOTEDNULL flag out of expand_word_internal; - changed callers to call remove_quoted_nulls only if return value has - W_HASQUOTEDNULL set. This is a mostly-complete fix for the - long-standing CTLNUL confusion between a quoted null expansion and - the expansion of a variable with a literal '\177' in its value - - change string_list_dollar_at to compute the separator character the - same way as string_list_dollar_star: using the already-computed - values generated in setifs() - - when expanding unquoted $*, if $IFS is empty, check whether or not - we're eventually going to split the results (e.g., on the rhs of an - assignment statement) and concatenate the positional parameters as - if the expansion were within double quotes if we're not going to - split - -tests/iquote.tests - - test cases based on old bug reports about the quoted-null vs. 0177 - problem the recent code fixes - - 1/16 - ---- -dispose_cmd.c - - set w->word to 0 before putting a WORD_DESC * back in the cache in - dispose_word_desc; changed callers to delete those assignments - -variables.c - - change assign_random and get_random_value so that the random number - generator only gets re-seeded once in a subshell environment, and - assigning a value to RANDOM counts as seeding the generator. This - makes the sequences a little more predictable - - 1/20 - ---- -lib/readline/history.c - - fix replace_history_entry, remove_history to return NULL if - passed index is < 0 - - 1/22 - ---- -lib/sh/netconn.c - - fix isnetconn() to understand that getpeername can return ENOTCONN - to indicate that an fd is not a socket - -configure.in - - set BUILD_DIR to contain backslashes to escape any spaces in the - directory name -- this is what make will accept in targets and - prerequisites, so it's better than trying to use double quotes - - set SIZE to the appropriate value if some cross-compiling tool - chain is being used; `size' by default (can be overridden by - SIZE environment variable) - -Makefile.in - - use $(SIZE) instead of size; set SIZE from configure - - 1/31 - ---- -arrayfunc.c - - in array_value_internal, return NULL right away if the variable's - value is NULL, instead of passing a null string to add_string_to_list - - 2/1 - --- -jobs.h - - new struct to hold stats and counters for child processes and jobs - - change some uses of global and static variables to use members of - new struct (struct jobstats) - - 2/2 - --- - -jobs.[ch] - - change PRUNNING to PALIVE - - new define INVALID_JOB - - new macro get_job_by_jid(ind), currently expands to jobs[ind] - - new define J_JOBSTATE, operates on a JOB * like JOBSTATE operates on - a job index - - new function, reset_job_indices, called from delete_job if - js.j_lastj or js.j_firstj are removed - - change various functions to keep counters and stats in struct jobstats - -pcomplete.c, builtins/common.c, builtins/{exit,fg_bg,jobs,kill,wait}.def - - change global variables (e.g., job_slots) to struct members - (e.g., js.j_jobslots) - - use INVALID_JOB define where appropriate - - use get_job_by_jid and J_JOBSTATE where appropriate - -trap.c - - change reset_or_restore_signal_handler to not free the exit trap - string if the function pointer is reset_signal, which is used when - the trap strings shouldn't be freed, like in command substitution - - 2/4 - --- -jobs.c - - new function, realloc_jobs_list, copies jobs array to newly-allocated - memory shrinking (or growing) size to have next multiple of JOB_SLOTS - greater than js.j_njobs - - change compact_jobs_list to just call reap_dead_jobs and then - realloc_jobs_list, simplifying it considerably - - discard_pipeline now returns `int': the number of processes freed - - slightly changed the logic deciding whether or not to call - compact_jobs_list: now non-interactive shells will compact the - list if it reaches MAX_JOBS_IN_ARRAY in size - -parse.y - - move test for backslash-newline after pop_string in shell_getc so - that things like - - ((echo 5) \ - (echo 6)) - - work right - - 2/8 - --- -jobs.h - - new structs for holding status of exited background processes, as - POSIX specifies - - new job flag: J_ASYNC - -jobs.c - - new functions to manipulate struct holding status of exited - background processes - - new members in struct jobstats to hold pointer to last created job - and last created asynchronous job - - initialize js.c_childmax in initialize_job_control - - if the `async' arg to stop_pipeline is non-null, set the J_ASYNC - flag in the job struct - - set js.j_last_made_job and js.j_last_asynchronous_job in - stop_pipeline - - new function: find_last_proc, returns the PROCESS * to the last proc - in a job's pipeline - - changed find_last_pid to call find_last_proc - - change delete_job to call bgp_add on the last proc of the job being - deleted - - change delete_all_jobs and wait_for_background_pids to call bgp_clear - - 2/9 - --- -jobs.c - - change wait_for_single_pid to look for pid in bgpids.list (using - bgp_search()) if find_pipeline returns NULL - - 2/10 - ---- -support/shobj-conf - - change the solaris-gcc stanza so that it auto-selects the appropriate - options for ld depending on which `ld' gcc says it's going to run - - 2/11 - ---- -jobs.h - - add support for PS_RECYCLED as a process state, add PRECYCLED macro - to test it. Change PALIVE and PRUNNING macros to not count processes - in PS_RECYCLED state - -execute_cmd.c - - restore use of last_pid as sentinel value; use NO_PID as sentinel - only if RECYCLES_PIDS is defined - -jobs.c - - change find_job to return a pointer to the PROCESS the desired pid - belongs to, analogous to find_pipeline returning pointer to JOB - - change find_job callers to add extra argument - - change running_only arguments to find_pipeline and find_job to - alive_only, since we don't want recycled pids returned here and it - better describes the result - - new function find_process, calls find_pipeline and searches the - returned pipeline for the PROCESS * describing the desired pid - - in make_child, if fork() returns the same pid as the value of - last_asynchronous_pid when RECYCLES_PIDS is defined, avoid pid - aliasing by resetting last_asynchronous_pid to 1 - - use PRUNNING instead of child->running, since we, for the most - part, don't want to consider recycled pids (e.g., in make_child()) - - call find_process instead of find_pipeline in waitchld() - - use PEXITED(p) instead of testing p->running == PS_DONE - - in make_child, call bgp_delete to remove a just-created pid from the - last of saved pid statuses - - in add_process, check whether or not pid being added is already in - the_pipeline or the jobs list (using find_process) and mark it as - recycled if so - - This set of fixes mostly came from Pierre Humblet - to fix pid aliasing and reuse problems on - cygwin - -variables.c - - set $_ from the environment if we get it there, set to $0 by - default if not in env - -doc/{bashref.texi,bash.1} - - a couple of clarifying changes to the description of $_ based on - comments from Glenn Morris - - 2/15 - ---- -shell.c - - use strstr instead of strmatch when checking whether $EMACS contains - `term' -- simpler and faster - - 2/18 - ---- -builtins/cd.def - - implement posix requirement that `pwd -P' set $PWD to a directory - name containing no symlinks - - add new function, setpwd(), just sets (and changes exported value) - of PWD - -doc/bashref.texi - - add note to posix mode section about pwd -P setting $PWD - -doc{bash.1,bashref.texi} - - added note that BASH_ARGC and BASH_ARGV are only set in extended - debug mode - - expand description of extdebug option to include everything changed - by extended debug mode - - 2/19 - ---- -pathexp.h - - new flag macro, FNMATCH_IGNCASE, evaluates to FNM_CASEFOLD if the - match_ignore_case variable is non-zero - -execute_cmd.c - - new variable, match_ignore_case - - change call to strmatch() in execute_case_command so it includes - FNMATCH_IGNCASE - -test.c - - change call to strmatch() in patcomp() so that pattern matching - calls for [[ ... ]] obey the match_ignore_case variable - -lib/sh/shmatch.c - - if match_ignore_case is set, enable REG_ICASE in the regexp match - flags - -builtins/shopt.def - - new settable option, `nocasematch', controls the match_ignore_case - variable. Currently alters pattern matching for case and [[ ... ]] - commands (==, !=, and =~ operators) - -doc/{bashref.texi,bash.1} - - updated descriptions of [[ and case to include reference to - nocasematch option - - 2/22 - ---- -builtins/mkbuiltins.c - - add `times' to the list of posix special builtins - - 2/23 - ---- -builtins/cd.def - - posix mode no longer turns on effect of -P option on $PWD if a - directory is chosen from CDPATH - -doc/bashref.texi - - clarified that in posix mode, reserved words are not alias expanded - only in a reserved word context - - removed item about cd, $CDPATH, and -P from posix mode section - - 2/24 - ---- -builtins/reserved.def - - minor cleanups to the description of `if' - - 3/2 - --- -subst.c - - change list_string and get_word_from_string to explicitly treat an - IFS character that is not space, tab, or newline *and any adjacent - IFS white space* as a single delimiter, as SUSv3/XPG6 says - -builtins/read.def - - check whether or not the number of fields is exactly the same as - the number of variables instead of just assigning the rest of the - line (minus any trailing IFS white space) to the last variable. - This parses a field and checks whether or not it consumes all of - the input (including any trailing field delimiters), falling back - to the previous behavior if it does not. This is what POSIX.2 - specifies, I believe (and the consensus of the austin-group list). - This requires a few tests in read.tests to be changed: backslashes - escaping IFS whitespace characters at the end of input cause the - whitespace characters to be preserved in the value assigned to the - variable, and the trailing non-whitespace field delimiter issue - - 3/7 - --- -configure.in - - add -D_POSIX_SOURCE to the LOCAL_CFLAGS for Interix - - 3/8 - --- -bashline.c - - make bash_directory_expansion a void function, since it doesn't have - any return value - - 3/9 - --- -builtins/read.def - - when testing for a pipe, use `fd' instead of hard-coding 0, since we - can read from other file descriptors now - -lib/sh/zread.c - - in zsyncfd, only set lind and lused to 0 if the lseek succeeds. - If the lseek fails, we might steal input from other programs, but - a failed lseek won't cause us to erroneously discard input - - 3/11 - ---- -builtins/evalstring.c - - don't allow parse_and_execute to short-circuit and call exec() if - the command's return value is being inverted - - 3/15 - ---- -builtins/printf.def - - new macro PC to call putchar and increment number of chars printed - - fixes bug in computation of value for %n format char - - `tw' is now a global var so printstr can modify it using PC() - - convert PF macro to use asprintf into a local buffer - Preparation for printf -v var - - add code to add the text printed to a `variable buffer' if -v option - supplied. The buffer grows as needed - - printf now takes a `-v var' option to put the output into the variable - VAR rather than sending it to stdout. It does not: - print partial output on error (e.g., format string error) - handle NULs in the variable value, as usual - - 3/16 - ---- -parse.y - - fix bug in prompt string decoding that caused a core dump when PS1 - contained \W and PWD was unset (null pointer deref) - -builtins/printf.def - - changed -v var behavior so it stores partial output into the named - variable upon an error - - 3/24 - ---- -lib/readline/bind.c - - bool_to_int now takes a `const char *' argument - -support/{printenv,recho,zecho}.c - - include config.h - - include "bashansi.h" for appropriate extern function declarations - -configure.in - - on MacOS X 10.4, compensate for loader not allowing static library - to override existing system dynamic library when compiling -dynamic - (affects readline and history libraries); so use absolute pathname - instead of -lreadline as library name - -lib/glob/{glob,sm_loop,smatch}.c - - make sure to cast arguments to (char *) or (unsigned char *) as - appropriate to avoid gcc4 warnings - -lib/glob/smatch.c - - collsym (single-byte version) now takes a (CHAR *) first argument to - match callers; cast argument to strncmp appropriately - -lib/sh/snprintf.c - - fix ldfallback and dfallback to handle width and precision specs in - the format passed to sprintf() - - fix STAR_ARGS macro to deal with negative field widths and precisions - - 3/25 - ---- -builtins/printf.def - - since a negative precision in a "x.x[fFgGeE]" format specifier should - be allowed but treated as if the precision were missing, let it - through - -lib/sh/snprintf.c - - fix * code to deal with a negative precision by treating it as if - the `.' and any digit string in the precision had not been specified - - fix format parsing code to deal with a negative inline precision, - e.g., "%4.-4f" by treating it as if the `'. and any digit string in - the precision had not been specified - - a `+' in a format specifier should only act as a flag if it comes - before a `.' (otherwise it is ignored) - -lib/readline/vi_mode.c - - new function, rl_vi_rubout, to rl_rubout as rl_vi_delete is to - rl_delete; saves deleted text for possible reinsertion as with any - vi-mode `text modification' command (fixes problem with `X' reported - by beat.wieland@gmx.ch) - -lib/readline/vi_keymap.c - - bind `X' in vi command mode to rl_vi_rubout - -lib/readline/funmap.c - - add a bindable `vi-rubout' command, runs rl_vi_rubout - -lib/readline/text.c - - rewrote internals of _rl_rubout_char to make structure cleaner - -lib/readline/{complete,text}.c - - changed code to remove #ifdef HANDLE_MULTIBYTE where possible - - 3/28 - ---- -lib/readline/examples/rl.c - - include instead of posixstat.h if READLINE_LIBRARY not - defined - -subst.c - - fix mbstrlen to treat invalid multibyte sequences as sequences of - single-byte characters - - 4/8 - --- -configure.in - - default SIZE to `:' if cross-compiling and an appropriate size for - the target is not found - - 4/11 - ---- -subst.c - - change match_upattern and match_wpattern to check whether or not the - supplied pattern matches anywhere in the supplied string, prefixing - and appending the pattern with `*' if necessary. If it doesn't we - can short-circuit immediately rather than waste time doing up to - N-1 unsuccessful calls to strmatch/wcsmatch (which kills for long - strings, even if the pattern is short) - - 4/12 - ---- -configure.in - - make sure the special case for MacOS X 10.4 only kicks in if the - `--with-installed-readline' option isn't supplied - -lib/readline/{callback,readline,signals}.c - - make sure rl_prep_term_function and rl_deprep_term_function aren't - dereferenced if NULL (as the documentation says) - -builtins/mkbuiltins.c - - don't bother with the special HAVE_BCOPY code; just use straight - assignments - -builtins/ulimit.def - - use _POSIX_PIPE_BUF in pipesize() if it's defined and PIPE_BUF is - not - - 4/13 - ---- -execute_cmd.c - - add cm_function_def to the list of control structures for which - child processes are forked when pipes come in or out - - 4/14 - ---- -builtins/read.def - - make sure the ^As added for internal quoting are not counted as - characters read when -n is supplied - - 4/20 - ---- -redir.c - - fix redir_open so that the repeat open on failure that AFS support - adds restores the correct value of errno for any error message - - 4/26 - ---- - -Makefile.in - - make sure mksignames and mksyntax are invoked with the $(EXEEXT) - extension - - 4/28 - ---- -lib/readline/readline.h - - new state variable: RL_STATE_CALLBACK, means readline is using the - callback interface - -lib/readline/callback.c - - set RL_STATE_CALLBACK in rl_callback_handler_install, unset in - rl_callback_handler_remove - - 4/29 - ---- -config-top.h - - DONT_REPORT_SIGPIPE is now on by default, since it apparently - interferes with scripts - -configure.in - - arrange things so PGRP_PIPE is defined on Linux-2.4+ and version 3 - kernels (ones that apparently schedule children to run before their - parent) - - 4/30 - ---- -builtins/caller.def - - add call to no_options, so it can handle `--' option - -doc/{bash.1,bashref.texi} - - note explicitly that test, :, true, and false don't understand -- - as meaning the end of options - - 5/7 - --- -support/shobj-conf - - darwin 8 needs the same LDFLAGS setting as darwin 7 - -parse.y - - in save_parser_state, make sure we cast the return value from - xmalloc() to the right type - - remove casts to (char *) in calls to yyerror() - -lib/readline/signals.c - - make SIGQUIT and SIGALRM code conditional on their definition - - use raise() to send a signal if we don't have kill() - -lib/readline/display.c - - some MS-DOS and MINGW changes from the cygwin and mingw folks - -config.h.in - - add HAVE_PWD_H for - - add HAVE_FCNTL, HAVE_KILL for respective system calls - - add HAVE_GETPW{ENT,NAM,UID} for passwd functions - -configure.in - - add check for - - add checks for fcntl, kill system calls - - add checks for getpw{ent,nam,uid} C library functions - - pass a flag indicating we're cross compiling through to - CFLAGS_FOR_BUILD in Makefile.in - -lib/readline/complete.c - - guard inclusion of with HAVE_PWD_H - - don't provide a missing declaration for getpwent if we don't have it - - guard calls to {get,end}pwent with HAVE_GETPWENT - -lib/readline/shell.c - - guard inclusion of with HAVE_PWD_H - - guard inclusion of with HAVE_FCNTL_H - - don't provide a missing declaration for getpwuid if we don't have it - - guard calls to getpwuid with HAVE_GETPWUID - - don't bother with body of sh_unset_nodelay_mode if we don't have - fcntl - -lib/tilde/tilde.c - - guard inclusion of with HAVE_PWD_H - - guard calls to getpw{nam,uid} with HAVE_GETPW{NAM,UID} - - guard calls to {get,end}pwent with HAVE_GETPWENT - -Makefile.in,builtins/Makefile.in - - @CROSS_COMPILE@ is substituted into CFLAGS_FOR_BUILD (equal to - -DCROSS_COMPILING if bash is being cross-compiled) - - 5/9 - --- -aclocal.m4 - - print version as `0.0' in RL_LIB_READLINE_VERSION if the - `rl_gnu_readline_p' variable isn't 1 (accept no imitations) - - 5/11 - ---- -lib/readline/rlprivate.h - - definition of a readline `search context', to be use for incremental - search initially and other types of search later. Original from - Bob Rossi as part of work on incremental searching problems when - using callback interface - -lib/readline/isearch.c - - functions to allocate and free search contexts - - function to take a search context and a character just read and - `dispatch' on it: change search parameters, add to search string, - search further, etc. - - isearch is now completely context-driven: a search context is - allocated and passed to the rest of the functions - - 5/12 - ---- -lib/readline/isearch.c - - an additional `isearch cleanup' function that can be called from - the callback interface functions when the search is to be terminated - - an additional `isearch callback' function that can be called from - rl_callback_read_char when input is available - - short-circuit from rl_search_history after initialization if - the callback interface is being used - -lib/readline/callback.c - - in rl_callback_read_char(), if RL_STATE_ISEARCH is set, call - _rl_isearch_callback to read the character and dispatch on it. - If RL_STATE_ISEARCH is unset when that call returns, and there is - input pending, call rl_callback_read_char() again so we don't - have to wait for new input to pick it up - -support/shobj-conf,configure.in - - add support for dragonfly bsd, the same as freebsd - - 5/13-5/15 - --------- -lib/readline/callback.c - - support for readline functions to `register' a function that will - be called when more input is available, with a generic data - structure to encapsulate the arguments and parameters. Primarily - intended for functions that read a single additional character, - like quoted-insert - - support for callback code reading numeric arguments in a loop, - using readline state and an auxiliary variable - - support for callback code performing non-incremental searches using - the same search context struct as the isearch code - -lib/readline/{callback,display}.c - - if a callback function sets `_rl_redisplay_wanted', the redisplay - function will be called as soon as it returns - -lib/readline/input.c - - changes to _rl_read_mbchar to handle reading the null multibyte - character and translating it into '\0' - -lib/readline/misc.c - - break rl_digit_loop() into component functions that can be called - individually from the callback code more easily - - share some of the functions with rl_digit_loop1() in vi_mode.c - -lib/readline/readline.h - - change the version #defines to reflect readline 5.1 - -lib/readline/search.c - - break code into smaller functions that can be composed to work with - the callback code more easily - -lib/readline/text.c - - in rl_quoted_insert(), don't mess around with the tty signals if - running in `callback mode' - -lib/readline/vi_mode.c - - changed set-mark, goto-mark, change-char, and char-search to work - when called by callback functions - - 5/17 - ---- - -lib/readline/rlprivate.h - - new struct declaration for a `reading key sequence' context - -lib/readline/readline.c - - new variable, _rl_dispatching_keymap, keeps track of which keymap - we are currently searching - - functions to allocate and deallocate contexts for reading multi-char - key sequences - - 5/18 - ---- -lib/readline/rlprivate.h - - new struct defining a context for multiple-key key sequences (the - base case is escape-prefixed commands) - -lib/readline/readline.c - - change structure of _rl_dispatch_subseq to allow for callback code - to use it - rudimentary support for supporting the existing - recursion using a stack of contexts, each with a reference to the - previous - - fix so that ^G works when in callback mode - -lib/readline/callback.c - - call the appropriate multiple-key sequence callback if the state is - set - - 5/19 - ---- -lib/readline/readline.c - - broke code from _readline_internal_char after call to rl_dispatch - out into separate function: _rl_internal_char_cleanup, callable by - other parts of the code - - change _rl_internal_char_cleanup to unset _rl_want_redisplay after - it calls (*rl_redisplay_func) - -lib/readline/callback.c - - call _rl_internal_char_cleanup from rl_callback_read_char when - appropriate - - 5/24 - ---- -lib/readline/callback.c - - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to - simulate the recursion used to decode multicharacter key sequences - (even things like ESC- as meta-prefix) - - call setjmp in rl_callback_read_char to give things like rl_abort - a place to jump, since the saved location in readline() will not - be valid - - keep calling _rl_dispatch_callback from rl_callback_read_char while - we are still decoding a multi-key key sequence - - keep calling readline_internal_char from rl_callback_read_char while - we are reading characters from a macro - -lib/readline/macro.c - - use a slightly different strategy upon encountering the end of a macro - when using the callback interface: when the last character of a - macro is read, and we are reading a command, pop the macro off the - stack immediately so the loop in rl_callback_read_char terminates - when it should - -lib/readline/readline.c - - if longjmp() is called and we end up at the saved location while - using the callback interface, just return -- don't go back into a - blocking read - - new function to dispose a chain of rl_keyseq_cxts - - only read new input in _rl_dispatch_callback if the KSEQ_DISPATCHED - flag is not set in the current keyseq context -- if it is, we are - traversing the chain back up and should use what we already saved - - use -3 as a magic value from _rl_dispatch_subseq to indicate that - we're allocating a new context and moving downward in the chain - (a special return value for the benefit of _rl_dispatch_callback) - -lib/readline/rlprivate.h - - new extern declaration for _rl_keyseq_chain_dispose - - 6/1 - --- -builtins/read.def - - fixed a bug that occurred when reading a set number of chars and - the nth char is a backslash (read one too many). Bug reported by - Chris Morgan - -execute_cmd.c - - fix execute_builtin so the `unset' builtin also operates on the - temporary environment in POSIX mode (as well as source and eval), - so that unsetting variables in the temporary environment doesn't - leave them set when unset completes. Report by Eric Blake - - -array.c - - fix from William Park for array_rshift when shifting right on an - empty array -- corrects calculation of array->max_index - -builtins/exec.def - - if an exec fails and the execfail option is set, don't call - restart_job_control unless the shell is interactive or job_control - is set - -jobs.c - - add a run-time check for WCONTINUED being defined in header files - but rejected with EINVAL by waitpid(). Fix from Maciej Rozycki - - - 6/20 - ---- -bashhist.c - - make sure calls to sv_histchars are protected by #ifdef BANG_HISTORY - - ditto for calls to history_expand_line_internal - - 6/23 - ---- -doc/bashref.texi - - remove extra blank lines in @menu constructs - -variables.c - - assign export_env to environ (extern char **) every time it changes - (mostly in add_to_export_env define), so maybe getenv will work on - systems that don't allow it to be replaced - - 6/29 - ---- -bashline.c - - in bash_directory_completion_hook, be careful about not turning `/' - into `//' and `//' into `///' for benefit of those systems that treat - `//' as some sort of `network root'. Fix from Eric Blake - - -lib/readline/complete.c - - in to_print, do the right thing after stripping the trailing slash - from full_pathname: // doesn't turn into /, and /// doesn't become - //. Fix from Eric Blake - - 6/30 - ---- -lib/malloc/trace.c - - include if it's available for a definition of size_t - -jobs.c - - in wait_for, if a child process is marked as running but waitpid() - returns -1/ECHILD (e.g., when the bash process is being traced by - strace), make sure to increment c_reaped when marking the child as - dead - - in without_job_control, make sure to close the pgrp pipe after - calling start_pipeline - - 7/1 - --- -Makefile.in - - only remove pathnames.h when the other files created by running - configure are removed (e.g., Makefile). Fix from William Park - -lib/sh/shquote.c - - since backslash-newline disappears when within double quotes, don't - add a backslash in front of a newline in sh_double_quote. Problem - reported by William Park - -jobs.c - - in notify_of_job_status, don't print status messages about - terminated background processes unless job control is active - -bashhist.c - - new variable, hist_last_line_pushed, set to 0 in really_add_history - (used by `history -s' code) - -bashhist.h - - new extern declaration for history -s - -builtins/history.def - - don't remove last history entry in push_history if it was added by - a call to push_history -- use hist_last_line_pushed as a sentinel - and set it after adding history entry. This allows multiple - calls to history -s to work right: adding all lines to the history - rather than deleting all but the last. Bug reported by Matthias - Schniedermeyer - - pay attention to hist_last_line_pushed in expand_and_print_history() - so we don't delete an entry pushed by history -s - - 7/4 - --- -print_cmd.c - - fix print_arith_for_command to not print so many blanks between - expressions in ((...)) - -command.h - - new word flag: W_DQUOTE. Means word should be treated as if double - quoted - -make_cmd.c - - add W_DQUOTE to word flags in make_arith_for_expr - -parse.y - - add W_DQUOTE to word flags for (( ... )) arithmetic commands - -subst.c - - don't perform tilde expansion on a word with W_DQUOTE flag set - - don't perform process substitution on a word with W_DQUOTE flag set - -arrayfunc.c - - expand an array index within [...] the same way as an arithmetic - expansion between (( ... )) - -lib/readline/input.c - - use getch() instead of read() on mingw - -lib/readline/readline.c - - add a few key bindings for the arrow keys on mingw - -lib/readline/rldefs.h - - if on mingw, define NO_TTY_DRIVER - -lib/readline/rltty.c - - compile in the stub functions for _rl_{disable,restore}_tty_signals - if on mingw - - compile in stub function for rl_restart_output on mingw - - make sure enough functions and macros are defined to compile if - NO_TTY_DRIVER is defined (lightly tested - builds on MacOS X, at - least) - - 7/7 - --- -command.h - - add a `flags' member to the PATTERN_LIST structure - -make_cmd.c - - intialize the `flags' member of a PATTERN_LIST when it's created - -builtins/psize.c - - protect extern declaration of errno with usual #ifdef errno - -configure.in, variables.c - - changes for QNX 6.x - - 7/9 - --- -parse.y - - fix parse_matched_pair to handle single and double quoted strings - inside old-style command substitution (``) since they can each - quote the ` and embedded $-expansions. Report by Eric Blake - - -{configure,Makefile}.in - - TILDE_LIB is now substituted into Makefile by configure - -configure.in - - if configuring --with-installed-readline on cygwin, set TILDE_LIB - to the empty string to avoid multiply-defined symbols. Cygwin - doesn't allow undefined symbols in dynamic libraries. Report by - Eric Blake - - 7/11 - ---- -input.c - - in duplicate_buffered_stream, don't call free_buffered_stream if the - two buffered streams share the same b_buffer object (e.g., if they - had already been duplicated with a previous call). Fixes Debian bug - reported by eero17@bigfoot.com - - 7/12 - ---- -shell.c - - make set_shell_name more resistant to a NULL argument - - in bind_args, use < instead of != when counting the arguments and - making the arg list - - in main(), make sure arg_index is not initialized to a value greater - than argc - - 7/14 - ---- -lib/readline/display.c - - in expand_prompt, don't set the location of the last invisible - char if the sequence is zero length (\[\]) - - 7/15 - ---- -doc/{bash.1,bashref.texi} - - document that the shell uses $TMPDIR when creating temporary files - - 7/20 - ---- -[bash-3.1-alpha1 frozen] - - 7/29 - ---- -builtins/evalstring.c - - make sure that parse_and_execute saves and restores the value of - loop_level, so loops in sourced scripts and eval'd strings don't - mess up the shell's parser state - -bashline.c - - change command_subst_completion_function to suppress appending - any character to a unique completion, instead of a space, unless - the last word in the quoted command substitution completes to a - directory name. In that case we append the expected slash - - 8/1 - --- -builtins/printf.def - - make sure variables are initialized if their values are tested later - -[bash-3.1-alpha1 updated and re-frozen] - - 8/2 - --- -variables.c - - make sure to call stifle_history with an `int' instead of an intmax_t. - Sometimes it makes a difference - - 8/3 - --- -[bash-3.1-alpha1 released] - -support/mksignames.c - - add `SIGSTKFLT' (RHE3) - - add `SIGXRES' (Solaris 9) - - 8/4 - --- -builtins/ulimit.def - - fix typo to make `x' the right option for locks - - add new options to short help synopsis - -variables.c - - use get_variable_value instead of direct reference to value_cell - in make_variable_value when appending to the current value, so - references to array variables without subscripts will be equivalent - to element 0 - -lib/readline/text.c - - rewrote rl_change_case to correctly change the case of multibyte - characters where appropriate - - 8/5 - --- -configure.in - - remove call to obsolete macro AC_ACVERSION - - remove special calls to AC_CYGWIN and AC_MINGW32; AC_CANONICAL_HOST - takes care of those cases - -general.h - - include `chartypes.h' for definition of ISALPHA - - fix definitions of ABSPATH and RELPATH for cygwin - - fix definition of ISDIRSEP for cygwin to allow backslash as a - directory name separator - - 8/9 - --- -builtins/setattr.def - - when setting a variable from the temporary environment in - set_var_attribute (e.g., `LC_ALL=C export LC_ALL'), make sure to - call stupidly_hack_special_variables after binding the variable in - the current context - -builtins/printf.def - - make sure to call stupidly_hack_special_variables if using `printf -v' - to put formatted output in a shell variable - - 8/11 - ---- -support/shobj-conf - - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults - to `lib' - - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library - version number - - new variable: SHLIB_DOT, separator character between library name and - suffix and version information (defaults to `.') - - new stanza for cygwin to generate windows-compatible dll - - 8/14 - ---- -variables.c - - new special variable function for Cygwin, so the export environment - is remade when HOME is changed. The environment is the only way to - get information from the shell to cygwin dlls, for instanace, when - bash is compiled to use an already-installed libreadline - -variables.h - - new extern declaration for sv_home - - 8/15 - ---- -lib/readline/display.c - - call init_line_structures from rl_redisplay if vis_lbreaks == 0 - to avoid consequences of a poorly-timed SIGWINCH - - 8/16 - ---- -subst.c - - fix logic for performing tilde expansion when in posix mode (don't - rely on W_TILDEEXP flag always being set, because it won't be when - expanding the RHS of assignment statement). Use W_TILDEEXP only - when deciding to expand a word marked as W_ASSIGNMENT that doesn't - precede a command name - - 8/17 - ---- -execute_cmd.c - - in execute_function, when subshell == 1, don't short-cut by using - the command contained in the group command -- if you do, any - redirections attached to the group command (function) don't get - executed - -general.h - - new #define, FS_READABLE, indicates file is readable by current - user - -findcmd.c - - rewrote file_status to use S_xxx POSIX file mode bits and to add - support for FS_READABLE (affects ./source and searching $PATH for - scripts whose names are supplied as arguments on the command line) - - change find_path_file to look for readable files -- source requires - it - - change find_in_path_element to do the right thing when FS_READABLE - is supplied as a flag - -doc/bashref.texi - - remove note about posix non-compliance in `.': we now require and - look for readable files when searching $PATH - - 8/20 - ---- -subst.c - - fix setifs to handle case where passed variable is non-zero but - v->value == 0 (as in an unset local variable); treat IFS as unset - in this case - -jobs.c - - in kill_pid, if asked to killpg a process or pgrp whose pgrp is - recorded as the same as the shell's, just call killpg and let the - chips fall where they may -- there may be other processes in that - pgrp that are not children of the shell, so killing each process - in the pipeline will not do a complete job, and killpg'ing each - such process will send too many signals in the majority of cases - -builtins/cd.def - - in posix mode, pwd needs to check that the value it prints and `.' - are the same file - -builtins/read.def - - if reading input from stdin in a non-interactive shell and calling - `read', call sync_buffered_stream to seek backward in the input - stream if necessary (XXX - should we do this for all shell builtins?) - - 8/23 - ---- -builtins/cd.def - - in posix mode, if canonicalization of the absolute pathname fails - because the path length exceeds PATH_MAX, but the length of the passed - (non-absolute) pathname does not, attempt the chdir, just as when - not in posix mode - -builtins/type.def - - don't have describe_command call sh_makepath if the full path found - is already an absolute pathname (sh_makepath will stick $PWD onto the - front of it) - - 8/24 - ---- - -jobs.c - - in posix mode, don't have start_job print out and indication of - whether the job started by `bg' is the current or previous job - - change start_job to return success if a job to be resumed in the - background is already running. This means that bg won't fail when - asked to bg a background job, as SUSv3/XPG6 requires - - new function, init_job_stats, to zero out the global jobstats struct - -{jobs,nojobs}.c - - change kill_pid to handle pids < -1 by killing process groups - -jobs.h - - extern declaration for init_job_stats - -lib/readline/history.c - - check whether or not the history list is null in remove_history - -builtins/history.def - - delete_last_history is no longer static so fc builtin can use it - -builtins/fc.def - - use free_history_entry in fc_replhist instead of freeing struct - members individually - - call delete_last_history from fc_replhist instead of using inline - code - - if editing (-l not specified), make sure the fc command that caused - the editing is removed from the history list, as POSIX specifies - -builtins/kill.def - - just call kill_pid with any pid argument and let it handle pids < -1 - This is the only way to let kill_pid know whether a negative pid or - a job spec was supplied as an argument to kill - -builtins/fg_bg.def - - force fg_bg to return EXECUTION_SUCCESS explicitly if called by bg - and start_job returns successfully - - bg now returns success only if all the specified jobs were resumed - successfully - -execute_cmd.c - - call init_job_stats from initialize_subshell to zero out the global - job stats structure - - 8/25 - ---- -bashline.c - - change vi_edit_and_execute_command to just call vi when in posix - mode, instead of checking $FCEDIT and $EDITOR - -lib/readline/search.c - - if in vi_mode, call rl_free_undo_list in make_history_line_current - to dispose of undo list accumulated while reading the search string - (if this isn't done, since vi mode leaves the current history - position at the entry which matched the search, the call to - rl_revert_line in rl_internal_teardown will mangle the matched - history entry using a bogus rl_undo_list) - - call rl_free_undo_list after reading a non-incremental search string - into rl_line_buffer -- that undo list should be discarded - -lib/readline/rlprivate.h - - add UNDO_LIST * member to search context struct - -lib/readline/isearch.c - - initialize UNDO_LIST *save_undo_list member of search context struct - - 8/27 - ---- -lib/readline/bind.c - - change rl_parse_and_bind to strip whitespace from the end of a - variable value assignment before calling rl_variable_bind - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - clarified the language concerning parsing values for boolean - variables in assignment statements - - 8/28 - ---- -lib/sh/pathphys.c - - fix small memory leak in sh_realpath reported by Eric Blake - - 8/31 - ---- -doc/bashref.texi - - add additional notes to posix mode section - - 9/3 - --- -parse.y - - if $'...' occurs within a ${...} parameter expansion within - double quotes, don't single-quote the expanded result -- the double - quotes will cause it to be expanded incorrectly - - 9/4 - --- -builtins/fc.def - - if STRICT_POSIX is defined, the posix mode default for the editor to - use is $FCEDIT, then ed - -shell.c - - if STRICT_POSIX is defined, initialize `posixly_correct' to 1 - -config.h.in - - add #undef STRICT_POSIX - - 9/5 - --- -configure.in - - add new option argument, --enable-strict-posix-default, configures - bash to be posix-conformant (including defaulting echo to posix - conformance) by default - -builtins/echo.def - - if STRICT_POSIX is defined, default echo to xpg-style - -doc/bashref.texi - - describe the --enable-strict-posix-default option to configure - - 9/10 - ---- -builtins/mkbuiltins.c - - change to not generate N_(""), because the translated empty string is - special to GNU gettext - - 9/13 - ---- -lib/readline/complete.c - - a negative value for rl_completion_query_items means to not ask - -lib/readline/doc/{{rltech,rluser}.texi,readline.3} - - documented new semantics for rl_completion_query_items/ - completion-query-items - - 9/14 - ---- -bashline.c - - bind M-TAB in emacs mode to dynamic-complete-history even if the - current binding is `tab-insert' (which is what it is by default), - not just if it's unbound - - 9/15 - ---- -eval.c - - call QUIT before calling dispose_command on current_command after - the `exec_done' label. If we dispose current_command first, the - longjmp might restore the value of current_command after we've - disposed it, and the subsequent call to dispose_command from the - DISCARD case will free memory twice - - 9/16 - ---- -lib/sh/strto[iu]max.c - - make sure the function being declared is not a cpp define before - defining it -- should fix problems on HP-UX - - 9/19 - ---- -Makefile.in - - make sure the binaries for the tests are at the front of $PATH - - 9/22 - ---- -parse.y - - new flag for parse_matched_pair: P_COMMAND, indicating that the - text being parsed is a command (`...`, $(...)) - - change calls to parse_matched_pair to include P_COMMAND where - appropriate - - if P_COMMAND flag is set and the text is unquoted, check for comments - and don't try to parse embedded quoted strings if in a comment (still - not exactly right yet) - - 9/24 - ---- -builtins/history.def - - if running history -n, don't count these new lines as history lines - for the current session if the `histappend' shell option is set. - If we're just appending to the history file, the issue that caused - history_lines_this_session to be recalculated doesn't apply -- the - history file won't be missing any entries - -lib/readline/isearch.c - - fix C-w handler for isearch string reader to handle multibyte chars - -lib/readline/rlmbutil.h - - new defines for _rl_to_wupper and _rl_to_wlower - -lib/readline/text.c - - use _rl_to_wupper and _rl_to_wlower as appropriate - - 9/26 - ---- -execute_cmd.c - - in shell_execve, if the exec fails due to E2BIG or ENOMEM, just print - the appropriate error message instead of checking out any interpreter - specified with #! - - 9/30 - ---- -bashhist.c - - make $HISTCMD available anytime remember_on_history is non-zero, - which indicates that we're saving commands to the history, and - let it evaluate to 1 if we're not - - 10/4 - ---- -lib/sh/snprintf.c - - in floating(), make sure d != 0 before calling chkinfnan -- gcc on the - version of Solaris 9 I have translates 0 to -inf on the call - -[bash-3.1-beta1 frozen] - - 10/6 - ---- -jobs.c - - set the_pipeline to NULL right away in cleanup_the_pipeline, and - dispose a copy of the pointer so we don't mess with the_pipeline - while we're in the process of destroying it - - block and unblock SIGCHLD around manipulating the_pipeline in - cleanup_the_pipeline - - 10/7 - ---- -[bash-3.1-beta1 released] - -lib/readline/isearch.c - - when switching directions, make sure we turn off the SF_REVERSE - flag in the search context's flags word if we're going from reverse - to forward i-search - -lib/readline/bind.c - - new function, rl_variable_value, returns a string representing a - bindable readline variable's value - - new auxiliary function, _rl_get_string_variable_value, encapsulates - everything needed to get a bindable string variable's value - - rewrote rl_variable_dumper to use _rl_get_string_variable_value - -lib/readline/readline.h - - new extern declaration for rl_variable_value - -lib/readline/doc/rltech.texi - - documented rl_variable_value - -bashline.c - - in command_word_completion_function, if readline sets - rl_completion_found_quote, but doesn't set rl_completion_quote_character, - we have an embedded quoted string or backslash-escaped character in - the passed text. We need to dequote that before calling - filename_completion_function. So far, this is in place only for - absolute program names (those containing a `/') - - in command_word_completion_function, use rl_variable_value to decide - whether or not we should ignore case, and use strncasecmp instead of - strncmp where appropriate - - 10/11 - ----- -builtins/fc.def - - fixed a typo when using POSIX_FC_EDIT_COMMAND - -redir.h - - new flag values for redirections: RX_INTERNAL and RX_USER (currently - unused) - -redir.c - - add_undo_redirect and add_undo_close_redirect now set RX_INTERNAL - flag when making new redirects - - in do_redirection_internal, only set file descriptors > 2 to CLEXEC - if they're marked as RX_INTERNAL - - 10/12 - ----- -jobs.c - - in wait_for_single_pid, if in posix mode, remove the waited-for pid - from the list of background pids, forgetting it entirely. POSIX - conformance tests test for this. - -lib/readline/{readline.h,vi_mode.c} - - new state flag, RL_STATE_VICMDONCE, set after entering vi command - mode the first time; reset on each call to readline() - - 10/13 - ----- -lib/readline/undo.c - - in rl_revert_line, make sure that revert-line in vi mode leaves - rl_point set to 0 no matter the state of the line buffer - -lib/readline/vi_mode.c - - when entering vi_command mode for the first time, free any existing - undo list so the previous insertions won't be undone by the `U' - command. This is how POSIX.2 says `U' should work (and the test - suite tests for it) - -lib/readline/bind.c - - change rl_parse_and_bind so only `set' commands involving boolean - readline variables have trailing whitespace stripped from the value - string - - 10/16 - ----- -lib/glob/sm_loop.c - - fix patscan() to correctly scan backslash-escaped characters - - 10/18 - ----- -lib/sh/{winsize.c,Makefile.in},{jobs,nojobs}.c,Makefile.in,externs.h - - moved get_new_window_size from jobs.c/nojobs.c to new file, - lib/sh/winsize.c, made function global - -{jobs,nojobs,sig}.c,{jobs,sig}.h - - moved SIGWINCH handling code to sig.c rather than duplicate it in - jobs.c and nojobs.c - - call set_sigwinch_handler from sig.c code rather than job control - signal initialization - -sig.[ch] - - new variable, sigwinch_received, acts like interrupt_state for - SIGWINCH, set by sigwinch_sighandler. sigwinch_sighandler no longer - calls get_new_window_size - -parse.y - - add call to get_new_window_size if sigwinch_received at top of - shell_getc - - 10/19 - ----- -lib/malloc/malloc.c - - to avoid orphaning memory on free if the right bucket is busy, use a - new function xplit(mem, bucket) to split the block into two or more - smaller ones and add those to the right bucket (appropriately marking - it as busy) - - audit bsplit(), bcoalesce(), and xsplit() for proper use of busy[], - since they're dealing with two separate buckets - - 10/22 - ----- -subst.c - - new flag for string_extract: EX_REQMATCH, means to return an error - if a matching/closing character is not found before EOS - - new static flag variables: extract_string_error and extract_string_fatal - - change expand_word_internal to check for new error returns from - string_extract and return errors if appropriate - - 10/23 - ----- -builtins/cd.def - - make sure we free TDIR in change_to_directory after calling - set_working_directory (which allocates new memory) and other places - we short-circuit and return - - 10/24 - ----- -subst.c - - modified fix from 10/22 to allow bare ` to pass through (for - some backwards compatibility and more correctness) - - 10/27 - ----- -conftypes.h - - make MacOS X use the RHAPSODY code that gets HOSTTYPE, et al. - at build rather than configure time, to support universal binaries - (fix from llattanzi@apple.com) - - 10/30 - ----- -builtins/evalstring.c - - make sure we don't turn on CMD_NO_FORK in parse_and_execute if - we're running a trap command on signal receipt or exit - -execute_cmd.c - - in shell_execve, improve the error message a little bit if the - interpreter name in a #! exec header ends with a ^M (as in a DOS- - format file) - - 11/1 - ---- -lib/readline/vi_mode.c - - fix vi-mode `r' command to leave the cursor in the right place - -[bash-3.1-rc1 frozen] - - 11/5 - ---- -execute_cmd.c - - make sure a DEBUG trap doesn't overwrite a command string passed to - make_child in execute_simple_command - -bashline.c - - rearrange some code in bash_quote_filename so filenames with leading - tildes containing spaces aren't tilde-expanded before being - returned to the caller - - 11/6 - ---- -lib/readline/display.c - - when deciding where to move the cursor in rl_redisplay and needing - to move the cursor back after moving it vertically and compensate - for invisible characters in the prompt string, make sure that - _rl_last_c_pos is treated as an absolute cursor position in a - multibyte locale and the wrap offset (number of invisible characters) - is added explicitly when deciding how many characters to backspace - - 11/10 - ----- -lib/readline/terminal.c - - _rl_set_screen_size now interprets a lines or columns argument < 0 - as an indication not to change the current value - - 11/11 - ----- - -lib/readline/terminal.c - - new function, rl_reset_screen_size, calls _rl_get_screen_size to - reset readline's idea of the terminal size - - don't call _rl_get_screen_size in _rl_init_terminal_io if both - _rl_screenheight and _rl_screenwidth are > 0 - - don't initialize _rl_screenheight and _rl_screenwidth to 0 in - _rl_init_terminal_io; let caller take care of it - - set _rl_screenheight and _rl_screenwidth to 0 before calling - _rl_init_terminal_io - -lib/readline/readline.h - - new extern declaration for rl_reset_screen_size - -lib/readline/doc/rltech.texi - - documented rl_reset_screen_size - -variables.c - - if readline is being used, compile in a special var function for - assignments to LINES and COLUMNS that calls rl_set_screen_size or - rl_reset_screen_size as appropriate. Only do this in posix mode - and only when STRICT_POSIX is defined at compile time - - new semaphore variable, winsize_assignment, set while doing an - assignment to LINES or COLUMNS - - new variable, winsize_assigned, says LINES or COLUMNS was assigned - to or found in the environment - - if in the middle of an assignment to LINES or COLUMNS, make - sh_set_lines_and_columns a no-op - -lib/sh/winsize.c - - get_new_window_size now takes two int * arguments, to return the - screen dimensions - -externs.h - - change extern declaration for get_new_window_size - -{jobs,nojobs}.c, parse.y - - change callers of get_new_window_size - - 11/12 - ----- -lib/readline/terminal.c - - new variable, rl_prefer_env_winsize, gives LINES and COLUMNS - precedence over values from the kernel when computing window size - -lib/readline/readline.h - - extern declaration for rl_prefer_env_winsize - -lib/readline/doc/rltech.texi - - document rl_prefer_env_winsize - - 11/13 - ----- -lib/readline/rltty.c - - change rl_prep_terminal to make sure we set and reset the tty - special characters in the vi insertion keymap if in vi mode. This - matters if we get accept-line for the previous line while in vi - command mode - - 11/14 - ----- -builtins/pushd.def - - make sure any call to cd_builtin includes a leading `--' from the - argument list (or constructs one) - - 11/16 - ----- -pcomplete.c - - fix small memory leak in gen_wordlist_matches - -[bash-3.1-rc2 frozen] - - 11/21 - ----- -[bash-3.1-rc2 released] - - 11/23 - ----- -lib/readline/display.c - - changes to rl_redisplay to compensate for update_line updating - _rl_last_c_pos without taking invisible characters in the line into - account. Important in multibyte locales where _rl_last_c_pos is an - absolute cursor position - - changes to _rl_move_cursor_relative to account for _rl_last_c_pos - being an absolute cursor position in a multibyte character locale - - rewrote _rl_move_cursor_relative to make it a little simpler - - 11/29 - ----- -lib/readline/display.c - - changes to rl_redisplay and update_line for update_line to communicate - upward that it took the number of invisible characters on the current - line into account when modifying _rl_last_c_pos - - in update_line, adjust _rl_last_c_pos by wrap_offset before calling - _rl_move_cursor_relative, so we pass correct information about the - true cursor position - - 12/1 - ---- -configure.in - - changed release status to `release' - -[bash-3.1 frozen] - - 12/8 - ---- -[bash-3.1 released] - - 12/9 - ---- -doc/{bash.1,version.texi},lib/readline/doc/version.texi - - remove `beta1' from man page footer and texinfo documents - -variables.c - - make sure winsize_assignment is protected by #ifdef READLINE, so - minimal shell will compile - -builtins/read.def - - make sure error cases free memory and run any unwind-protects to - avoid memory leaks - - 12/10 - ----- -execute_cmd.c - - change execute_command_internal to set $PIPESTATUS for ((...)) and - [[ ... ]] commands - -doc/{bash.1,bashref.texi,version.texi} - - add documentation for ulimit -[iqx] and bump revision date - - 12/12 - ----- -parse.y - - make sure parse_compound_assignment saves and restores the - PST_ASSIGNOK parser state flag around its calls to read_token. - Fixes bug reported by Mike Frysinger - - 12/13 - ----- -parse.y - - change parse_compound_assignment to save and restore the value of - last_read_token. Not sure why it was set unconditionally in the - first place after parsing the complete compound assignment - - 12/14 - ----- -lib/readline/text.c - - don't use return value of rl_kill_text (which always succeeds and - returns the number of characters killed) in rl_delete as an indication - of success or failure - - ditto for return value of rl_delete_text - -lib/readline/readline.c - - don't return the value of the called readline function as the return - value from _rl_dispatch_subseq; -1 means something different to the - callers (return 0 all the time to indicate that a readline function - was found and dispatched). Fix from Andreas Schwab for - bug in callback interface first reported by Mike Frysinger - -execute_cmd.c - - fixed a typo in execute_case_command - - 12/15 - ----- -aclocal.m4 - - add check for wctype() to BASH_CHECK_MULTIBYTE, define HAVE_WCTYPE - -config.h.in - - add HAVE_WCTYPE #define - -config-bot.h - - add HAVE_WCTYPE to the set of checks for HANDLE_MULTIBYTE. This - should catch the deficient NetBSD multibyte support - - 12/16 - ----- -parse.y - - use CTLESC instead of literal '\001' when decode_prompt_string - prefixes RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE - - 12/20 - ----- -lib/readline/display.c - - don't treat RL_PROMPT_START_IGNORE specially inside a sequence of - ignored characters - - keep track of the start of the current sequence of ignored - characters; make sure that an empty sequence of such characters - really is an empty sequence, not one that happens to end with '\001' - (RL_PROMPT_START_IGNORE) - - 12/21 - ----- -subst.c - - change expand_word_internal to process rest of `tilde-word' as a - regular part of the word if tilde expansion leaves the tilde-word - unchanged. This means that ~$USER expands to ~chet, which seems - more intuitive, and is effectively what bash-3.0 did - - 12/23 - ----- -subst.c - - when making a local array variable in do_compound_assignment, make - sure that we don't use a variable of the same name from a previous - context - -doc/bash.1 - - documented expansions for word and patterns in case statement - -builtins/ulimit.def,doc/{bashref.texi,bash.1} - - added new -e and -r (nice and rtprio) options to ulimit; documented - them - - 12/26 - ----- -variables.c - - use `hmax' instead of `num' in sv_histsize to avoid integer overflow - problems with intmax_t - -builtins/read.def - - add unwind-protect to restore rl_attempted_completion_function in - case of a timeout - -{bashline,variables}.c - - move initialization of HISTSIZE from initialization path to - load_history, so it can be overridden by a value assigned in a - startup file - -lib/readline/misc.c - - add a missing `return r' so that rl_digit_loop returns a meaningful - value - -lib/readline/{bind,callback,display,isearch,rltty,search,text,vi_mode}.c - - minor cleanups to satisfy compiler warnings, mostly removing unused - variables - - 12/27 - ----- -support/Makefile.in - - add LIBS_FOR_BUILD support; defaults to ${LIBS} - -Makefile.in - - add LIBS_FOR_BUILD with no default value; use when linking programs - using CC_FOR_BUILD (e.g., bashversion) - - 12/28 - ----- -lib/readline/bind.c - - fix rl_translate_keyseq bad translation of \M-\C-x sequences - -execute_cmd.c - - in execute_arith_command, if the expression expands to more than one - word, make sure we join the words into a single string and pass the - entire thing to evalexp() - -expr.c - - new functions: _is_arithop(c), returns true if C is a valid single- - character arithmetic operator; _is_multiop(c), returns true if C is - a token corresponding to a valid multi-character arithmetic operator - - if we encounter a character that isn't a valid arithmetic - operator, throw an error. Try to be intelligent about what type of - error message to print - -subst.c - - new function, expand_arith_string, calls expand_string_if_necessary; - used where an arithmetic expression needs to be expanded - -subst.h - - new extern declaration for expand_arith_string - -arrayfunc.c - - in array_expand_index, call expand_arith_string to expand the - subscript in a fashion consistent with other arithmetic expressions - -subst.c - - fix parameter_brace_patsub so that we don't try to anchor the pattern - at the beginning or end of the string if we're doing global - replacement -- that combination doesn't doesn't make sense, and - the changed behavior is compatible with ksh93 - -doc/{bash.1,bashref.texi} - - changed description of pattern substitution to match the new - semantics - -tests/new-exp.tests - - change tests to remove all ${pat//#rep} and ${pat//%rep} - expansions, since they don't mean the same thing anymore - - 12/29 - ----- -support/signames.c - - new file, initialize_signames() function from old mksignames.c. This - file builds the signal_names array - -support/mksignames.c - - strip out initialize_signames(), move to signames.c. This file only - writes signames.h - - set up to only write a stub signames.h if CROSS_COMPILING is defined, - with extern declaration for initialize_signames - - if not cross compiling, #define initialize_signames to nothing - -Makefile.in - - mksignames is now linked from mksignames.o and buildsignames.o - - add rules to build signames.o, assuming we're building it as part - of the shell (cross-compiling) - -trap.c - - call initialize_signames from initialize_traps - -configure.in - - set SIGNAMES_O to nothing (normal) or signames.o (cross-compiling), - substitute into Makefile - - don't set SIGNAMES_H if cross-compiling any more - - 12/30 - ----- -command.h - - new word flag: W_NOPROCSUB, inhibits process substitution on a word - -subst.c - - change expand_word_internal to suppress process substitution if the - word has the W_NOPROCSUB flag - -shell.c - - --wordexp turns on W_NOPROCSUB in addition to W_NOCOMSUB - -subst.c - - change string_list_dollar_at and string_list_dollar_star so that - MB_CUR_MAX is used to size an array only when using gcc, since gcc - can handle non-constant array sizes using a mechanism like alloca. - Other compilers, e.g. Sun's compiler, do not implement that - extension - - 12/31 - ----- -builtins/mkbuiltins.c - - when cross-compiling, don't include , since it's for the - target rather than the host system. Instead, choose a reasonable - set of default #defines based on a minimal POSIX system - -jobs.c - - change find_process to handle a NULL return value from find_pipeline - - return immediately from delete_job if jobs[index] is already NULL or - if it has a null pipeline associated with it - - in delete_job, if find_last_proc returns NULL, don't try to call - bgp_delete - - 1/7 - --- -doc/bash.1 - - patch from Tim Waugh to replace some literal single quotes with - \(aq, the groff special character for it - -jobs.c - - in realloc_jobs_list, make sure to zero out slots after j_lastj - in the new list - - 1/9 - --- -support/mksignames.c - - make sure to include to get right value of NSIG from - (usually) - - 1/10 - ---- -parse.y - - when calling parse_matched_pair on a $(...) command substitution, - don't pass the P_DQUOTE flag so that single quotes don't get - stripped from $'...' inside the command substitution. Bug report - and fix from Mike Stroyan - -jobs.c - - start maintaining true count of living children in js.c_living - - call reset_current in realloc_jobs_list, since old values for current - and previous job are most likely incorrect - - don't allocate a new list in realloc_jobs_list if the old size and - new size are the same; just compact the existing list - - make sure realloc_jobs_list updates value of js.j_njobs - - add some more itrace messages about non-null jobs after j_lastj in - jobs array - - 1/11 - ---- -bashjmp.h - - new value for second argument to longjmp: SIGEXIT. Reserved for - future use - - 1/12 - ---- -jobs.c - - add logic to make_child to figure out when pids wrap around - - turn second argument to delete_job into flags word, added flag to - prevent adding proc to bgpids list - - 1/13 - ---- -lib/readline/vi_mode.c - - move code that moves forward a character out of rl_vi_append_mode - into a separate function, _rl_vi_append_forward - - change _rl_vi_append_mode to save `a' as the last command, so it - can be redone properly - - new function _rl_vi_backup, moves point back a character taking - multibyte locales into account - - change rl_vi_redo to handle redoing an `a' command specially -- - it should be redone like `i' but after moving forward a character - - change rl_vi_redo to use _rl_vi_backup to move point backward - after redoing `i' or `a' - -jobs.c - - new function, delete_old_job (pid), checks whether or not PID is in - a job in the jobs list. If so, and the job is dead, it just removes - the job from the list. If so, and the job is not dead, it zeros - the pid in the appropriate PROCESS so pid aliasing doesn't occur - - make_child calls delete_old_job to potentially remove an already-used - instance of the pid just forked from the jobs list if pids have - wrapped around. Finally fixes the bug reported by Tim Waugh - - -trap.c - - new define, GETORIGSIG(sig), gets the original handling for SIG and - sets SIG_HARD_IGNORE if that handler is SIG_IGN - - call GETORIGSIG from initialize_traps, get_original_signal, and - set_signal - -jobs.c - - in wait_for, if the original SIGINT handler is SIG_IGN, don't set - the handler to wait_sigint_handler. This keeps scripts started in - the background (and ignoring SIGINT) from dying due to SIGINT while - they're waiting for a child to exit. Bug reported by Ingemar - Nilsson - -lib/readline/vi_mode.c - - don't save text to buffer unless undo pointer points to a record of - type UNDO_INSERT; zero it out instead. This fixes bug reported by - Craig Turner with redoing `ctd[ESC]' (empty - insert after change to) - -shell.c - - change set_shell_name so invocations like "-/bin/bash" are marked as - login shells - -doc/bash.1 - - add note about destroying functions with `unset -f' to the section - on shell functions - -lib/readline/terminal.c - - if readline hasn't been initialized (_rl_term_autowrap == -1, the - value it's now initialized with), call _rl_init_terminal_io from - _rl_set_screen_size before deciding whether or not to decrement - _rl_screenwidth. Fixes bug from Mike Frysinger - - 1/14 - ---- -lib/readline/input.c - - allow rl_set_keyboard_input_timeout to set the timeout to 0, for - applications that want to use select() like a poll without any - waiting - -lib/readline/doc/rltech.texi - - documented valid values for timeout in rl_set_keyboard_input_timeout - -jobs.c - - in stop_pipeline, don't have the parent shell call give_terminal_to - if subshell_environment contains SUBSHELL_ASYNC (no background - process should ever give the terminal to anything other than - shell_pgrp) - - in make_child, don't give the terminal away if subshell_environment - contains SUBSHELL_ASYNC - - 1/15 - ---- -subst.c - - in parameter_brace_expand, if extracting ${#varname}, only allow - `}' to end the expansion, since none of the other expansions are - valid. Fixes Debian bug reported by Jan Nordhorlz - - 1/17 - ---- -parse.y - - in parse_matched_pair, protect all character tests with the MBTEST - macro - - in parse_dparen, take out extra make_word after call to alloc_word_desc - (mem leak) - - 1/18 - ---- -parse.y - - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive - parse_matched_pair call when encountering a single or double quote - inside a ``-style command substitution - -execute_cmd.c - - add call to QUIT at beginning of execute_command_internal; better - responsiveness to SIGINT - - 1/21 - ---- -lib/readline/bind.c - - change rl_invoking_keyseqs_in_map to honor the setting of - convert-meta when listing key bindings, since if convert-meta is off, - using '\M-' as the prefix for bindings in, for instance, - emacs-escape-keymap, is wrong. This affects `bind -p' output - - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for - ESC - -execute_cmd.c - - add call to QUIT at end of execute_command - - 1/23 - ---- -lib/readline/display.c - - changed two places in update_line where a check of whether the cursor - is before the last invisible character in the prompt string to - differentiate between the multibyte character case (where - _rl_last_c_pos is a physical cursor position) and the single-byte - case (where it is a buffer index). This prevents many unnecessary - \r-redraw the line sequences. Reported by Dan Jacobson. - - 1/24 - ---- -quit.h - - wrap QUIT macro in do...while(0) like other compound statement - macros - - CHECK_TERMSIG define (placeholder for now); future use will be to - handle any received signals that should cause the shell to - terminate (e.g., SIGHUP) - -{input,jobs,nojobs}.c - - add calls to CHECK_TERMSIG where appropriate (reading input and - waiting for children) - - include quit.h if necessary - - 1/25 - ---- -parse.y - - undo change that makes `)' in a compound assignment delimit a token. - It messes up arithmetic expressions in assignments to `let', among - other things - -sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def - - rename termination_unwind_protect to termsig_sighandler - -sig.c - - split termsig_sighandler into two functions: termsig_sighandler, which - runs as a signal handler and sets a flag noting that a terminating - signal was received, and termsig_handler, which runs when it is `safe' - to handle the signal and exit - - new terminate_immediately variable, similar to interrupt_immediately - - termsig_sighandler calls termsig_handler immediately if - terminate_immediately is non-zero - -quit.h - - change CHECK_TERMSIG macro to check terminating_signal and call - termsig_handler if it's non-zero - - add same check of terminating_signal and call to termsig_handler to - QUIT macro - -{jobs,nojobs}.c - - change call to termsig_sighandler to call termsig_handler directly, - as was intended - -parse.y,builtins/read.def - - set terminate_immediately to non-zero value when reading interactive - input, as is done with interrupt_immediately - - 1/26 - ---- -doc/{bash.1,bashref.texi} - - reworded the POSIX standard references to remove mention of POSIX.2 - or 1003.2 -- it's all the 1003.1 standard now. Recommended by - Arnold Robbins - - 1/27 - ---- -lib/readline/complete.c - - move call to filename dequoting function into - rl_filename_completion_function; call only if directory completion - hook isn't set. This means that directory-completion-hook now needs - to dequote the directory name. We don't want to dequote the directory - name before calling the directory-completion-hook. Bug reported by - Andrew Parker - -bashline.c - - add necessary directory name dequoting to bash_directory_completion_hook - and bash_directory_expansion - -lib/readline/doc/rltech.texi - - add note to description of rl_directory_completion_hook that it - needs to dequote the directory name even if no other expansions are - performed - - 1/28 - ---- -braces.c - - make sure that we skip over braces that don't start a valid matched - brace expansion construct in brace_expand -- there might be a valid - brace expansion after the unmatched `{' later in the string - - brace_gobbler now checks that when looking for a `}' to end a brace - expansion word, there is an unquoted `,' or `..' that's not inside - another pair of braces. Fixes the a{b{c,d}e}f problem reported by - Tim Waugh - -builtins/declare.def - - when not in posix mode, and operating on shell functions, typeset - and declare do not require their variable operands to be valid - shell identifiers. The other `attribute' builtins work this way. - Fixes inconsistency reported by Mike Frysinger - -{configure,config.h}.in - - add test for setregid, define HAVE_SETREGID and HAVE_DECL_SETREGID - as appropriate - - add test for eaccess, define HAVE_EACCESS if found - -lib/sh/eaccess.c - - new file, with sh_stat and sh_eaccess functions, moved from test.c - - renamed old sh_eaccess as sh_stataccess, since it uses the stat(2) - information to determine file accessibility - - new function, sh_euidaccess, to call when uid != euid or gid != egid; - temporarily swaps uid/euid and gid/egid around call to access - - rewrote sh_eaccess to call eaccess, access, sh_euidaccess or - sh_stataccess as appropriate. access(2) will take into account - things like ACLs, read-only file systems, file flags, and so on. - -lib/sh/Makefile.in,Makefile.in - - add necessary entries for eaccess.[co] - -test.c - - change calls to test_stat to call sh_stat - -{test,general}.c - - change calls to test_eaccess to call sh_eaccess - -externs.h - - new extern declaration for sh_eaccess - -test.[ch] - - remove test_stat and test_eaccess - - 1/29 - ---- -braces.c - - make change from 1/28 dependant on CSH_BRACE_COMPAT not being - defined (since old bash behavior is what csh does, defining - CSH_BRACE_COMPAT will produce old bash behavior) - - 1/30 - ---- -bashline.c - - last argument of bash_default_completion is now a flags word: - DEFCOMP_CMDPOS (in command position) is only current value - - attempt_shell_completion now computes flags before calling - bash_default_completion - - if no_empty_command_completion is set, bash does not attempt command - word completion even if not at the beginning of the line, as long - as the word to be completed is empty and start == end (catches - beginning of line and all whitespace preceding point) - - 2/4 - --- -lib/readline/display.c - - change _rl_make_prompt_for_search to use rl_prompt and append the - search character to it, so the call to expand_prompt in rl_message - will process the non-printing characters correctly. Bug reported - by Mike Stroyan - - 2/5 - --- -lib/readline/display.c - - fix off-by-one error when comparing against PROMPT_ENDING_INDEX, - which caused a prompt with invisible characters to be redrawn one - extra time in a multibyte locale. Change from <= to < fixes - multibyte locale, but I added 1 to single-byte definition of - PROMPT_ENDING_INDEX (worth checking) to compensate. Bug reported - by Egmont Koblinger - - 2/8 - --- -lib/readline/terminal.c - - call _emx_get_screensize with wr, wc like ioctl code for consistency - - new function, _win_get_screensize, gets screen dimensions using - standard Windows API for mingw32 (code from Denis Pilat) - - call _win_get_screensize from _rl_get_screen_size on mingw32 - -lib/readline/rlconf.h - - define SYS_INPUTRC (/etc/inputrc) as system-wide default inputrc - filename - -support/shobj-conf - - changes to make loadable builtins work on MacOS X 10.[34] - -builtins/pushd.def - - changes to make it work as a loadable builtin compiled with gcc4 - - 2/9 - --- -lib/readline/bind.c - - add SYS_INPUTRC as last-ditch default (if DEFAULT_INPUTRC does not - exist or can't be read) in rl_read_init_file - -lib/readline/doc/rluser.texi - - add description of /etc/inputrc as ultimate default startup file - - 2/10 - ---- -lib/readline/bind.c - - fix problem with rl_function_of_keyseq that returns a non-keymap - bound to a portion of the passed key sequence without processing - the entire thing. We can bind maps with existing non-map - functions using the ANYOTHERKEY binding code. - -variables.c - - shells running in posix mode do not set $HOME, as POSIX apparently - requires - - 2/15 - ---- -braces.c - - mkseq() now takes the increment as an argument; changed callers - - 2/16 - ---- -builtins/hash.def - - print `hash table empty' message to stdout instead of stderr - - 2/17 - ---- -lib/readline/readline.c - - when resetting rl_prompt in rl_set_prompt, make sure rl_display_prompt - is set when the function returns - - 2/18 - ---- -lib/readline/display.c - - further fixes to _rl_make_prompt_for_search from Eric Blake to deal - with multiple calls to expand_prompt - - 2/21 - ---- -builtins/hash.def - - don't print `hash table empty' message in posix mode - - 2/27 - ---- -lib/glob/sm_loop.c - - change extmatch() to turn off FNM_PERIOD in flags passed to recursive - calls to gmatch() when calling it with a substring after the start - of the string it receives. Changed `+', `*', `?, `@', and `!' cases - to do the right thing. Fixes bug reported by Benoit Vila - - -braces.c - - add QUIT; statements to mkseq to make large sequence generation - interruptible - - 2/28 - ---- -lib/glob/glob.c - - initialize nalloca in glob_vector - - 3/1 - --- -lib/glob/glob.c - - in glob_vector, when freeing up the linked list after some error, - make sure to set `tmplink' to 0 if `firstlink' is set to 0, else we - get multiple-free errors - - 3/5 - --- -trap.c - - inheritance of the DEBUG, RETURN, and ERR traps is now dependent - only on the `functrace' and `errtrace' shell options, as the - documentation says, rather than on whether or not the shell is in - debugging mode. Reported by Philip Susi - -parse.y - - in parse_matched_pair, don't recursively parse ${...} or other - ${...} constructs inside `` - - in parse_matched_pair, remove special code that recursively parses - quoted strings inside `` constructs. For Bourne shell compatibility - - 3/6 - --- -builtins/pushd.def - - let get_directory_stack take take an `int flags' argument and convert - $HOME to ~ if flags&1 is non-zero - -builtins/common.h - - change extern declaration for get_directory_stack - -variables.c - - call get_directory_stack with an arg of 0 to inhibit converting - $HOME to ~ in the result. Fixes cd ${DIRSTACK[1]} problem - reported by Len Lattanzi (cd fails because - the tildes won't be expanded after variable expansion) - -jobs.c - - changed hangup_all_jobs slightly so stopped jobs marked J_NOHUP - won't get a SIGCONT - -general.c - - changed check_binary_file() to check for a NUL byte instead of a - non-printable character. Might at some point want to check - entire (possibly multibyte) characters instead of just bytes. Hint - from ksh via David Korn - - 3/7 - --- -builtins/reserved.def - - changed runs of spaces to tabs in variables help text to make - indentation better when displayed - -builtins/mkbuiltins.c - - changes to avoid the annoying extra space that keeps gettext from - being passed an empty string - - 3/9 - --- -lib/glob/glob.c - - make sure globbing is interrupted if the shell receives a terminating - signal - - 3/14 - ---- -lib/readline/search.c - - call rl_message with format argument of "%" in _rl_nsearch_init - to avoid `%' characters in the prompt string from being interpreted - as format specifiers to vsnprintf/vsprintf - - 3/19 - ---- -parse.y, eval.c, input.h - - change execute_prompt_command to execute_variable_command; takes the - variable name as a new second argument - - 3/25 - ---- -bashline.c - - command_word_completion_function keeps track of when it's searching - $PATH and doesn't return directory names as matches in that case. - Problem reported by Pascal Terjan - - command_word_completion_function returns what it's passed as a - possible match if it's the name of a directory in the current - directory (only non-absolute pathnames are so tested). - - 3/27 - ---- -subst.c - - expand_arith_string takes a new argument: quoted. Either 0 (outside - subst.c) or Q_DOUBLE_QUOTES (substitution functions); changed callers - -subst.h - - changed extern declaration for expand_arith_string - -arrayfunc.c - - changed call to expand_arith_string in array_expand_index - - 3/31 - ---- -lib/readline/histfile.c - - change read_history_range to allow windows-like \r\n line endings - -execute_cmd.c - - add new variable, line_number_for_err_trap, currently set but not - used - - 4/2 - --- -lib/sh/strtrans.c - - add code to echo -e and echo with xpg_echo enabled to require - a leading 0 to specify octal constants - - 4/3 - --- -subst.c - - slight change to wcsdup() replacement: use memcpy instead of wcscpy - -parse.y - - before turning on W_COMPASSIGN, make sure the final character in the - token is a `(' (avoids problems with things like a=(4*3)/2) - - 4/4 - --- -lib/sh/snprintf.c - - in number() and lnumber(), turn off PF_ZEROPAD if explicit precision - supplied in format - - change number() and lnumber() to correctly implement zero-padding - specified by a non-zero `.precision' part of the format - -subst.c - - new flag for extract_delimited_string: EX_COMMAND. For $(...), so - we can do things like skip over delimiters in comments. Added to - appropriate callers - - changes to extract_delimited_string to skip over shell comments when - extracting a command for $(...) (EX_COMMAND is contained in the - flags argument) - - 4/5 - --- -subst.c - - first argument to skip_single_quoted is now a const char * - - new function, chk_arithsub, checks for valid arithmetic expressions - by balancing parentheses. Fix based on a patch from Len Lattanzi - - 4/6 - --- -{configure,config.h}.in - - add separate test for isnan in libc, instead of piggybacking on - isinf-in-libc test - -lib/sh/snprintf.c - - separate the isnan replacement function so it's guarded by its own - HAVE_ISNAN_IN_LIBC define - -lib/sh/wcsdup.c - - new file, contains replacement wcsdup library function from subst.c - with change back to using wcscpy - -Makefile.in,lib/sh/Makefile.in - - make sure wcsdup.c is compiled and linked in - -subst.c - - wcsdup now found in libsh; removed static definition - - 4/10 - ---- -lib/readline/callback.c - - loop over body of rl_callback_read_char as long as there is additional - input rather than just calling readline_internal_char, which does - not handle multi-character key sequences or escape-prefixed chars - -lib/readline/macro.c - - make sure we turn off RL_STATE_MACROINPUT when the macro stack is - empty if we are reading additional input with RL_STATE_MOREINPUT - -support/shobj-conf - - Mac OS X no longer likes the `-bundle' option to gcc when creating a - dynamic shared library - - 4/11 - ---- -lib/tilde/tilde.c - - don't try to dereference user_entry if HAVE_GETPWENT isn't defined - -lib/readline/input.c - - make sure chars_avail is not used without being assigned a value in - rl_gather_tyi - - use _kbhit() to check for available input on Windows consoles, in - rl_gather_tyi and _rl_input_available - - 4/21 - ---- -lib/readline/display.c - - calculate (in expand_prompt) and keep track of length of local_prompt - in local_prompt_len; use where appropriate - - when using o_pos to check whether or not we need to adjust - _rl_last_c_pos after calling update_line, assume that it's correct - (a buffer index in non-multibyte locales and a cursor position in - multibyte locales) and adjust with wrap_offset as appropriate - - in update_line, set cpos_adjusted to 1 after calling - _rl_move_cursor_relative to move to the end of the displayed prompt - string - - in _rl_move_cursor_relative, check that the multibyte display - position is after the last invisible character in the prompt string - before offsetting it by the number of invisible characters in the - prompt (woff) - - 4/26 - ---- -lib/readline/doc/{rluser.texi,readline.3} - - make sure to note that key bindings don't allow any whitespace - between the key name or sequence to be bound and the colon - - 4/28 - ---- -lib/readline/display.c - - in update_line, make sure we compare _rl_last_c_pos as strictly less - than PROMPT_ENDING_INDEX, since it's 0-based, to avoid multiple - prompt redraws - - 5/4 - --- -parse.y - - in decode_prompt_string, only prefix the expansion of \[ or \] - with CTLESC if the corresponding readline escape character is - CTLESC (coincidentally the same as \[) or CTLNUL. Bug report sent - by Mike Frysinger prompted the discovery - -aclocal.m4 - - slight change to test for /dev/fd to compensate for a linux - failing; suggested by Mike Frysinger - - 5/9 - --- -arrayfunc.c - - broke assign_array_var_from_string into two functions: - expand_compound_array_assignment and assign_compound_array_list; - assign_array_var_from_string just calls those functions now - -arrayfunc.h - - new extern declarations for expand_compound_array_assignment and - assign_compound_array_list - -subst.c - - in do_compound_assignment, call expand_compound_array_assignment - before creating the local variable so a previous inherited - value can be used when expanding the rhs of the compound assignment - statement - - 5/11 - ---- -doc/{bash.1,bashref.texi} - - clarifed `trap' description to make it clear that trapped signals - that are not set to SIG_IGN are reset when a subshell is created - - 5/18 - ---- -locale.c - - change reset_locale_vars to call setlocale (LC_ALL, "") if LANG - is unset or NULL - - if LANG is unset or NULL, reset the export environment before - calling setlocale in reset_locale_vars, and trust that it will - change the environment setlocale() inspects - - 5/21 - ---- -lib/readline/history.c - - new function, HIST_ENTRY *alloc_history_entry (char *string, char *ts); - creates a new history entry with text STRING and timestamp TS (both - of which may be NULL) - - new function, HIST_ENTRY *copy_history_entry (HIST_ENTRY *hist), - which copies the line and timestamp entries to new memory but just - copies the data member, since that's an opaque pointer - - new function, void replace_history_data (int which, histdata_t *old, histdata_t *new) - which replaces the `data' member of specified history entries with - NEW, as long as it is OLD. WHICH says which history entries to - modify - - add calls to replace_history_data in rl_free_undo_list and - rl_do_undo - -lib/readline/undo.c - - new function, alloc_undo_entry (enum undo_code what, int start, int end, char *text) - takes care of allocating and populating a struct for an individual - undo list entry - - new function: _rl_copy_undo_entry(UNDO_LIST *entry) - - new function: _rl_copy_undo_list(UNDO_LIST *head) - -lib/readline/rlprivate.h - - new extern declarations for _rl_copy_undo_{entry,list} - -execute_cmd.c - - change execute_cond_node so that quoting the rhs of the =~ - operator forces string matching, like the == and != operators - - 5/23 - ---- -redir.c - - add_undo_redirect now takes as an additional argument the type of - redirection we're trying to undo - - don't add a "preservation" redirection for fds > SHELL_FD_BASE if - the redirection is closing the fd - - 5/24 - ---- -subst.c - - make sure that parameter_brace_substring leaves this_command_name - set to either NULL or its previous value after setting it so that - arithmetic evaluation errors while expanding substring values - contain meaningful information - - 6/9 - --- -execute_cmd.c - - make sure that SUBSHELL_ASYNC and SUBSHELL_PIPE are set as flag bits - in subshell_environment, rather than setting only a single value - - change execute_subshell_builtin_or_function to give the `return' - builtin a place to longjmp to when executed in a subshell or pipeline - (mostly as the last command in a pipeline). Bug reported by - Oleg Verych - - in execute_simple_command, make sure to call execute_disk_command - with the_printed_command_except_trap to keep DEBUG trap command - strings from overwriting the command strings associated with jobs - and printed in job control messages. Bug reported by Daniel Kahn - Gillmor - -[bash-3.2-alpha frozen] - - 6/22 - ---- -syntax.h - - add new CBLANK (for [:blank:] class) flag value for syntax table and - shellblank(c) character test macro - -mksyntax.c - - add support for setting CBLANK flag in the syntax table depending on - whether or not isblank(x) returns true for character x - -locale.c - - change locale_setblanks to set or unset CBLANK flag for each - character when locale changes - -parse.y - - change call to whitespace(c) in lexical analyzer (read_token()) to - call shellblank(c) instead, so locale-specific blank characters are - treated as white space. Fixes bug reported by Serge van deb Boom - - -print_cmd.c - - when printing redirections, add a space between <, >, and <> and the - following word, to avoid conflicts with process substitution. Bug - reported by Ittay Dror - - 6/26 - ---- -configure.in - - set CROSS_COMPILE to the empty string by default, so we don't inherit - a random value from the environment. Bug reported by - Lee Revell - - 6/29 - ---- -lib/glob/xmbsrtowcs.c - - make sure destp is non-null before assigning a 0 to *destp in - xdupmbstowcs. Fix from Louiwa Salem - -execute_cmd.c - - fix execute_in_subshell to make sure asynchronous isn't set to 0 - before subshell_environment is set appropriately and - setup_async_signals is run. Based on report by Louiwa Salem - - -lib/readline/bind.c - - in rl_generic_bind(), make sure that the keys array is freed before - an error return. Fix from Louiwa Salem - - 7/1 - --- -builtins/read.def - - make sure all editing code is protected with #ifdef READLINE, esp. - unwind-protect that restores the default completion function - -lib/readline/display.c - - make sure to set local_prompt_len in rl_message() [in bash-3.2-alpha] - - 7/5 - --- -builtins/printf.def - - add more of echo's write error handling to printf. Suggested by - martin.wilck@fujitsu-siemens.com - - 7/7 - --- -lib/readline/display.c - - save and restore local_prompt_len in rl_{save,restore}_prompt - [in bash-3.2-alpha] - - 7/8 - --- -[bash-3.2-alpha released] - - 7/9 - --- -lib/readline/display.c - - make sure that _rl_move_cursor_relative sets cpos_adjusted when it - offsets `dpos' by wrap_offset in a multi-byte locale. Bug reported - by Andreas Schwab and Egmont Koblinger - -subst.c - - make sure that the call to mbstowcs in string_extract_verbatim is - passed a string with enough space for the closing NUL. Reported - by Andreas Schwab - - 7/18 - ---- -lib/readline/{display,terminal}.c - - remove #ifdefs for HACK_TERMCAP_MOTION so we can use - _rl_term_forward_char in the redisplay code unconditionally - -lib/readline/rlprivate.h - - new extern declaration for _rl_term_forward_char - -lib/readline/display.c - - in _rl_move_cursor_relative, use `dpos' instead of `new' when - deciding whether or not a CR is faster than moving the cursor from - its current position - - in _rl_move_cursor_relative, we can use _rl_term_forward_char to - move the cursor forward in a multibyte locale, if it's available. - Since that function doesn't have a handle on where the cursor is in - the display buffer, it has to output a cr and print all the data. - Fixes rest of problem reported by Egmont Koblinger - - change variable denoting the position of the cursor in the line buffer - from c_pos (variable local to rl_redisplay) to cpos_buffer_position - (variable local to file) for future use by other functions - - 7/25 - ---- -lib/malloc/{stats,table}.h - - include for prototypes for memset, strlen - -lib/termcap/{termcap,tparam}.c - - include and provide macro replacement for bcopy if - necessary - - 7/27 - ---- -lib/readline/histexpand.c - - add support for `<<<' here-string redirection operator to - history_tokenize_word. Bug reported by agriffis@gentoo.org - -externs.h - - don't add prototype for strerror() if HAVE_STRERROR defined - - 7/29 - ---- -subst.c - - in list_string, use `string' instead of `s' -- s is not initialized - - 8/9 - --- -subst.c - - fix parameter_brace_expand to set W_HASQUOTEDNULL in the WORD_DESC it - returns if the result of parameter_brace_substring is a quoted null - ("\177"). Fixes bug reported by Igor Peshansky - - 8/16 - ---- -lib/readline/readline.h - - new #define, READERR, intended to be used to denote read/input errors - -lib/readline/input.c - - in rl_getc, if read() returns an error other than EINTR (after the - EWOULDBLOCK/EAGAIN cases are handled), return READERR rather than - converting return value to EOF if readline is reading a top-level - command (RL_STATE_READCMD) - -lib/readline/readline.c - - if rl_read_key returns READERR to readline_internal_char[loop], - abort as if it had read EOF on an empty line, without any conversion - to newline, which would cause a partial line to be executed. This - fixes the bug reported by Mathieu Bonnet - -aclocal.m4 - - when testing for validity of /dev/fd/3, use /dev/null instead of - standard input, since the standard input fails with linux and `su'. - Bug reported by Greg Shafer - - 8/17 - ---- -Makefile.in - - switch the TAGS and tags targets so TAGS is the output of `etags' and - tags is the output of `ctags'. Suggested by Masatake YAMATO - - 8/25 - ---- -execute_cmd.c - - change code to match documentation: set BASH_COMMAND (which takes its - value from the_printed_command_except_trap) only when not running a - trap. Rocky says the debugger is ok with this, and this is what his - original diffs did - - 8/29 - ---- -variables.c - - change set_if_not to create shell_variables if it is NULL, since - -o invocation options can cause variables to be set before the - environment is scanned - -[bash-3.2-beta frozen] - - 9/5 - --- -[bash-3.2-beta released] - - 9/8 - --- -variables.c - - change dispose_used_env_vars to call maybe_make_export_env - immediately if we're disposing a temporary environment, since - `environ' points to the export environment and getenv() will use - that on systems that don't allow getenv() to be replaced. This - could cause the temporary environment to affect the shell. Bug - reported by Vasco Pedro - -builtins/echo.def,doc/{bash.1,bashref.texi} - - clarify that `echo -e' and echo when the `xpg_echo' shell option is - enabled require the \0 to precede any octal constant to be expanded. - Reported by Vasco Pedro - - 9/12 - ---- -builtins/printf.def - - make sure `%q' format specifier outputs '' for empty string arguments - Bug reported by Egmont Koblinger - -make_cmd.c - - change make_here_document to echo lines in here-doc if set -v has - been executed. Reported by Eduardo Ochs - -aclocal.m4 - - change BASH_CHECK_MULTIBYTE: - o replace check for wctomb with check for wcrtomb - o add checks for wcscoll, iswctype, iswupper, iswlower, - towupper, towlower - o add call to AC_FUNC_MBRTOWC to check for mbrtowc and mbstate_t - define HAVE_MBSTATE_T manually - o add checks for wchar_t, wctype_t, wint_t - -config.h.in - - add defines for wcscoll, iswctype, iswupper, iswlower, towupper, - towlower functions - - replace define for wctomb with one for wcrtomb - - add defines for wchar_t, wint_t, wctype_t types - -config-bot.h, lib/readline/rlmbutil.h - - add check for HAVE_LOCALE_H before defining HANDLE_MULTIBYTE - - add checks for: ISWCTYPE, ISWLOWER, ISWUPPER, TOWLOWER, TOWUPPER - - add checks for: WCTYPE_T, WCHAR_T, WCTYPE_T - - 9/13 - ---- -lib/readline/display.c - - when displaying prompts longer than the screenwidth in rl_redisplay, - and looking for the index of the last character whose buffer index - is <= the screen width to set up the inv_lbreaks array, make sure to - catch the case where the index == the screen width (an off-by-one - error occurs otherwise with prompts one character longer than the - screen width). Bug reported by Alexey Toptygin - -configure.in - - change DEBUGGER_START_FILE to start with ${ac_default_prefix}/share, - like bashdb installs itself. Reported by Nick Brown - - - 9/14 - ---- -lib/readline/display.c - - make multibyte code that computes the buffer indices of line breaks - for a multi-line prompt dependent on MB_CUR_MAX, so we don't take - the function call hit unless we're in a locale that can have - multibyte characters - - 9/19 - ---- -subst.c - - make dequote_list extern so other parts of the shell can use it - -subst.h - - extern declaration for dequote_list - -builtins/read.def - - call dequote_list before assigning words read to array variable if - we saw an escape character. Old code left spurious CTLESCs in the - string after processing backslashes. Bug reported by Daniel Dawson - - - 9/21 - ---- -[bash-3.2 frozen] +[bash-4.1 frozen] diff --git a/CWRU/misc/bison b/CWRU/misc/bison index 5dcd3a8..58aae79 100755 --- a/CWRU/misc/bison +++ b/CWRU/misc/bison @@ -5,19 +5,19 @@ # Copyright (C) 1996-2002 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. if [ "$1" = '-y' ]; then shift diff --git a/CWRU/misc/errlist.c b/CWRU/misc/errlist.c index 3970ba1..53c368d 100644 --- a/CWRU/misc/errlist.c +++ b/CWRU/misc/errlist.c @@ -2,23 +2,23 @@ * If necessary, link with lib/sh/libsh.a */ -/* Copyright (C) 1998-2002 Free Software Foundation, Inc. +/* Copyright (C) 1998-2009 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include #include diff --git a/CWRU/misc/hpux10-dlfcn.h b/CWRU/misc/hpux10-dlfcn.h index 69b626e..49d4428 100644 --- a/CWRU/misc/hpux10-dlfcn.h +++ b/CWRU/misc/hpux10-dlfcn.h @@ -17,23 +17,23 @@ * the -E flag to LOCAL_LDFLAGS. */ -/* Copyright (C) 1998-2002 Free Software Foundation, Inc. +/* Copyright (C) 1998-2009 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #if !defined (__HPUX10_DLFCN_H__) diff --git a/CWRU/misc/open-files.c b/CWRU/misc/open-files.c index ca3d26e..6a55577 100644 --- a/CWRU/misc/open-files.c +++ b/CWRU/misc/open-files.c @@ -1,22 +1,22 @@ /* open-files -- report files a process has open */ -/* Copyright (C) 1989-2002 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include #include diff --git a/CWRU/misc/sigs.c b/CWRU/misc/sigs.c index 2c16935..097ab31 100644 --- a/CWRU/misc/sigs.c +++ b/CWRU/misc/sigs.c @@ -1,22 +1,22 @@ /* sigs - print signal dispositions for a process */ -/* Copyright (C) 1990-2002 Free Software Foundation, Inc. +/* Copyright (C) 1990-2009 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include #include diff --git a/CWRU/misc/sigstat.c b/CWRU/misc/sigstat.c index 2252a85..9135baa 100644 --- a/CWRU/misc/sigstat.c +++ b/CWRU/misc/sigstat.c @@ -5,23 +5,23 @@ * chet@po.cwru.edu */ -/* Copyright (C) 1991-2002 Free Software Foundation, Inc. +/* Copyright (C) 1991-2009 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. - Bash is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bash is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with Bash; see the file COPYING. If not, write to the Free Software - Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ #include #include -- cgit v1.2.3