summaryrefslogtreecommitdiff
path: root/CWRU
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>2001-11-13 17:56:06 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:54 +0000
commitf73dda092b33638d2d5e9c35375f687a607b5403 (patch)
treef21584e70a444d6a1ecba0fb5e2cf79e8cce91db /CWRU
parent28ef6c316f1aff914bb95ac09787a3c83c1815fd (diff)
downloadbash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.gz
Imported from ../bash-2.05a.tar.gz.
Diffstat (limited to 'CWRU')
-rw-r--r--CWRU/changelog11375
-rw-r--r--CWRU/empty-for-wordlist25
-rw-r--r--CWRU/maildir-patch175
3 files changed, 2137 insertions, 9438 deletions
diff --git a/CWRU/changelog b/CWRU/changelog
index 9126b6b9..67829991 100644
--- a/CWRU/changelog
+++ b/CWRU/changelog
@@ -1,10041 +1,2940 @@
- 12/23/1996
- ----------
-[bash-2.0 released]
-
- 12/27
- -----
-configure.in
- - don't automatically use GNU malloc on FreeBSD, the builtin one
- is supposed to be better (but doesn't have the debugging hooks)
-
-builtins/exec.def
- - check that full_pathname(command) doesn't return NULL because of
- inaccessible parent directories
-
-support/config.sub
- - recognize OpenBSD
-
-execute_cmd.c
- - broke the code that opens a file for output redirection when in
- noclobber mode out into a separate function: noclobber_open().
- This tries to avoid race conditions and file replacement between
- stat(2) and open(2)
-
-subst.c
- - make sure pat_subst does not run off the end of its return
- string when copying the unmatched portion of the input string
-
- 12/30
- -----
-doc/Makefile.in
- - don't install readline.3 by default
-
-lib/tilde/tilde.c
- - removed an unnecessary check for string[i] being non-null in
- tilde_find_suffix
-
- 12/31
- -----
-support/config.{sub,guess}
- - merged in changes from config.sub in autoconf-2.12 distribution
-
-lib/readline/readline.c
- - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last
- if readline is currently in vi mode
-
-lib/readline/display.c
- - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in
- the code that decides whether the cursor is at the beginning of
- an otherwise-empty line
-
- 1/2/1997
+ 4/9/2001
--------
-support/bashbug.sh
- - fixed a typo, thanks to eggert@twinsun.com
-
-aclocal.m4
- - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member
- of struct dirent
-
-configure.in
- - call BASH_STRUCT_DIRENT_D_FILENO
-
-config.h.in
- - new #define for STRUCT_DIRENT_HAS_D_FILENO
-
-lib/posixheaders/posixdir.h
- - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined
- and STRUCT_DIRENT_HAS_D_FILENO is not defined. This fixed the
- problem of compiling getcwd.c on SunOS4.1.4 with cc
+[bash-2.05 released]
- 1/3
- ---
-lib/readline/complete.c
- - fix a memory-used-after-freed bug reported by Andreas Schwab
-
-configure.in
- - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc
- (ac_cv_func_getpeername = no)
-
- 1/13
- ----
-
-builtins/getopt.h
- - change #define guard to _SH_GETOPT_H to avoid similar guards in
- /usr/include/getopt.h (Dec OSF/1 4.x, for example)
-
-variables.h
- - fix assign_array_from_string so that it rejects attempts to assign
- to readonly variables
-
-subst.c
- - fix verify_substring_values to handle offsets that are past the
- end or before the beginning (in the case of a negative offset)
- of the expanded variable value
-
- 1/14
+ 4/10
----
-bashline.c
- - fix a problem where any completion after a `cmd` command
- substitution would inappropriately attempt command completion,
- even if the previous command substitution was correctly closed
-
-builtins/evalstring.c
- - unwind_protect remember_on_history even if the shell is not
- interactive, since history can now be used in scripts, and
- `source' will turn off interactive_shell before calling
- parse_and_execute
-
-jobs.c
- - new function get_job_by_pid(pid, block) to translate a pid to
- a job number. The block argument says whether or not to block
- SIGCHLD
-
-jobs.h
- - new extern declaration for get_job_by_pid
-
-builtins/jobs.def
- - call get_job_by_pid if an argument appears to be a pid rather
- than a jobspec
-
-configure.in
- - configure --without-gnu-malloc automatically on MachTen 4.x
-
-builtins/cd.def
- - change to mindist() so that a best guess of `.' returns 3,
- which means not reasonable
-
-lib/posixheaders/memalloc.h
- - changed hpux_9 to __hpux, since the new config stuff doesn't
- define hpux_9
-
-subst.c
- - fix parameter_brace_patsub to handle null patterns (doesn't
- do anything)
-
-oslib.c
- - slight change to bzero replacement
+redir.c
+ - check return value of fclose() in write_here_document() for error
+ returns; don't just rely on fwrite() failing
support/bashbug.sh
- - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char
- file names
-
-doc/bashref.texi
- - add note to POSIX Mode section that the output of `set' when
- invoked without arguments is sorted when in POSIX mode
-
- 1/15
- ----
-support/recho.c
- - a couple of changes prompted by a `gcc -Wall'
-
-subst.c
- - changed ASSIGN_RETURN macro to use the do...while(0) idiom to
- avoid problems with its multiple statements
-
-builtins/setattr.def
- - a bad identifier given to readonly or export without an assignment
- statement (e.g. `readonly a[5]') is an error, but not an assignment
- error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN)
-
-tests/{{array,new-exp}.,tilde-}tests
- - added `set +o posix' at the beginning to disable POSIX mode, which
- causes some of the tests to fail. Some systems (e.g. LINUX-FT),
- set POSIXLY_CORRECT by default
-
-tests/test-tests
- - added a warning if $UID is 0 to the effect that the test suite
- should not be run as root
- - worked around the `noread' and `nowrite' tests failing when run
- as root
-
-test.c
- - began removing the remains of the STANDALONE code, since test is
- included in GNU shellutils
-
- 1/16
- ----
-lib/readline/{readline,display}.c
- - a couple of slight changes to build on Win95 using djgpp (reported
- by x-aes@telelogic.se)
-
-Makefile.in
- - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap
- library (if necessary) should work now
-
-bashline.c
- - new function: quote_word_break_characters(), to backslash-quote
- characters in a filename that the readline completion code would
- treat as word breaks
- - change bash_quote_filename to call quote_word_break_characters if
- the completion quoting style says to use backslashes
- - add `:' to rl_filename_quote_characters, since it's part of
- filename_word_break_characters
-
-lib/posixheaders/posixjmp.h
- - new file, with half of bashjmp.h
- - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file
-
-bashjmp.h
- - include "posixjmp.h" for possible redefinitions of setjmp/longjmp
- and procenv_t
-
- 1/17
- ----
-shell.c
- - bad options now cause the standard shell usage message (a subset
- of what `bash --help' prints) to be displayed on stderr
+ - 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
-trap.c
- - don't free the trap command for a DEBUG trap in
- restore_default_signal if SIG_INPROGRESS is set -- there's already
- a pointer saved to the old value in _run_trap_internal. This
- makes bashdb run better, too
-
-examples/bashdb/bashdb.{pre,fns}
- - a couple of minor fixes; it actually has a chance of working now
-
- 1/21
- ----
-config.h.in
- - add a define for <dlfcn.h>, HAVE_DLFCN_H
+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
configure.in
- - look for <dlfcn.h>, define HAVE_DLFCN_H if found
-
-builtins/enable.def
- - include <dlfcn.h> only if HAVE_DLFCN_H is defined
+ - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
-lib/readline/display.c
- - renamed clear_to_eol to _rl_clear_to_eol and made it global, so
- other library files (readline.c) can use it
- - new function _rl_clear_screen, to clear the screen with the right
- termcap escape sequence
-
-lib/readline/readline.c
- - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs
- - extern declarations for _rl_clear_to_eol and _rl_clear_screen
-
- 1/22
- ----
-mailcheck.c
- - fixed a problem in make_default_mailpath() where a slash was not
- added between the default mail directory and the username
-
- 1/23
- ----
-stringlib.c
- - added a fourth parameter to ansicstr: the length of the returned
- string
-
-externs.h
- - changed declaration of ansicstr
-
-parse.y
- - changed call to ansicstr -- saves a call to strlen
-
-builtins/echo.def
- - changed call to ansicstr
- - if do_v9 is non-zero, use putchar to output the string instead
- of printf, since there may be embedded NULL characters
-
-doc/{bash.1,bashref.texi}, builtins/trap.def
- - modified the `trap' documentation to make it clearer that trap
- takes multiple signal specs as arguments
-
-jobs.c, nojobs.c, jobs.h
- - renamed initialize_jobs to initialize_job_control, added an
- argument (force)
+lib/glob/glob.c
+ - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
jobs.c
- - set shell_tty to fileno(stderr) in initialize_job_control if
- the shell is not interactive. This fixes the problem of bad
- tty pgrps when monitor mode is turned on in a non-interactive
- shell
-
-sig.c
- - made initialize_terminating_signals do only that; moved the rest
- of the code that used to be there into a new function:
- initialize_shell_signals, which calls initialize_terminating_signals
- if the shell is interactive
- - initialize_terminating_signals is now extern
- - made reset_terminating_signals return immediately if
- termsigs_intitialized is zero, meaning that
- initialize_terminating_signals has not been called
-
-sig.h
- - new extern declaration for initialize_terminating_signals
+ - 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
-trap.c
- - call initialize_terminating_signals from set_signal if sig is
- EXIT_TRAP and the shell is not interactive. Since the terminating
- signals do not need to be initialized until a trap on exit is
- set, not doing that at startup should result in a speed increase
- for scripts
+version.c
+ - update copyright date to 2001
-execute_cmd.c
- - save and restore command->flags in time_command, so you can use
- `time command' in a loop
+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 *'
- 1/24
+ 4/11
----
-lib/readline/display.c
- - fix redisplay code to wrap correctly if the prompt is longer than
- the screen width (reported by bos@Eng.Sun.COM)
+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
-lib/readline/undo.c
- - don't include <setjmp.h>, it's not needed
+jobs.h
+ - added defines for `running' member of a struct process
-lib/readline/{util,readline}.c
- - include "posixjmp.h" instead of <setjmp.h>
- - readline_top_level is now a `procenv_t' instead of a `jmp_buf'
- (now readline uses the correct posix semantics for preserving
- the signal mask and other things across longjmp)
+general.c
+ - fix legal_number to return 0 when strtol(3) reports overflow or
+ underflow
parse.y
- - fixes to push_string/pop_string to make them more general -- they
- now can be used generally, instead of having to be associated
- with an alias being expanded
- - fixes to the parser so that it parses (( ls abc; ls def); ls ghi)
- as a nested subshell command for backwards compatibility. Broke
- the double-paren expression parsing off into a new function:
- parse_arith_cmd, called from read_token when a `((' is seen. If
- it looks like an arithmetic command, return `let' and set things
- up so that the expression is returned as a double-quoted string
- by the next call to read_token. If it's a nested subshell, push
- the text we parsed onto the list of strings for later consumption
- and return `('
-
-lib/glob/glob.c
- - fix glob_vector so it doesn't short-circuit checking a filename if
- it starts with a `.' and the pattern starts with `\.' (if
- noglob_dot_filenames is set). This makes `".junk2"*' match
- `.junk2.txt' correctly
+ - changed read_token_word to call legal_number instead of atoi(3)
- 1/27
- ----
-support/bashbug.sh
- - ask for confirmation before sending the bug report
+input.c
+ - return -1/EBADF from close_buffered_fd if fd is < 0
-builtins/fc.def
- - when editing and re-executing a multiline command, make sure
- current_command_line_count is initialized and then incremented
- for each line read from the file so that the lines added to
- the history list by fc_replhist and fc_addhist obey the `lithist'
- and `cmdhist' shopt options. Reported by tibbitts@pb.seflin.org
+command.h
+ - fixed bogus comment about IS_DESCRIPTOR in description of the
+ REDIRECTEE struct
- 1/28
- ----
-lib/readline/readline.h
- - added a couple of extern declarations for variables described in
- the documentation but heretofore undeclared
+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
-builtins/ulimit.def
- - try to catch some classes of integer overflows before calling
- set_limit
+support/mksignames.c
+ - need to include config.h to get a possible value for
+ UNUSABLE_RT_SIGNALS
- 1/29
+ 4/16
----
-parse.y
- - push and pop a `(' delimiter while parsing a $(...) construct, so
- the history code doesn't try to inappropriately add a `;' when
- a newline appears in the `...'
-
-aclocal.m4
- - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize'
- in <sys/ioctl.h> (or one of the files it includes)
-
-configure.in
- - call BASH_STRUCT_WINSIZE
- - slightly reorganized the calls to bash-specific macros
-
-config.h.in
- - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL'
-
-jobs.c, nojobs.c
- - only look in sys/ptem.h for struct winsize if
- STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp
+lib/readline/doc/rluser.texinfo
+ - corrected a small error in one description of M-DEL
- 1/30
+ 4/17
----
-.{distribution,patchlevel}
- - renamed to _{distribution,patchlevel}
+stringlib.c
+ - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
+ in strcreplace()
-configure.in
- - create a variable BASHVERS, from the contents of _distribution,
- and a variable BASHPATCH, from the contents of _patchlevel,
- (using m4 magic so we don't have to distribute .distribution
- and .patchlevel) and substitute them into Makefile.in
+support/bashversion.c
+ - new file, prints bash version information
Makefile.in
- - use Version and PatchLevel variables instead of the contents of
- .distribution and .patchlevel, respectively. These are set by
- configure
- - removed `.machine' from targets and dependencies
-
-support/mkversion.sh
- - new shell script to handle updating version.h, replaces mkversion.c
- (which is now overkill)
-
-support/mkdist
- - don't bother with writing .distribution and .patchlevel files,
- since they're no longer distributed
+ - rules for building bashversion and linking it to version.o
-support/mknewvers.sh
- - simple bash script to make new version files. It can increment
- the major or minor version numbers or patchlevel, or take a
- completely new version number (e.g., 2.01) as an argument
-
-doc/Makefile.in
- - added support for the `install-info' command to update the info
- directory file after installing bash.info
-
- 1/31
+ 4/24
----
-builtins/help.def
- - fix core dump with `help --'
-
-susbt.c
- - make call_expand_word_internal obey the convention that if
- expand_word_internal returns &expand_word_{fatal,error}, then
- w->word has already been freed
- - return &expand_word_fatal from expand_word_internal if the shell
- is not interactive and `set -u' has been executed
-
-test.c, general.c
- - moved group_member from test.c to general.c
-
-externs.h, general.h
- - moved extern declaration of group_member from externs.h to general.h
+conftypes.h
+ - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
+ variables.h
-general.c
- - broke the code that initializes the group array out into a new
- function, initialize_group_array()
- - initialize_group_array() now initializes an array even if the OS
- does not have getgroups(). If it does not, an array with one
- element (the real gid) is created
- - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and
- _SC_NGROUPS_MAX is defined
- - new function, char **get_group_list(int *), to return an array
- of strings made from the groups list
-
-variables.c
- - new dynamic array variable: GROUPS, expands to the group set as
- obtained with getgroups() (or whatever initialize_group_array()
- makes)
-
-doc/{bash.{1,html},bashref.texi}
- - added description of GROUPS variable
+variables.h, version.c
+ - include conftypes.h
-test/test-tests
- - before modifying the setgid bit on /tmp/setgid, try to change its
- group to ${GROUPS[0]}
-
- 2/3
- ---
-aclocal.m4
- - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined
- in <sys/types.h>
+patchlevel.h
+ - new file, contains define for PATCHLEVEL. Doing away with the old
+ scheme of having the information in configure.in
-configure.in
- - call BASH_MISC_SPEED_T
-
-config.h.in
- - add `#undef SPEED_T_IN_SYS_TYPES'
-
-lib/readline/tcap.h
- - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but
- SPEED_T_IN_SYS_STYPES is not, before including <termcap.h>
-
-support/mksignames.c, siglist.c
- - add support for 4.4 BSD SIGLOST
-
-support/config.guess
- - add support for recognizing QNX based on `uname' output
+version.c
+ - include patchlevel.h
Makefile.in
- - make sure recho and zecho are compiled with the same set of CC
- options as the rest of the sources
-
-lib/readline/bind.c
- - change calls to rl_generic_bind to cast the third argument to
- (char *) where necessary
-
-command.h
- - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR,
- which means that this command should have its standard input
- redirected from /dev/null if there are not any explicit redirections
- to stdin
-
-execute_cmd.c
- - a redirection of type r_inputa_direction is no longer added at the
- beginning of the redirection chain for an async command;
- CMD_STDIN_REDIR is set in the flags instead
- - new function: stdin_redirects: returns the number of redirections to
- stdin in a chain of redirections
- - new functions: async_redirect_stdin() to open /dev/null and make it
- file descriptor 0
- - changes to make CMD_STDIN_REDIR propagate to all of the necessary
- functions (like execute_simple_command)
- - execute_disk command now takes the flags from simple_command rather
- than just the CMD_NO_FORK flag as its last argument
- - various places after make_child is executed (in the child) check for
- CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call
- async_redirect_stdin
- - stdin_redir is now global
-
-eval.c
- - set stdin_redir to 0 just before calling execute_command so it
- gets reset to a known value and doesn't persist across commands
-
- 2/4
- ---
-builtins/ulimit.def
- - add a stub function for ulimit(2) on systems without HAVE_RESOURCE
- or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 --
- QNX is one such system
-
-bashhist.c
- - pre_process_line needs to protect all occurrences of hist_verify
- with #ifdef READLINE
-
-builtins/shopt.def
- - hist_verify needs to be protected with #ifdef READLINE, not
- #ifdef HISTORY
-
- 2/5
- ---
-support/config.{guess,sub}, configure.in
- - chages to better support the Harris Night Hawk
-
-[many files]
- - changes for things pointed out by gcc -Wall
-
-lib/glob/Makefile.in
- - make sure -DSHELL is included in CCFLAGS so that globbing is
- interruptible
+ - run bashversion -p to find patch level rather than have configure
+ substitute in a value
+ - pass -S ${top_srcdir} to support/mkversion.sh
-lib/malloc/malloc.c
- - extern declaration for botch: if botch is #defined, it should be
- the name of a void function
-
-configure.in,Makefile.in,builtins/Makefile.in,
-lib/{glob,malloc,readline,tilde}/Makefile.in
- - add a LOCAL_DEFS variable, substituted from configure into the
- various Makefiles. It's set to -DSHELL, so that define gets
- passed to all sub-makes without doing anything special
-
-lib/readline/readline.c
- - change to rl_digit_loop to make it compatible with GNU emacs:
- if a key bound to `universal-argument' is read after reading
- some digits, it terminates the argument but is otherwise
- ignored. This is how people can insert repeated digits
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - changed description of `universal-argument' to describe how
- to terminate a numeric argument
-
- 2/6
- ---
-jobs.c
- - changed kill_pid to diddle the job and process data structures
- if we're sending SIGCONT to a stopped job with `kill' so that
- the shell knows the job is running again. ksh93 does this
-
- 2/7
- ---
-unwind_prot.c
- - changed bcopy to FASTCOPY
-
-builtins/enable.def
- - changed pointer arithmetic in delete_builtin to just subtract
- the head of the builtins list (shell_builtins) from a pointer
- to the builtin to be deleted (b) to find its index in the list
- on ANSI C systems
-
- 2/10
- ----
-lib/readline/bind.c
- - when using old-style keynames to bind to a new-style macro,
- pass an array of type (unsigned char *) to rl_macro_bind
-
-builtins/getopt.c
- - change sh_getopt to return EOF if nextchar is empty or NULL
- and sh_optind is greater than argc. This can happen if a
- script mixes calls to `getopts' with calls to `shift'
-
- 2/11
- ----
-print_cmd.c
- - fixed make_command_string_internal so that commands with the
- CMD_TIME_POSIX flag set print `time -p' instead of `time'
- - changed print_redirection_list so the here documents are
- printed after all the other redirections, and followed by a
- newline (rather than a possible semicolon)
- - added a new variable, was_heredoc, to avoid adding a semicolon
- at the beginning of an empty line after printing the heredoc
- ending delimiter
-
-execute_cmd.c
- - don't put the gnu_argv_flags into the environment any more; it's
- proven to be a bad idea
-
-configure.in
- - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x]
-
-builtins/echo.def
- - only call fflush() after printing each word on SunOS 5.5, since
- that's the system with the bug that prompted its inclusion in
- the first place
-
-support/mksignames.c
- - added support for more system-specific signals from AIX 4.2,
- changed initialization order so that system-specific signals
- are done first, before the common signals
-
- 2/12
- ----
-execute_cmd.c
- - broke the code that creates a file containing the text of a
- here document out into a separate function: here_doc_to_fd
- - create the temp file used for a here document with mode 600
- - open the temp file used for a here document with O_EXCL
-
-shell.h
- - changed the uid members of struct user_info to be of type uid_t
- and the gid members to be of type gid_t
-
-parse.y
- - changed the type of the `type' argument to init_yy_io() to be
- `enum stream_type', since that's what's always passed
-
-input.h
- - changed the function prototype for init_yy_io so the third arg is
- type `enum stream_type'
-
-externs.h
- - added a prototype for getcwd, if HAVE_GETCWD is not defined
-
-builtins/umask.def
- - changed all variables that are used as arguments to or save the
- return value from umask(2) to be of type mode_t
- - changed print_symbolic_umask to take an argument of type mode_t
-
- 2/13
- ----
-jobs.c
- - if old_sigint_handler is set to SIG_DFL, as it will be in a script
- without a trap on SIGINT installed, call termination_unwind_protect()
- directly from waitchld()
+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
- 2/14
- ----
configure.in
- - added a section before the call to BASH_CHECK_LIB_TERMCAP to
- set a variable prefer_curses on some systems (AIX, for one)
-
-aclocal.m4
- - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses
- is non-empty
-
-lib/readline/Makefile.in
- - redid the dependencies
-
- 2/17
- ----
-hashlib.c, getcwd.c
- - include `bashansi.h' instead of stdlib.h and string.h
-
-error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c,
-builtins/{exec,exit,fg_bg,hash,history}.def
- - include `bashtypes.h' instead of directly including <sys/types.h>
-
-builtins/fc.def
- - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h
- and posixstat.h
-
-builtins/mkbuiltins.c
- - include ../posixstat.h instead of <sys/stat.h>
-
-general.h
- - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch
- a definition of quad_t (or whatever) from <sys/types.h> before
- using it in a function prototype
+ - hard-code BASHVERS assignment instead of reading it from a file
+ - remove BASHPATCH; don't substitute it
-Makefile.in, builtins/Makefile.in
- - updated dependencies
+_distribution,_patchlevel
+ - removed
- 2/18
+ 4/26
----
-builtins/set.def
- - new function, set_posix_mode, called when `set [-+]o posix'
- or `shopt -[su] -o posix' is executed. It sets or unsets
- $POSIXLY_CORRECT and calls sv_strict_posix
-
-subst.c
- - in sv_strict_posix, call posix_readline_initialize only if
- the shell is interactive (interactive_shell != 0)
-
shell.c
- - if we are acting like `sh', call posix_readline_initialize
- if the shell is interactive
- - moved the code that does posix.2 mode initialization after
- interactive_shell is set, and call posix_readline_initialize
- if interactive_shell is non-zero
-
-bashwait.h
- - renamed to unionwait.h, since that is what it defines
-
-posixwait.h
- - moved the POSIX 1003.1 job control defines here from jobs.h
-
-jobs.h
- - include `posixwait.h'
-
- 2/19
- ----
-braces.c
- - if SHELL is defined, pass the contents of new-style command
- substitution through without expanding brace constructs between
- the parens -- let the subshell do it
-
-subst.c
- - when brace-expanding words, preserve the flags (word->flags) if
- brace expansion does not change the word. This fixes the problem
- of things like
-
- local -a avar=( ${PATH//: } );
-
-bashline.c
- - have shell_expand_line pass a copy of rl_line_buffer to expand_string
- in case there are substitution errors and the string gets freed
-
- 2/20
- ----
-expr.c
- - make sure that expland and explor set `lasttok' to LAND and LOR,
- respectively, if they parse `&&' or `||'. This makes the
- precedence code work right
-
-subst.c
- - changes so that non-interactive shells exit immediately when a
- parameter that is unset is referenced after `set -u' has been
- executed causes the shell to exit immediately
-
- 2/21
- ----
-flags.c
- - if `set -r' is executed, call maybe_make_restricted so that $PATH
- and $SHELL are made read-only
-
-execute_cmd.c
- - if `set -e' has been executed, and we're inverting a pipeline's
- return status with `!', set CMD_IGNORE_RETURN so a failing
- command does not inadvertently cause the shell to exit before
- the exit status can be inverted. This is probably only a problem
- with the `eval' builtin.
-
- 2/24
- ----
-builtins/hash.def
- - add a missing argument of 0 to add_hashed_command
-
-builtins/kill.def
- - job identifiers can be used in non-interactive shells as long as
- job control has been turned on with `set -m'
-
-jobs.c
- - we want to be notified of stopped jobs if job_control is non-zero,
- even if the shell is not interactive
-
-execute_cmd.c
- - make sure shell_execve returns EX_NOTFOUND if execve fails and
- errno is set to ENOENT
- - makes sure execute_builtin saves the temporary environment to
- builtin_env for the `eval' builtin, since it can destroy the
- temporary environment when it calls parse_and_execute
-
-bashhist.c
- - new variable: hist_last_line_added, set to 1 if the last command
- line was added to the history successfully as a separate entry.
- Used by `history' and `fc'
-
- 2/25
- ----
-trap.c
- - save line number before executing trap command, because
- parse_and_execute resets it to 1 and the trap command might
- want it
-
-execute_cmd.c
- - change to executing_line_number to return trap_line_number if
- the shell is currently running a trap
-
- 2/26
- ----
-execute_cmd.c
- - change to time_command so that a `real' value of 0 does not
- cause a divide-by-zero error when computing cpu percentage
+ - 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
-lib/readline/signals.c
- - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH
- handler in rl_handle_sigwinch
-
-builtins/set.def
- - `unset' now rejects attempts to unset names that are not valid
- shell identifiers as errors
- - add a description of `-o history' option to help text
-
-subst.c
- - in parameter_brace_patsub, we want backslash removal done on
- the replacement if (mflags & MATCH_QUOTED), since the code
- in expand_word_internal will not do it. We need to call
- expand_string_unsplit directly, since maybe_expand_string does
- not do the right thing
-
- 2/28
- ----
-execute_cmd.c
- - if execute_for_command finds that the iteration variable is readonly,
- decrement loop_level before returning
+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)
-builtins/break.def
- - if the break count is <= 0, display an error message and break out
- of all loops
+command.h
+ - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
+ code in execute_cmd.c
builtins/command.def
- - if PATH is unset, and we're using command -p, we don't want PATH
- to be set to the empty string when `command' completes
-
-builtins/common.c
- - POSIX.2 says `kill -l signum' prints the signal name without the
- leading `SIG' prefix, so check for this_shell_builtin == kill_builtin
- in display_signal_list
+ - add CMD_COMMAND_BUILTIN to the created command's flags
-builtins/getopts.def
- - when invoked without any arguments, `getopts' now prints a usage
- message
-
- 3/3
+ 5/1
---
-builtins/common.c
- - add a second argument to get_numeric_arg: if non-zero, the shell
- exits on a bad argument; if not, the shell jumps to top_level
- with a DISCARD argument, which aborts the current command
-
-builtins/{break,exit,history,return,shift}.def
- - change calls to get_numeric_argument
-
-lib/readline/funmap.c
- - add `dump-macros' to list of bindable names
-
-lib/readline/readline.h
- - added extern declaration for rl_prompt (it was apparently missing)
-
-lib/readline/readline.c
- - new internal function, _rl_init_line_state, which sets rl_point
- and rl_end to 0, sets the_line to point to _rl_line_buffer, and
- clears the line
-
-lib/readline/callback.c
- - if a user's callback function does not clear the line, clear it
- for him by calling _rl_init_line_state
-
- 3/4
- ---
-alias.c
- - made the readline support functions #ifdef READLINE, so they're
- not compiled into the shell unless readline is
-
-lib/readline/bind.c
- - new function _rl_untranslate_macro_value, to expand meta-prefixes
- and other special characters in a macro value for printing by
- _rl_macro_dumper_internal
- - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to
- get a printable version of the macro value
-
-lib/readline/readline.c
- - new variable, rl_dispatching, set to 1 when we call a function
- from _rl_dispatch
-
-lib/readline/readline.h
- - extern declaration for rl_dispatching
-
-lib/readline/complete.c
- - make sure S_ISCHR and S_ISBLK are defined before using them
-
-lib/readline/terminal.c
- - add a new #define NEED_EXTERN_PC. Define this if the termcap
- or curses libraries need `extern' before declarations of PC,
- BC, and UP
-
-lib/readline/{readline,terminal,histfile}.c
- - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally
- sent by ilya@math.ohio-state.edu
-
-builtins/set.def
- - fixed a bug in set_shellopts that caused the shell to crash if
- there were no shell options set
-
- 3/5
- ---
-configure.in,Makefile.in
- - choose run-all or run-minimal as the test script based on whether
- the --enable-minimal-config option was given to configure
-
-builtins/setattr.def
- - fixed `export -p' and `readonly -p' so that they output `export'
- or `readonly' when in POSIX mode, as POSIX.2 specifies
-
- 3/6
- ---
-builtins/setattr.def
- - make `readonly -a var=(...)' work just like `declare -ar var=(...)',
- since the two logically mean the same
- - `readonly -f' and `export -f' don't print the function definition
- for each readonly or exported function, respectively, when in
- POSIX mode
-
-jobs.c, nojobs.c
- - don't report status for processes killed by SIGPIPE if
- DONT_REPORT_SIGPIPE is defined
-
-config.h.top
- - added a commented-out define for DONT_REPORT_SIGPIPE
-
-execute_cmd.c
- - `time' can now be used to time background pipelines, and reports
- the timing statistics when the pipeline completes
-
-[bash-2.01-alpha1 frozen]
-
- 3/12
- ----
-subst.c
- - move the parent end of the pipe file descriptor used for process
- substitution to a high, unused file descriptor to avoid clashes
- with redirections performed explicitly by a script
-
-configure.in
- - added a `--with-curses' argument so curses can be forcibly chosen
- over libtermcap (some Unix versions ship lousy termcap databases)
-
-support/mkconffiles
- - new script to create _distribution and _patchlevel from values
- contained in `configure'
-
-doc/bashref.texi
- - updated installation instructions
-
- 3/13
- ----
-general.c
- - if `getgroups' returns 0, make sure we add the primary group id
- as GROUPS[0].
- - if we have getgroups, and the primary gid is not in the array
- getgroups returns, add it as group_array[0] and shuffle everything
- up one element. This ensures that current_user.gid == group_array[0]
- all the time
-
-tests/builtins.tests
- - changes to avoid stray variables in environment when the shell
- version of printenv is used with bash as /bin/sh, running the
- `exec -c' tests.
-
- 3/14
- ----
-builtins/cd.def
- - spelling correction is no longer enabled by default
-
-support/bashbug.sh
- - if the shell's release status is alpha or beta, offer the option
- of sending the bug report to the bash-testers mailing list as
- well as to chet
-
- 3/17
- ----
configure.in
- - configure --without-gnu-malloc by default on *-sgi-irix6* because
- their code needs 8-byte alignment
-
-support/bashbug.sh
- - ``' needs to be quoted with a backslash in double-quoted strings
-
-aclocal.m4
- - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or
- 1 from strcmp(3) but a numeric collation order difference from
- strcoll(3)
+ - 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
- 3/18
- ----
-command.h
- - new redirection error code: HEREDOC_REDIRECT
-
-execute_cmd.c
- - return HEREDOC_REDIRECT from do_redirection_internal when
- here_document_to_fd cannot create the temp file for a here document
- - changed redirection_error to print a meaningful message when
- here document temp file creation fails (HEREDOC_REDIRECT)
-
- 3/19
- ----
-subst.c
- - changes to match_pattern_char: return 1 if the first char of the
- pattern is `?' only if the string is non-null; just return 1 if
- the first char of the pattern is `[' and the string is non-empty
- rather than try to re-implement the brace matching code from fnmatch
-
-lib/glob/fnmatch.c
- - some changes from glibc-2.0.1 posix/fnmatch.c
-
- 3/21
- ----
-variables.c
- - only do the initialization of `ignoreeof' if the shell is
- interactive
- - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and
- don't call itos, since we don't need its generality
- - new function, initialize_shell_level, just calls adjust_shell_level
- with argument of 1. If $SHLVL is unset, adjust_shell_level will
- deal with it correctly
- - change initialize_shell_variables to not malloc a copy of each
- environment variable, just keep two pointers into the env string:
- one for the name, one for the value
- - broke the code that computes the value of $BASH out into a separate
- function: get_bash_name
- - get_bash_name special-cases shell_name with a `./' prefix when
- initializing $BASH
- - new function: set_home_var, sets $HOME to current_user.home_dir if
- it's not already set, calling get_current_user_info if
- current_user.home_dir is NULL
- - new function: set_shell_var, sets $SHELL to current_user.shell if
- it's not already set, calling get_current_user_info if
- current_user.shell is NULL
- - changed places that reference information in current_user to check
- for NULL values of the member they're interested in and call
- get_current_user_info if necessary
-
-shell.c
- - moved the code that sets up the information in current_user that
- comes from the password file into a new function,
- get_current_user_info
- - shell_initialize calls get_current_user_info only if the shell is
- interactive
-
-externs.h
- - new extern declaration for get_current_user_info(), so variables.c
- can use it
-
- 3/24
- ----
-lib/tilde/tilde.c
- - if SHELL is defined, user the current_user struct info to find
- the user's home directory rather than calling getpwuid
+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
- 3/25
- ----
-nojobs.c
- - don't try to open /dev/tty when getting or setting the tty state
- and window size; use shell_tty instead
- - initialize shell_tty to standard error in initialize_job_control
- - only fetch the tty state initially if the shell is interactive
+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
-general.c
- - open /dev/tty with the O_NONBLOCK flag
+lib/malloc/malloc.c
+ - change the __STRING macro to be defined depending on the value
+ of HAVE_STRINGIZE
-variables.c
- - changed all_vars so that it sorts its output all the time, not
- just when in POSIX mode. This means that the output of `set'
- and `export' will be sorted
+lib/readline/{readline,rlprivate}.h
+ - moved rl_get_termcap to readline.h, making it a public function
-builtins/set.def
- - in initialize_shell_options, only call parse_shellopts if we
- inherited $SHELLOPTS from the environment
- - make sure we call parse_shellopts from initialize_shell_options
- with a copy of the value of SHELLOPTS, in case one of the functions
- called while setting one of the variables modifies $SHELLOPTS
+lib/readline/readline.h
+ - new #define, RL_READLINE_VERSION, hex-encoded library version
+ number, currently set to 0x0402
+ - new public int variable, rl_readline_version
lib/readline/readline.c
- - make sure that digit arguments don't change the state of
- rl_last_func
-
-support/printenv.c
- - new file, printenv(1) clone, used to avoid environment variables
- that might be set automatically when using printenv.sh
-
-lib/tilde/tilde.c
- - if SHELL is defined, don't call getenv to get the value of $HOME,
- call get_string_value () directly
-
- 3/26
- ----
-lib/readline/histexpand.c
- - abstracted the `#ifdef SHELL' stuff that checked for special cases
- that should not be history expanded ([!...], ${!...}) into a call
- to a function that is the value of the
- new history_inhibit_expansion_function variable
+ - #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/history.h
- - extern declaration for history_inhibit_expansion_function
-
-bashhist.c
- - new function, bash_history_inhibit_expansion, which checks for
- the special cases in which history expansion should be inhibited
- - changes to the various history initialization functions to
- set history_inhibit_expansion_function
-
-lib/readline/doc/hstech.texinfo
- - documented history_inhibit_expansion_function
-
-lib/readline/shell.c
- - new file, containing versions of the functions that are provided
- by bash when readline is linked as part of bash
- - new function: get_env_value(). If SHELL is defined, this calls
- get_string_value(). If SHELL is not defined, this calls getenv()
-
-lib/readline/histexpand.c
- - moved single_quote() to shell.c
-
-lib/readline/util.c
- - moved savestring() to shell.c
-
-lib/readline/terminal.c
- - moved set_lines_and_columns() to shell.c
-
-lib/readline/Makefile.in, Makefile.in
- - added shell.c and shell.o to the appropriate variables that contain
- the files comprising the readline and history libraries
-
-lib/readline/signals.c
- - introduced two new cpp defines: HANDLE_JOB_SIGNALS and
- HANDLE_SIGTERM. When HANDLE_JOB_SIGNALS is defined, SIGTSTP,
- SIGTTIN, and SIGTTOU are caught and handled. When HANDLE_SIGTERM
- is defined, SIGTERM is caught and handled. These are both
- defined automatically if SHELL is not defined
-
-lib/readline/{bind,histfile,nls,readline,terminal}.c
- - call get_env_value instead of getenv(). This should remove the
- dependency on being able to redefine getenv() in oslib.c
-
-shell.c
- - added a missing argument of -1 to the call to list_minus_o_opts.
- Now `bash -o' lists all options, not just random ones depending
- on what's on the stack
+lib/readline/doc/rltech.texinfo
+ - documented rl_get_termcap
+ - documented rl_readline_version
- 3/28
- ----
-builtins/ulimit.def
- - change RLIM_INFINITY to the hard limit only if the hard limit is
- greater than the current (soft) limit
+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)
-hashlib.c
- - return immediately from flush_hash_table if the hash table passed
- is NULL
+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
- 4/1
+ 5/2
---
-shell.c
- - remove call to initialize_filename_hashing -- initialize the hash
- table the first time a hashed command has to be remembered
-
-hashcmd.c
- - new file, with functions to perform filename hashing and lookup
- taken from builtins/hash.def and builtins/common.c
- - change to remember_filename -- call initialize_filename_hashing
- if hashing_initialized is 0
-
-hashcmd.h
- - new file, mostly from builtins/hashcom.h, with extern function
- declarations added
-
-execute_cmd.c, builtins/{hash,type}.def
- - include hashcmd.h for hash function and type definitions
-
-builtins/{common.{c,h},hash.def}
- - moved hashing functions and declarations to hashcmd.c/hashcmd.h
-Makefile.in, builtins/Makefile.in
- - changed source and object file definitions and dependencies because
- of addition of hashcmd.h and hashcmd.c
-
-builtins/hash.def
- - return immediately from print_hashed_commands if hashed_commands
- is empty, indicating that the hash table has not been initialized
-
- 4/2
- ---
-lib/readline/bind.c
- - fixed translation of ESC in rl_untranslate_keyseq and
- rl_untranslate_macro_value
+lib/termcap/Makefile.in
+ - fix target for installed termcap library (normally unused)
-lib/readline/{readline,kill}.c
- - added an argument to _rl_fix_point telling it whether or not to
- fix up the mark also; changed calls to _rl_fix_point to add the
- appropriate argument
+lib/tilde/Makefile.in
+ - fix install target to install in $(libdir) (normally unused)
Makefile.in
- - changed the substitution delimiter in the `sed' commands that
- create bashbug from `:' to `%' to avoid conflicts with options
- containing `:'
+ - don't make $(man3dir) since there's nothing installed there
- 4/3
- ---
-print_cmd.c
- - made the initial value and the default growth value for the
- printed command somewhat smaller -- we don't really need to
- allocate 4096 bytes for the printed command
- - added stdarg support to xprintf if PREFER_STDARG is defined
-
-stringlib.c
- - changed strip_trailing to take the index of the last character
- as the second argument, saving a (useless) call to strlen, since
- the caller already knows where the end of the string is
-
-subst.c
- - change call to strip_trailing in command_substitute to add the
- new second argument
+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)
-externs.h
- - changed extern declaration for strip_trailing
+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
- 4/4
- ---
-Makefile.in, configure.in, lib/malloc/Makefile.in
- - changed the strategy for picking which `malloc' to include by
- having configure define a `malloc target' and the Makefile in
- lib/malloc implementing rules for that target
+builtins/common.h
+ - extern declaration for get_exitstat()
- 4/5
- ---
-Makefile.in
- - slightly changed the rules for remaking `parser-built': it is
- now a copy of y.tab.h, updated only when the contents of y.tab.h
- change
- - everything that used to depend on y.tab.h now depends on
- parser-built
+builtins/{exit,return}.def
+ - call get_exitstat where appropriate
- 4/6
- ---
-execute_cmd.c, print_cmd.c
- - use #include <y.tab.h> so we pick up y.tab.h from the build
- directory instead of the source directory if it happens to be
- recreated in the build directory
+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
- 4/7
- ---
bashline.c
- - fixed another problem with `pwd`/[TAB] thinking that the `/
- started an unclosed command substitution, generating errors
-
- 4/8
- ---
-general.c
- - renamed bash_tilde_expansion_failure_hook to be
- bash_special_tilde_expansions, since that more accurately reflects
- its function
- - changed tilde_initialize so that there is no failure hook -- the
- special expansions are handled first with the preexpansion hook
-
-lib/tilde/tilde.c
- - new variable: tilde_expansion_preexpansion_hook -- if non-null, it
- points to a function that is called before standard tilde expansion
- is attempted
-
-lib/tilde/tilde.h
- - extern declaration for tilde_expansion_preexpansion_hook
-
-doc/{bash.{1,html},bashref.texi}
- - added optional open paren to description of `case' command syntax
+ - change var in add_host_name to type `size_t' for passing to xrealloc
- 4/9
+ 5/3
---
-variables.c
- - on qnx, set and export a variable `NODE' which contains the QNX
- `node id'
-
-general.c
- - QNX system can now handle pathnames with a leading `//'
-
-configure.in
- - added `-Dqnx' to LOCAL_CFLAGS on QNX machines
-
-lib/malloc/getpagesize.h
- - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size;
- added code to check for it
-
- 4/10
- ----
-print_cmd.c
- - include the prototype for cprintf only if PREFER_STDARG is defined,
- otherwise just have a K&R-style forward function declaration
-
-hashlib.h
- - reduced the default number of buckets in a hash table to 53
-
-lib/tilde/tilde.c
- - prime the result string in tilde_expand by allocating a new string
- that's as long as the input string (+16 if a tilde appears in
- the string to be expanded). This should reduce the number of
- reallocs
-
-subst.c
- - broke the code that reads the output of a command substitution
- through the pipe to the subshell out into a separate function:
- read_comsub(). This does not use stdio, but rather reads
- directly from the pipe into a local 128-character buffer
-
- 4/11
- ----
execute_cmd.c
- - some systems need both <sys/time.h> and <time.h>, so include both
- if it's possible, otherwise include <sys/time.h> (if present)
-
-lib/readline/rl{tty,defs}.h
- - moved includes of <sys/stream.h>, <sys/ptem.h>, etc. to rltty.h
-
-lib/readline/terminal.c
- - include rltty.h after rldefs.h
-
-variables.c
- - changes to make environment creation faster and use less memory
- (fewer malloc/free calls, too):
-
- o two new variables: export_env_index (how many environment
- strings are in export_env) and export_env_size (the
- number of slots for strings allocated in export_env)
- o added new function add_to_export_env, since adding the
- exported shell variables and shell functions does not
- need to search the export_env for a definition to supersede
- (we just cleared it out!)
- o renamed add_or_supersede to add_or_supersede_exported_var,
- since it always works on export_env, and changed the second
- argument to a flag saying whether or not to allocate a new
- copy of the string placed into the environment
- o changed calls to add_or_supersede to the new
- add_or_supersede_exported_var with the appropriate flags
- o don't free and reallocate export_env in maybe_make_export_env,
- just free the strings and start anew
- o prime the size of export_env from the total number of shell
- variables and shell functions -- this will always be enough
- for the exported shell functions and variables, and big
- enough most of the time for the entire environment
-
-builtins/cd.def
- - efficiency hack in bindpwd(): if PWD is exported, we will have to
- rebuild the entire exported environment after every time we change
- directories. What we do is see if array_needs_making changes value
- from 0 to 1 after bind_variable ("PWD", dirname) is called, and
- that PWD is exported. If that happens, we just replace the value
- of PWD in the exported environment with a call to
- add_or_supersede_exported_var
-
-bashline.c, parse.y
- - check calls to pre_process_line to make a fresh copy of the line
- if pre_process_line returns what it was passed, in preparation
- for future changes
+ - change restore_signal_mask to accept a sigset_t *, since a sigset_t
+ may not fit into a pointer, change call
-bashhist.c
- - pre_process_line now returns its argument if it did not make
- any changes to it
-
-alias.c
- - free the bucket entry holding the alias to be removed in
- remove_alias, as well as the data
-
- 4/14
- ----
unwind_prot.c
- - if an unwind-protect frame is being discarded, and its cleanup
- function is `restore_variable', the `arg' member points to a
- SAVED_VAR that must be freed. This change is made in
- remove_unwind_protect_internal and unwind_frame_discard_internal
-
-parse.y
- - need to free memory allocated by parse_arith_cmd if it is an
- arithmetic command, after using it to make a new word
-
-subst.c
- - fixed some memory leaks caused by not freeing the argument to
- make_bare_word, which duplicates its string argument
- - need to dispose list generated by list_rest_of_args in
- paramter_list_remove_pattern
- - make sure the return value from getpattern() is freed
- - make sure array_value_internal always returns newly-allocated
- memory
- - get_var_and_type returns a new type: VT_ARRAYMEMBER if the
- string passed is of the form var[index]
- - make sure parameter_brace_substring frees the memory allocated
- by get_var_and_type if verify_substring_values returns 0
-
-hashlib.c, hashlib.h
- - new function, dispose_hash_table (table), which frees the
- table's bucket array and the table itself
-
-alias.c
- - call dispose_hash_table from delete_all_aliases instead of just
- freeing the table
-
-pathexp.c
- - make sure to free `newnames' (but *not* its contents) before
- returning from ignore_globbed_names
-
-builtins/exec.def
- - make sure the argv created to pass to shell_execve is freed if
- the execve fails and we're not exiting on failed execs
+ - 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
-expr.c
- - broke evalexp into two functions: evalexp, which sets up the
- jmp_buf that errors jump to, and subexpr, which does the
- evaluation and pushing and popping of contexts
- - readtok now calls subexpr to evaluate subexpressions in
- parentheses
- - evalexp now takes an additional paramter, a pointer to an int.
- If the expression contains errors, the location to which this
- points gets 0, otherwise it gets 1 to show that the value
- returned may be used. This plugs up memory leaks that were
- the result of evalexp() longjmping back to top_level
- - fixed a memory leak: expr_stack[0] was not being freed
-
-externs.h
- - changed extern declaration for evalexp
-
-variables.c, subst.c, builtins/let.def
- - changed calls to evalexp appropriately. They either cause a
- longjmp (top_level, DISCARD) (which is what the old stuff in
- expr.c did) or are handled by returning an appropriate error
- value (e.g., &expand_word_error in subst.c)
-
- 4/16
- ----
-shell.c
- - make sure to free dollar_vars[0] before assigning it the first
- argument following `-c command'
-
-variables.c
- - if unsetting a local variable with a previous context, make sure
- to free the hash table element used to store the local variable
-
-lib/readline/terminal.c
- - rearrange the includes so <sys/ioctl.h> is included before rltty.h,
- as it is in rltty.c
-
- 4/17
- ----
-flags.c
- - new function: reset_shell_flags, which resets all of the flags
- back to their initial values
-
-flags.h
- - extern declaration for reset_shell_flags
-
-builtins/set.def
- - new function: reset_shell_options, which resets all of the -o
- options that are not also shell flags back to their initial values
-
-builtins/shopt.def
- - new function: reset_shopt_options, which resets all of the shopt
- options that are not also shell flags or -o options back to their
- initial values
-
-builtins/common.h
- - extern declarations for reset_shell_options and reset_shopt_options
-
-execute_cmd.c
- - broke the code that reinitializes things when an executable script
- without a leading `#!' is found out into a new function:
- initialize_subshell
- - initialize_subshell now calls the reset_* functions that reset the
- shell flags and options
-
-general.c, general.h
- - move_to_high_fd now takes a third argument: the highest fd at which
- to start looking. If that's less than 20, the maximum number of
- open files as returned by getdtablesize() is used (which is what
- it did before this)
-
-jobs.c, shell.c, subst.c
- - changed calls to move_to_high_fd appropriately
-
-[bash-2.01-beta1 frozen]
-
- 4/18
- ----
-general.c
- - itos now uses a local char buffer to do its conversion, but still
- returns newly-allocated memory
-
- 4/21
- ----
-variables.c
- - be a little more careful when checking for backwards-compatibility
- with exported function definitions
-
- 4/22
- ----
-builtins/ulimit.def
- - translate RLIM_INFINITY to limit.rlim_max if the current limit is
- less than or equal to the hard limit, not just strictly less than
- (the change of 3/28 was too drastic)
-
- 4/23
- ----
-oslib.c
- - fixed definition of to_lower on machines without strcasecmp
-
-trap.c
- - don't free the trap command in change_signal if the SIG_INPROGRESS
- is set in the signal's flags -- it will cause memory to be freed
- twice if a trap command resets the signal handler more than once,
- and _run_trap_internal keeps a pointer to the trap command so it
- can free it, so there will be no leaks
-
- 4/24
- ----
-aclocal.m4,configure.in
- - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality
-
-shell.c, externs.h
- - get_current_user_info is now a void function
-
-bashline.c
- - alias_expand_line_internal was removed
- - new function, alias_expand_line, performs alias expansion on
- rl_line_buffer and either replaces rl_line_buffer or signals
- an error
- - new bindable commands: alias-expand-line and
- history-and-alias-expand-line, available if ALIAS is defined
-
- 4/25
- ----
-Makefile.in, lib/malloc/malloc.c
- - changed the define that turns on malloc range checking from
- `rcheck' to `RCHECK'
-
-lib/readline/isearch.c
- - fixed a couple of places where rl_search_history would try to
- free a NULL pointer
-
- 4/29
- ----
-unwind_prot.c
- - fixed a problem with saving a variable that is a null pointer
- in unwind_protect_var. It happens only on machines where the
- size of a pointer is not the size of an int. The old FASTCOPY
- code would copy the eight bytes at memory location zero, which
- did not necessarily make a null pointer
-
- 4/30
- ----
-shell.c
- - run_startup_files should turn off job control, since the startup
- files should be run without job control enabled -- this makes
- SIGINT interrupt startup file execution again
- - if we get a SIGINT or other longjmp to top_level while executing
- the startup files, re-enable job control for interactive shells
- before setting locally_skip_execution
+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
- 5/2
- ---
-lib/readline/nls.c
- - if we have setlocale(3), don't bother with checking the
- environment variables for valid values; just use setlocale()
- to set the locale categories from the environment variables
- directly and go into eight-bit mode if the current locale is
- not C or POSIX
-
- 5/5
- ---
-sig.c
- - make sure that the handler for SIGPROF is not changed if it has
- been set to something other than SIG_IGN or SIG_DFL -- this makes
- profiling work after the terminating signals have been initialized
+configure.in,config.h.in
+ - call AC_C_LONG_DOUBLE to check for `long double'; define
+ HAVE_LONG_DOUBLE if supported
bashline.c
- - if a filename containing `!' is completed, and the user has started
- the string with a `"', change the completion style to backslash-
- quoting, since there's no way to use `!' with double quotes (this
- requires more changes to readline to really work right)
+ - fix an inadvertantly-unclosed comment in attempt_shell_completion
+ - make set_saved_history return a value
+ - make dynamic_complete_history return a useful value
- 5/6
- ---
-lib/readline/complete.c
- - changes to make_quoted_replacement, insert_all_matches, and
- insert_match and their callers to allow the application-specific
- filename quoting function to change the quote character (e.g., for
- bash to change a filename containing a `!' and started with a
- double quote by the user into a filename with the `!' quoted by
- a backslas and no double quote)
+{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
+pcomplete}.c
+ - removed some declared-but-unused variables
- 5/8
- ---
-jobs.c
- - new function: nohup_all_jobs(), calls nohup_job for each entry in
- the jobs list
- - delete_all_jobs is now global
-
-jobs.h
- - new extern declarations for delete_all_jobs() and nohup_all_jobs()
+builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
+ - removed some declared-but-unused variables
-builtins/jobs.def
- - `disown' without any jobspec arguments means the current job. Fix
- a core dump printing the error message when there is no current job
+lib/sh/{zread,netopen}.c
+ - removed some declared-but-unused variables
- 5/12
- ----
-subst.c
- - process an expansion like $((foo); bar) as a command substitution,
- not as an arithmetic expansion. An arithmetic expansion must have
- a closing `))'
+execute_cmd.c
+ - in execute_arith_command, use a long variable to hold the result
+ of evalexp(), since that's what it returns
- 5/14
- ----
builtins/evalstring.c
- - the third argument to parse_and_execute() is now a flags word.
- The caller can control the value of `interactive' and whether
- or not history is disabled while parse_and_execute() runs
-
-builtins/common.h
- - new #defines for the flag values for parse_and_execute()
-
-{bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c,
-builtins/{eval,fc}.def
- - changed calls to parse_and_execute appropriately
-
-builtins/evalfile.c
- - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg,
- don't pass SEVAL_NOHIST to parse_and_execute
- - new function: fc_execute_file, which sets FEVAL_HISTORY in the
- flags argument to _evalfile()
-
-bashline.c
- - call bash_add_history instead of add_history from
- vi_edit_and_execute_command so the bash state variables get
- updated properly. This keeps the `v' command from operating
- on an empty command when the history list is stifled
+ - make cat_file return -1 on a read or write error
-bashhist.c
- - bash_add_history is now global
+lib/sh/stringlib.c
+ - make merge_stringlists() return the right value
-bashhist.h
- - extern declaration for bash_add_history
-
-builtins/fc.def
- - call fc_execute_file instead of maybe_execute_file in the
- edit-and-re-execute case (fc -e ...)
- - don't manually insert the commands from the file created by `fc -e'
- into the history list, just set remember_on_history and let
- fc_execute_file take care of telling parse_and_execute to do the
- right thing. This makes compound commands and the `cmdhist'
- and `lithist' settings work better. This supersedes the fix of
- 1/27. This was reported again by rchen@fractal.eng.yale.edu.
+ 5/7
+ ---
+pcomplete.c
+ - remove typo that caused empty declaration (;;)
parse.y
- - the body of a `for' command (the commands between do...done or
- {...}) should be a `compound_list' instead of a `list'. Problem
- reported by cpg@research.bell-labs.com
-
- 5/19
- ----
-lib/readline/complete.c
- - in filename_completion_function, if we find that the directory
- pointer (return value from opendir(3)), is not null when state
- is 0 (indicating that this is the first time the completion
- function has been called for the current completion), call
- closedir on it, assuming that it was left open by a previous
- (interrupted) completion
-
-[bash-2.01-beta2 frozen]
-
- 5/27
- ----
-Makefile.in
- - make sure that `make distclean' (and other clean targets) remove
- the `printenv' executable
-
-tests/execscript, tests/redir.tests
- - make sure to set LANG=C and LC_ALL=C so the messages show up in
- English
-
-tests/run-func
- - add a warning about exported functions in the environment
-
- 5/29
- ----
-builtins/hash.def
- - if one of the arguments passed to `hash' is an absolute pathname,
- just continue the loop, don't do list=list->next first. This
- fixes the `hash a/b' -> core dump bug
+ - fix yyerror() to accept a single string argument; fix callers
- 5/30
- ----
-general.c
- - change canonicalize_pathname to leave a leading `/' alone, as
- POSIX requires
-
- 6/2
- ---
-support/xenix-link.sh
- - shell script for linking bash under Xenix
-
- 6/3
- ---
-bashline.c
- - fixed a memory leak in command_word_completion_function, courtesy
- of a.pfaller@pop.gun.de
+trap.c
+ - cast pointer to long instead of int when printing message with
+ internal_warning() in run_pending_traps()
-hashcmd.c
- - fixed find_hashed_filename to always return a newly-allocated
- string
+subst.c
+ - fix process_substitute to handle stdin being closed
-execute_cmd.c
- - since find_hashed_filename returns newly-allocated memory, don't
- call savestring() on it, and free it if the data is stale (in
- search_for_command()). Another memory leak fixed courtesy of
- a.pfaller@pop.gun.de
+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'
-builtins/type.def
- - free the value returned by find_hashed_filename
+lib/sh/netopen.c
+ - change _getserv() to reject negative port/service numbers
-[bash-2.01-release frozen]
+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
- 6/6
- ---
-configure.in
- - force shlicc2 and libc malloc for BSD/OS 3.0
+builtins/{jobs,kill,wait}.def
+ - use legal_number instead of atoi when converting strings to pid_t;
+ check for numeric overflow
- 6/9
- ---
-doc/Makefile.in
- - don't create ${man3dir}, since we're not installing the readline
- manual page
+input.c
+ - fix for cygwin in b_fill_buffer -- off-by-one error when checking
+ buffer for \r\n termination
-lib/readline/readline.h
- - rl_dispatching should be declared `extern'
- [in bash-2.01.1]
+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 <limits.h> if it's present
- 6/10
- ----
-lib/malloc/Makefile.in
- - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things
- work when building in a directory other than the source directory
- [in bash-2.01.1]
+{execute_cmd,findcmd,test}.c
+ - don't include <limits.h>, since general.h does it now
- 6/30
- ----
-lib/readline/examples/rltest.c
- - don't free the value returned by history_list()
+{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
-lib/readline/histfile.c
- - open the history file for writing with mode 0600 for better
- security
- [in bash-2.01.1]
+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
- - select_query now uses legal_number to decide whether the user's
- selection is a valid number, and just executes the loop again if
- invalid input is entered
- [in bash-2.01.1]
-
- 7/1
- ---
-builtins/evalstring.c
- - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right
- [in bash-2.01.1]
+ - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
+ - new_fd_bitmap takes an `int' size parameter, not a `long'
-execute_cmd.c
- - fix to execute_command_internal so that `bash -c time [-p] (zzz)''
- works right
- [in bash-2.01.1]
- - print_formatted_time should pass a long as the fourth parameter
- to mkfmt
- [in bash-2.01.1]
+execute_cmd.h
+ - change prototype for new_fd_bitmap()
-externs.h, shell.c
- - `exit_shell' is now a void function
+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
hashlib.c
- - print_table_stats is now a void function
-
-mailcheck.c
- - made add_mail_file check for the filename in the mail file list
- using the expanded filename, since that is what it puts into
- the list
- [in bash-2.01.1]
+ - don't discard the upper 32 bits of the random value, if present
-variables.c
- - for the time being, PWD will be auto-exported, since some systems
- seem to expect it
-
-doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo
- - added necessary `dircategory' and `direntry' commands to make
- `install-info' work correctly
-
-Makefile.in
- - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on
- the line that links bash
-
-doc/texinfo.tex
- - upgraded to version 2.185 from the texinfo-3.9 distribution
-
-lib/tilde/tilde.c
- - fixed a bug in tilde_expand so that enough space is allocated for
- the string and terminating null byte if a `~' does not appear.
- This was masked before by the bash malloc()
- [in bash-2.01.1]
+lib/readline/shell.c
+ - use the same INT_STRLEN_BOUND mechanism to decide how much space to
+ allocated in sh_set_lines_and_columns
- 7/3
+ 5/8
---
aclocal.m4
- - new test, BASH_TYPE_INT32_T, to check which builtin C type is
- 32 bits wide
- - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is
- appropriate for pointer arithmetic
+ - 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
configure.in
- - check sizes of int and long, and for the existence of an int32_t
- basic system type. Call BASH_TYPE_INT32_T if int32_t is not
- defined anywhere in the system header files
- - check size of (char *), and for the existence of a ptrdiff_t
- basic system type. Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not
- defined anywhere in the system header files
- - added a check for <stddef.h>
-
-config.h.in
- - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t,
- u_int32_t, and ptrdiff_t
- - added line for HAVE_STDDEF_H
-
-lib/malloc/malloc.c
- - new version, with many changes and much better memory usage; old
- (bash-2.01) version is lib/malloc/omalloc.c
-
-lib/malloc/gmalloc.c
- - new version, with a number of changes and range checking included
- by default; old (bash-2.01) version is lib/malloc/ogmalloc.c
+ - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
execute_cmd.c
- - applied patch from 5/27 to make execute_simple_command fork early
- if it's part of a pipeline. This keeps assignment statements or
- other commands that don't require a builtin, function, or disk
- command to be executed from modifying the shell's environment
-
-tests/exec?.sub
- - renamed from tests/execscript.sub? because those filenames are
- too long for System V 14-char filename systems
-
-tests/source?.sub
- - renamed from tests/source.sub? because those filenames are bad
- for DOS/Windows
-
-tests/getopts?.sub
- - renamed from tests/getopts.sub? because those filenames are bad
- for DOS/Windows
-
-tests/histexp.{tests,right}
- - renamed from histexpand.{tests,right} because those filenames are
- too long for System V 14-char filename systems
-
-tests/trap1.sub
- - renamed from trap.sub1 because that filename was bad for DOS/Windows
+ - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
+ to check array bounds before indexing into the sample string
-tests/ifs-[123].right
- - renamed from ifs.[123].right because those filenames were bad for
- DOS/Windows
-
-tests/ifs-[123].test
- - renamed from ifs-test-[123].sh because those filenames were bad
- for DOS/Windows
-
-examples/startup-files/Bashrc.bfox
- - renamed from examples/startup-files/Bashrc because that filename
- conflicts with examples/startup-files/bashrc on case-insensitive
- file systems
-
-tests/exec.right
- - renamed from execscript.right because that filename is too long
- for System V 14-char filename systems
-
-tests/run-set-e
- - renamed from run-set-e-test
-
-tests/misc/perftest
- - renamed from tests/misc/haertel.perftest because that filename is
- too long for System V 14-char filename systems
-
-lib/glob/fnmatch.c
- - new version with full POSIX.2 BRE matching (character classes,
- collating symbols, equivalence classes), full support for
- strcoll(3), and case-insensitive pattern matching
-
-lib/glob/fnmatch.h
- - new version, with necessary symbols for the new fnmatch.c
-
-tests/posixpat.{tests,right}, tests/run-posixpat
- - test suite for the POSIX.2 BRE pattern matching code
-
-variables.c
- - make sure that array assignment using the compound syntax empties
- the array before doing the assignment
- [in bash-2.01.1]
-
-trap.c
- - new function, trap_to_sighandler(sig), which returns the correct
- trap handler for SIG depending on the information in sigmodes[sig]
- [in bash-2.01.1]
-
-sig.h
- - extern declarations for trap_handler and trap_to_sighandler
- [in bash-2.01.1]
+unwind_prot.[ch]
+ - import new versions submitted by Paul Eggert <eggert@twinsun.com>
+ with a couple of changes for backwards compatibility, so the rest
+ of the source doesn't need to be changed yet
jobs.c
- - if we get an interrupt while waiting for a command to complete,
- and there was a trap set on SIGINT that resets the handler to
- SIG_DFL, the value that waitchld uses for old_trap_handler will
- be wrong (it will be trap_handler, but trap_handler no longer
- knows anything about SIGINT). If old_signal_handler is trap_handler,
- but signal_is_trapped(SIGINT) returns 0, we need to call
- trap_to_sighandler to decide what to do
- [in bash-2.01.1]
-
- 7/7
- ---
-locale.c
- - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as
- the result of `unset LANG') when default_locale is null
- [in bash-2.01.1]
-
- 7/8
- ---
-builtins/umask.def, doc/{bash.{1,html},bashref.texi}
- - added `-p' option for umask to print output in a reusable form
-
- 7/9
- ---
-doc/{bash.{1,html},bashref.texi}
- - removed descriptions of `-type', `-path', and `-all' options to
- the `type' builtin in preparation for removing them in the next
- release
-
-builtins/type.def
- - removed mention of `-type', `-path', and `-all' options from the
- long help description
-
-error.c, error.h
- - new function: internal_warning, for warning messages
-
-variables.c
- - changed a call to internal_error to use internal_warning
- - modified change of 7/3 so that arrays are not emptied until
- just before the shell is about to assign the new values, so
- the old value can be used to generate the rhs of the assignment,
- if necessary. This is how `normal' shell variables work
- [in bash-2.01.1]
-
-jobs.c, jobs.h
- - delete_job now takes a second int argument and prints a warning
- message when deleting a stopped job if the second argument is
- non-zero
-
-jobs.c, builtins/jobs.def
- - changed all calls to delete_job to provide a proper second arg
+ - use unwind_protect_var on last_made_pid in run_sigchld_trap
-lib/readline/bind.c
- - broke rl_read_init_file into an `upper' and `lower' half in
- preparation for adding file inclusion capability to inputrc
- parsing
- - handle_parser_directive now displays an error message if an
- unknown directive is encountered
- - parser_endif now prints an error message if an $endif without
- a matching $if is found
- - added `$include' parser directive to read bindings and commands
- from another file at that point
-
-lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3}
- - documented new readline `$include' parser directive
-
-shell.c, parse.y
- - added a new invocation option, --dump-po-strings, and code to
- make it dump translatable strings ($"...") in GNU gettext
- `po' format
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `--dump-po-strings' invocation option
-
-lib/readline/{{kill,funmap}.c,readline.h}
- - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard'
- for CYGWIN32 users
-
-lib/readline/kill.c
- - incorporated bfox's patches for `iterative' yank-last-arg handling.
- This means that one can keep pressing M-. and move backwards in
- the history, yanking the last argument of successive history lines
-
-lib/readline/rlwinsize.h
- - new file, encapsulates various locations of the definition for
- `struct winsize'
-
-aclocal.m4
- - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as
- sys/ioctl.h for definition of `struct winsize'
-
-lib/readline/rltty.h
- - include "rlwinsize.h" after including tty-driver-specific header
- file
-
- 7/10
- ----
-support/config.guess
- - add better support for SunOS on M68K (old Sun3 machines)
-
-parse.y
- - check for compound array assignment in read_token_word only if
- there are characters before the `=' (which would make it a legal
- assignment statement). This fixes the problem with defining a
- function named `=' with `=() { echo foo; }'
- [in bash-2.01.1]
-
-jobs.c, jobs.h
- - nohup_all_jobs and delete_all_jobs now take a parameter which
- says whether or not to restrict their operation to only running
- jobs
-
-jobs.c
- - changed all calls to delete_all_jobs
-
-builtins/jobs.def
- - added `-a' (all jobs) and `-r' (running jobs only) options to
- `disown'
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `-a' and `-r' options to `disown'
-
-findcmd.c, findcmd.h
- - new files with command searching code from execute_cmd.c and
- function declarations from execute_cmd.h
-
-Makefile.in, builtins/Makefile.in
- - updated dependencies to account for new findcmd.[ch]
- - updated dependencies to account for new redir.[ch]
-
-redir.c, redir.h
- - new files with code that sets up lists and performs redirections
- from execute_cmd.c and execute_cmd.h
-
-execute_cmd.c
- - include new findcmd.h, redir.h
-
- 7/11
- ----
-Makefile.in, configure.in
- - PROFILE_FLAGS is now substituted into the Makefile by configure
-
- 7/14
- ----
-print_cmd.c
- - make sure single_quote is called from xtrace_print_word_list
- to correctly quote each word of trace output, especially those
- with embedded quotes
- [in bash-2.01.1]
-
-aclocal.m4
- - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid
- and getpwnam can also be declared, as well as getpwent
- [in bash-2.01.1]
- - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying
- to assign it to `pf' to avoid any prototype problems in the
- declaration
- [in bash-2.01.1]
-
-trap.c
- - include <unistd.h> before any of the bash-specific header files,
- but after config.h
- [in bash-2.01.1]
-
-test.c
- - include <errno.h> and declare `extern int errno' before including
- any of the bash-specific include files, but after <unistd.h>
- [in bash-2.01.1]
-
-builtins/Makefile.in
- - PROFILE_FLAGS is now substituted into the Makefile by configure
-
-configure.in
- - new options, --enable-profiling and --enable-static-link, to turn
- on profiling with gprof and link bash statically (if using gcc)
- for use as a root shell. The former implies the latter. If
- we're linking statically, dynamic loading of new builtins is not
- available
-
-doc/bashref.texi
- - documented new --enable-profiling and --enable-static-link
- options in installation section; regenerated INSTALL
-
-lib/glob/glob.[ch]
- - new global variable, glob_ignore_case, turns on case-insensitive
- filename matching in fnmatch() using the FNM_CASEFOLD flag
-
-doc/{bash.{1,html},bashref.texi}
- - documented new shopt `nocaseglob' option
-
- 7/15
- ----
-bashline.c
- - when glob_complete_word is called with state == 0, make sure we
- set rl_filename_completion_desired so that proper quoting of
- the resultant filenames is performed
- [in bash-2.01.1]
-
- 7/16
- ----
-externs.h, oslib.c
- - strcasecmp and strncasecmp replacements should have `const char *'
- as the first two arguments, to match OS definitions
- [in bash-2.01.1]
-
- 7/17
- ----
-(many files)
- - changes for minix-2.0, mostly just adding #ifndef _MINIX around
- include files that minix doesn't provide, like <sys/param.h> and
- <sys/file.h>
-
-lib/readline/terminal.c
- - removed `outchar' function; use _rl_output_character_function in
- its place
-
-support/config.guess
- - changes to recognize HP_ARCH of `hppa2.0'
-
-test.c
- - new `-N' option: `test -N file' returns true if FILE exists and
- has been modified since it was last accessed
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `test -N' option
-
- 7/22
- ----
-aclocal.m4
- - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR
- [in bash-2.01.1]
-
-lib/readline/{complete,bind}.c
- - new readline variable, print-completions-horizontally, which causes
- matches to be printed across the screen (like `ls -x') rather than
- up-and-down (like `ls')
- - new readline variable, completion-ignore-case, which causes filename
- completion and matching to be performed case-insensitively
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - documented new print-completions-horizontally variable
- - documented new completion-ignore-case variable
-
-_distribution, Makefile.in
- - bumped the version number up to 2.02-alpha1
-
-bracecomp.c
- - fixes so that the braces are not quoted by the filename quoting
- function when complete-into-braces is executed with M-{. The
- brace completion functions do filename quoting themselves
- [in bash-2.01.1]
-
-pathexp.c
- - changed quote_string_for_globbing so that it takes a flags word
- as its second argument
-
-pathexp.h
- - defines for flags passed to quote_string_for_globbing
+builtins/bind.def
+ - use unwind_protect_var on rl_outstream
-subst.c,execute_cmd.c
- - changed calls to quote_string_for_globbing to pass the correct
- flag arguments
+general.c
+ - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
+ most negative number correctly
expr.c
- - added a `**' binary operator to do exponentiation (2**16 == 65536).
- precedence is lower than arithmetic operators, higher than unary
- operators (2**16-1 == 65535)
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `**' arithmetic binary operator
-
- 7/24
- ----
-shell.c
- - added new (currently undocumented) `--wordexp' option to do the
- job required by POSIX.2 wordexp(). If -n is supplied along with
- --wordexp, command substitution is disallowed and the shell
- exits with a status of 125 if one is attempted. If there is an
- expansion error, the shell exits with a status of 127. If there
- is a shell parsing error, the shell exits with a status of 126.
- Otherwise, the exit status is 0. The current output is
-
- number of words\n
- number of bytes\n
- expanded words, one per line, separated by newlines
-
- This will have to be changed when an interface to glibc is coded
-
- 7/28
- ----
-hashcmd.h
- - reduced the default size of the filename hash table from 631
- to 107
-
-sig.c
- - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined
- [in bash-2.01.1]
-
-siglist.c
- - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined
- [in bash-2.01.1]
-
-variables.c
- - fix to make $RANDOM work better in subshells
- [in bash-2.01.1]
-
-aclocal.m4
- - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in
- <signal.h> and <unistd.h>, defines UNDER_SYS_SIGLIST_DECLARED if
- found
- [in bash-2.01.1]
- - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST,
- like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST
- [in bash-2.01.1]
-
-config.h.in
- - add a line for UNDER_SYS_SIGLIST_DECLARED
- [in bash-2.01.1]
-
-configure.in
- - make sure that SVR4_2 is defined for machines that have $host_os
- sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2
- [in bash-2.01.1]
-
- 7/29
- ----
-command.h
- - new command type, ARITH_COM, used to create and execute a ((...))
- command without translating it into let "..."
-
-parse.y
- - changes to the grammar and lexer so that ((...)) is parsed as a
- command of type ARITH_CMD. An ARITH_CMD is a WORD_LIST, for
- future expansion, even though only the first word is used
-
-make_cmd.c, make_cmd.h
- - definition and declaration of a function to build an arithmetic
- command
-
-dispose_cmd.c
- - added code to dispose of arithmetic commands
-
-print_cmd.c
- - added code to print arithmetic commands, both `regularly' and
- when they're being traced with `set -x'
-
-externs.h
- - extern declaration for xtrace_print_arith_cmd
-
-copy_cmd.c
- - added code to copy arithmetic commands
-
-execute_cmd.c
- - added code to directly execute arithmetic commands -- they are
- a shell_control_structure, so just about everything like
- redirections and piping is taken care of by the boilerplate code.
- All that's needed is to expand the expression (which is within
- double quotes -- added by parse.y:parse_arith_cmd()), print it
- if tracing is enabled, call the expression evaluator, and return
- an appropriate result
-
- 7/30
- ----
-input.c
- - new function, set_buffered_stream(fd, bp), sets the buffered stream
- associated with FD to BP and returns the old buffered stream
-
-input.h
- - extern declaration for set_buffered_stream
-
-parse.y
- - call set_buffered_stream rather than manipulating the BUFFERS array
- directly
-
-shell.c
- - unset_bash_input now takes an argument, CHECK_ZERO. This tells it
- whether to check whether default_buffered_input is >= 0 or just > 0
-
-externs.h
- - changed extern declaration for unset_bash_input
+ - `tokval' should have been a `long', since all arithmetic is done
+ as longs
-execute_cmd.c, jobs.c, nojobs.c
- - changed calls to unset_bash_input to add appropriate argument
+builtins/history.def
+ - consolidate tests for valid history position in one block to
+ avoid duplicate code and strings
-input.h
- - #undef B_* before defining them as flag values for b_flags. Some
- systems, like SVR4, have a B_ERROR define in a file included by
- jobs.c and nojobs.c, and it causes a warning
+builtins/ulimit.def
+ - fix check for overflow when setting limit to work when int is 32
+ bits and RLIMTYPE is 64
- 7/31
- ----
-fnmatch.c
- - rewrote most of fnmatch(), so that it now implements ksh-88 style
- pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag
- is set
+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'
-fnmatch.h
- - added a define for FNM_EXTMATCH
+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/4
+ 5/9
---
-lib/readline/display.c
- - fixed _rl_redisplay_after_sigwinch () so that it really redisplays
- only the portion after the final newline of a multi-line prompt
- [in bash-2.01.1]
+builtins/set.def
+ - recognize `set [-+]o nolog' if HISTORY is defined
bashline.c
- - attempt_shell_completion no longer returns matches if a glob pattern
- matches more than one filename -- it caused too many problems
- [in bash-2.01.1]
-
- 8/5
- ---
-lib/glob/glob.c
- - updated glob_pattern_p so that the extended matching operators
- are recognized
-
-pathexp.c
- - udpated unquoted_glob_pattern_p so that the extended matching
- operators are recognized
- - udpated quote_globbing_chars so that the extended matching
- operators are recognized and quoted appropriately
-
-subst.c
- - updated match_pattern_char so that the extended matching operators
- are recognized
-
-parse.y
- - updated read_token_word so that it parses an extended matching
- pattern as a single word
+ - new variable `dont_save_function_defs', set by `set -o nolog';
+ currently ignored
-jobs.c
- - if a job is suspended with SIGTSTP, and the user has set
- checkwinsize with `shopt', update the window size
- [in bash-2.01.1]
-
-pathexp.c, pathexp.h
- - new global variable, extended_glob, controls whether the extended
- pattern matching features are enabled
+command.h
+ - the `dest' member of a REDIRECTEE is now an `int'
-pathexp.h
- - new define, FNMATCH_EXTFLAG, to be OR'd with other values for
- flags argument to fnmatch to enable the extended pattern matching
- features if extended_glob is set
+parse.y,redir.c
+ - changed uses of `redir.test' (where redir is a REDIRECTEE) since
+ it's now an int
-{pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def
- - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if
- extended_glob is non-zero
+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
-lib/glob/glob.c
- - changed flags arg passed to fnmatch to include FNM_EXTMATCH if
- extended_glob is non-zero (#ifdef SHELL)
+lib/tilde/tilde.h
+ - include <config.h> if HAVE_CONFIG_H is defined
+ - don't mess around with `const', rely on configure
- 8/6
- ---
builtins/shopt.def
- - added a new `extglob' shell option, controls the value of
- extended_glob
-
- 8/7
- ---
-doc/{bash.{1,html},bashref.texi}
- - documented new extended pattern matching operators and the `extglob'
- shell option
-
-tests/{extglob.{tests,right},run-extglob}
- - test suite for the new extended globbing features
-
- 8/8
- ---
-parse.y, pathexp.h, lib/glob/fnmatch.c
- - made the extended globbing code #ifdef EXTENDED_GLOB
-
-config.h.in
- - added a line for EXTENDED_GLOB, controlled by configure
-
-configure.in
- - new option, --enable-extended-glob, controls defining of
- EXTENDED_GLOB (on by default)
-
-doc/bashref.texi
- - documented new `configure' `--enable-extended-glob' option
-
- 8/11
- ----
-builtins/printf.def
- - new `printf' builtin, implemented according to POSIX.2 spec
- for printf(1)
-
-Makefile.in,builtins/Makefile.in
- - added necessary stuff for new printf builtin
-
- 8/12
- ----
-lib/readline/isearch.c
- - change to make ^G interrupt the incremental search correctly
- [in bash-2.01.1]
-
-configure.in, config.h.in
- - configure now checks for the availability of strtoul(3)
-
-builtins/printf.def
- - use strtoul for the `%o', `%u', `%x', and `%X' formats if it
- is available
-
- 8/13
- ----
-tests/{printf.{right,tests},run-printf}
- - extensive test suite for the new `printf' builtin
+ - 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/Makefile.in
- - change so that `builtext.h' is not recreated every time the source
- file for a builtin is changed if the contents are the same. This
- keeps many files from being recompiled
-
- 8/14
- ----
-subst.c
- - changed verify_substring_values so that it returns -1 for substring
- range errors, 0 for expression errors, and 1 for success
- [in bash-2.01.1]
- - changed parameter_brace_substring to return an error if
- verify_substring_values returns 0, and a null string if it returns
- -1. This matches the ksh93 behavior
- [in bash-2.01.1]
+builtins/common.h
+ - new extern declaration for set_login_shell
-trap.c
- - changed decode_signal so that it makes sure the first three
- characters of a signal name are `SIG' before allowing the `SIG'
- prefix to be omitted. This is so a signal spec of `T' does not
- match `EXIT', for instance
- [in bash-2.01.1]
-
-builtins/trap.def
- - make sure that showtrap() displays traps for signals with unknown
- names using the signal number
- [in bash-2.01.1]
shell.c
- - make sure that `bash -r' doesn't turn on the restricted mode until
- after the startup files are executed
- [in bash-2.01.1]
-
-doc/{bash.{1,html},bashref.texi}
- - documented printf builtin
-
- 8/15
- ----
-general.c
- - added \xNNN escape to ansicstr -- NNN are up to three hex digits.
- This affects $'...', `echo -e', and printf
-
-builtins/printf.def
- - added \xNNN escape to bexpand -- NNN are up to three hex digits.
- This affects printf's `%b' conversion specifier
-
-doc/{bash.{1,html},bashref.texi}
- - documented new \xNNN escape sequence for echo, $'...', and printf
-
-builtins/setattr.def
- - make sure that a variable found in the temp environment does not
- cause a null string to be assigned by bind_variable (e.g.,
- foo="" export foo
- )
- [in bash-2.01.1]
-
- 8/18
- ----
-subst.c
- - fixed a bug that sometimes caused bad memory (pointer into an
- allocated block) to be passed to free when doing arithmetic
- substitution. Bug report from stevet@myofb.org
- [in bash-2.01.1]
-
- 8/19
- ----
-subst.c
- - considerable changes: moved the code that expands a single
- $... parameter expansion into a separate function: param_expand()
- This function returns a string, which may contain characters
- quoted with CTLESC or CTLNUL without doing word splitting
- - changed expand_word_internal to not remove the expansion of "$*"
- if the number of positional parameters is > 0
- - changed the '"' case of expand_word_internal to remove quoted
- nulls from the resultant word if the expansion was not "$@", and
- the word is not a quoted null string ([] == CTLNUL, [1] == '\0')
-
-subst.c, variables.c
- - moved the code that handles special variables from subst.c to
- variables.c
-
- 8/20
- ----
-subst.c
- - rearranged the source a bit to group functions with similar
- operation together
- - fixed parameter_brace_expand so that it no longer allows
- indirect expansion of `special' variables
- - fixed parameter_brace_expand so taking the length of some of
- the shell's special parameters works again
- - moved all of the code that computes the length of a shell
- parameter (the ${#xxx} expansion) into parameter_brace_expand_length.
- Previously, the code that handled the lengths of the shell's
- special parameters was in parameter_brace_expand_word
- - valid indirect expansions are now only variable names or positional
- parameters
-
- 8/21
- ----
-subst.c
- - fixed param_expand to raise an expansion error if $! is being
- expanded and no asynchronous processes have been created
- - an expression error in a $((...)) arithmetic expansion now causes
- a non-interactive shell running in POSIX mode to exit
- - relaxed change of 8/20 to allow indirect references to $#, $@, $*
-
-builtins/bashref.texi
- - documented new posix-mode exit on invalid expressions in $((...))
+ - call set_login_shell after setting value of login_shell (in
+ main() and set_shell_name())
-lib/readline/complete.c
- - don't call rl_strpbrk unless rl_filename_quote_characters is not
- NULL -- strpbrk requires non-NULL arguments
- [in bash-2.01.1]
-
- 8/22
- ----
-bashline.c
- - don't make `history-expand-line' a bindable command unless
- BANG_HISTORY is defined, and don't compile the code for that
- command in unless BANG_HISTORY is defined
- - make history_expand_line(), tcsh_magic_space(), alias_expand_line(),
- and history_and_alias_expand_line() int-returning functions that
- return 0 for success and non-zero on error. This allows
- tcsh_magic_space() to just call history_expand_line() and insert
- a space if that returns successfully
- - `magic-space' is now a bindable readline command
-
-doc/bash.{1,html}, lib/readline/doc/rluser.texinfo
- - documented new `magic-space' bindable readline command
-
- 8/25
- ----
parse.y
- - fixed decode_prompt_string so that values of $PWD longer than
- PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX])
- [in bash-2.01.1]
+ - added new `\A' prompt string escape sequence: time in 24-hour
+ HH:MM format
-general.c
- - fixed polite_directory_format so that values of $HOME longer
- than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX])
- [in bash-2.01.1]
+configure.in, config.h.in
+ - check for <grp.h>, define HAVE_GRP_H if found
-subst.c
- - fix to expansion of $* so that the positional parameters are
- separated by the first character of $IFS, even when the expansion
- is not within double quotes, so the correct split is still
- performed even when IFS does not contain a space. Works for
- ${*}, too
- - fix to expansion of $@ so that the positional parameters are
- separated by the first character of $IFS, even when the expansion
- is not within double quotes, so the correct split is still
- performed even when IFS does not contain a space. Works for
- ${@}, too
- - new function, string_list_dollar_at(), which is to $@ as
- string_list_dollar_star is to $*
- - fixed expansion of $@ so that splitting is still done even if
- IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2)
- - fixed expansion of $* so that it expands to multiple words if there
- is more than one positional parameter, just like $@, even if
- IFS is unset or NULL
- - new function list_quote_escapes, quotes (with CTLESC) all
- CTLESC and CTLNUL characters in each member of the list
-
-tests/dollar-{at,star}.sh
- - combined into dollar-at-star, changed run-dollars accordingly
-
- 8/26
- ----
-Makefile.in
- - make the `tests' target use $(SHELL) instead of hardcoding `sh'
+builtins/complete.def
+ - add new `-A group/-g' option to complete group names
- 8/29
- ----
-subst.c
- - expand_word_list_internal now takes a flags word as the second
- argument, telling which expansions to perform on the WORD_LIST
- - broke expand_word_list_internal into several functions: one
- each to do brace expansion, glob expansion, and the `normal'
- shell expansions
- - new extern function: expand_words_shellexp() to perform the
- `normal' shell expansions on a WORD_LIST
+pcomplete.h
+ - new define for CA_GROUP, used with group name completion
-subst.h
- - extern declaration for expand_words_shellexp
+pcomplete.c
+ - add code to support CA_GROUP group name completion
bashline.c
- - fixed a problem with attempt_shell_completion where it attempted
- to refer to rl_line_buffer[-1] (completion at the start of the
- line, which means that ti == -1, which means that the test for
- rl_line_buffer[ti] at line 715 was an array bounds error
- [in bash-2.01.1]
-
-eval.c
- - new function, parse_string_to_word_list(), which takes a string
- and runs it through the parser, returning the resultant word
- list
-
-externs.h
- - new extern declaration for parse_string_to_word_list()
+ - new function, bash_groupname_completion_function(), supports
+ programmable completion of group names
-variables.c
- - change assign_array_var_from_string to first split the string
- between the parens on whitespace, then expand the resultant
- list of words with all the shell expansions before doing the
- assignment
-
- 9/4
- ---
-redir.c, redir.h
- - redirection_error is no longer a static function
-
-builtins/evalstring.c
- - changes to handle $( < filename ) (equivalent to $(cat filename))
- as in ksh
+bashline.h
+ - extern declaration for bash_groupname_completion_function
lib/readline/bind.c
- - added two new functions: rl_unbind_function_in_map(func, map),
- which unbinds all keys that execute FUNC in MAP; and
- rl_unbind_command_in_map(command, map), which unbinds all keys
- bound to COMMAND in MAP
-
-lib/readline/readline.h
- - extern declarations for rl_unbind_{function,command}_in_map
-
-lib/readline/doc/rltech.texi
- - documented rl_unbind_{function,command}_in_map
-
-builtins/bind.def
- - added a new option, -u FUNCNAME, which unbinds all key sequences
- bound to FUNCNAME in the specified (or current) keymap
-
-doc/{bash.{1,html},bashref.texi}
- - documented new $( < filename ) command substitution
- - documented new bind -u FUNCNAME option
-
- 9/5
- ---
-shell.c
- - send SIGHUP to all jobs when an interactive login shell exits if
- the variable `hup_on_exit' is non-zero
- - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS'
- is #define'd (perhaps in config.h.top, though there is nothing there
- for it), all login shells (interactive and non-interactive) run
- /etc/profile and one of the per-user login shell startup files
-
-builtins/shopt.def
- - new shopt option `huponexit' to control the value of hup_on_exit
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `huponexit' shell option
-
- 9/8
- ---
-builtins/common.c
- - changed contains_shell_metas to return 1 if a tilde appears at the
- start of a string or after a `=' or `:'
- - changed backslash_quote to quote a tilde if it appears at the start
- of a string or after a `=' or `:'
+ - new inputrc variable, `match-hidden-files', controls completion
+ matching files beginning with a `.' (on Unix)
lib/readline/complete.c
- - moved rl_tilde_expand to util.c; it doesn't really have anything
- to do with completion
- - moved insert_text to readline.c, renamed it _rl_replace_text (since
- that's really what it does), changed callers
- - moved code that postprocesses the list of completion matches into
- a new function: postprocess_matches
- - new implementation of tcsh-like menu completion in a single new
- function: rl_menu_complete
-
-lib/readline/{funmap.c,readline.h}
- - necessary declarations for binding rl_menu_complete to the
- new `menu-complete' command
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - documented new `menu-complete' bindable readline command
-
- 9/9
- ---
-jobs.c
- - delete_job should print a warning only if subshell_environment
- is 0, so we don't print bogus warnings when shell scripts without
- a leading #! are executed
-
- 9/10
- ----
-builtins/read.def
- - fixed the code so that the `read' is automatically restarted when
- it returns -1 with errno == EINTR. SIGINT is handled by the
- interrupt handler, since interrupt_immediately is set to 1, so
- this handles things like SIGCHLD
- [in bash-2.01.1]
-
- 9/11
- ----
-test.c
- - reorganized the code slightly to make it easier to add the ksh-like
- [[...]] compound command
-
-test.h
- - new file, with extern declarations for functions available in test.c
+ - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
+ inputrc variable
-externs.h
- - moved declaration of test_command to test.h
-
-builtins/test.def
- - include `test.h'
-
- 9/16
- ----
-{command,make_cmd,dispose_cmd,externs,subst}.h
-parse.y, subst.c
-{make,dispose,copy,print,execute}_cmd.c
- - changes to add the new ksh-93 compatible [[...]] conditional command
-
-configure.in
- - new enable option, --enable-cond-command, to compile in the [[...]]
- command code
-
-config.h.in
- - new #define, COND_COMMAND, to compile in the [[...]] command code
-
-tests/{run-cond,cond.{tests,right}}
- - test suite for the new [[...]] command
+lib/readline/rlprivate.h
+ - extern declaration for _rl_match_hidden_files
-{builtins,lib/{readline,glob,tilde}}/Makefile.in
- - explicit dependencies for .o files on .c files for losing makes
- like Solaris
+builtins/hash.def
+ - new `-t' option to list hash values for each filename argument
-doc/{bash.{1,html},bashref.texi}
- - documented the new `[[' compound command
- - documented the test/[ builtin behavior based on the number of
- arguments in the description of the builtin
- - made a new section for conditional expressions that just lists
- the available primaries -- the connectives and other operators
- are listed in the description of the [[ command and the test/[
- builtin
+builtins/read.def
+ - alarm(3) takes an `unsigned int' argument, not int
+ - check for arithmetic overflow with -t and -n options
- 9/18
- ----
-builtins/set.def
- - minus_o_option_commands is now a global function so the shopt
- code can use it
- - minus_o_option_commands now takes an argument telling it which
- options to print, just like list_minus_o_options
- - new function, print_minus_o_option, which prints the value of
- a `set -o' option either in the traditional format or in the
- format used by `set +o'
- - changed list_minus_o_opts and minus_o_option_commands to call
- print_minus_o_option
+input.c
+ - check for read error before doing \r\n translation on cygnus in
+ b_fill_buffer
+ - reset bp->b_used to 0 instead of leaving it at -1 on read error
+ in b_fill_buffer
builtins/shopt.def
- - `shopt -p' now causes output to be printed in a format reusable
- as input (the format is a series of shopt commands, like the
- output of `set +o')
- - fixed a bug that made `shopt -so' and `shopt -uo' not work
- - fixed list_shopt_o_options so that `shopt -op' acts like `set +o'
- - fixed list_shopt_o_options to that `shopt -op optname' prints the
- value of optname in a reusable format
- - fixed list_some_o_options so that `shopt -ops' and `shopt -opu'
- work and display output in a reusable format
-
- 9/19
- ----
-doc/{bash.{1,html},bashref.texi}
- - documented new `shopt -p' behavior
-
-shell.c
- - made `bash +o' display the same output as `set +o' and then
- start an interactive shell (previously `bash -o' and `bash +o'
- displayed the same thing)
+ - new functions, shopt_setopt(name, mode) and
+ shopt_listopt(name, mode) to give the rest of the shell an easy
+ interface
builtins/common.h
- - added prototypes to the extern function declarations
-
- 9/22
- ----
-builtins/evalstring.c
- - fixed the DISCARD case of the jump_to_top_level so that it
- doesn't try to call dispose_command(command) after the
- `pe_dispose' unwind frame gets run, since that disposes the
- command
-
- 9/23
- ----
-test.[ch]
- - test_eaccess is now a global function so that globbing code can
- use it
-
-lib/glob/glob.c
- - rewrote glob_vector to be slightly more efficient and to not
- read the directory if the filename pattern does not contain
- any globbing chars. This satisfies the POSIX requirement that
- read permission is not required for a directory when the
- pathname component does not contain a pattern character (bug
- reported by jsm28@cam.ac.uk)
-
-subst.c
- - fixed parameter_brace_expand so that ${array[@]} and ${array[*]}
- behave correctly when IFS is unset or set to something that does
- not contain a space (they should result in separate words, just
- like $@ and $*)
-
-tests/{run-array2,array-at-star,array2.right}
- - tests for the expansions of ${array[@]} and ${array[*]}, derived
- from the tests in dollar-at-star
-
- 9/24
- ----
-jobs.c
- - fixed cleanup_dead_jobs so that it doesn't remove the job
- containing last_asynchronous_pid from the job table. This
- fixes the POSIX.2 `wait' requirement problem
-
- 9/25
- ----
-parse.y
- - added `\r' escape sequence to the prompt expansion code
-
-lib/readline/chardefs.h
- - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined),
- and HEXVALUE
-
-lib/readline/bind.c
- - added `normal' echo/printf-like backslash escapes to the
- key sequence translation code, with the addition that \d
- expands to RUBOUT. This means that key sequence definitions
- (before the `:') and macro values may contain these special
- backslash-escape sequences
- - now that we can translate octal escape sequences in key bindings,
- change _rl_get_keyname so that it turns characters with values
- 128-159 inclusive into octal escape sequences (\200-\237), since
- those characters are not ASCII or ISO Latin 1
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - documented new backslash escapes for readline key sequence and
- macro translation
-
-builtins/pushd.def
- - new function, get_dirstack_from_string(char *string), returns an
- element from the directory stack or null, treating the argument
- exactly as `dirs string' would, with the exception that if
- the first character of `string' is not `+' or `-', a `+' is
- assumed
-
-builtins/common.h
- - new extern declaration for get_dirstack_from_string
-
-general.c
- - added code to bash_special_tilde_expansions to get the expansion
- using get_dirstack_from_string() if the first character of the
- tilde-prefix is a digit or the first character is a `+' or `-'
- and the second is a digit
-
-tests/dstack.{tests,right}
- - renamed from dirstack.{tests,right}
-
-tests/dtack2.{tests,right}
- - new tests for the directory stack tilde expansion code
-
-tests/run-dirstack
- - now runs both dstack and dstack2
-
- 10/3
- ----
-trap.c
- - reordered header file inclusion for irix 4
-
-execute_cmd.c
- - fixed select_query so that a reply that is not a number is treated
- the same as a numeric reply that is out of range
-
-lib/readline/util.c
- - added a backwards-compatibility definition of _rl_savestring()
-
-builtins/set.def
- - initialize_shell_options now takes an argument saying whether or
- not we should parse $SHELLOPTS from the environment. The shell
- does not parse the value if it's restricted, running setuid, or
- running in `privileged mode'
+ - extern declarations for shopt_setopt and shopt_listopt
shell.c
- - change call to initialize_shell_options to add the correct argument
-
-builtins/common.h
- - changed extern declaration for initialize_shell_options
-
-doc/{bash.{1,html},bashref.texi}
- - added note that the shell ignores $SHELLOPTS in the environment at
- startup if running in privileged mode
- - added note that the restricted shell does not parse $SHELLOPTS from
- the environment at startup
-
- 10/6
- ----
-aclocal.m4
- - change BASH_RLIMIT_TYPE so that it looks for rlim_t in
- <sys/resource.h> as well as <sys/types.h>, for Solaris 2.6
- - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation
- options for large files on Solaris 2.6 (from eggert@twinsun.com)
-
-mailcheck.c
- - the `file_size' member of the FILEINFO struct should be of
- type `off_t'
- - the `size' variable in file_has_grown should be of type `off_t'
- - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L
-
-builtins/Makefile.in
- - LDFLAGS and LOCAL_LDFLAGS are now set by configure
- - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly
- from the source to the executable
-
-builtins/evalfile.c
- - fixed _evalfile so that it handles large files correctly on
- systems where the st_size member of `struct stat' will not fit
- into an `int'
-
-builtins/mkbuiltins.c
- - don't assume that st_size fits into an int
-
-input.[ch]
- - the `b_size' member of a struct BSTREAM is now of type `size_t'
- - changed third argument to make_buffered_stream to size_t; changed
- caller
- - changed `size' variable in fd_to_buffered_stream to type `size_t'
-
-general.h
- - include <sys/resource.h> if HAVE_SYS_RESOURCE_H and RLIMTYPE are
- both defined, for possible necessary definition of RLIMTYPE
- (e.g., on Solaris 2.6)
-
-{execute_cmd,jobs}.c, builtins/times.def
- - don't include <sys/resource.h> explicitly if RLIMTYPE is defined,
- since general.h will include it in that case
-
-lib/readline/bind.c
- - new function, char *_rl_read_file(filename, sizep), which reads
- FILENAME into a malloced buffer, returning the buffer and the
- size of the buffer in *SIZEP
-
-lib/readline/histfile.c
- - changed read_history_range and history_truncate_file to handle
- large files
-
-hashcmd.c
- - find_hashed_filename should not add `./' to the front of a pathname
- that already begins with `./'
+ - new invocation options -O and +O, to list or set/unset shopt
+ options like +o/-o sets and unsets `set -o' options
- 10/8
- ----
-support/config.sub
- - recognize `hppa2.0' as a valid machine architecture
-
-aclocal.m4
- - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen
- if `$prefer_curses' is set to something
-
-bashhist.c
- - don't use HISTCONTROL or HISTIGNORE to remove lines from the
- second and subsequent lines of a multi-line command
- (current_command_line_count > 1). Old code did this only when
- command-oriented-history was enabled
+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
-doc/{bash.{1,html},bashref.texi}
- - changed descriptions of HISTCONTROL and HISTIGNORE to state that
- these variables are not applied to the second and subsequent
- lines of a multi-line command
+doc/bashref.texi
+ - add text to `Invoking Bash' section defining a login shell; text
+ taken from man page
-builtins/hash.def, {copy,dispose}_cmd.c
- - include "bashtypes.h" -- cray machines need it because of their
- oddball definition of `word'
+doc/bash.1, lib/readline/doc/rluser.texinfo
+ - documented new complete/compgen `-A group/-g' option
-configure.in
- - changed check of ${host_cpu} to check for `*cray*' and `*Cray*'
- when deciding whether to include the GNU malloc, since it
- seems that ${host_cpu} gets set to `CrayYMP'
+lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
+ - documented new `match-hidden-files' inputrc variable
- 10/9
+ 5/10
----
configure.in
- - look for strtod and strtol in libc
- - make lib/sh directory in build directory if not there
- - create lib/sh/Makefile
+ - fix AC_CHECK_PROG(ar, ...)
+ - add AC_CHECK_TYPE for ssize_t
config.h.in
- - added HAVE_STRTOD and HAVE_STRTOL
-
-Makefile.in
- - changes for lib/sh/libsh.a (shell library)
-
-builtins/printf.def
- - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a,
- and will be resolved from there if it's not in libc
+ - new #undef for ssize_t
-variables.c
- - call strtol() instead of string_to_long()
+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
-general.c, general.h
- - removed string_to_long
- - changed legal_number to use strtol so it correctly sets errno
- to ERANGE on overflow
- - moved bash_getcwd_errstr here from lib/sh/oslib.c
+lib/sh/zwrite.c
+ - change second argument to type `char *', since ISO C says you have
+ to pass a `char *' to `write'
externs.h
- - moved extern declarations for functions defined in libsh to a
- separate section of the file, added extern declarations for
- other functions in libsh
-
-builtins/ulimit.def
- - changed macro definition for string_to_rlimtype to call strtol
- directly instead of string_to_long
-
-lib/sh/clktck.c
- - moved get_clock_tck to its own file, since it's compiled in
- unconditionally
-
- 10/10
- -----
-lib/sh/getenv.c
- - moved getenv() and __getenv() here from lib/sh/oslib.c
-
-lib/sh/{setlinebuf,strerror,strcasecmp}.c
- - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to
- individual files
-
-lib/sh/Makefile.in, Makefile.in
- - changes for new files in lib/sh
-
-aclocal.m4
- - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what
- AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction()
-
-configure.in
- - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls
- is `no'
-
- 10/13
- -----
-builtins/jobs.def
- - catch out-of-range jobs better in disown_builtin
-
-configure.in
- - don't build with GNU malloc on cygwin32
-
-trap.c
- - change signal_name to handle the case where signal_names[sig] is
- NULL, which can happen on cygwin32
-
-execute_cmd.c
- - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32
-
-cross-build
- - new directory with cache files and other stuff for cross-compiling
- bash (currently only for building for cygwin32 on a Unix machine)
-
-cross-build/cygwin32.cache
- - new file containing configuration variable assignments for
- cygwin32 that would otherwise require a default case for AC_TRY_RUN
-
-configure.in
- - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems
- if we're cross-compiling on a unix machine
- - set $CC_FOR_BUILD for cygwin32 cross-compiling environment
-
-Makefile.in
- - CC_FOR_BUILD is now a variable set by configure
-
-builtins/mkbuiltins.c
- - only check for read(2) returning <= 0 in extract_info() (error
- and exit on < 0, warning and return on == 0)
-
-builtins/evalfile.c
- - only check for read(2) returning <= 0 in _evalfile() (error and
- and failure return on < 0, success on == 0 while short-circuting
- rest of operation)
-
- 10/14
- -----
-
-vprint.c
- - moved to lib/sh/vprint.c
-
-lib/sh/Makefile.in
- - added entries for vprint.[co] in the appropriate places
-
-cross-build/win32sig.h
- - a version of signames.h for cross-compiling for the CYGWIN32
- environment on a Unix machine (from noer@cygnus.com)
-
-aclocal.m4
- - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable
- default cases for cross-compiling, and tell the user what they are
-
-Makefile.in
- - removed vprint.c from shell sources and vprint.o from shell
- objects
- - added a level of indirection for signames.h -- the variable
- SIGNAMES_H is set by configure to either `lsignames.h' or
- a file for a cross-compilation environment (currently only
- the cygwin32 stuff is supported). Then that file is copied
- to `signames.h'. `lsignames.h' is created by `mksignames' as
- was previously used to create signames.h directly
-
-configure.in
- - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or
- `lsignames.h' as appropriate, substitute into Makefile
-
- 10/15
- -----
-builtins/Makefile.in
- - CC_FOR_BUILD is now set by configure and used to build mkbuiltins
- and psize.aux
-
-variables.h
- - new variable attribute `att_tempvar', set if the SHELL_VAR * was
- constructed on the fly from the temporary environment
-
-variables.c
- - find_name_in_env_array now sets the `att_tempvar' attribute on
- the SHELL_VAR it creates
-
-findcmd.c
- - search_for_command now disposes the SHELL_VAR created by searching
- the temporary environment for $PATH, if it is found there
- - _find_user_command_internal also disposes of the SHELL_VAR if it
- has the `att_tempvar' attribute set
-
-builtins/setattr.c
- - show_name_attributes looks in the temporary environemnt, so it needs
- to dispose the SHELL_VAR if it has the att_tempvar attribute set
-
-subst.c
- - parameter_brace_expand_word now disposes of the SHELL_VAR returned
- by find_variable if it has the att_tempvar attribute set
- - ditto for param_expand and word_split
-
-builtins/kill.def
- - disallow null pid arguments instead of treating them as 0
- - display a usage message and return failure if no pid or job
- arguments are supplied
-
- 10/16
- -----
-builtins/declare.def
- - make `var=value declare -x var' behave the same as
- `var=value export var' and `var=value declare -r var' behave the
- same as `var=value readonly var', now that we have the `tempvar'
- attribute
-
- 10/22
- -----
-jobs.c
- - non-interactive shells shouldn't report jobs killed by a SIGINT,
- even if the standard output is to a terminal
- - pretty_print_job should add a CR at the end of its output if the
- shell is interactive and asynchronous notification is being
- performed. This fixes the problem with extra CRs in the output
- of $(jobs)
-
-general.c
- - changed canonicalize_pathname to change `//' into `/', but leave
- other pathnames starting with two consecutive slashes alone
-
- 10/27
- -----
-
-lib/readline/histexpand.c
- - fixed history_expand so that the appearance of the history
- comment character at the beginning of a word inhibits history
- expansion for the rest of the line
-
- 10/29
- -----
-jobs.c,variables.c
- - moved set_pipestatus_array to variables.c
-
-variables.c
- - new function, set_pipestatus_from_exit(int), which sets the
- PIPESTATUS variable from a command's exit status
-
-variables.h
- - extern declarations for set_pipestatus_from_exit and
- set_pipestatus_array
-
-execute_cmd.c
- - fixed execute_simple_command to call set_pipestatus_from_exit
- if a foreground builtin or function, or a foreground null
- command is executed
-
- 10/31
- -----
-shell.c
- - fixed run_startup_files to detect being run by sshd, and treat
- that case as equivalent to being run by rshd
-
- 11/3
- ----
-builtins/set.def
- - make sure `set -a' doesn't cause SHELLOPTS to be exported when
- a change is made to one of the shell options
-
- 11/4
- ----
-pathexp.c
- - fix to shell_glob_filename in the code that uses a POSIX glob
- library
-
- 11/5
- ----
-jobs.c
- - fix cleanup_dead_jobs to hang onto the job corresponding to
- last_asynchronous_pid only if the shell is not interactive
- (this still has the problem that until a new async process
- is started, the job will stay in the jobs table)
+ - 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
-configure.in,aclocal.m4
- - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t
- separately from int32_t, since there are systems (HP-UX 10.20)
- that have a define for the latter but not the former
-
- 11/6
- ----
-jobs.c
- - cleanup_dead_jobs no longer checks whether the job it is deleting
- corresponds to last_asynchronous_pid
- - notify_of_job_status and mark_dead_jobs_as_notified now will not
- mark the job corresponding to last_asynchronous_pid as notified
- if the shell is not interactive
- - wait_for_single_pid, if told to wait for last_asynchronous_pid,
- or the job of which it is a member, will take care of marking
- the job as notified after calling wait_for and collecting the
- status. This means that two successive `wait' calls for $! will
- succeed the first time and fail the second, as POSIX.2 specifies
- (take this code out if it causes problems)
+input.h
+ - b_used and b_inputp members ofr struct BSTREAM are now size_t
- 11/7
- ----
-jobs.c
- - wait_for_job, if told to wait for the job corresponding to the
- last async pid, will mark the job as notified after waiting for
- it and collecting the status
+builtins/evalstring.c
+ - the number of chars read with zread in cat_file should be assigned
+ to a variable of type ssize_t
-general.h
- - fixed MEMBER macro to avoid reading past end of S (it used to
- test s[1] before s[0], which is an error if s == "")
+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
subst.c
- - expand_word_internal should free ISTRING before returning if
- param_expand returns an error
- - parameter_brace_expand_word should free the memory it allocates
- and passes to param_expand
+ - the number of chars read with zread in read_comsub should be
+ assigned to a variable of type ssize_t
-execute_cmd.c
- - execute_arith_command should call dispose_words on the list
- returned by expand_words
+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
- - after calling parse_arith_command, read_token needs to free the
- string value that parse_arith_command fills in, since make_word
- makes a copy of the string it's passed
+ - 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)
- 11/10
- -----
subst.c
- - cond_expand_word needs to free the value returned by string_list
- after it is run through quote_string_for_globbing
-
-parse.y
- - make sure cond_term frees yylval.word if it is just a `!' and
- it's parsed as a term negation operator
-
-variables.c
- - assign_array_var_from_string needs to free the word list returned
- by parse_string_to_word_list after calling expand_words_shellexp
- on it
-
-execute_cmd.c
- - changed execute_simple_command to avoid saving the_printed_command
- into command_line until just before it's needed. This should save
- time and prevent memory leaks on errors, but it must be watched
- closely to make sure that the_printed_command doesn't change out
- from under execute_simple_command before we copy it
-
- 11/12
- -----
-builtins/alias.def
- - alias and unalias should print error messages when passed an
- argument that is not an alias for printing or deletion,
- respectively, even if the shell is not interactive
-
-builtins/exit.def
- - `logout' will no longer exit a non-login non-interactive shell
-
- 11/17
- -----
-lib/readline/nls.c
- - add `koi8-r' as a legal LANG value
-
-builtins/alias.def
- - if `alias' or `alias -p' is executed when no aliases are defined,
- the return status should be 0, according to POSIX.2
-
- 11/18
- -----
-subst.c
- - changed a couple of calls to make_word_list (make_word(z), ...)
- to add_string_to_list (z, ...)
-
-execute_cmd.c
- - execute_cond_command now sets this_command_name to `[['
-
- 11/21
- -----
-variables.c
- - all_visible_{function,variable}s and the functions they call
- should be compiled in only if READLINE is defined
-
- 11/24
- -----
-aclocal.m4
- - remove some leading whitespace before preprocessor statements in
- BASH_KERNEL_RLIMIT_CHECK
-
-general.[ch]
- - fix declarations for group_member so the extern declaration in
- general.h agrees with the definition in general.c (fix from
- Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
-
-builtins/cd.def
- - print the new working directory if the shell is interactive
- and `cd -' succeeds
- - don't print the new working directory if it's found in $CDPATH
- if the shell is not interactive
-
- 11/25
- -----
-builtins/cd.def
- - fixes to bindpwd so that it copes with get_working_directory
- returning NULL (bug from schwab@issan.informatik.uni-dortmund.de)
-
- 12/2
- ----
-support/config.guess
- - add support for new OS name for SINIX SVR4 systems
-
- 12/3
- ----
-
-builtins/set.def
- - `unset' should check that a function it's trying to unset is a
- legal identifier only when in POSIX mode
-
-redir.c
- - changed here_document_to_fd to try and make sure the filename
- used for the here document is `more unique', since the old
- version would fail if two here documents were created in less
- than a second
-
- 12/4
- ----
-builtins/cd.def
- - POSIX.2 says that if CDPATH is used to find the new directory,
- and it's not relative to the current directory, the new directory
- name should be displayed on stdout even if the shell is not
- interactive
-
- 12/5
- ----
-parse.y
- - changes so that `time' is recognized as a reserved word only at
- the beginning of a pipeline (the last read token is one of 0,
- `;', `\n', `&&', `||', or `&'):
-
- o add clause to special_case_tokens that does the check
- and returns TIME if the conditions are met
- o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but
- leave it in the word_token_alist so that `type' still
- reports it as a `keyword'
- o new function, time_command_acceptable(), encapsulates the
- necessary conditions for `time' to be returned as a
- reserved word
-
-[bash-2.02-alpha1 frozen]
-
- 1/6/1998
- --------
-lib/glob/fnmatch.c
- - fix define for isgraph so that it does not return success for space
- - fix strcompare() so that the call to strcoll is surrounded by
- #ifdef HAVE_STRCOLL
-
- 1/7
- ---
-lib/glob/fnmatch.c
- - the `test' argument to brackmatch() should be of type `unsigned char'
-
- 1/11
- ----
-execute_cmd.c
- - make sure execute_arith_command sets this_command_name to `(('
-
- 1/29
- ----
-parse.y
- - make sure the code for pushing and popping strings is compiled in
- if either ALIAS or DPAREN_ARITHMETIC is defined, because the ((
- code uses push_string in the case of a nested subshell
- - fix cond_skip_newlines so it resets the prompt to $PS2 while
- parsing an unfinished conditional command
-
-dispose_cmd.c, copy_cmd.c, builtins/hash.def
- - fixes to not use `word' as a variable name or the name of a
- function parameter to get around stuff in the Cray Unix include
- files
-
-builtins/printf.def
- - return failure immediately if an illegal format character is
- encountered
-
-redir.c
- - make the code that creates here-documents behave better if the
- file it's trying to create already exists for some reason
-
-lib/readline/complete.c
- - changed print_filename to return the number of characters it
- outputs; changed callers to use that value. This makes columns
- line up when printing completion listings with filenames
- containing control characters
-
-doc/bash.{1,html}
- - fixed a typo in the quote removal section
-
- 1/30
- ----
-parse.y
- - free_string_list() needs to check that t->expander is not NULL
- before trying to dereference it
- - reset_parser() doesn't need to set pushed_string_list to NULL
- after calling free_string_list(), since free_string_list does it
-
-configure.in,cross-build/cygwin32.cache
- - fixes from Geoff Noer for better cygwin32 cross-compilation
-
-tests/printf.{tests,right}
- - removed test for integer overflow, since error messages differ
- across systems
-
-pathexp.c
- - fixed a problem with unquoted_glob_pattern_p that made things
- like `x+*' not expand correctly
-
-lib/glob/glob.c
- - fixed a problem with glob_pattern_p that made things like `x+*'
- not expand correctly
-
-builtins/cd.def
- - if `cd -P' is executed, or `set -o physical' has been executed,
- the value of $PWD after a successful cd will not contain any
- symlinks, regardless of whether or not the shell is in posix mode
-
- 2/3
- ---
-lib/readline/shell.c
- - include <string.h> or <strings.h> as appropriate
-
- 2/4
- ---
-builtins/common.c
- - take out the code in backslash_quote() that looks for tildes to
- quote, for the time being
- - if getcwd() fails, get_working_directory now prints the error
- message corresponding to errno in addition to the rest of the
- information -- TENTATIVE CHANGE
-
-lib/sh/getcwd.c
- - fix from Paul Smith to make getcwd() behave better in the presence
- of lstat(2) failures
-
-stringlib.c
- - when copying the replacement string into the output string being
- constructed, strsub() needs to make sure enough space for the
- replacement string is allocated, not the length of the pattern
- (use REPLEN, not PATLEN)
-
-mailcheck.c
- - make sure make_default_mailpath() has a valid current_user struct
- before trying to construct the default mailpath
-
- 2/5
- ---
-execute_cmd.c
- - execute_builtin needs to call run_unwind_frame if the builtin is
- `source' or `eval' and we're not in a subshell rather than just
- calling dispose_builtin_env, because not all invocations copy
- the temporary_env to builtin_env, and nested calls to `.' require
- that the temporary env given to the first persist until that first
- call to `.' finishes
-
-parse.y
- - fix to history_delimiting_chars so that function definitions like
-
- function xyz
- {
- echo a
- }
-
- are saved to the history correctly when command_oriented_history
- is enabled, but literal_history is not
-
-bashhist.c
- - when calling internal_error from pre_process_line, use "%s" as
- the format with history_value as the argument to avoid the
- problem with the failed history event containing printf escape
- sequences
-
- 2/13
- ----
-shell.c
- - if shell_initialized is non-zero, don't line-buffer stderr and
- stdout in shell_initialize on SunOS5 -- see if this fixes the
- crashing problems for scripts without a leading `#! /bin/sh'
-
- 2/17
- ----
-bashline.c
- - added diffs to _ignore_completion_names from Andreas Schwab to
- complete names that would otherwise be ignored with FIGNORE if
- they are the only possible completions. Define NO_FORCE_FIGNORE
- if you want this; it is not defined by default
-
- 2/19
- ----
-support/bashbug.sh
- - changed the bug-bash address to bug-bash@gnu.org
-
-examples/loadables/Makefile.in
- - converted from `Makefile' with some boilerplate configure variables
- to find the source and build directories -- still requires some
- hand-editing to get the right CFLAGS and LDFLAGS for shared object
- creation
-
-Makefile.in
- - create examples/loadables/Makefile with `make makefiles'
-
-configure.in
- - create examples/loadables directory so `make makefiles' can write a
- makefile there
-
-general.c
- - make sure initialize_groups_array always sets things up so that
- ${GROUPS[0]} is the user's primary group (current_user.gid)
-
- 2/20
- ----
-lib/readline/parens.c
- - change the time delay when showing matching parens from 1.5 sec to
- 0.5 sec
+ - 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
- 2/23
- ----
-shell.c
- - isnetconn() should call getpeername(fd,...) instead of using 0
- (though fileno(stdin) should always be 0)
-
-support/config.guess
- - updates from master FSF copy
-
- 2/24
- ----
-support/man2html.c
- - modified version of man2html to convert bash.1 into bash.html
-
-support/Makefile.in
- - simple Makefile to create man2html
+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
-configure.in
- - make sure support/Makefile is created
+builtins/evalstring.c
+ - remove extern declarations for zwrite and run_trap_cleanup; they're
+ in externs.h
+ - prototype cat_file forward declaration
Makefile.in
- - make sure support/Makefile is created and cleaned
-
-doc/Makefile.in
- - changes to suffix rules to say how to make .html from .1
- - `bash.html' is now a makefile target, created by man2html from
- bash.1 rather than being hand-modified
-
-lib/sh/itos.c, general.c
- - new file, itos() from general.c. This is here because the
- implementation of strerror in lib/sh/strerror.c uses itos()
-
-Makefile.in, lib/sh/Makefile.in
- - changes to add itos.c in libsh.a
-
-externs.h, general.h
- - moved extern declaration of itos() from general.h to externs.h
+ - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
aclocal.m4
- - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in
- Solaris 2.6
-
-Makefile.in
- - make sure configure sets CPPFLAGS in this file
-
- 2/27
- ----
-
-builtins/command.def
- - make sure get_standard_path returns the value of
- STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3)
- returns 0, indicating that _CS_PATH does not have a defined
- value
-
-bashhist.c
- - fixed bash_history_inhibit_expansion() so that extended globbing
- expressions like *.!(c) are not history expanded if extended_glob
- is non-zero (shopt -s extglob has been executed)
-
- 3/2
- ---
-Makefile.in
- - changed release status to `beta1'
-
-[bash-2.02-beta1 frozen]
-
- 3/17
- ----
-lib/readline/vi_mode.c
- - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer
- before trying to do anything with it
-
-jobs.c
- - add a call to internal_warning from wait_for_job if the job is
- stopped
- - changed notify_of_job_status to not report pipelines exiting due to
- SIGPIPE in non-interactive shells if the shell is compiled with
- -DDONT_REPORT_SIGPIPE
-
-builtins/psize.sh
- - some fixes to try to avoid /tmp file races and surreptitious
- substitutions
-
-version.c
- - changed the extended version info to show 1998 as the copyright year
-
-parse.y
- - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>
- for compilation errors when the shell is configured --disable-alias
- but with dparen arithmetic enabled
-
-eval.c
- - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de> to
- make sure the input stream is popped correctly when performing an
- array assignment in the command argument to `bash -c', e.g.,
- `bash -c 'A=()''
-
-builtins/kill.def
- - make `kill' with no arguments print a usage message and return a
- failure status
-
-alias.c
- - fix so that rd_token doesn't dump core when trying to do alias
- expansion on a line containing an unclosed single quote (fix from
- Vasco Pedro <vp@di.fct.unl.pt>)
-
-builtins/cd.def
- - fix so that using a non-empty directory from CDPATH to construct
- the name of the directory to change to results in an absolute
- pathname of the new current working directory being displayed,
- as POSIX.2 specifies
-
-support/bashbug.sh
- - a couple of small fixes to minimize /tmp file races -- the script
- is still raceable, the window is just smaller
+ - 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
- 3/24
- ----
-variables.c
- - make sure assign_in_env passes a malloc'd string to
- expand_string_unsplit, because some of the error code assumes that
- it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI)
+Makefile.in, builtins/Makefile.in
+ - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
- 3/25
- ----
doc/bashref.texi
- - changed the email addresses to use the @email texinfo tag
+ - updated description of --with-installed-readline configure option
-trap.c
- - call reset_parser from the exit trap code before calling
- parse_and_execute, so reserved words are parsed correctly
-
-subst.c
- - make sure parameter_brace_patsub expands the pattern string as if
- the expression were not in double quotes, even if the entire
- expansion is enclosed in double quotes, so that quote removal
- on embedded double quotes is performed correctly (bug report from
- schwab@issan.informatik.uni-dortmund.de)
+general.c
+ - moved QSFUNC typedef here from builtins/common.c
- 3/27
- ----
-support/config.guess
- - changes to allow Power PCs running Apple's Rhapsody to configure
+{alias,bashline,variables,lib/sh/stringvec}.c
+ - cast fourth argument to qsort to (QSFUNC *)
- 3/31
- ----
+alias.c
+ - prototype forward declaration of qsort_alias_compare
-Makefile.in
- - changed release status to `beta2'
+bashhist.c
+ - include <glob/glob.h> 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
-[bash-2.02-beta2 frozen]
+bracecomp.c
+ - remove extern declaration for sh_backslash_quote; it's in externs.h
- 4/6
- ---
-subst.c
- - make sure command_substitute does not try to set the terminal's
- process group to a background job
+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
-[bash-2.02 frozen]
+error.c
+ - prototype extern declaration of give_terminal_to, fix bad call
- 4/18
- ----
-[bash-2.02 released]
+{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
+shell}.c
+ - prototype all static forward function declarations
- 4/20
- ----
-bashline.c
- - make sure that rl_defun is not called for
- history-and-alias-expand-line unless both ALIAS and BANG_HISTORY
- are defined
- [in bash-2.02.1]
+pcomplete.c
+ - changed some function parameters to `const char *' to avoid discarding
+ const qualifier
- 4/22
- ----
make_cmd.c
- - make sure that make_here_document allocates enough space for the
- first line of the here document, by using the line length +2
- (instead of 1000, which is what the old code did, and breaks if
- the first line of the here document is enough longer than 1000
- characters to cause other memory to be scribbled on)
- [in bash-2.02.1]
-
-builtins/cd.def
- - when in posix mode, a value of "" for CDPATH should be treated the
- same as the current directory, not result in an error
- [in bash-2.02.1]
-
-lib/malloc/malloc.c
- - change the mh_align member of `union mhead' to be of type double
- rather than a pointer, so that malloc will return (hopefully)
- 8-byte aligned memory
- [in bash-2.02.1]
-
- 4/23
- ----
-aclocal.m4
- - add a new macro to check whether or not off_t is 64 bits
-
- 4/24
- ----
-configure.in
- - fixed a typo so the bash malloc is not compiled in on mips-sgi-irix6
-
-lib/readline/display.c
- - fix for readline redisplay if the prompt string is longer than the
- screen width and includes invisible characters
- [in bash-2.02.1]
+ - make_bare_word, make_word_flags, and make_word now take a
+ `const char *' string argument
-jobs.c
- - make_child should not set the terminal's process group to
- pipeline_pgrp if pipeline_pgrp == shell_pgrp (indicating that we
- are forking a child for a command substitution)
- [in bash-2.02.1]
-
-subst.c
- - in execute_simple_command, in the child forked if there is a pipe
- or the command is asynchronous, set subshell_environment to
- SUBSHELL_ASYNC only if the command is asynchronous, SUBSHELL_FORK
- if there is a pipe in or out
- [in bash-2.02.1]
-
- 4/27
- ----
-support/texi2dvi
- - upgraded to version 0.8 (from 0.5)
+make_cmd.h
+ - changed extern declarations for make_bare_word and make_word
-support/texi2html
- - upgraded to version 1.52 (from 1.51)
+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
-support/config.sub
- - config.sub now recognizes all the permutations of the system name
- that config.guess produces for alphas
- [in bash-2.02.1]
+shell.c
+ - in isnetconn(), the return value of sizeof() is size_t
aclocal.m4
- - changed BASH_TYPE_INT32_T, BASH_TYPE_U_INT32_T, and
- BASH_TYPE_PTRDIFF_T to avoid compiling a program; instead use
- the values determined by the AC_CHECK_SIZEOF tests to determine
- the default values to supply to AC_CHECK_TYPE
+ - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
+ BASH_CHECK_TYPE
configure.in
- - don't call AC_CHECK_TYPE({int32_t,u_int32_t,ptrdiff_t}) from
- configure.in; use the updated BASH_TYPE macros instead
-
-builtins/exec.def
- - if shell_execve fails, set ARGS to null because the realloc() call
- by shell_execve may have caused it to be reallocated and freed --
- we don't want to free the memory twice
-
-lib/glob/fnmatch.c
- - fixes from ache@nagual.pp.ru to make fnmatch work for eight-bit
- characters when `isupper' and `islower' are used -- they were
- restricted to ASCII characters before, probably to work around
- some ancient, broken C libraries in which is{low,upp}er are valid
- only for ASCII characters and return bogus values otherwise
- [in bash-2.02.1]
-
- 4/29
- ----
-builtins/cd.def
- - fixed a problem with the shell displaying the old working directory
- instead of the new one after changing to a directory found via
- $CDPATH when in physical mode (set -o physical)
- [in bash-2.02.1]
+ - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
+ to getpeername(2))
-make_cmd.c
- - make make_cond_command initialize the line number from the cond_node
- that's passed as an argument (not that it's used right now)
-
-copy_cmd.c
- - make sure that copy_cond_command copies the type of the cond command,
- since execute_cond_command uses that to decide what kind of test
- to perform
- [in bash-2.02.1]
-
-builtins/printf.def
- - make sure the for loop that processes the format string actually
- consumes arguments; otherwise process it only once to avoid
- infinite loops (e.g., `printf " " abc def ghi')
- [in bash-2.02.1]
- - if the format string is empty after preprocessing by ansicstr,
- return immediately
- [in bash-2.02.1]
-
-tests/run-printf
- - use `diff -a' so the presence of a non-printing character in the
- output doesn't confuse diff into thinking the files are binary
- (test whether or not `diff' supports `-a' first)
-
-Makefile.in
- - keep $(LOCAL_LIBS) from being specified twice
-
- 4/30
+ 5/11
----
-support/shobj-conf
- - a script to generate variables to do shared object configuration
- for the loadable builtin stuff
-
-configure.in
- - added a section for shared object configuration using an `eval'
- of the output of shobj-conf and substituting the generated values
- with AC_SUBST
-
-examples/loadables/Makefile.in
- - the system-specific shared object configuration variables are now
- substituted by configure
-
- 5/4
- ---
-builtins/ulimit.def
- - some changes for HPUX 9.x's peculiar handling of RLIMIT_FILESIZE
- - changed the limit retrieval functions to return an error code
- and the value in a reference argument to avoid use of RLIM_INVALID
+lib/readline/bind.c
+ - make `useq' a char array to pass to rl_macro_bind in
+ rl_parse_and_bind
-general.c
- - new function, get_group_array(), which returns an array of
- gids
+lib/readline/{{bind,isearch}.c,rlprivate.h}
+ - _rl_isearch_terminators is now a char *, not unsigned char *
-examples/loadables/{id,printenv,sync,uname,whoami,push}.c
- - new loadable builtins
+{subst,variables,lib/sh/tmpfile}.c
+ - dollar_dollar_pid is now a `pid_t' instead of `int'
variables.c
- - moved code that initializes $PPID into a new function, set_ppid()
+ - 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()
-variables.h
- - extern declaration for set_ppid()
-
- 5/6
- ---
subst.c
- - make sure that the `"' (double-quoted string) case of
- expand_word_internal calls string_list_dollar_at if we've expanded
- a double-quoted $@ so correct splitting on $IFS is done when
- the expansion is complete. We can't simply call string_list
- because that forces a space separator, and $IFS may not contain
- a space
- [in bash-2.02.1]
+ - don't cast last_asynchronous_pid when passing to itos()
- 5/7
- ---
-builtins/umask.def
- - broke the code that parses a symbolic mode out of symbolic_umask
- into a separate function that takes a symbolic mode and an initial
- set of bits to modify
-
-examples/loadables/mkdir.c
- - new loadable builtin
-
- 5/11
- ----
-builtins/printf.def
- - use the format string length provided by ansicstr() to process the
- format string, rather than testing for nullness, to handle NUL
- bytes in the expanded format string
-
-builtins/pushd.def
- - changes so it can be built as both a regular builtin and a loadable
- builtin from the same source
-
-examples/loadables/Makefile.in
- - changes to build pushd.c from ${topdir}/builtins/pushd.def and then
- compile it with the correct flags to make it a loadable builtin,
- even if PUSHD_AND_POPD is not defined in config.h
-
- 5/12
- ----
-lib/readline/complete.c
- - use rl_completer_quote_characters instead of #ifdef SHELL/#endif
- code in make_quoted_replacement. This means complete.c no longer
- has any #ifdef SHELL code
-
- 5/13
- ----
-builtins/Makefile.in
- - `make clean' should remove mkbuiltins.o
-
-Makefile.in
- - all of the various `clean' targets need to descend into lib/sh
- and run the appropriate target there
-
-builtins/type.def
- - changed to use the builtin getopt. The old long options are
- handled by prescanning the argument list looking for the long
- options, processing them, and taking them out of the list before
- passing it to internal_getopt()
-
-lib/readline/signals.c
- - removed #ifdef SHELL code -- job control signals and SIGTERM are
- always set in rl_set_signals, but are set to SIG_IGN if the old
- handler was SIG_IGN (as bash sets it)
- - new function rl_maybe_set_sighandler, which sets the signal
- disposition back to SIG_IGN if the old handler was SIG_IGN
- - removed #ifdef HANDLE_JOB_SIGNALS and #ifdef HANDLE_SIGTERM code
-
-lib/readline/rltty.c
- - removed #ifdef SHELL code -- set_winsize is always called
- to force the application to stop if it's not in the foreground
- before getting the tty attributes
+{sig,subst}.c
+ - prototype all static forward function declarations
5/14
----
-lib/readline/signals.c
- - readline now catches SIGQUIT and cleans up the tty before resending
- it to its container application (unless the calling application has
- set the disposition of SIGQUIT to be SIG_IGN)
- - rl_handle_sigwinch is now called rl_sigwinch_handler
- - rl_sigwinch_handler now calls rl_resize_terminal to fetch the
- screen size after a SIGWINCH
- - the sighandler_cxt struct for non-posix systems now includes
- sa_flags and sa_mask variables, for future use
- - new variable, rl_catch_signals, indicating that readline should
- install its own signal handlers for SIGINT, SIGTERM, SIGQUIT,
- SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU
- - new variable, rl_catch_sigwinch, indicating that readline should
- install its own SIGWINCH handler, which will chain to a calling
- application's SIGWINCH handler
- - new function, rl_free_line_state(), to free up variable state
- associated with the current line after receiving a signal
- - new function, rl_cleanup_after_signal(), to clean up the display
- and terminal state after receiving a signal
- - new function, rl_reset_after_signal(), to reinitialize the
- terminal state after a signal handler returns and readline
- continues
- - rl_set_signals and rl_clear_signals now look at the values of
- rl_catch_signals and rl_catch_sigwinch
-
-lib/readline/terminal.c
- - new function rl_resize_terminal (), to reset readline's idea of
- the screen size after a SIGWINCH
-
-lib/readline/readline.h
- - extern declarations for rl_resize_terminal(), rl_free_line_state(),
- rl_cleanup_after_signal(), rl_reset_after_signal()
- - extern declarations for rl_catch_signals and rl_catch_sigwinch
+{test,trap,variables}.c
+ - prototype all static forward function declarations
variables.c
- - new functions, get_env_value(char *) and get_home_dir(void) to
- satisfy references from the tilde and readline libraries when
- they are compiled as part of bash
-
-lib/tilde/tilde.c
- - rely on extern declarations of get_env_value and get_home_dir;
- there is no more #ifdef SHELL code
+ - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
-lib/readline/shell.c
- - implementation of get_home_dir that uses getpwuid() to satisfy
- references from tilde.c when not compiled as part of bash
- - removed savestring()
- - removed #ifdef SHELL/#endif pair -- all of these functions will be
- resolved from bash when readline is linked into bash
+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
-lib/readline/savestring.c
- - new file, with function definition for savestring() for backwards
- compatibility
+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
-Makefile.in, _distribution
- - bumped things up to bash-2.03-alpha
+lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
+ - prototype all static forward function declarations
- 5/15
- ----
-lib/readline/rlconf.h
- - removed #ifdef SHELL/#endif pair, so the callback stuff will be
- compiled into libreadline, but never linked into bash (since it's
- not referenced)
-
-configure.in
- - added new `--with-installed-readline' option to allow readline to
- be linked with an already-installed version -- this will probably
- not work with versions of readline prior to 2.3 (libreadline.so.4)
- [THIS IS STILL UNDOCUMENTED]
+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
-Makefile.in
- - changed necessary variables to allow the `--with-installed-readline'
- option to work; shared and static libraries are supported
+configure.in,config.h.in
+ - check for vsnprintf, define HAVE_VSNPRINTF if found
- 5/18
- ----
lib/readline/display.c
- - _rl_save_prompt is now rl_save_prompt; _rl_restore_prompt is now
- rl_restore_prompt
-
-lib/readline/readline.h
- - extern declarations for rl_save_prompt and rl_restore_prompt
-
-lib/readline/{search,isearch,readline,display}.c
- - converted calls to _rl_{save,restore}_prompt () to use new public
- versions
-
-lib/readline/doc/rltech.texinfo
- - documented new public functions rl_{save,restore}_prompt
+ - 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
- 5/19
+ 5/15
----
-lib/readline/readline.c
- - new hook function variable, rl_pre_input_hook. If non-zero, it's
- called from readline_internal_setup just before it returns and
- readline starts reading input
-
-lib/readline/readline.h
- - extern declaration for rl_pre_input_hook
-
-lib/readline/doc/rltech.texinfo
- - documented new variable rl_pre_input_hook
+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
- 5/20
+ 5/18
----
-lib/readline/complete.c
- - new hook function variable, rl_completion_display_matches_hook.
- If non-null, this function is called when readline would normally
- display the list of completion matches
-
-lib/readline/readline.h
- - extern declaration for rl_completion_display_matches_hook
-
-lib/readline/doc/rltech.texinfo
- - documented rl_completion_display_matches_hook
-
-lib/readline/readline.c
- - if RL_LIBRARY_VERSION is not defined, define it to 4.0 to match
- the version number of the shared libraries
-
-lib/readline/doc/{hist,rlman}.texinfo
- - changed the version and edition to 4.0 to match the library version
-
-support/config.guess
- - added case clause for matching UnixWare 7 from SCO (SVR5) -- further
- work may be needed
- [These fixes were in a usenet posting from hops@sco.com]
-
-support/config.sub
- - added case clauses to recognize various aliases for SCO Open Server
- and Open Desktop
- [in bash-2.02.1]
- - broke the code that canonicalizes unixware into unixware2 and
- unixware7 clauses (multiple places)
- [in bash-2.02.1]
- - added clause to recognize `sysv5' for SVR5
- [These fixes were in a usenet posting from hops@sco.com]
- [in bash-2.02.1]
-
-configure.in
- - add `-b elf' to LOCAL_CFLAGS for sco3.2v5* to allow dynamic linking
- (and loadable builtins)
- - add AC_DEFINE(SVR5) on SVR5 (unixware 7)
-
-config.h.in
- - add #undef SVR5, set by configure
+configure.in, config.h.in
+ - check for <stdint.h>, define HAVE_STDINT_H if found
+ - check for intmax_t in <stdint.h>, define intmax_t as long if not
+ found
5/21
----
-shell.c
- - line-buffer stdout and stderr in shell_initialize only if
- shell_initialized is 0 on all systems, not just SunOS 5
- [in bash-2.02.1]
-
-support/rlvers.sh
- - script to print out the version number of any installed
- readline library
-
-configure.in
- - only allow --with-installed-readline if the version of the
- installed readline library is 4.0 or greater
-
- 5/22
- ----
-lib/readline/complete.c
- - broke the code that actually displays a list of completion
- matches on the output stream into a separate public function,
- rl_display_match_list, so it can be called from the hook
- function rl_completion_display_matches_hook.
-
-lib/readline/readline.h
- - new extern declaration for rl_display_match_list
-
-lib/readline/rltech.texinfo
- - documented rl_display_match_list
-
-configure.in,Makefile.in
- - --enable-static-link now creates a STATIC_LD variable in Makefile
- rather than adding to LDFLAGS directly. LDFLAGS now includes
- $(STATIC_LD)
-
- 6/2
- ---
-builtins/cd.def
- - OLDPWD is now auto-exported
- - broke the code out of bindpwd() that updated the value of PWD in
- the export environment in-place and made it general, so it can
- be used for OLDPWD, too (this should be made *more* general, and
- moved to variables.c)
-
- 6/3
- ---
-variables.c
- - moved builtins/cd.def:export_pwd_var to here, renamed it to
- update_export_env_inplace
- - converted put_command_name_into_env to just call
- update_export_env_inplace
- - made dummy variable for OLDPWD, marked as invisible and exported,
- in initialize_shell_variables
-
-variables.h
- - extern declaration for update_export_env_inplace
-
-builtins/cd.def
- - changed calls to export_pwd_var to update_export_env_inplace
-
-lib/readline/bind.c
- - added missing return in rl_unbind_function_in_map
- - changed _rl_read_file to check whether or not `read' returns
- < 0 rather than < file_size
- - _rl_read_init_file needs to free `openname' after calling
- _rl_read_file, since it's not used again
-
-lib/readline/callback.c
- - bogus extern declaration for `readline_internal_startup', should
- be readline_internal_setup
-
-lib/readline/histfile.c
- - read_history_range now checks whether read(2) returns < 0 rather
- than checking the return value against the file size
-
-lib/readline/parens.c
- - whoops -- timer.tv_usec is *micro* seconds, not milliseconds
-
-lib/readline/readline.c
- - initialize `eof' to 1 in readline_internal_charloop
-
- 6/5
- ---
-configure.in
- - if we're configuring with an installed version of readline, set and
- have configure substitute RL_INCLUDE to `-I$(includedir)', so the
- build process uses the installed readline include files as well as
- the libraries
-
-Makefile.in, builtins/Makefile.in
- - add @RL_INCLUDE@ in the appropriate places, substituted by configure
-
-lib/readline/{history,readline}.h
- - add `extern "C"' wrapper if `__cplusplus' is defined
-
-lib/glob/fnmatch.h
- - include stdc.h
- - add prototypes to extern declaration for fnmatch()
-
-lib/readline/rlstdc.h
- - link to ../posixheaders/stdc.h (in readline lib with different name
- for benefit of standalone readline library installation)
-
-lib/readline/{history,keymaps}.h
- - include rlstdc.h
- - add prototypes to all of the extern function declarations
-
-lib/readline/history.h
- - the `data' member of a HIST_ENTRY is now a histdata_t, which is
- either a void * (ansi c) or a char * (k&r c)
-
-lib/readline/readline.c
- - changed calls to replace_history_entry to pass a histdata_t as the
- third parameter
-
- 6/8
- ---
-copy_cmd.c
- - make sure that copy_cond_command doesn't blindly try to copy
- com->op, since that will be null for AND and OR nodes, at least
- [in bash-2.02.1]
-
-lib/readline/vi_mode.c
- - added missing second argument to rl_vi_[fbe][Ww]ord(), since
- they're used as pseudo-bindable commands (they appear in the
- default funmap) as well as utility functions
-
-lib/readline/readline.h
- - include rlstdc.h
- - added prototypes for functions from vi_mode.c, util.c, terminal.c,
- search.c, util.c, undo.c, readline.c, parens.c, macro.c, kill.c,
- keymaps.c, isearch.c, input.c, funmap.c, display.c, complete.c,
- callback.c,
- - added extern declarations for functions from rltty.c
-
-lib/readline/{readline,util}.c
- - rl_refresh_line now takes the standard two arguments for bindable
- commands; changed callers
-
-lib/readline/*.c
- - small cleanups for incorrect arguments, etc. uncovered by use of
- function prototypes
-
-bashline.c
- - small cleanups for incorrect arguments, etc. uncovered by use of
- function prototypes
-
- 6/11
- ----
-jobs.c
- - cast result of strsignal() to (char *) for the benefit of broken
- Cray UNICOS machines
- [in bash-2.02.1]
-
-configure.in,aclocal.m4
- - new test, BASH_TYPE_BITS64_T, used to find out what basic type is
- 64 bits long; defaults to `double'
- - call AC_CHECK_SIZEOF(double)
-
-config.h.in
- - #define for bits64_t, undef by default
+builtins/kill.def
+ - change to use strerror() for error message when kill(2) fails
- 6/24
- ----
aclocal.m4
- - changed BASH_TYPE_BITS64_T so that it checks the size of a char *
- first, before trying sizeof(double)
+ - new macro, BASH_C_LONG_LONG, check for `long long'
-lib/readline/doc/rluser.texinfo,doc/{bash.1,readline.3}
- - changed default binding for tilde-expand to M-&, since bash
- overrides M-~ to force username completion
-
-bashline.c
- - fixed an off-by-one error in hostnames_matching that exhibited
- itself when an exact multiple of 16 hostnames matched (fix
- from <davidg@nikhef.nl>)
- [in bash-2.02.1]
-
- 6/30
- ----
-lib/readline/readline.c
- - the maximum numeric argument is now 1000000
-
-bashline.c
- - fixed a bug in bash_directory_completion_hook that caused memory
- to be freed twice if a directory name containing an unset
- variable was completed and `set -u' had been set
-
-configure.in
- - on LynxOS, add a -DRECYCLES_PIDS to LOCAL_CFLAGS
-
-execute_cmd.c
- - make sure that the changes to make the shell fork early when
- run in the background do not cause commands such as `%1 &'
- to fork
- [in bash-2.02.1]
- - if RECYCLES_PIDS is defined, execute_command_internal sets
- last_made_pid to NO_PID after waiting for a foreground process,
- if the return status is 0 (fix from plai@Lynx.COM (Paul Lai))
-
-lib/readline/kill.c
- - fixes from Andreas Schwab to rl_yank_last_arg that make it
- behave better
-
-lib/readline/input.c
- - fixes from Donald Beaudry <donb@sgi.com> to make the input buffering
- and rl_stuff_char work right when the input buffer is nearly full
- (probably not a problem with keyboard input, but maybe a problem
- with programmers attempting to use rl_stuff_char to preload the
- input buffer)
-
- 7/14
- ----
-parse.y
- - fix to decode_prompt_string so that the \$ expansion quotes the `$'
- so it won't be processed by subsequent parameter expansion
- - change read_token_word so a $$ appearing in a token is recognized
- and parsed immediately, so a single or double quote after the
- second `$' doesn't cause ANSI-C expansion or locale translation
- (bug report from haertel@ichips.intel.com)
-
- 7/16
- ----
-lib/readline/display.c
- - fixed a bug that caused core dumps in xrealloc if the prompt was
- longer than 1024 characters
-
- 7/21
- ----
-builtins/mkbuiltins.c
- - if the number of characters read from the .def file is less than
- the file size reported by `stat', and the read completed without
- errors, reset the file size to avoid writing garbage at the end
- of the generated .c file (needed on WIN32 systems, doesn't hurt
- on Unix)
+configure.in, config.h.in
+ - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
- 7/22
- ----
-CWRU/empty-for-wordlist
- - patch from Brian Fox for parse.y to allow bash to accept an empty
- `wordlist' after the `in' keyword in a for statement
+lib/sh/snprintf.c
+ - new file, with implementations of snprintf, vsnprintf, asprintf,
+ and vasprintf, derived from inetutils version
- 7/23
- ----
-doc/bash.1
- - corrected the synopsis of the `for' and `select' statements to
- indicate that the semicolon (or newline) after the optional
- `in words' is required
+Makefile.in, lib/sh/Makefile.in
+ - add snprintf.c/snprintf.o
-[bash-2.02.1 released]
+configure.in, config.h.in
+ - add checks for snprintf, asprintf, vasprintf, with appropriate
+ cpp defines
- 7/28
- ----
-lib/readline/display.c
- - make sure visible_length is initialized to 0 in rl_expand_prompt.
- Fix from Gerhard Niklasch <nikl@mathematik.tu-muenchen.de>.
+lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
+ - xmalloc and xrealloc now take `size_t' arguments, like their bash
+ counterparts
-lib/glob/glob.c
- - make sure that quotes are removed from the filename being globbed
- in glob_vector() before calling the GLOB_TESTNAME macro if there
- are no globbing characters in the pattern
+externs.h,lib/sh/itos.c
+ - inttostr and itos now take `long' arguments
+ - inttostr takes a `size_t' argument for the buffer size
+
+{expr,lib/malloc/malloc,variables,general}.c
+ - fixed calls to itos() by removing casts, etc.
+
+subst.[ch]
+ - get_dollar_var_value now takes a long, not an int
+ - sub_append_number now takes a long, not an int
+
+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/Makefile.in
- - make sure that builtins.1 is looked for in $(srcdir) when running
- `make install' (it's still commented out, though)
+subst.h
+ - array_expand_index now returns an `arrayind_t'
- 7/30
- ----
-config.h.bot
- - if PROMPT_STRING_DECODE is not defined, define PPROMPT (the primary
- prompt string) as "$ "
+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
variables.c
- - if PROMPT_STRING_DECODE is not defined, and current_user.euid == 0,
- PS1 defaults to "# ", otherwise it defaults to `primary_prompt'
-
-doc/bashbug.1
- - fixed email address prep.ai.mit.edu -> gnu.org
-
- 8/3
- ---
-support/shobj-conf
- - add `solaris2' as a possible OS name, treated the same as sunos5
-
- 8/4
- ---
-shell.c
- - changed maybe_make_restricted() so that $ENV and $BASH_ENV are
- read-only variables in a restricted shell
-
-doc/{bash.1,bashref.texi}
- - added ENV and BASH_ENV to the list of readonly variables in
- restricted mode
-
-parse.y
- - added `do', `then', `else', `{', and `(' to the list of keywords
- that may precede the `time' reserved word
-
-general.c
- - added sanity checks to timeval_to_secs and clock_t_to_secs so
- that if the fractional part is >= 1000, 1 is added to the
- seconds and 1000 is subtracted from the fractional seconds
-
- 8/6
- ---
-Makefile.in
- - use $(CC_FOR_BUILD) to build mksignames
-
-configure.in
- - changes to allow cross-building for BeOS as well as cygwin32
-
-cross-build/{beos-sig.h,x86-beos.cache}
- - new files for cross-compiling for BeOS
-
- 8/7
- ---
-Makefile.in
- - changed rule for version.h to use && instead of if-then-else-fi to
- make sure the recipe fails if mkversion.sh fails
-
-configure.in
- - beos does not use the GNU malloc
-
-lib/sh/itos.c
- - broke itos into inttostr(i, buf, len) and itos(i), which calls
- inttostr and returns a newly-allocated string with the result
-
-support/mksignames.c
- - define `SIGKILLTHR' if system include files define it
-
-externs.h
- - extern declaration for inttostr(int, char *, int)
-
- 8/13
- ----
-lib/sh/strtol.c
- - include stdc.h before bashansi.h
-
-execute_cmd.c
- - make sure that execute_cond_node treats `=' the same as `=='
-
- 8/25
- ----
-variables.c, print_cmd.c
- - changed some calls to itos to use inttostr instead
-
-cross-build/x86-beos.cache, {execute_cmd,general,shell,trap}.c
- - some changes for BeOS (from fnf@ninemoons.com)
-
-lib/posixheaders/memalloc.h
- - changes to handle case where we're using both gcc and the C
- version of alloca(), or if we have alloca.h and we're using
- the C version of alloca() (from fnf@ninemoons.com)
-
-lib/sh/oslib.c
- - if bcopy or bzero are #defines, #undef them before defining
- replacement functions
-
-support/config.guess
- - recognize AmigaOS (from fnf@ninemoons.com)
- - recognize BeOS running on various machines
- (from fnf@ninemoons.com)
-
-support/config.sub
- - change basic_machine definition for amiga; added amigaos
- (from fnf@ninemoons.com)
- - changed definitions for MIPS machines running Linux (from
- fnf@ninemoons.com)
- - recognize `beos' as a valid operating system
- (from fnf@ninemoons.com)
- - changed OS for *-cbm to `amigaos' rather than `amigados'
- (from fnf@ninemoons.com)
-
-examples/functions/autoload.v3
- - a new version, from Mark Kennedy <mtk@ny.ubs.com>
+ - 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
-lib/readline/readline.c
- - new function, rl_delete_or_show_completions, like tcsh editing
- function delete-char-or-list
+variables.h
+ - change extern declaration of bind_array_variable
-lib/readline/readline.h
- - new extern declaration for rl_delete_or_show_completions
+builtins/common.[ch]
+ - get_numeric_arg now returns a `long', since it usually returns
+ the value of legal_number()
-lib/readline/funmap.c
- - new bindable name `delete-char-or-list', like tcsh
+builtins/{shift,break}.def
+ - use long variables for the return value of get_numeric_arg
-lib/readline/doc/rluser.texinfo, doc/{bash.1,readline.3}
- - documented new delete-char-or-list command
+builtins/history.def
+ - convert string argument to int only if it's in range
-general.c
- - fix full_pathname to keep it from generating things like
- //foo when the current directory is /
+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
- 8/27
- ----
-builtins/fc.def
- - fixed the help text for the -e option
+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.
- 8/28
- ----
-support/shobj-conf
- - added a clause for AIX 4.2 systems running gcc -- just the
- standard gcc stuff for shared objects, but it has to come
- before the other AIX 4.2 clause
+lib/sh/clock.c
+ - ditto for print_clock_t
- 8/31
+ 5/22
----
shell.c
- - some changes so that `set -e' is turned off while executing
- the startup files
-
- 9/3
- ---
-flags.c
- - new variable, `restricted_shell', non-zero if the shell was
- started in restricted mode
-
-flags.h
- - extern declaration for restricted_shell
-
-shell.c
- - new function, shell_is_restricted, returns 1 if the shell is
- supposed to be restricted based on the basename of $0 or the
- -r option
- - set restricted_shell to the value returned by shell_is_restricted
- before executing the startup files
+ - 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)
-externs.h
- - extern declaration for shell_is_restricted
-
-builtins/shopt.def
- - new shopt variable, restricted_shell, indicates whether the shell
- was restricted at startup -- useful in startup files
-
-doc/{bash.1,bashref.texi}
- - documented new restricted_shell shopt option
-
- 9/15
+ 5/23
----
-lib/sh/rename.c
- - new file, replacement for rename(2) if the OS doesn't provide it
+trap.h
+ - new define, BASH_NSIG, all system signals plus special bash traps
-configure.in,config.h.in,Makefile.in,lib/sh/Makefile.in
- - machinery for including rename.o in libsh.a
+trap.c, builtins/trap.def
+ - use BASH_NSIG for array bounds and loops where appropriate
-nojobs.c
- - make sure that set_tty_state returns a value
-
-builtins/mkbuiltins.c
- - use a call to rename(2) instead of a link/unlink pair
-
-lib/glob/glob.c
- - don't #define bcopy if bcopy is already defined
-
-lib/readline/histfile.c
- - add a call to ftruncate for BeOS, which ignores the O_TRUNC flag
- to open
-
-lib/readline/input.c
- - make rl_getc loop if read returns -1/EINTR on BeOS
-
-configure.in
- - set ARFLAGS and substitute it into the Makefiles
-
-{,builtins,lib/{glob,malloc,readline,sh,termcap,tilde}}/Makefile.in
- - ARFLAGS is now substituted by configure
- - use ARFLAGS in rules that create libraries using $(AR)
-
-builtins/printf.def
- - fixed bug that caused a core dump when a modifier was supplied
- in the format string without a conversion character (e.g. `%h')
+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
- 9/17
- ----
-lib/glob/glob.c
- - if filenames starting with a dot don't have to be matched
- explicitly (e.g., after a `shopt -s dotglob'), don't match
- `.' or `..' in any case
+support/mksignames.c
+ - add extra "ERR" signal name, value NSIG+1, allocate space for it
+ and write it out in signal_names[]
-eval.c
- - make sure that array assignments don't show up in the history list
- (fix from Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
+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/complete.c
- - fix to rl_menu_complete so it inserts a single completion properly
- when a word matches only one filename
+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
- 9/24
- ----
execute_cmd.c
- - difftimeval should zero out the tv_usec field if the tv_sec field
- is < 0
- - addtimeval should check for tv_usec being == 1000000 and add one
- to tv_sec if it is
-
- 9/25
- ----
-subst.c
- - fix to expand_word_internal to prevent non-whitespace IFS characters
- from causing word splitting if they are not the results of an
- expansion (not exactly right yet, but I think it's the result of a
- problem with the ${...} end-brace-matching code in the parser)
-
- 9/28
- ----
-parse.y
- - new flag for parse_matched_pair -- P_FIRSTCLOSE -- which makes it not
- count and match additional construct open characters
- - change calls to parse_matched_pair when matching braces in
- ${...} constructs (both unquoted and within double quotes) to
- specify the P_FIRSTCLOSE flag to match POSIX.2 requirements
-
-subst.c
- - changed fix from 9/25, now that the parser problem is fixed
-
- 9/30
- ----
-variables.c
- - change expansion of list of words between (...) in array assignments
- to include pathname generation in assign_array_var_from_string
+ - 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
doc/{bash.1,bashref.texi}
- - clarified behavior of the shell at startup if running setuid, with
- and without the -p option supplied
-
- 10/7
- ----
-bashhist.c
- - change default open(2) mode to 0600 instead of 0666 for `privacy
- concerns'
-
- 10/13
- -----
-lib/readline/display.c
- - fixed a problem with displaying tabs after newlines, from
- <qrczak@knm.org.pl>
- - in update_line, if we are printing over existing material,
- only call space_to_eol or _rl_clear_to_eol if lendiff is non-zero
- - when moving the cursor in _rl_move_cursor_relative, only call
- _rl_backspace if the current cursor position is strictly greater
- than the desired cursor position
-
- 10/14
- -----
-locale.c
- - LC_ALL is no longer set automatically when LANG is assigned a value
+ - documented new ERR trap
-config.h.{top,bot}
- - renamed to config-{top,bot}.h, respectively
-
-config.h.in
- - include config-top.h and config-bot.h
-
-Makefile.in
- - things now depend on config-top.h and config-bot.h
+tests/{trap.{tests,right},trap2.sub,trap2a.sub}
+ - added ERR trap tests
subst.c
- - minor changes to extract_dollar_brace_string and char_is_quoted to
- allow things like "${PIP[TAB] to perform correct variable completion
-
- 10/15
- -----
-builtins/Makefile.in
- - add $(PROFILE_FLAGS) to the make recipe that creates `mkbuiltins',
- so configuring with --enable-profiling works right
+ - 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
- 10/20
- -----
-doc/bashref.texi
- - documented the new --with-installed-readline option
-
-[bash-2.03-alpha1 frozen]
-
- 10/21
- -----
-builtins/reserved.def
- - fixed help text for { ... } to make it clear that a semicolon is
- required before the closing brace
-
- 10/22
- -----
-trap.c
- - in decode_signal, don't bother calling strcasecmp if
- signal_names[sig] is null or empty
-
- 11/2
- ----
-configure.in
- - make sure RL_LIBDIR and HIST_LIBDIR are assigned values even if
- readline or history is configured out of the shell, so the -L
- options have arguments in the link command
-
-test.c
- - make test_syntax_error cause test to return a status > 1, to
- conform to POSIX.2 4.62.8
-
-doc/readline.3
- - make sure the SYNOPSIS section indicates that programmers should
- include <stdio.h> before <readline.h>
-
- 11/9
+ 5/24
----
-Makefile.in
- - install with explicit mode of 0755
-
- 11/10
- -----
-builtins/test.def
- - make sure that a missing `]' makes `[' exit with status 2, to
- conform to POSIX.2 4.62.8
-
-command.h
- - new word flag: W_NOGLOB, meaning to not perform globbing
-
-execute_cmd.c
- - fix_assignment_statements now turns on the W_NOGLOB flag for
- arguments to `assignment builtins' that have W_ASSIGNMENT set
-
-subst.c
- - expand_word_internal needs to preserve the W_NOGLOB flag from
- the word being expanded to the word being returned
- - glob_expand_word_list does not call shell_glob_filename for a
- word with W_NOGLOB set
-
-builtins/shopt.def
- - print_shopt is now void
-
-configure.in
- - machines running Rhapsody don't use the bash malloc
- - pass host_vendor to the Makefiles with AC_SUBST
-
-support/config.guess
- - Rhapsody is really rhapsody, not nextstep
-
-support/config.sub
- - add rhapsody to the list of supported configurations
-
-Makefile.in
- - pass CONF_HOSTTYPE, CONF_OSTYPE, and CONF_MACHTYPE as -D options
- in SYSTEM_FLAGS, to indicate that they came from the configuration
- process
- - set VENDOR variable from host_vendor configuration variable
- - pass CONF_VENDOR as part of SYSTEM_FLAGS
-
-variables.c
- - define HOSTTYPE, OSTYPE, and MACHTYPE as CONF_HOSTTYPE, CONF_OSTYPE,
- and CONF_MACHTYPE, respectively
-
- 11/11
- -----
-doc/{bashref.texi,bash.1}
- - updated description of `read' to clarify the -r option and its
- effect on backslash escaping
-
- 11/13
- -----
-examples/loadables/{ln,unlink}.c
- - new loadable builtins
-
- 11/23
- -----
-lib/glob/fnmatch.c
- - some fixes to handle extended glob patterns immediately following
- a `*'
-
-tests/extglob.tests
- - updated with cases from bug report fixed today
+examples/loadables/getconf.h
+ - new file, with basic defines needed to make getconf work minimally
+ on POSIX systems without the necessary definitions
-support/shobj-conf
- - udpated stanza for aix 4.2 with gcc, based on information from
- jik@cisco.com
-
-configure.in
- - changes to add the correct linker options to allow dynamic linking
- when using gcc on AIX 4.2, instead of insisting on the AIX C
- compiler
-
-examples/misc/aliasconv.{bash,sh}
- - changes to handle aliases with embedded single quotes
-
- 11/25
- -----
-lib/readline/complete.c
- - postprocess_matches should call compute_lcd_of_matches with an
- argument of `t' instead of `text'
- - postprocess_matches should never call ding(); leave that for the
- callers
- - postprocess_matches no longer needs `text' as the first argument
- - rl_complete_internal needs to call ding() if postprocess_matches
- returns 0, since postprocess_matches no longer does it
- - rl_complete_internal can now free `text' immediately after calling
- gen_completion_matches, since it's no longer used
-
- 11/30
- -----
-print_cmd.c
- - make sure redirections following compound commands have a space
- separating them from the command
+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
- 12/1
- ----
-general.c
- - changed canonicalize_pathname so that if the result path begins
- with `//', it will be changed to `/' if and only if the original
- path did not begin with `//' (there has to be a non-slash after
- the leading `///' in the original path)
-
- 12/2
+ 5/29
----
-builtins/evalstring.c
- - augment the test for turning on CMD_NO_FORK to make sure that
- parse_and_execute_level == 1. That takes care of things like
-
- bash -c 'for f in 1 2 3; do eval "/bin/echo \"$f\"" ; done'
-
- only printing one line of output
+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)
- 12/8
+ 5/30
----
-config-top.h
- - add commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS so
- that users may, if they choose, make things like
-
- #! /bin/bash --login
-
- work in shell scripts
-
- 12/10
- -----
-jobs.c
- - changes to the way jobs are reaped when the shell is not
- interactive:
-
- o notify_of_job_status no longer marks dead jobs as
- notified if they did not exit due to a signal;
- o changed mark_background_jobs_as_notified to take an
- argument `force': if zero, we only mark enough
- dead jobs as notified to keep CHILD_MAX jobs in the
- jobs list, as POSIX.2 specifies. If non-zero, mark
- all dead jobs as notified;
- o wait_for_background_pids marks all dead jobs as
- notified when it has finished waiting for everything,
- since the only thing that calls it is the `wait' builtin;
- o wait_for_single_pid marks a job as notified after it
- has completed, since the only things that call it are
- wait_for_background_pids and the `wait' builtin
- o wait_for_job marks the job as notified after the last
- pid completes
-
-execute_cmd.c
- - change execute_subshell_builtin_or_function to check
- subshell_environment and pipe_out to decide whether or not to fork
- if builtin == jobs_builtin, since the early-forking code added in
- bash-2.02 means that the piping has probably already been done
-
- 12/15
- -----
-parse.y
- - changes to make avar=((...)) a syntax error instead of ignoring
- the nested parens and treating it as an array assignment
-
-shell.c
- - changed run_startup_files so that any shell, whether or not it is
- interactive, will run the login shell startup files when given the
- --login option. This happens only when not in posix mode.
-
-builtins/enable.def
- - changes to handle Tenon's MachTen, whose dlclose() does not return
- a value
-
-lib/glob/fnmatch.c
- - changed gmatch so that when it calls extmatch, it removes FNM_PERIOD
- from the flags if it's not matching at the start of the string.
- This fixes the problem of `@' and `+' extended-glob subpatterns
- containing bracket expressions treating `.' specially when matching
- a portion of the string starting with `.'
-
-config-top.h
- - removed define for NON_INTERACTIVE_LOGIN_SHELLS, since it's no longer
- necessary
-
- 12/17
- -----
-lib/readline/complete.c
- - change rl_complete_internal and rl_menu_complete to check
- rl_filename_completion_desired to decide whether or not we're
- completing filenames instead of checking whether the attempted
- completion function is filename_completion_function.
- filename_completion_function sets rl_filename_completion_desired,
- so this shouldn't break anything -- just allow postprocessing of
- matches for user-supplied filename completion functions that don't
- call filename_completion_function
-
-lib/readline/display.c
- - new function, _rl_erase_entire_line, which erases the entire line,
- no matter where the cursor is, and puts the cursor at the beginning
- of the (newly-empty) line
-
-lib/readline/readline.c
- - new application-level variable, rl_erase_empty_line, which, if
- non-zero, tells readline to erase the contents of the current line,
- prompt and all, if the only character typed to an otherwise-blank
- line is bound to rl_newline. Requested by the Cygnus GDB folks.
- - change to rl_newline to suppress the call to _rl_update_final if
- rl_erase_empty_line is non-zero, and rl_point == rl_end == 0, since
- _rl_update_final calls crlf()
- - change to readline_internal_charloop to call _rl_erase_entire_line
- if newline was the only thing typed on an otherwise-empty line
-
-lib/readline/readline.h
- - extern declaration for rl_erase_empty_line
-
-lib/readline/doc/rltech.texinfo
- - documented new rl_erase_empty_line variable
-
- 12/18
- -----
-Makefile.in
- - changed RELSTATUS to `beta1'
-
-[bash-2.03-beta1 frozen]
-
- 12/21
- -----
-doc/{bash.1,bashref.texi}
- - added description of `test -h'; equivalent to `test -L'
-
- 12/22
- -----
-support/shobj-conf
- - SHOBJ_LDFLAGS should be those options to ld which are common
- between building dynamically loadable shared objects and shared
- libraries
- - added two new variables: SHOBJ_XLDFLAGS, which are ld options
- specific to building dynamically loaded shared objects, and
- SHLIB_LIBS, which are other libraries against which shared libraries
- should be linked. These are for the benefit of AIX 4.2; other
- stanzas do not need to be changed.
configure.in
- - add call to AC_SUBST for SHOBJ_XLDFLAGS
-
-examples/loadables/Makefile.in
- - SHOBJ_XLDFLAGS is now substituted by configure
- - $(SHOBJ_LDFLAGS) -> $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) in all
- recipes that build loadable builtins
-
- 12/29
- -----
-support/config.{guess,sub}
- - changes for NEC SX4 machines running SUPER-UX (?). Info from
- Nicholas Clark <nick@flirble.org>
-
-lib/readline/bind.c
- - new bindable variable, `isearch-terminators', which is the list of
- characters that will terminate an incremental search without
- subsequently executing the character as a command
-
-lib/readline/isearch.c
- - changes to incorporate the new isearch-terminators bindable variable;
- uses new private readline variable _rl_isearch_terminators
- (suggested by Brian Fox)
-
-doc/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
- - documented new `isearch-terminators' settable variable
-
-lib/readline/complete.c
- - new convenience function, free_match_list, called from
- rl_complete_internal
+ - 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
- 12/30
- -----
-aclocal.m4
- - changed the calls to AC_MSG_ERROR in the cross-compiling sections
- to AC_MSG_WARN, since AC_MSG_ERROR can cause configure to abort
+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
-examples/functions/which
- - new function, emulation of `which' as it appears in FreeBSD
+doc/bashref.texi
+ - document new `--enable-largefile' configure option
- 12/31
- -----
lib/readline/readline.c
- - new bindable function: rl_rubout_or_delete. Does rl_rubout if
- rl_point is at the end of the line, or rl_delete if not. This
- is intended to mimic the Motif/Netscape/GNOME behavior of the
- DEL character, and can be bound to delete to get that behavior
-
-lib/readline/readline.h
- - new extern declaration for rl_rubout_or_delete
+ - change rl_set_prompt to call rl_expand_prompt unconditionally, so
+ local_prompt and local_prompt_prefix get set correctly
-lib/readline/funmap.c
- - bound the name `forward-backward-delete-char' to
- rl_rubout_or_delete (currently not bound to any keys)
-
-lib/readline/doc/manvers.texinfo
- - new file with readline manual version information, to mantain
- consistent numbering between readline and history manuals
-
-lib/readline/doc/{rlman,hist}.texinfo
- - @include manvers.texinfo for version information
- - moved the @dircategory and and @direntry directives inside
- the @ifinfo block
- - changed copyrights to 1988-1999
-
-doc/Makefile.in, lib/readline/doc/Makefile.in
- - texi2html is now called with -menu (to handle the texinfo menus)
- and -monolithic (to include the table of contents in the generated
- HTML file instead of putting it in a separate file
- - changed recipes to remove references to TOC html files
-
-lib/glob/fnmatch.c
- - include <string.h> or <strings.h> as appropriate for strchr()
- declaration
-
- 1/4/1999
- --------
-print_cmd.c
- - don't print bare words when printing conditional expressions in
- print_cond_node, use cprintf("%s", cond->op->word)
-
-subst.c
- - in separate_out_assignments, if VARLIST is non-null on function
- entry, free it up to clean up after a previous error longjmp
-
- 1/5
+ 6/6
---
-configure.in
- - make sure the case clause that disables the bash malloc on alpha
- machines catches things like `alphaev56' as well as `alpha'
-
- 1/12
- ----
-lib/readline/histlib.h
- - new error message code: NO_PREV_SUBST
-
-lib/readline/histexpand.c
- - handle NO_PREV_SUBST with appropriate error message in hist_error
- - in history_expand_internal, if the `s' or `&' case results in a
- null or empty LHS, return NO_PREV_SUBST
-
-error.c
- - new interface: command_error(func, code, e, flags); intended to
- collect command-related errors in one place
- - new interface: command_errstr(code); returns a string describing
- command error CODE
-
-error.h
- - extern declarations for command_error and command_errstr
-
-command.h
- - possible values for CODE in calls to command_error and command_errstr
-
-{shell,print_cmd,make_cmd,execute_cmd,dispose_cmd,eval}.c ,builtins/evalstring.c
- - changed some calls to programming_error to use command_error
-
- 1/13
- ----
-configure.in
- - if --enable-profiling is specified on a solaris2 machine, don't
- turn on enable-static-link, since it's very hard to build a
- static binary on solaris2 and gprof does not (apparently) require it
-
-builtins/getopts.def
- - add calls to sh_getopt_restore_state so the state is restored each
- time getopts is called. This protects us against the behavior of
- some mallocs, which causes `nextchar' to be set to garbage in
- getopt.c when a function is called between calls to getopts
-
- 1/14
- ----
lib/readline/complete.c
- - if postprocess_matches returns 0 in rl_complete_internal, reset
- completion_changed_buffer to 0 before returning, since nothing
- has been changed
-
- 1/20
- ----
-subst.c
- - fixed pat_subst so that null patterns with a `#' specifier prefix
- the string to be substituted on with the replacement, and null
- patterns with a `%' specifier append the replacement to the string
- to be substituted on
-
-doc/{bash.1,bashref.texi}
- - corrected a small error in the description of parameter pattern
- substitution
-
-support/mksignames.c
- - SIGINFO means something else on sequent systems
-
- 1/26
- ----
-execute_cmd.c
- - fix to execute_simple_command to keep a child process from getting
- a bad value of last_asynchronous_pid when the shell forks early
-
- 2/1
- ---
-Makefile.in
- - changed RELSTATUS to `beta2'
-
- 2/2
- ---
-[bash-2.03-beta2 released]
-
- 2/3
- ---
-tests/{cprint.{tests,right},run-cprint}
- - new test to exercise the command printing and copying code --
- hopefully this will avoid things like the `conditional commands
- in functions make the shell abort' problem
+ - 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
- 2/4
- ---
-version.c
- - if MACHTYPE is not defined, use CONF_MACHTYPE if it's defined
-
- 2/5
- ---
-builtins/read.def
- - if READLINE is defined, we need an extra pair of braces around
- the `while' loop that reads from fd 0 if the -e option is
- supplied, otherwise the code erroneously tests the value of
- `retval', which is not set when using readline
-
- 2/15
- ----
-builtins/fc.def
- - make sure that fc closes `stream' before calling fc_execute_file
-
- 2/17
- ----
-builtins/fc.def
- - don't bother opening and closing the file of commands before
- calling fc_execute_file, since parse_and_execute will write the
- commands to the history file for us
-
-Makefile.in
- - changed release status to `release'
-
- 2/18
- ----
-parse.y
- - change to special_case_tokens so that `time' is not recognized
- as a reserved word while the parser is parsing a case statement
- pattern list (if `time' is the first pattern, the last read
- token will be newline, which time_command_acceptable says is OK
- to start a pipeline)
-
-pathexp.c
- - some changes to the POSIX_GLOB_LIBRARY code (often unused)
-
-shell.c
- - a couple of changes for Interix (nee OPENNT)
- - added code that handles systems without a third argument to main();
- initializing `env' from `environ', conditionalized on a cpp define
- NO_MAIN_ENV_ARG
-
-configure.in, config.h.in
- - check for the presence of sbrk(2); define HAVE_SBRK if found
-
-xmalloc.c
- - don't do the space allocated computation when malloc or realloc
- fails if HAVE_SBRK is not defined
-
-configure.in
- - new configure variable, MAKE_SHELL, defaults to /bin/sh
-
-Makefile.in,{builtins,doc,support,lib/{glob,malloc,readline,sh,termcap,tilde},examples/loadables}/Makefile.in
- - set SHELL from @MAKE_SHELL@
-
-lib/posixheaders/posixjmp.h
- - Don't override defines for setjmp and longjmp in <setjmp.h> on
- Internix (nee OPENNT)
+hashlib.c
+ - new function, hash_table_nentries (table), returns the number of
+ items in TABLE
-lib/readline/complete.c
- - Interix (OPENNT) doesn't do username completion
+hashlib.h
+ - extern declaration for hash_table_nentries
configure.in
- - on Interix/OPENNT ($host_os == interix* or opennt*), add
- -DNO_MAIN_ENV_ARG to LOCAL_CFLAGS
- - on Interix/OPENNT, set MAKE_SHELL to $OPENNT_ROOT/bin/sh rather
- than a straight /bin/sh
+ - configure without bash malloc on openbsd; they claim it needs
+ eight-bit alignment (which the bash malloc provides, but...)
-cross-build/opennt.cache
- - a `configure' cache file for Interix/OPENNT; not necessarily
- for cross-compiling, but this is where the other system cache
- files are
+ 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
-[bash-2.03 released]
+subst.c
+ - don't include input.h; no longer needed
- 2/19
- ----
configure.in
- - changed OPENNT_ROOT to INTERIX_ROOT for building on Interix
+ - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
+ BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
-support/config.guess
- - added two stanzas for Interix running on alpha and intel hardware
+config.h.in
+ - remove define for HAVE_RESTARTABLE_SYSCALLS
- 2/22
- ----
-config-bot.h
- - if PROMPT_STRING_DECODE is not defined, #undef PPROMPT before
- redefining it, to avoid warning messages
+aclocal.m4
+ - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
execute_cmd.c
- - set jobs_hack in execute_subshell_builtin_or_function only if
- JOB_CONTROL is defined
+ - 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
- 2/24
- ----
-trap.c
- - fixed an obscure bug caused by a race condition in run_pending_traps.
- Read the comments in the source code for a full description of the
- problem and solution
+lib/readline/vi_mode.c
+ - fix trivial typo in declaration of vi_motion; `t' appears twice;
+ the second instance should be `T'
- 3/1
+ 7/3
---
-aclocal.m4
- - new test, BASH_STRUCT_TIMEVAL, which tries to compile a code
- fragment that includes <sys/time.h> and <time.h> as appropriate
- and defines HAVE_TIMEVAL if the compile succeeds
-
configure.in
- - call BASH_STRUCT_TIMEVAL rather than running a pair of
- AC_HEADER_EGREPs on sys/time.h and time.h
-
-lib/readline/histfile.c
- - include "posixstat.h" rather than <sys/stat.h>
- - in history_truncate_file, only try to truncate if the history file
- is a regular file
-
- 3/2
- ---
-aclocal.m4
- - changed BASH_STRUCT_TIMEVAL back to using a pair of
- AC_EGREP_HEADERs instead of compiling a program fragment
-
-lib/readline/readline.c
- - readline_internal_charloop should cast the first argument to
- _rl_dispatch to `unsigned char' to avoid problems with negative
- array indices on systems where signed chars are the default
-
-lib/readline/kill.c
- - instead of doing a sequence of next_history() calls in
- rl_yank_nth_arg_internal, save and restore the history
- position explicitly after finding the correct entry. This
- attempts to ensure that rl_yank_nth_arg leaves the history
- pointer set to the same position as when it was called.
- Fix from Vasco Pedro <vp@di.fct.unl.pt>
-
- 3/5
- ---
-redir.c
- - broke code that opens file for redirection in do_redirection_internal
- into a separate function: redir_open(path, flags, mode, ri)
-
-general.h
- - changed STREQN so that it evaluates to 1 (strings are equivalent)
- if N == 0, to match the behavior of strncmp
-
-lib/sh/zwrite.c
- - new file, zwrite() from builtins/evalstring.c
-
-builtins/evalstring.c
- - removed private definition of zwrite
+ - 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
-builtins/common.c
- - double_quote needs to protect newlines with backslashes as well
- - new function, un_double_quote, to remove backslashes proctecting
- characters that are special in double quotes
-
-builtins/common.h
- - new extern declaration for un_double_quote
-
-parse.y
- - changed read_token_word to requote the expanded value of $'...'
- using single_quote
- - added a new flag to parse_matched_pair: P_ALLOWESC. It allows
- backslashes to quote embedded single quotes, and is used by
- the $'...' translation code for better ksh93-compatibility
- - changed localeexpand to call mk_msgstr on the string passed
- before displaying it if all we're doing is displaying translatable
- strings in `po' format. mk_msgstr quotes backslashes and double
- quotes in the string passed with backslashes, and encloses the
- result in double quotes. If only -D is supplied, the string is
- not changed at all -- this is what ksh93 does
-
-lib/readline/rlconf.h
- - removed PAREN_MATCHING #define, paren matching is always compiled
- into readline
-
-lib/readline/parens.c
- - removed code that was active if PAREN_MATCHING was not defined
- - added _rl_enable_paren_matching, which is called when the readline
- variable `blink-matching-paren' is assigned a value and changes
- the appropriate key bindings in emacs_standard_keymap
-
-lib/readline/bind.c
- - no more PAREN_MATCHING defines, `blink-matching-paren' is always
- available
- - if `blink-matching-paren' is assigned a value, call
- _rl_enable_paren_matching (rl_blink_matching_paren)
-
-lib/readline/emacs_keymap.c
- - removed PAREN_MATCHING defines; the default key bindings for
- ), ], and } are self-insert
-
- 3/7
- ---
-stringlib.c
- - added an extra argument to ansicstr so that `echo -e' will not
- convert \' to '
-
-externs.h
- - changed extern declaration for ansicstr
-
-parse.y, builtins/{echo,printf}.def
- - changed calls to ansicstr() appropriately
-
-eval.c
- - in parse_string_to_word_list, if an unexpected token is encountered
- that causes the string to not parse to a simple command, or to
- completely consume the string, display an error message and jump
- back to the top level after restoring the parsing environment,
- returning an error status from the attempted assignment
-
- 3/8
+ 7/5
---
lib/glob/fnmatch.c
- - fixed patscan and extmatch to handle embedded [...](...) patterns
- better
+ - fix the code that processes **(pattern) to short-circuit if the
+ pattern is ill-formed or lacks a trailing `)' -- this fixes the
+ segfault on **(/*)
-tests/{extglob2.{tests,right},run-extglob2}
- - an additional set of ksh extended globbing tests, cribbed from zsh
-
- 3/10
- ----
-general.c
- - changed unset_nodelay_mode slightly to make sure it handles both
- O_NDELAY and O_NONBLOCK if they have different values; it now
- returns a value of 0 on success (or no action); -1 on failure
-
-general.h
- - changed extern declaration for unset_nodelay_mode
-
-
-lib/readline/shell.c
- - new function: unset_nodelay_mode; identical to definition in
- general.c
-
-lib/readline/input.c
- - changed rl_getc to call unset_nodelay_mode if the read fails with
- errno == EWOULDBLOCK || errno == EAGAIN
-
- 3/11
- ----
-lib/termcap/termcap.c
- - minor changes from termutils-2.0
- - minor change to MS-DOS version of valid_filename_p so MS-DOS-specific
- code from tgetent() can be removed (from Michel@smr.nl)
-
-lib/readline/bind.c
- - in _rl_read_file, null-terminate the buffer at the number of
- characters actually read, not what stat() says the file size is
- - use ~/_inputrc as a last-ditch inputrc filename on MS-DOS
-
-lib/readline/complete.c
- - change printable_part to handle MS-DOS `drive-letter:' pathname
- prefixes
- - removed __GO32__ code, since it's for DJGPP 1.x, which is not
- supported any more, and they don't work for DJGPP 2.x
- - added code to support MS-DOS drive letter prefixes and //X/...
- to filename_completion_function
- - _rl_completion_case_fold defaults to 1 on MS-DOS
-
-lib/readline/{display,input,readline,rltty,signals,terminal}.c
- - removed __GO32__ code
-
-lib/readline/histfile.c
- - make read_history_range and history_truncate_file work with the
- actual number of characters read from the file, not the file size
- as reported by stat()
-
-lib/readline/readline.c
- - change bind_arrow_keys_internal to bind MS-DOS arrow keys to the
- appropriate functions if __MSDOS__ is defined
-
-lib/readline/rltty.c
- - make sure set_winsize is always defined, with a null body if
- TIOCGWINSZ is not defined
-
-lib/readline/shell.c
- - include <stdio.h>, since this file uses sprintf
-
-support/shobj-conf
- - MS-DOS does not support shared objects
-
-lib/tilde/tilde.c
- - change tilde_find_suffix and isolate_tilde_prefix to understand
- backslash as a pathname separator on MS-DOS
-
- 3/12
- ----
-lib/readline/{bind,readline,terminal}.c
- - no longer need to include <signal.h>
-
-lib/readline/terminal.c
- - don't need to include <setjmp.h>
-
-builtins/history.def
- - broke the code than handles deleting a particular history entry
- from the history list out into a separate function: delete_histent
- - added `-d offset' option to delete the history entry at position
- OFFSET, as displayed when the history is listed
-
-jobs.c, nojobs.c
- - new function, count_all_jobs(), returns the number of active jobs
- in the jobs list
-
-jobs.h
- - extern declaration for count_all_jobs()
-
-configure.in
- - check for C library function ttyname()
-
-config.h.in
- - define HAVE_TTYNAME if configure finds ttyname(3)
-
-parse.y
- - two new escape sequences for decode_prompt_string:
-
- \j number of active jobs in jobs list
- \l basename of shell's tty device name
-
-doc/{bash.1,bashref.texi}, lib/readline/doc/hsuser.texi
- - documented new `history -d' option
- - documented new \j and \l prompt string expansion sequences
-
-lib/readline/bind.c
- - new static state variable, currently_reading_init_file, set to
- 1 while _rl_read_init_file is operating on a file
- - changed _rl_init_file_error to include the name and line number
- from the init file only if currently_reading_init_file is non-zero
- (this is needed since applications like bash can call
- rl_parse_and_bind, and error messages from those calls would be
- misleading if they referred to the last inputrc file read
-
-bashline.c
- - support for a `extended command keymap', which will allow
- readline key sequences to be bound to unix commands using an
- auxiliary keymap and a special function that knows how to execute
- commands from it
- - bind_keyseq_to_unix_command supports `bind -x'
- - bash_execute_unix_command is the readline callback that looks in
- an auxiliary keymap to find the shell command to execute for a
- particular key sequence
- - new variable, no_empty_command_completion, which suppresses $PATH
- searching for command completion when TAB is typed on an empty
- line
-
-bashline.h
- - extern declaration for new function bind_keyseq_to_unix_command
-
-builtins/bind.def
- - added `-x' option to bind a key sequence to a shell command
-
-builtins/help.def
- - added `-s' option to just print a builtin's short_doc
-
-builtins/shopt.def
- - added new shell option, no_empty_cmd_completion', mirroring value
- of no_empty_command_completion
-
-doc/{bash.1,bashref.texi}
- - documented new `bind -x' option
- - documented new shopt `no_empty_cmd_completion' option
- - documented new `help -s' option
-
-Makefile.in
- - changed RELSTATUS to `devel'
+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)
-_distribution
- - changed to `2.04'
+configure.in, config.h.in
+ - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
- 3/15
- ----
-support/shobj-conf
- - add `-h $@' to linking options on Solaris 2 with gcc
+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
-expr.c
- - changes to add {pre,post}-{inc,dec}rement operators (++id, --id,
- id++, id--). These are somewhat more liberal than ksh93, and
- may require more strict syntax checking down the line
+ 7/9
+ ---
+builtins/exit.def
+ - don't source ~/.bash_logout if subshell_environment is non-zero
-tests/arith.{tests,right}
- - additional tests for {pre,post}-{inc,dec}rement operators
+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
- 3/16
+ 7/10
----
-command.h
- - structures and types for ksh-93-style arithmetic `for' command
-
-configure.in
- - new `--enable-arith-for-command' option to compile arithmetic for
- command code into the shell
-
-config.h.in
- - new define, ARITH_FOR_COMMAND, turned on by configure
-
-parse.y
- - changed read_token_word to parse a set of arithmetic for expressions
- between (( and )) as long as the last token read before the `(('
- was FOR
- - added grammar rules to build arithmetic for commands
-
-make_cmd.c
- - functions to parse (( ... )) into the three sub-expressions needed
- for the arithmetic for command and create the command structures
- (done this way instead of in the grammar rules to avoid forcing
- users to quote special characters between the (( and )) )
-
-make_cmd.h
- - extern declaration for make_arith_for_command
-
-copy_cmd.c
- - code to copy arithmetic for commands
-
-dispose_cmd.c
- - code to dispose of arithmetic for commands
-
-print_cmd.c
- - code to print arithmetic for commands
-
execute_cmd.c
- - code to execute arithmetic for commands and note that they are
- shell control structures for the piping code
-
-doc/{bash.1,bashref.texi}
- - documented new arithmetic for command
+ - in execute_in_subshell, make sure a command of type cm_subshell
+ inherits its `enclosing' command's CMD_IGNORE_RETURN flag
-doc/bashref.texi
- - documented new configure --enable-arith-for-command option
-
- 3/17
- ----
-builtins/read.def
- - added `-t timeout' option and code to support it
+variables.c
+ - in maybe_make_export_env, don't allow restricted shells to put
+ exported functions in the export environment
- 3/18
+ 7/11
----
-examples/loadables/Makefile.in
- - various clean targets need to descend into perl
-
-examples/loadables/perl/Makefile.in
- - added mostlyclean and maintainer-clean targets
-
-include
- - new directory, with files from lib/posixheaders
-
-lib/posixheaders
- - removed
-
-{posixwait,unionwait,maxpath}.h
- - moved from top src directory to include subdir
-
-Makefile.in,builtins/Makefile.in,lib/{glob,malloc,sh,tilde}/Makefile.in
- - updated dependencies and file lists for new include directory
- - added BASHINCDIR variable, added -I${BASHINCDIR} to cc's include path
-
-MANIFEST,support/SYMLINKS
- - updated for new include directory
-
-lib/readline/{ansi_stdlib,posixdir,posixjmp,posixstat,rlstdc}.h
- - changed symlinks to point to ../../include rather than
- ../posixheaders
-
-builtins/common.h
- - changed `#include "../stdc.h"' to `#include "stdc.h"'
-
-builtins/{cd,exec,fc,history,pushd,source,type,umask,printf}.def
-builtins/{mkbuiltins,common,evalfile,evalstring,getopt}.c
- - changed include specifications:
- ../posixstat.h -> posixstat.h
- ../filecntl.h -> filecntl.h
- ../maxpath.h -> maxpath.h
- ../memalloc.h -> memalloc.h
-
-include/shtty.h
- - new file, contents of bashtty.h and code from jobs.c that includes
- the appropriate terminal file
+lib/glob/strmatch.h
+ - renamed old fnmatch.h
+ - changed guard #ifdef to _STRMATCH_H
+ - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
-lib/sh/shtty.c
- - new file with some tty manipulation utility functions
+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)
-bashtty.h
- - removed
-
-jobs.c, nojobs.c
- - include shtty.h instead of bashty.h and other code that includes
- the correct system-dependent tty include file
-
-lib/sh/Makefile.in
- - added shtty.o as part of libsh.a
+lib/glob/glob.c
+ - include "strmatch.h"
+ - fnmatch -> strmatch
-MANIFEST
- - added include/shtty.h and lib/sh/shtty.c, removed bashtty.h
+Makefile.in, lib/glob/Makefile.in
+ - fnmatch -> strmatch
- 3/19
- ----
-lib/readline/display.c
- - some more __MSDOS__ code to make readline work better with DJGPP:
- output \r instead of tputs(term_cr, ...)
+{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c,
+pathexp.h,builtins/help.def
+ - include <glob/strmatch.h>
+ - fnmatch -> strmatch
-lib/readline/terminal.c
- - some changes for __DJGPP__ (one is of dubious value -- doesn't
- DJGPP have a termcap library?)
+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
- 3/23
+ 7/12
----
-configure.in
- - make sure that the $CC argument to shobj-conf is quoted
-
-support/shobj-conf
- - changes to SGI SHOBJ_LDFLAGS from David Kaelbling <drk@sgi.com>
+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
- 3/24
+ 7/24
----
-lib/sh/zread.c
- - interface to read(2) that restarts automatically if errno == EINTR
-
-externs.h
- - new declarations for functions in lib/sh/{zread,zwrite}.c
-
-lib/sh/Makefile.in, Makefile.in
- - add zread.c, zread.o to appropriate file lists
-
-{subst,input}.c, builtins/{evalstring.c,read.def}
- - converted some loops around read() to call zread() instead
-
-lib/readline/rltty.h
- - new struct _rl_tty_chars to save tty special characters
-
-lib/readline/rltty.c
- - new function save_tty_chars to save tty special characters
- (currently they're only saved -- nothing looks at them yet)
- - two new internal library functions, _rl_disable_tty_signals ()
- and _rl_restore_tty_signals (), intended to disable tty driver
- signal processing for readline's literal-next code, so users
- can do stuff like ^V^C and have ^C end up in the readline
- buffer even if ^C is the terminal's interrupt character
-
-lib/readline/readline.c
- - changed rl_quoted_insert to disable and restore tty signal
- handling around the call to rl_read_key (), so users can put
- tty special chars into the readline buffer
+pcomplete.h
+ - extern declaration for completions_to_stringlist()
- 3/25
+ 7/25
----
-expr.c
- - added `,' operator (expr1 , expr2) -- both expr1 and expr2 are
- evaluated and the return value is the value of expr2. Precedence
- is higher than assignment (which makes it highest)
- - make `lasttp' (pointer to last token) part of the expression
- context that is saved and restored by {push,pop}_context. This
- is used only in error reporting
-
-doc/{bash.1,bashref.texi}
- - documented new `,' arithmetic operator
- - cleaned up some of the language concerning variables referenced
- by name within an arithmetic expression
-
-lib/readline/readline.c
- - new application-settable variable, rl_num_chars_to_read, which, if
- set to a non-zero value, causes readline to return after reading
- that many characters (or at least that many characters, if
- rl_startup_hook is used to prime the input buffer) rather than
- when reading a character bound to accept-line
-
-lib/readline/readline.h
- - extern declaration for rl_num_chars_to_read
-
-builtins/read.def
- - added new `-n nchars' option to read NCHARS from stdin rather than
- a complete line. Works both with and without using readline
-
-doc/{bash.1,builtins.texi}
- - documented new `read -n nchars' option
+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
- 3/26
+ 7/31
----
execute_cmd.c
- - make sure all uses of PIDs are of type pid_t
+ - 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)
-redir.c
- - broke stdin_redirects into two functions: stdin_redirection, which
- checks a single redirection specification, and a new stdin_redirects,
- which does what it did before but calls stdin_redirection for each
- redirection in the chain
+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
- 3/29
- ----
+ 8/1
+ ---
aclocal.m4
- - new test, BASH_CHECK_DEV_STDIN, checks for /dev/stdin. If it's
- present HAVE_DEV_STDIN is defined and it's assumed that /dev/stdout
- and /dev/stderr are present as well
-
-configure.in
- - call BASH_CHECK_DEV_STDIN
+ - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
+ Drepper intends to do for new versions of GNU libc
config.h.in
- - add HAVE_DEV_STDIN, initially undefined
-
-test.c
- - add /dev/std{in,out,err} to the special filenames that are handled
- by test_stat() if HAVE_DEV_STDIN is not defined
-
-doc/{bash.1,bashref.texi}
- - documented conditional expressions' handling of /dev/std{in,out,err}
-
-stringlib.c
- - new function, find_string_in_alist, to find (or match as an extended
- glob pattern) a string in a STRING_INT_ALIST and return the
- associated token value
-
-externs.h
- - extern declaration for find_string_in_alist
-
-redir.c
- - new STRING_INT_ALIST list of filenames the redirection code handles
- specially (_redir_special_filenames)
- - new function, redir_special_open () to handle filenames found in
- _redir_special_filenames (framework for /dev/tcp and /dev/udp, but
- those are not implemented get)
-
-doc/{bash.1,bashref.texi}
- - documented special filename handling in redirections
-
- 3/30
- ----
-builtins/read.def
- - added `-d delim' option, like ksh93, to read until delim rather
- than newline
-
-doc/{bash.1,bashref.texi}
- - documented new read `-d delim' option
+ - new definition for HAVE_LIBC_FNM_EXTMATCH
configure.in
- - look for gethostbyname(3), inet_aton(3)
- - look for <netdb.h> and <netinet/in.h>
- - call BASH_FUNC_GETHOSTBYNAME if gethostbyname(3) is not in libc
- - check for u_int and u_long types, default to `unsigned int' and
- `unsigned long' respectively
- - new enable option `--enable-net-redirections' to compile in the
- /dev/tcp and /dev/udp redirection code
-
-aclocal.m4
- - new macro, BASH_FUNC_GETHOSTBYNAME, looks for gethostbyname(3) in
- the socket libraries if it's not found in libc
+ - check for fnmatch, but don't define anything in config.h
+ - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
-config.h.in
- - new defines: HAVE_GETHOSTBYNAME, HAVE_INET_ATON, HAVE_NETDB_H,
- HAVE_NETINET_IN_H, NETWORK_REDIRECTIONS
- - new defines: u_int, u_long
+ 8/2
+ ---
+alias.h
+ - remove bogus extern declaration for xmalloc()
+ - include "stdc.h"
+ - add prototype declarations for all extern function declarations
-lib/sh/inet_aton.c
- - new file, from GNU libc, slightly modified to remove inet_addr()
+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
-lib/sh/netopen.c
- - new file, functions to create tcp/udp network connections. Exports
- a single function: netopen(pathname)
+include/ansi_stdlib.h
+ - extern declarations for malloc and realloc have them return PTR_T
-externs.h
- - extern declaration for netopen()
+xmalloc.h
+ - new file, with extern declarations for functions in xmalloc.c
-lib/sh/Makefile.in, Makefile.in, MANIFEST
- - added appropriate references to inet_aton.c and netopen.c
+general.h
+ - removed extern declarations for functions in xmalloc.c
+ - include xmalloc.h
-config-bot.h
- - if HAVE_SYS_SOCKET_H, HAVE_GETPEERNAME, and HAVE_NETINET_IN_H are
- all defined, define HAVE_NETWORK
+Makefile.in,builtins/Makefile.in
+ - update dependencies to include xmalloc.h
+
+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
-redir.c
- - call netopen for pathnames of the form /dev/(tcp|udp)/host/port
- if HAVE_NETWORK is defined; print a warning message otherwise
- - /dev/tcp and /dev/udp code is only compiled in if
- NETWORK_REDIRECTIONS is defined
+siglist.c
+ - include xmalloc.h
- 3/31
- ----
-lib/sh/zread.c
- - new function, zsyncfd(fd) which syncs the kernel's seek pointer on
- FD with the last character returned by zreadc()
+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
-externs.h
- - extern declaration for zsyncfd
+lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
+ - include xmalloc.h, remove extern declaration of xmalloc
-builtins/read.def
- - use zreadc if the input is not unbuffered (this cuts the number
- of read(2) calls *way* down)
- - if input is not unbuffered, call zsyncfd before returning to make
- sure zreadc's buffering doesn't consume too much input
+lib/readline/xmalloc.h
+ - xmalloc and xrealloc should return PTR_T
- 4/1
- ---
-Makefile.in
- - install bashbug with mode 555
+lib/readline/rldefs.h
+ - don't include an extern declaration for xmalloc
- 4/2
+ 8/7
---
-shell.c
- - make want_pending_command and read_from_stdin global rather than
- local variables
-
-flags.c
- - change which_set_flags to insert `c' and `s' if the `-c' and `-s'
- invocation options, respectively, were supplied at shell startup
+support/shobj-conf
+ - fixed up commented-out stanzas for HP's unbundled C compiler on
+ HP/UX
-bashline.c
- - change bash_directory_completion_hook to change the logic for
- deciding whether or not to parameter expand the directory name --
- now we expand only if there's a `$' (still has problems if the
- user quoted the `$') or a `` pair. Fixes bug reported by
- chuckjr@sinclair.net. To fix the `$' problem, could possibly
- check what the user typed with rl_line_buffer and start, end
- parameters to gen_completion_matches
- - changed attempt_shell_completion to slightly adjust the logic for
- deciding whether or not a word is in a command position: if the
- word being completed has a single opening single or double quote
- before the command separator, treat it as a candidate for (quoted)
- command word completion
- - now that we understand partially-quoted strings as completion
- candidates, we can do command completion on certain unclosed
- uses of $(...
+support/bashbug.sh
+ - force the subject to be changed from the default
-subst.c
- - change extract_delimited_string to not return an error for an
- unclosed construct if DOING_COMPLETION is non-zero
+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
- 4/5
+ 8/9
---
-expr.c
- - fixed `ss=09 ; let ss=10' bug by introducing one-token lookahead
- after a string token is parsed. If the next token is `=', we
- don't evaluate the variable's value as an expression, since it's
- not going to be used
+stringlib.c
+ - fix possible infinite recursion problem with null pattern in
+ strsub()
-variables.h
- - added new member to struct variable: exportstr -- for the future
- caching of strings to be placed into the environment
- - extern declaration for bind_variable_value
+hashlib.c
+ - new function copy_hash_table to copy a hash table using a caller-
+ supplied function to copy item data (defaults to savestring())
-variables.c
- - make sure that the `exportstr' member of a struct variable is
- initialized correctly, and put code in to free it where appropriate
- (if non-null)
- - new function, bind_variable_value(VAR, VALUE); make shell variable
- VAR have value VALUE
- - make sure var->exportstr is invalidated when a variable or function
- is assigned a value
+hashlib.h
+ - new extern declaration for copy_hash_table
builtins/declare.def
- - call bind_variable_value instead of duplicating some of bind_variable
- inline
+ - 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
- 4/6
- ---
-variables.h
- - new macros, VSETATTR and VUNSETATTR to set and clear variable
- attributes
-
-builtins{read,set,setattr,declare}.def,{execute_cmd,expr,shell,subst,variables}.c
- - change to use VSETATTR and VUNSETATTR
-
- 4/7
- ---
-doc/Makefile.in
- - if htmldir is set by configure, install the html files into that
- directory with `make install' and remove them with `make uninstall'
-
-Makefile.in,doc/Makefile.in
- - htmldir is set by configure and passed from the Makefile to the
- install in the doc subdirectory
-
-configure.in
- - substitute `htmldir' into Makefiles
-
-support/config.guess
- - some small changes for Apple's Rhapsody
-
-lib/termcap/Makefile.in
- - make the `distclean' and `maintainer-clean' targets remove Makefile
-
-lib/termcap/ltcap.h
- - new private library include file, for Rhapsody __private_extern__
- define
-
-lib/termcap/{termcap,tparam}.c
- - include "ltcap.h"
- - if HAVE_CONFIG_H is defined, include <stdlib.h> if HAVE_STDLIB_H is
- defined, otherwise declare getenv, malloc, realloc as extern
- - add __private_extern__ qualifier for extern data that Rhapsody
- requires
+ 8/13
+ ----
+arrayfunc.c
+ - new file, for miscellaneous array functions
-shell.c
- - don't run the startup files in the rshd case if shell_level is >= 2
- This should catch the case of
- rsh machine bash -c 'echo a'
- running the .bashrc twice, once for the shell started by rshd and
- one for the shell running -c command
+arrayfunc.h
+ - new file, extern declarations for functions in arrayfunc.c
- 4/8
- ---
variables.c
- - in initialize_shell_variables, unset the export attribute from
- SSH_CLIENT if it exists and we got it from the initial environment
-
-shell.c
- - don't bother unsetting export attribute from SSH_CLIENT, since we
- now do it in initialize_shell_variables
-
-lib/readline/display.c
- - don't check prompt_this_line[-2] in rl_redisplay if prompt_this_line
- isn't at least 2 characters after the start of rl_display_prompt
-
-lib/readline/histfile.c
- - change the name of the default history file to _history on MS-DOS
-
-lib/readline/histlib.h
- - add an extern declaration for history_offset
-
-lib/readline/hist{expand,search}.c
- - remove extern declaration for history_offset; now in histlib.h
-
-lib/readline/xmalloc.h
- - new file, extern declarations for xmalloc, xrealloc, xfree
+ - 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
-lib/readline/rlprivate.h
- - new file, with extern declarations for `readline private' global
- variables and functions
-
-lib/readline/rlshell.h
- - new file, with extern function declarations for stuff in shell.c
-
-lib/readline/Makefile.in
- - add dependencies on xmalloc.h, rlshell.h
- - add xmalloc.h, rlprivate.h to list of header files
-
-MANIFEST
- - add lib/readline/xmalloc.h, lib/readline/rlprivate.h,
- lib/readline/rlshell.h
-
-Makefile.in
- - add $(RL_LIBSRC)/xmalloc, $(RL_LIBSRC)/rlprivate.h,
- $(RL_LIBSRC)/rlshell.h to READLINE_SOURCE variable
-
-lib/readline/{bind,complete,display,funmap,histexpand,histfile,history,input,
-isearch,keymaps,kill,macro,readline,search,shell,util,vi_mode}.c
- - include "xmalloc.h" rather than extern declarations for xmalloc,
- xrealloc, xfree
-
-lib/readline/terminal.c
- - new function, used in two places, _emx_get_screensize for EMX
-
-lib/readline/readline.c
- - EMX apparently no longer needs _emx_build_environ
-
-lib/readline/signals.c
- - support for __EMX__ in rl_signal_handler
- - don't set the old handler passed to rl_set_sighandler to
- rl_signal_handler, because that would cause infinite recursion if
- that signal were generated
-
-lib/readline/xmalloc.c
- - no longer the same as lib/malloc/xmalloc.c, which is no longer
- used by anyone
- - changes to include xmalloc.h, define READLINE_LIBRARY, change
- some of the argument types
-
-lib/tilde/tilde.c
- - add prototypes for extern function declarations if __STDC__
- defined
-
-lib/readline/{terminal,bind,readline,nls,histexpand}.c
- - include "rlshell.h" for function prototypes
-
- 4/9
- ---
-lib/readline/{bind,callback,complete,display,input,isearch,kill,macro,nls,
-parens,readline,rltty,search,signals,terminal,util,vi_mode}.c
- - include "rlprivate.h"
- - remove extern declarations already in rlprivate.h
-
-xmalloc.c
- - xfree should take a PTR_T as its argument
-
-general.h
- - change prototype for xfree to use void * instead of char *
-
-lib/malloc/malloc.c
- - define PTR_T like it is defined in general.h
- - malloc() returns a PTR_T
- - free() takes a PTR_T as its argument
- - realloc() returns a PTR_T and takes a PTR_T as its first argument
- - memalign returns a PTR_T
- - valloc returns a PTR_T
- - calloc returns a PTR_T
- - cfree() takes a PTR_T
-
-variables.c
- - new function: char **all_variables_matching_prefix (char *prefix)
+shell.h
+ - include arrayfunc.h after variables.h
variables.h
- - extern declaration for all_variables_matching_prefix
-
-bashline.c
- - converted variable_completion_function to use
- all_variables_matching_prefix
+ - remove above extern function declarations moved to arrayfunc.h
+ - add extern declaration for var_lookup
-stringlib.c
- - new function, char **alloc_array(n), allocates an argv-style
- array of strings with room for N members
-
-externs.h
- - extern declaration for alloc_array
-
- 4/13
- ----
-lib/readline/keymaps.c
- - include "readline.h"
- - remove extern function declarations
-
-include/stdc.h
- - break the definition of __P out from a strict __STDC__ block,
- since __GNUC__ and __cplusplus also indicate that prototypes
- are available
-
-lib/readline/readline.h
- - adjust conditional declaration of rl_message, since __cplusplus
- indicates that prototypes are available
-
-lib/readline/rlstdc.h
- - private copy, modified, no longer symlinked to ../../include/stdc.h
- - __P is defined if __GNUC__ or __cplusplus is defined
- - removed defines for __STRING, const, inline, signed, volatile, since
- readline does not use them
-
-lib/readline/{search,readline}.c
- - extern declaration for _rl_free_history_entry with prototypes,
- since it's not in rlprivate.h
-
-lib/readline/history.h
- - added some missing `extern's in function declarations
-
-lib/readline/undo.c
- - include "rlprivate.h"
-
-lib/readline/shell.c
- - include "rlshell.h"
+Makefile.in
+ - add arrayfunc.c, arrayfunc.h in appropriate places
+ - add arrayfunc.h to dependencies
-lib/readline/Makefile.in
- - update dependencies for undo.c, shell.c
+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
-lib/tilde/tilde.h
- - add #define for __P if not already defined
- - use prototypes in extern function declarations with __P()
+subst.h
+ - extern declarations for functions above moved to arrayfunc.h
-lib/readline/doc/rluserman.texinfo
- - new file, derived from rlman.texinfo
+arrayfunc.h
+ - extern declarations for above functions from subst.c
-{bashline,findcmd,general,pathexp}.c, builtins/getopts.def
- - call alloc_array(N) instead of (char **)xmalloc (N * sizeof (char *))
+subst.[ch]
+ - string_list_dollar_star and string_list_dollar_at are now global
+ functions
+ - quote_escapes is now a global function
subst.c
- - added code to implement ksh-93 ${!prefix*} expansion
-
-doc/{bash.1,bashref.texi}
- - documented new ${!prefix*} expansion
-
- 4/15
- ----
-execute_cmd.c
- - new variable, this_shell_function, points to SHELL_VAR of currently
- executing shell function
+ - 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
-variables.c
- - new dynamic variable, FUNCNAME -- invisible when not executing shell
- function
-
-doc/{bash.1,bashref.texi}
- - documented new FUNCNAME variable
+arrayfunc.c
+ - change array_expand_index to call expand_string_to_string instead
+ of maybe_expand_string
- 4/16
+ 8/14
----
-support/rlvers.sh
- - add -T option to specify correct termcap library
-
-configure.in
- - Irix 4.x still needs to link with -lsun if it contains a replacement
- getpwent function that works with NIS
- - if we're configuring with an already-installed readline library,
- call BASH_CHECK_LIB_TERMCAP and pass the resulting $TERMCAP_LIB to
- support/rlvers.sh
-
-lib/readline/readline.c
- - in rl_forward, if rl_point ends up being < 0, set it to 0
-
-lib/readline/exammples/excallback.c
- - new callback example code, from `Jeff Solomon <jsolomon@stanford.edu>'
+shell.c
+ - in execute_env_file, call expand_string_unsplit_to_string
-lib/sh/getcwd.c
- - define NULL as 0 if not defined by one of the standard include files
- - cast result of malloc and realloc to (char *) where appropriate
+mailcheck.c
+ - in check_mail, call expand_string_to_string
variables.c
- - new functions for use by dynamic variables: null_assign and
- null_array_assign. Used as assign_func for a particular variable,
- they cause assignments to that variable to be silently ignored
- - FUNCNAME and GROUPS are no longer readonly
- - FUNCNAME changed to use null_assign
- - GROUPS changed to use null_array_assign. This means that the
- variable can be unset if desired (like for Oracle startup scripts),
- but cannot be assigned to
-
-doc/{bash.1,bashref.texi}
- - added text about assignments being silently discarded to descriptions
- of FUNCNAME and GROUPS
- - removed text saying that GROUPS is readonly
- - added standard text about GROUPS being unset and losing its special
- properties, even if reset
-
-command.h
- - new command type, cm_subshell, actually causes the shell to fork
- and then executes the command in the SUBSHELL_COM struct
-
-parse.y
- - ( ... ) now creates a command of type cm_subshell, with the same
- flag CMD_WANT_SUBSHELL as previous
-
-make_cmd.c
- - new function make_subshell_command
-
-make_cmd.h
- - extern declaration for make_subshell_command
-
-dispose_cmd.c
- - code to destroy a SUBSHELL_COM
-
-copy_cmd.c
- - code to duplicate a SUBSHELL_COM
-
-print_cmd.c
- - code to print a SUBSHELL_COM
+ - 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
-execute_cmd.c
- - broke the code that handles executing commands in subshells out of
- execute_command_internal into a new function, execute_in_subshell,
- with the same arguments
- - executing a command of type cm_subshell is just a slightly special
- case, handled in execute_in_subshell
-
- 4/18
- ----
-execute_cmd.c
- - changed code in execute_command_internal that executes subshell
- commands to check for command->type == cm_subshell in addition to
- checking that commmand->flags & CMD_WANT_SUBSHELL is non-zero
- - changed execute_in_subshell to set the CMD_NO_FORK flag on the
- command to be executed by a command of type cm_subshell
- (command->value.Subshell->command), if that command is a simple
- command (type == cm_simple) or a nested subshell (type == cm_subshell)
- and is not being timed
- - changed execute_command_internal to just call and return the value
- returned by execute_in_subshell if it gets a command of type
- cm_subshell with flags including CMD_NO_FORK
+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
-lib/malloc/malloc.c
- - morecore() should always return through morecore_done, not with a
- simple `return'
+arrayfunc.[ch], subst.c, builtins/{declare,read}.def
+ - do_array_element_assignment -> assign_array_element
- 4/20
+ 8/20
----
-variables.c
- - new function, quote_array_assignment_chars, backslash quotes all
- `[' and `]' before an `=' in a word that's part of the body of a
- compound array assignment. Needed because we run the list through
- the globbing code now. Don't bother if `=' does not appear in
- the string or if the first char is not `['
- - call quote_array_assignment_chars from assign_array_var_from_string
- now
-
-eval.c
- - moved parse_string_to_word_list to parse.y
-
parse.y
- - moved parse_string_to_word_list here. Much simpler -- no longer
- tries to parse a command, but just reads tokens using read_token().
- Any token but a WORD or ASSIGNMENT_WORD causes a syntax error.
- Don't have to mess around with saving global_command or calling
- parse_command, but do need to save and restore the history stuff,
- so the array assignment doesn't get saved on the history list
-
- 4/21
- ----
-nojobs.c
- - changed to use functions in lib/sh/shtty.c (tt{get,set}attr) for
- the terminal attributes
- - added a `flags' field to struct proc_status, flags are PROC_RUNNING
- and PROC_NOTIFIED (status has been returned to `wait')
- - functions check flags & PROC_RUNNING to check whether or not a
- particular process is still alive; PROC_RUNNING is reset by
- set_pid_status
- - new function, mark_dead_jobs_as_notified, same function as the one
- in jobs.c
- - cleanup_dead_jobs reaps jobs only if they're dead and not marked
- as notified
- - wait_for_background pids marks all pids as notified and reaps them
- before it returns, since it's called by the `wait' builtin
- - wait_for_single_pid marks the pid being waited for as notified so
- its slot can be reclaimed -- it's only called by the `wait' builtin
- - new function, process_exit_status, to turn what wait(2) takes into
- an exit status
-
- 4/22
- ----
-nojobs.c
- - add_pid takes a new second argument, async_p, which is non-zero if
- the process is in the background
- - new flag, PROC_ASYNC, set by add_pid
- - set_pid_status now sets the PROC_NOTIFIED flag if PROC_ASYNC is unset,
- so foreground jobs get cleaned up right away
- - changed mark_dead_jobs_as_notified to take a `force' argument; if
- non-zero, it marks only enough dead jobs to make the number of
- un-notified dead jobs < CHILD_MAX
- - new function, reap_dead_jobs, same as in jobs.c
-
-execute_cmd.c
- - don't need separate cases for REAP any more
+ - changed `for' command grammar to allow missing word list after `IN'
+ token, like latest POSIX drafts require
- 4/23
- ----
-builtins/printf.def
- - new function, tescape, which processes a single backslash
- escape sequence and returns the number of characters consumed by
- the argument string (code taken from bexpand)
- - changed bexpand to call tescape rather than do backslash-escape
- sequence conversion itself
- - changed occurrences of `illegal' in error messages to `invalid'
- - printf no longer calls ansicstr to translate backslash-escape
- sequences; the mainline printf code now calls tescape whenever it
- hits a backslash
-
- 4/26
- ----
-subst.c
- - new variable, garglist, set to list of words to be expanded after
- leading assignment statements are removed
- - command_substitute now calls maybe_make_exported_env before making
- the child process if there are no variable assignments preceding
- the command currently being expanded, or if the command currently
- being expanded consists only of variable assignments
-
-execute_cmd.c
- - the `early fork' code in execute_simple_command now calls
- maybe_make_export_env before forking because execute_disk_command
- would do that in the vast majority of cases, and this will obviate
- the need to do it for subsequent commands if the environment does
- not change
+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
- 4/27
- ----
-variables.h
- - more macros to manipulate the exportstr member of a SHELL_VAR
- - changed initialize_shell_variables to cache the value from the
- environment as the initial exportstr for all imported variables
- - changed make_var_array to use exportstr if it exists, instead
- of computing the value
- - changed make_var_array to cache exportstr for exported functions,
- so they don't have to be deparsed every time the export env is
- remade
-
- 4/28
- ----
-lib/readline/{histlib,rldefs}.h
- - changed STREQN macro to evaluate to 1 if the third argument is 0
-
-lib/readline/search.c
- - changed rl_history_search_{for,back}ward so they leave point at
- the end of the line when the string to search for is empty, like
- previous-history and next-history
- - broke common code out of rl_history_search_{for,back}ward into
- a new function, rl_history_search_reinit
- - rewrote rl_history_search_internal to be more like the
- non-incremental search functions, use noninc_search_from_pos,
- and leave the last history line found in the current line buffer
- if the search fails
- - new function, make_history_line_current, takes care of making
- the current line buffer a copy of the history entry passed as an
- argument; used by rl_history_search_internal and noninc_dosearch
+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
-subst.c
- - make ${!prefix@} be the same as ${!prefix*} for (undocumented)
- ksh93 compatibility
+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'
- 4/30
+ 8/22
----
-lib/readline/doc/rltech.texinfo
- - added note about including <readline/readline.h>, and that <stdio.h>
- should be included before readline.h
-
-lib/readline/doc/hstech.texinfo
- - added note about including <readline/history.h>
-
-lib/readline/doc/manvers.texinfo
- - updated version to 4.1
-
-lib/readline/{bind,complete,display,isearch,nls,parens,readline,signals,tilde,
-histexpand}.c
- - added prototypes with __P((...)) for forward static function
- declarations
-
-lib/readline/display.c
- - broke the code that initializes VISIBLE_LINE and INVISIBLE_LINE out
- of rl_redisplay into a new function, init_line_structures, which
- takes an argument giving the minimum number of characters that the
- line must hold
- - new function for use by applications that want to display the
- initial prompt themselves rather than having the first call to
- readline do it: rl_on_new_line_with_prompt (modified from code in
- the CLISP distribution)
-
-lib/readline/readline.c
- - new external variable, rl_already_prompted, to let readline know
- that the prompt string has already been displayed on the screen
- before the first call to readline
- - test rl_already_prompted before displaying the prompt in
- readline_internal_setup
- - if rl_already_prompted is non-zero, readline_internal_setup calls
- rl_on_new_line_with_prompt instead of rl_on_new_line
-
-lib/readline/readline.h
- - extern declaration for rl_on_new_line_with_prompt
- - extern declaration for rl_already_prompted
-
-lib/readline/doc/rltech.texinfo
- - documented rl_on_new_line_with_prompt and rl_already_prompted
-
-builtins/read.def
- - new -s option (silent mode). Input from a terminal is not echoed
+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
-doc/{bash.1,bashref.texi}
- - documented new `-s' option to read builtin
-
- 5/3
- ---
-lib/readline/vi_mode.c
- - replaced references to rl_getc with (*rl_getc_function)
+lib/tilde/tilde.[ch]
+ - changed __P to PARAMS
-[bash-2.04-devel frozen]
-
- 5/5
- ---
-subst.c
- - make sure that verify_substring_values always passes malloc'd
- memory to maybe_expand_string as the string to be expanded,
- since it gets freed on errors
+{Makefile,configure}.in
+ - changed the version number to 2.05a
+ - changed the release status to `alpha1'
+ 8/23
+ ----
support/shobj-conf
- - don't need -R option for shared libraries on Solaris
- - new stanza for OSF/1 machines with gcc
-
-lib/readline/readline.c
- - new variable, rl_gnu_readline_p, always 1. Available to allow
- readline users to test whether or not they're linking against
- the true readline, rather than some bogus replacement (from CLISP)
-
-lib/readline/readline.h
- - extern declaration for rl_gnu_readline_p
-
-hashlib.h, hashcmd.h
- - added prototypes to extern function declarations
-
-pcomplete.h
- - new file, declarations for the programmable completion stuff
-
-pcomplib.c
- - new file, library functions for programmable completion
-
- 5/6
- ---
-builtins/complete.def
- - new file, interface to programmable completion management
-
-configure.in
- - new enable argument --enable-progcomp, defines
- PROGRAMMABLE_COMPLETION
-
-config.h.in
- - #define for PROGRAMMABLE_COMPLETION
-
-config-bot.h
- - if PROGRAMMABLE_COMPLETION is defined and READLINE is not,
- #undef PROGRAMMABLE_COMPLETION
-
-pcomplete.c
- - new file, placeholder for programmable completion generators and
- associated functions
-
-Makefile.in, builtins/Makefile.in
- - changes to add pcomplete.c, builtins/complete.def
-
- 5/7
- ---
-subst.c
- - new function, #ifdef READLINE, skip_to_delim (s, i, delims).
- Starting at s[i], return the index of the first character in s
- that is contained in delims. Understands shell quoting.
- - added two arguments to list_string_with_quotes: an index to
- watch for, and a pointer to int to return the index into the
- created word list of the word containing the sentinel. Now
- compiled in all the time. The returned index starts at 1.
-
-subst.h
- - extern declarations for char_is_quoted, unclosed_pair, and
- skip_to_delim
- - changed extern declaration for list_string_with_quotes, moved
- it out of the #ifdef ARRAY_VARS section
-
-bashline.c
- - removed extern declarations for char_is_quoted and unclosed_pair
-
-variables.c
- - new function, SHELL_VAR **all_exported_variables()
- = new function, SHELL_VAR **all_array_variables(), #ifdef ARRAY_VARS
-
-variables.h
- - extern declaration for all_exported_variables, all_array_variables
-
-lib/sh/strpbrk.c
- - replacement if we don't have strpbrk(3)
+ - support for building shared libraries on Darwin/MacOS X
-configure.in, config.h.in
- - check for strpbrk(3), define HAVE_STRPBRK if found
-
-builtins/shopt.def
- - new function, char **get_shopt_options (), returns an array of
- shopt option names
+siglist.h
+ - extern declaration for strsignal() to compensate for lack of
+ a definition in some system include files
-builtins/set.def
- - new function, char **get_minus_o_opts (), returns an array of
- `set -o' option names
+jobs.c
+ - remove casts from strsignal() calls
-builtins/common.h
- - extern declarations for get_shopt_options, get_minus_o_opts
+[bash-2.05a-alpha1 frozen]
- 5/10
+ 8/27
----
-pathexp.c
- - make the POSIX_GLOB_LIBRARY code implement the GLOBIGNORE stuff
+[bash-2.05a-alpha1 released]
- 5/11
+ 8/27
----
-array.c
- - new convenience function, char **array_to_argv (ARRAY *),
- converts an array to a list of string values
-
-array.h
- - extern declaration for array_to_argv
-
execute_cmd.c
- - new convenience function, int execute_shell_function (SHELL_VAR *,
- WORD_LIST *)
+ - fix eval_arith_for_expr to handle the case where the expanded
+ word list is NULL, returning 0 in this case
-execute_cmd.h
- - extern declaration for execute_shell_function
-
-builtins/evalstring.c
- - make parse_and_execute unwind_protect current_prompt_string
- if the shell is interactive
+print_cmd.c
+ - in print_function_def, make sure that func_redirects is assigned
+ a value before being used
- 5/12
+ 8/28
----
-variables.c
- - moved bind_int_variable from expr.c to here; it now returns a
- SHELL_VAR *, like the other variable binding functions
+alias.c
+ - include <ctype.h> for definition of isalpha()
-variables.h
- - extern declaration for bind_int_variable
+bashhist.h
+ - add prototypes for extern function declarations
- 5/14
- ----
-bashline.c, parse.y, general.c, make_cmd.c, subst.c, braces.c, execute_cmd.c
- - replaced some common code sequences with calls to substring()
+flags.c
+ - include bashhist.h for extern function declarations
-lib/readline/doc/rltech.texinfo
- - fixed small typo in description of rl_completion_entry_function
+mksyntax.c
+ - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
- 5/18
- ----
-stringlib.c
- - new function, strcreplace(char *string, int c, char *text, int do_glob)
- replaces all occurrences of C in STRING with TEXT. Backslash may
- be used to quote C. If DO_GLOB is non-zero, the replacement TEXT
- is quoted to protect globbing characters.
+parse.y
+ - include test.h for extern function declarations
externs.h
- - extern declaration for strcreplace
-
-bashhist.c
- - use strcreplace in expand_histignore_pattern
-
-pcomplete.c
- - finished initial implementation of programmable completion
-
-alias.c
- - code to set the aliases itemlist to dirty when an alias is added
- or removed, if PROGRAMMABLE_COMPLETION is defined
-
-variables.c
- - code to set the functions itemlist to dirty when a shell function
- is added or removed, if PROGRAMMABLE_COMPLETION is defined
-
-builtins/enable.def
- - code to set the builtins itemlist to dirty when a shell builtin
- is added or removed, if PROGRAMMABLE_COMPLETION is defined
- - code to set the enabled and disabled itemlists to dirty when a
- builtin is enabled or disabled, if PROGRAMMABLE_COMPLETION is
- defined
-
-builtins/shopt.def
- - new shell option, `progcomp', on if programmable_completion_enabled
- (from pcomplete.c) is non-zero
-
-doc/{bash.1,bashref.texi}
- - note that `${' is not eligible for brace expansion to avoid
- conflicts with parameter expansion
+ - change extern declaration for setlinebuf to sh_setlinebuf
- 5/19
- ----
-builtins/complete.def
- - added a new `compgen' builtin for use by completion functions
+stringlib.c
+ - include <glob/glob.h> for extern function declarations
- 5/21
- ----
-bashline.c
- - new function, void clear_hostname_list(void), to delete all the
- entries in the hostname completion list
+variables.h
+ - add function prototypes for all of the sv_* functions
-bashline.h
- - extern declaration for clear_hostname_list
+builtins/common.h
+ - add extern declarations for set_shellopts() and parse_shellopts()
+ from builtins/set.def
variables.c
- - changed sv_hostfile to clear the hostname list if $HOSTFILE is
- unset
-
-doc/{bash.1,bashref.texi}
- - documented new behavior of HOSTFILE when it's unset
- - added some awkwardly-worded text to make it clear that an
- interactive shell cannot be started with non-option arguments
- or with the -c option
-
-shell.c
- - restored NON_INTERACTIVE_LOGIN_SHELLS test, so that if it is
- defined, shells with argv[0][0] == '-' and not in posix mode
- run the startup files even if non-interactive
+ - include "hashcmd.h" for extern declaration for flush_hashed_filenames
+ - include "pathexp.h" for extern declaration for setup_glob_ignore
-config-top.h
- - added commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS
-
- 5/24
- ----
-subst.c
- - make sure the characters in IFS are cast to unsigned before being
- indexed in ifscmap (expand_word_internal)
+lib/malloc/malloc.c
+ - cast to `long' instead of `int' in memalign for 64-bit machines
- 5/25
- ----
-parse.y
- - change grammar rule for arithmetic for expressions to handle a
- list_terminator after the `))' instead of requiring a newline_list
+{pcomplete,trap}.c
+ - changed printf escape sequences used to print pointers to %p
-subst.c
- - fix so that variable indirection can reference the shell's special
- variables (like $0...$9, $$, $#, etc.)
+lib/readline/undo.c
+ - include "xmalloc.h" for extern function declaration
-pcomplete.c
- - changed gen_wordlist_matches to use split_at_delims to split the
- string at $IFS first, then expand each individual word
+input.h
+ - add function prototypes to extern declarations for getc_with_restart
+ and ungetc_with_restart
- 5/27
- ----
-lib/readline/histfile.c
- - change things so that O_BINARY mode is used when reading and writing
- the history file on cygwin32 as well as OS/2 (__EMX__)
+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 *'
-parse.y
- - add calls to push_delimiter and pop_delimiter around the call
- to parse_matched_pair when parsing $'...' and $"..." so the
- history entry is added correctly
+shell.h
+ - start of a set of function pointer typedefs like those in
+ lib/readline/rltypedefs.h
- 5/28
- ----
-doc/{bash.1,bashref.texi}, lib/readline/doc/rluser.texinfo
- - documented new programmable completion facilities
+hashlib.[ch]
+ - second paramter to flush_hash_table is now an `sh_free_func_t *'
-doc/bashref.texi
- - documented new configure `--enable-progcomp' option
+trap.c
+ - parameter to reset_or_restore_signal_handlers is now an
+ `sh_resetsig_func_t *'
- 6/1
- ---
-variables.c
- - if make_local_variable is being asked to make a local shadow
- variable of a read-only variable, print an error message and
- return NULL
- - if make_local_variable returns NULL to make_local_array_variable,
- just return it
+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 *'
-builtins/declare.def
- - if we're making local variables, and make_local_array_variable or
- make_local_variable returns NULL, just flag an error and go on
+jobs.[ch]
+ - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
- 6/2
- ---
-Makefile.in
- - changed release status to `alpha1'
+alias.c
+ - map_over_aliases now takes an `sh_alias_map_func_t *'
+ - free_alias_data now takes a `PTR_T'
-[bash-2.04-alpha1 frozen]
+pathexp.c
+ - function pointer argument to ignore_globbed_names is now an
+ `sh_ignore_func_t *'
- 6/18
- ----
bashline.c
- - fixed find_cmd_start so that it doesn't spin-loop on commands with
- a command separator like `;' or `&'. Problem was not incrementing
- `os' past the delimiter found
+ - function pointer argument to _ignore_completion_names is now an
+ `sh_ignore_func_t *'
- 6/21
- ----
-variables.c
- - cosmetic change: introduced two macros to encapsulate initialization
- of dynamic variables
+pathexp.h,{bashhist,bashline.c
+ - `item_func' member of a `struct ignorevar' is now an
+ `sh_iv_item_func_t *'
- 6/23
- ----
-pcomplib.c
- - new function: num_progcomps(void), returns the number of entries in
- the programmable completions hash table
+builtins/evalfile.c
+ - `errfunc' is now an `sh_vmsg_func_t *'
-pcomplete.h
- - extern declaration for num_progcomps
+jobs.c
+ - map_over_job now takes an `sh_job_map_func_t *' as its first argument
-bashline.c
- - make sure some programmable completions have been defined before
- diving into the programmable completion code
+array.[ch]
+ - function pointer argument to array_walk is now an
+ `sh_ae_map_func_t *'
-shell.c
- - in open_shell_script, move the fd opened to the script to a high
- one with move_to_high_fd in all cases -- the buffered input code
- still has problems if fd == 0 and later on fd 0 is closed or
- redirected (cf. input.c:check_bash_input())
+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/printf.def
- - getlong() now calls strtol directly with a third argument of 0 so
- it can handle 0x (hex) and 0 (octal) prefixes, which legal_number
- does not -- this has implications for arguments to %d that begin
- with `0'
+list.c
+ - map_over_words now takes an `sh_icpfunc_t *' as its second argument
-lib/sh/getenv.c
- - make sure that the variable found in the temporary environment has
- a non-null value before calling savestring() on it
+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
-subst.c
- - make sure split_at_delims returns 0 in *nwp and *cwp if handed a
- null or empty string
+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
-pcomplete.c
- - make sure build_arg_list handles lwords == 0, as it will be if an
- empty command line is handed to the programmable completion code
- (like compgen -C xyz)
+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 *'
+
+builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
+ - changed all declarations of last_shell_builtin and this_shell_builtin
execute_cmd.c
- - make sure execute_shell_function passes a non-null bitmap of fds to
- close to execute_function, allocating and deallocating it locally
-
-sig.c
- - don't mess with SIGPROF in initialize_terminating_signals
-
-jobs.c, nojobs.c
- - if the user has requested it with checkwinsize, check for a new
- window size after a job exits due to a signal as well as being
- stopped
-
-lib/readline/kill.c
- - changed rl_kill_region to set the point to the beginning of the
- region after the kill is performed
-
- 6/24
- ----
-configure.in
- - make sure ranges ([1-9]*) are protected with [...] for m4 quoting
-
-variables.c
- - make sure that bind_variable_value honors `set -a' and that it
- marks the environment for recreation if necessary
-
- 6/25
- ----
-lib/readline/complete.c
- - if we're completing at the end of the line, find_completion_word
- shouldn't test whether the character is a special word break
- char and (possibly) advance rl_point past the end of the buffer
-
-parse.y
- - change mk_msgstr to write embedded newlines as `\n"<NL>"', as the
- PO file format apparently requires
+ - 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 *'
- 6/28
- ----
-lib/readline/display.c
- - code to manage the growth of the inv_lbreaks and vis_lbreaks arrays
- beyond 256, since there are pathalogical command lines that can
- have more than 256 line breaks for redisplay
+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 *)
- 6/30
- ----
-stringlib.c
- - include pathexp.h for extern declaration of quote_globbing_chars
-
-variables.h
- - change CACHE_EXPORTSTR to savestring() the value and not set the
- att_importstr flag
+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
- 7/6
- ---
-support/bashbug.sh
- - bashbug now accepts --help and --version options
+builtins/shopt.def
+ - set_func member of shopt_vars is now of type `shopt_set_func_t *'
bashline.c
- - change bash_quote_filename to use single quotes if the user
- does not specify an opening quote character and the filename being
- completed contains newlines
-
- 7/8
- ---
-configure.in, aclocal.m4, config.h.in
- - BASH_TYPE_INT32_T --> BASH_TYPE_BITS32_T; int32_t --> bits32_t
- - BASH_TYPE_U_INT32_T --> BASH_TYPE_U_BITS32_T; u_int32_t --> u_bits32_t
+ - enable_hostname_completion now returns `int' (the old value of
+ perform_hostname_completion)
-lib/malloc/{malloc,gmalloc}.c, lib/sh/inet_aton.c
- - int32_t --> bits32_t; u_int32_t --> u_bits32_t
+[The only use of Function and VFunction now is for unwind-protects]
-aclocal.m4
- - new tests: BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
-
-configure.in
- - add check for sizeof short, sizeof char
- - call BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
-
-config.h.in
- - new #defines for bits16_t, u_bits16_t
-
-lib/malloc/malloc.c
- - use u_bits16_t for type of mi_magic2
-
-
- 7/16
- ----
-lib/readline/display.c
- - new private library function, _rl_strip_prompt, to remove instances
- of RL_PROMPT_{START,END}_IGNORE from the passed prompt string
-
-lib/readline/rlprivate.h
- - extern declaration for _rl_strip_prompt
-
-lib/readline/readline.c
- - call _rl_strip_prompt before outputting the prompt if we're not
- doing any echoing of input chars (readline_echoing_p == 0)
-
-Makefile.in
- - tentative change to rule for parser-built: use $< instead of
- `y.tab.h' in recipe
-
- 7/19
- ----
-support/config.{guess,sub}
- - add code to handle all versions of Mac OS (e.g., Mac OS X)
-
- 7/26
- ----
-lib/readline/bind.c
- - on cygwin32, treat \r\n as a line terminator when reading the
- inputrc file
-
- 7/29
- ----
-lib/sh/netopen.c
- - fixed problem in _getaddr with copying the address returned from
- gethostbyname to the `struct in_addr *' argument -- hostnames
- now work in /dev/(tcp|udp)/host/port
-
- 8/2
+ 9/4
---
-configure.in
- - on Apple Rhapsody systems, set LOCAL_CFLAGS to -DRHAPSODY
-
-variables.h
- - changes from Apple for building fat binaries on Rhapsody,
- setting HOSTYPE, OSTYPE, VENDOR, and MACHTYPE
-
-lib/readline/terminal.c
- - some work on the `dumb terminal' setup code in _rl_init_terminal_io
- to make sure it's complete for use by the redisplay code and some
- stuff in {readline,complete}.c
+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
-lib/readline/display.c
- - new function, _rl_current_display_line, returns the number of
- lines down from the first `screen line' of the current readline
- line the cursor is
+{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
+ - don't include maxpath.h directly; it's already included by shell.h
-lib/readline/readline.c
- - make rl_refresh_line call _rl_current_display_line
+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
-lib/readline/rlprivate.h
- - extern declaration for _rl_current_display_line
+lib/sh/Makefile.in
+ - add mailstat.c and mailstat.o in the appropriate places
- 8/3
- ---
-doc/bashref.texi
- - reorganized slightly:
- o a new shell builtins chapter
- o a new shell variables chapter
- o a new special builtins section
- o bourne shell features chapter removed
- o alias builtins moved to the bash builtins section
- o bourne shell differences moved to appendix
- o order of readline and history chapters swapped
- o indices are now unnumbered appendices
- o some text cleaned up and some explanatory text added
-
-lib/readline/terminal.c
- - if a calling application is using a custom redisplay function,
- don't call tgetent to get the terminal attributes, since those
- are used only by the redisplay code. Still get the window
- size, though
+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
-lib/glob/fnmatch.c
- - range comparisons in bracket expressions no longer use strcoll(3),
- since in some locales (de, for example), [A-Z] matches all
- characters
+lib/malloc/shmalloc.h
+ - new file, extern declarations for allocation wrapper functions for
+ use by the shell (and others, I guess)
-parse.y, print_cmd.c
- - some changes to make sure the shell compiles when
- DPAREN_ARITHMETIC is not defined but ARITH_FOR_COMMAND is
+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
- 8/5
+ 9/5
---
-redir.c
- - in the here document code in do_redirection_internal, check
- that the file descriptor returned by here_document_to_fd is not
- the same as a file descriptor specified as the redirector
- before closing it
+lib/malloc/gmalloc.c
+ - removed; no longer part of distribution
- 8/6
- ---
-parse.y
- - make sure the pipline rule for `timespec BANG pipeline' sets the
- CMD_INVERT_RETURN flag for the pipeline command
+lib/malloc/Makefile.in
+ - removed references to gmalloc.[co]
-builtins/wait.def
- - use setjmp with a special jump buffer to take longjmps in the
- case that a SIGINT is received while waiting for jobs or processes
- it makes wait return with a status > 128, as POSIX.2 specifies
+configure.in, doc/bashref.texi
+ - removed references to `--with-glibc-malloc' configure option
-{jobs,nojobs}.c
- - changed wait_sigint_handler to longjmp to wait_intr_buf if it's
- executing the wait builtin and SIGINT is trapped. It calls
- trap_handler to make sure a pending trap for SIGINT is set also,
- so the trap is taken when the wait builtin returns
+{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
- 8/9
+ 9/6
---
-jobs.c
- - save and restore the value of errno in sigchld_handler
+lib/malloc/imalloc.h
+ - new file, some internal malloc definitions
-trap.c
- - save and restore the value of errno in trap_handler
+lib/malloc/mstats.h
+ - new file, definitions for malloc statistics structs and functions
- 8/10
- ----
-Makefile.in
- - changed release status to beta1
+lib/malloc/trace.c
+ - new file, malloc tracing functions (currently just print messages
+ to stderr), code is #ifdef MALLOC_TRACE
- 8/13
- ----
-include/posixtime.h
- - new file to encapsulate the <time.h> and <sys/time.h> mess
+lib/malloc/stats.c
+ - new file, moved malloc stats code from malloc.c to here
-Makefile.in
- - add posixtime.h to list of include files in BASHINCFILES
- - update dependencies for general.o, execute_cmd.o
-
-general.c, execute_cmd.c, builtins/times.def
- - include posixtime.h instead of <time.h>, <sys/time.h>
-
-general.c
- - protect inclusion of <sys/times.h> with HAVE_SYS_TIMES_H check
-
-builtins/Makefile.in
- - update dependencies for times.o
-
- 8/16
- ----
-lib/sh/timeval.c
- - moved functions dealing with struct timevals here from general.c
- and execute_cmd.c
-
-lib/sh/clock.c
- - moved functions dealing with clock_ts here from general.c
- (print_time_in_hz renamed to print_clock_t)
-
-externs.h
- - moved extern declarations for timeval_to_secs and print_timeval
- here from general.h
- - moved extern declarations for clock_t_to_secs and print_clock_t
- here from general.h
+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
-builtins/times.def
- - calls to print_time_in_hz changed to print_clock_t
+lib/malloc/Makefile.in, Makefile.in
+ - added {imalloc,mstats}.h, {trace,stats}.c
-Makefile.in
- - added references for lib/sh/timeval.c and lib/sh/clock.c
+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/sh/Makefile.in
- - clock.o and timeval.o are now included in libsh.a
+{array,subst}.c
+ - a couple more arrayind_t fixes from Paul Eggert
- 8/23
- ----
-execute_cmd.c
- - make sure last_command_exit_value is updated before running a
- DEBUG trap in the cm_simple case of execute_command_internal
+configure.in
+ - remove redundant check for wait3(2)
-lib/readline/display.c
- - new function, static void redraw_prompt (char *), used to
- redraw the last line of a multiline prompt that possibly
- contains terminal escape sequences
- - call redraw_prompt from _rl_redisplay_after_sigwinch
+redir.h
+ - fixed a typo (stdin_redirs -> stdin_redirects)
- 8/24
+ 9/10
----
-lib/readline/bind.c
- - new struct with names of string-valued readline variables and
- handler functions to call when the variable is set
- - changed rl_variable_bind to use functions to find boolean vars
- and string vars in their respective lists
- - new function, bool_to_int, to translate a boolean value that may
- appear as an argument to `set <boolean-var-name>' to 1 or 0
- - new function, hack_special_boolean_var, called if the element in
- the boolean_vars struct has the V_SPECIAL flag set, to provide
- any necessary other action when a boolean variable is set
- - new functions to be called when each string variable is set;
- called by rl_variable_bind
-
execute_cmd.c
- - do_piping no longer sets pipes to O_TEXT mode if __CYGWIN32__
- is defined
-
- 8/25
- ----
-subst.c
- - parameter_brace_patsub now mallocs a local copy of `patsub', because
- if it starts with a `/' we increment it, and functions down the call
- chain will free that on an error (and if we pass the incremented
- value, will try to free unallocated memory)
- - pos_params now short-circuits and returns a null string immediately
- if start == end, meaning we want 0 positional parameters
-
- 8/26
- ----
-subst.c
- - fixed pat_subst to correctly handle a null replacement string with
- a null pattern string prefixed with `%' or `#'
-
- 9/3
- ---
-variables.c
- - don't import shell functions from the environment if the shell was
- started with -n
-
- 9/8
- ---
-subst.c
- - if a command substitution is being performed inside a shell function,
- catch `return' in command_substitute so that a return inside the
- command substitution doesn't jump back to execute_function (or one
- of its brethren) and go on with the command
-
-parse.y
- - in history_delimiting_chars, if the first line is `for var' and
- command_oriented_history is active, we don't want a semicolon if
- the next token to be read is `in', but we do want one otherwise.
- All we can do is check shell_input_line and see if the next chars
- are `in' -- if so, we return " "
-
- 9/16
- ----
-builtins/hash.def
- - don't allow `hash -p /pathname/with/slashes name' if the shell
- is restricted
-
-doc/{bash.1,bashref.texi}
- - updated description of restricted shell mode
-
-lib/readline/display.c
- - fixed a bug in _rl_update_final which used the inv_lbreaks array
- to index into visible_line
-
-jobs.c
- - waitchld() need not go through the pain of setting up an environment
- to execute traps on SIGCHLD if children_exited == 0
- - waitchld returns -1 if waitpid() returns -1 with errno == ECHILD,
- indicating that there are no unwaited-for child processes, and it
- has not yet reaped any dead children
- - wait_for, wait_for_single_pid return -1 if waitchld() returns -1
- - new function, mark_all_jobs_as_dead
- - wait_for_background_pids calls mark_all_jobs_as_dead if
- wait_for_single_pid returns -1 with errno == ECHILD, since there are
- no unwaited-for child processes
+ - 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
-subst.c
- - tentative change: subshells started for command substitution no
- longer unconditionally disable job control
+builtins/evalfile.c, shell.c
+ - buffer passed to check_binary_file is char, not unsigned char
- 9/17
- ----
parse.y
- - new function: save_token_state(). Saves the value of last_read_token
- and the two previous tokens in an allocated array and returns the
- array
- - new function: restore_token_state(ts). TS is an array returned by
- save_token_state. last_read_token and the two previous tokens are
- set from the values in TS
+ - fix extern declaration for yyerror()
+ - yyerror now takes a `const char *' as first arg
-trap.c
- - run_pending_traps calls save_token_state and restore_token_state
- around the call to parse_and_execute, which will call the parser
- and possibly leave it in a state where reserved words will not be
- recognized (_run_trap_internal, too)
+{error,jobs}.c
+ - fixes to printf-style functions to handle pids wider than an int
- 9/20
- ----
-support/bashbug.sh
- - if sendmail is used as $RMAIL, pass `-i -t' as arguments so changes
- made by the user to the recipient headers in the message are
- honored
+lib/readline/{isearch,vi_mode}.c
+ - fix call to rl_message in rl_display_search (remove extra arg)
- 9/21
- ----
-bashhist.c
- - if histverify has been set, make sure a `:p' modifier to a history
- expansion prints the result
-
-builtins/echo.def
- - new extern variable, xpg_echo, set to 1 if DEFAULT_ECHO_TO_USG is
- defined and 0 otherwise
- - echo_builtin now sets the initial value of do_v9 from xpg_echo
-
-builtins/shopt.def
- - new shopt option, `xpg_echo', turns backslash escape expansion by
- `echo' on and off at runtime
-
-builtins/{bash.1,bashref.texi}
- - documented new `xpg_echo' shell option
+variables.c
+ - fix missing argument to builtin_error in make_local_variable
-tests/{builtins.tests,builtins2.sub,shopt.tests}
- - changes for new `xpg_echo' shell option
+builtins/getopts.def
+ - since getopts takes no options, change while loop calling
+ internal_getopts to a simple `if' check
-configure.in
- - changes for FreeBSD-3.x ELF to add `-rdynamic' to LOCAL_LDFLAGS.
- This allows dynamic loading of builtins
+builtins/printf.def
+ - since printf takes no options, change while loop calling
+ internal_getopts to a simple `if' check
-support/shobj-conf
- - changes to handle FreeBSD-3.x elf or a.out object file formats
+lib/readline/bind.c
+ - remove _SET_BELL macro, expand code inline
- 9/23
- ----
-[bash-2.04-beta1 released]
+lib/readline/input.c
+ - change _rl_input_available to use either select or FIONREAD,
+ but not both
- 9/24
- ----
-jobs.c
- - wait_for returns -1 only if the shell is currently executing the
- `wait' builtin, since that's the only thing that cares
+lib/readline/readline.c
+ - fix rl_digit_loop to remove unreachable code at end of loop
-execute_cmd.c
- - moved cases of close_fd_bitmap to before calls to do_piping to
- handle some pathological cases
+{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
- 9/29
- ----
execute_cmd.c
- - save the command line in execute_simple_command before making the
- export environment, since maybe_make_export_env clobbers
- the_printed_command if there are exported functions
+ - remove #ifdef'd code that allowed `return' to terminate a select
+ statement
- 9/30
- ----
-configure.in,config.h.in
- - check explicitly for setvbuf; define HAVE_SETVBUF if found
-
-configure.in
- - change opt_gnu_malloc to opt_bash_malloc, since the bash malloc
- is not really the gnu malloc anymore
- - new argument, --with-bash-malloc, identical to --with-gnu-malloc
- - AC_DEFINE(USING_BASH_MALLOC) if opt_bash_malloc is enabled
+expr.c
+ - remove some extraneous tests from strlong()
-config.h.in
- - new #define for USING_BASH_MALLOC
+array.h
+ - arrayind_t is now a long, since shell arithmetic is performed as
+ longs
+ - remove second declaration of new_array_element
-doc/bashref.texi
- - updated installation section to add --with-bash-malloc and
- change description of --with-gnu-malloc
-
-lib/sh/setlinebuf.c
- - change name of function to sh_setlinebuf, just returns 0 if
- HAVE_SETVBUF and HAVE_SETLINEBUF are undefined
- - prefer setvbuf to setlinebuf if we have both
- - if we're using setvbuf, use a local buffer for stdin and stdout
- local buffer is BUFSIZ unless we're using the bash malloc
- (USING_BASH_MALLOC is defined), in which case it's 1008 (which
- the bash malloc rounds up to 1024)
+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
- 10/4
- ----
-input.c
- - if USING_BASH_MALLOC is defined, set the max buffer size to 8176,
- which the bash malloc rounds up to 8192
+Makefile.in,builtins/Makefile.in
+ - updated some dependencies due to new include files
- 10/5
- ----
pcomplete.c
- - new function, pcomp_filename_completion_function, a wrapper for
- filename_completion_function that dequotes the filename first
+ - include "execute_cmd.h" for declaration of execute_shell_function
-bashline.c
- - changed bash_directory_completion_matches to dequote the filename
- before passing it (indirectly) to filename_completion_function
-
-execute_cmd.c
- - change execute_command to defer calling unlink_fifo_list until any
- shell function has finished executing (variable_context == 0)
+arrayfunc.c
+ - include <stdio.h> for printf
+ - include "builtins/common.h" for builtin_error declaration
-configure.in
- - added AC_CYGWIN, AC_MINGW32, AC_EXEEXT
-
- 10/8
- ----
-subst.c
- - expand_word_internal(): changes some things to avoid small (2 or 3
- byte) calls to xmalloc -- added a label and some gotos (BEWARE)
- - changed make_dev_fd_filename so it doesn't call sprintf anymore
+builtins/evalstring.c
+ - include "../trap.h" for run_trap_cleanup declaration
- 10/27
- -----
-execute_cmd.c
- - make execute_select_command handle the effects of the `continue'
- builtin correctly
+builtins/help.def
+ - include "common.h" instead of locally declaring builtin_error
+ and builtin_usage
- 11/5
- ----
-Makefile.in
- - RELSTATUS changed to `beta2'
+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
- 11/8
- ----
-[bash-2.04-beta2 released]
+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()
- 11/9
- ----
shell.c
- - make run_startup_files check for ssh2 as well as ssh1
+ - add NEED_SH_SETLINEBUF_DECL before including shell.h
- 11/19
- -----
-parse.y
- - make sure parsing conditional commands isn't confused by unexpected
- tokens (like `[[)]]')
+lib/readline/callback.c
+ - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
-builtins/common.c
- - fix get_job_spec to return NO_JOB for numeric job specs that are
- beyond the size of the jobs table
-
-builtins/type.def
- - change describe_command to report `not found' if a path search
- returns the same string as the command name and the command name
- does not match an executable file. This has implications for
- `type' and `command -[vV]'.
- - if a command is not found in $PATH, but an executable file with the
- name supplied exists in the current directory, make the command
- into a full pathname for the `command' builtin. This has
- implications for `type' and `command -[vV]'
+quit.h
+ - remove declaration of throw_to_top_level
subst.c
- - new function, expand_prompt_string, expands prompt string and
- returns the string passed if an error occurs
-
-subst.h
- - extern declaration for expand_prompt_string
-
-parse.y
- - decode_prompt_string calls expand_prompt_string instead of
- expand_string_unsplit
-
- 11/22
- -----
-builtins/echo.def
- - return EXECUTION_FAILURE if ferror(stdout) is true
-
- 11/23
- -----
-locale.c
- - if LC_ALL is unset, call setlocale(LC_ALL, lc_all), because lc_all
- holds the default locale
-
- 11/29
- -----
-lib/readline/shell.c
- - define NULL as 0 if it's not defined
- - change single_quote to allocate 4 characters in new string for
- each character in the old one (like builtins/common.c:single_quote)
+ - remove unused extern declaration for getopts_reset
-locale.c
- - when a locale variable (LC_*) is unset, pass "" to setlocale()
- to get the default locale set, since value is NULL
-
-lib/sh/makepath.c
- - new function, sh_makepath(char *path, char *dir, int flags)
+lib/sh/netopen.c
+ - include <shell.h> for legal_number, etc.
+ - add prototype for inet_aton extern declaration
-Makefile.in
- - changed version to beta3
+lib/sh/clock.c
+ - include <stdc.h> for __P declaration
+ - add extern declaration for get_clk_tck
-builtins/type.def
- - changed describe_command to use sh_makepath()
+support/mkversion.sh
+ - changed so that extern function declarations for functions in
+ version.c (moved from externs.h) are in the generated version.h
-builtins/cd.def
- - removed private declaration of mkpath(), changed to use sh_makepath
+shell.h
+ - include version.h
-general.c
- - changed make_absolute to use sh_makepath
- - changed full_pathname to use sh_makepath
+version.c
+ - various `char *' version variables are now `const char *'
-findcmd.c
- - removed private definition of make_full_pathname, changed to use
- sh_makepath
+general.h
+ - add prototype for same_file, bracketed with _POSIXSTAT_H
+ #ifdef, since that's what include/posixstat.h defines
-doc/{bashref.texi,bash.1}
- - added text to description of `getopts' to make it clear that getopts
- may be used to parse option characters other than letters, and
- that `:' and `?' may not be used as option characters
+builtins/common.[ch]
+ - _evalfile, maybe_execute_file, source_file, and fc_execute_file
+ now take a `const char *' as their first argument
eval.c
- - when processing a jump_to_top_level(EXITPROG), make sure the shell
- doesn't think it's still in a function by setting variable_context
- to 0
-
-doc/rbash.1
- - a skeletal man page for rbash, adapted from debian
-
-support/bashbug.sh
- - try to find a default editor if EDITOR is unset, rather than blindly
- using `emacs'
+ - removed extern declaration of yyparse; it's in externs.h
- 11/30
- -----
-support/config.{guess,sub}
- - many changes from the latest `automake' distribution, from the
- Debian folks
-
- 12/2
- ----
-lib/readline/keymaps.h, lib/tilde/tilde.h
- - added support for C++ compilation (`extern "C" {...}')
-
- 12/3
- ----
-subst.c
- - in process_substitute, make sure the child resets the O_NONBLOCK
- flag on the file descriptor opened for read to a named pipe
-
-jobs.c
- - new function, raw_job_exit_status, returns exit status of last job
- in pipeline
- - change job_exit_status to call raw_job_exit_status and pass the
- result to process_exit_status
- - in notify_of_job_status, get termination status from call to
- raw_job_exit_status, rather than the first job in the pipeline
- (fixes debian bug #15165)
-
-bashhist.c
- - changed bash_history to not add shell comment lines to the history
- file (fixes debian bug #21901). Uses new function shell_comment(L)
- which returns 1 if L is a shell comment line. Doesn't handle
- comments embedded in lines yet
-
-redir.c
- - when running in POSIX.2 mode, bash no longer performs word splitting
- on the expanded value of the word supplied as the filename argument
- to a redirection operator (fixes debian bug #30460)
-
-doc/bashref.texi
- - added new redirection stuff to POSIX Mode section (from previous fix)
-
- 12/6
- ----
-hashlib.h
- - removed extra semicolon at end of HASH_ENTRIES define
-
-redir.c
- - replaced toggling of disallow_filename_globbing flag with setting
- flags in redirection word to include W_NOGLOB if the shell is in
- POSIX mode and not interactive when expanding the filename argument
- to a redirection
-
- 12/7
- ----
-builtins/common.c
- - new function, backslash_quote_for_double_quotes(char *), quotes
- characters special when in double quotes in the string passed as
- an argument.
- #ifdef PROMPT_STRING_DECODE; called by decode_prompt_string
-
-builtins/common.h
- - extern declaration for backslash_quote_for_double_quotes
-
-parse.y
- - call backslash_quote_for_double_quotes instead of backslash_quote
- in decode_prompt_string
-
- 12/9
- ----
parse.y
- - before expanding the \u prompt string escape sequence, make sure
- current_user.user_name is non-null and call get_current_user_info
- if it is
-
- 12/10
- -----
-support/mkversion.sh
- - changes to avoid relying on floating point output format, which
- can be locale-specific
-
- 12/14
- -----
-print_cmd.c
- - changes to named_function_string (for normal function printing)
- and print_function_def (for printing function definitions embedded
- in other commands) to print redirections that should be attached
- to the function as a whole after the closing brace
-
-tests/func1.sub
- - tests for printing functions with attached redirections, called by
- func.tests
-
- 12/16
- -----
-lib/readline/complete.c
- - if we're completing files in the root directory and executing the
- visible-stats code, don't pass an empty pathname to
- rl_directory_completion_hook, because, for bash, that will be
- expanded to the current directory. Just pass `/' instead.
-
-lib/tilde/tilde.c
- - fix to tilde_expand_word for Cygwin to avoid creating pathnames
- beginning with `//' if $HOME == `/'
-
-variables.c
- - don't bother with the exportstr validation on cygwin systems,
- or even using exportstr at all, since that system has weird
- environment variables
-
- 12/17
- -----
-configure.in
- - new option, --enable-xpg-echo-default, new name for
- --enable-usg-echo-default (which is still present for backwards
- compatibility)
-
-configure.in, config.h.in, builtins/echo.def
- - DEFAULT_ECHO_TO_USG -> DEFAULT_ECHO_TO_XPG
-
- 12/29
- -----
-aclocal.m4
- - changed a couple of tests to avoid creating files with known
- names in /tmp
-
-support/rlvers.sh
- - changed to create files in /tmp/rlvers
-
-support/mksignames.c
- - now understands the POSIX.1b real-time signal names on systems
- that support them
-
- 12/30
- -----
-[bash-2.04-beta3 released]
-
- 12/31
- -----
-redir.c
- - try some more things to avoid race file replacements in
- here_document_to_fd
+ - 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
-parse.y
- - two new functions:
- get_current_prompt_level: returns 2 if current prompt is $PS2,
- 1 otherwise
- set_current_prompt_level: sets current prompt to $PS2 if arg
- is 2, $PS1 otherwise
+{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
+ - added prototypes for static function declarations
-copy_cmd.c
- - make sure to copy the `line' member in copy_arith_for_command
+shell.h
+ - add extern declarations for interactive, interactive_shell,
+ changed c files with extern declarations
pcomplete.c
- - free up `lwords' and `line' after evaluating any command or shell
- function in gen_compspec_completions
- - after filtering any matches specified by cs->filterpat in
- gen_compspec_completions, free ret->list (the members have
- already been copied or freed by filter_stringlist)
-
-bashline.c
- - free what find_cmd_name returns after calling the programmable
- completion code
-
- 1/4/2000
- --------
-subst.c
- - make call_expand_word_internal set w->word to NULL if either
- expand_word_error or expand_word_fatal is returned
-
- 1/7
- ---
-parse.y
- - two new functions: set_current_prompt_level(int) and
- get_current_prompt_level() to set and get the `level' of
- current_prompt_string (1 if $PS1, 2 if $PS2)
-
-externs.h
- - extern declarations for {get,set}_current_prompt_level
-
-builtins/evalstring.c
- - add an unwind_protect to save and restore the current prompt
- string pointers using {get,set}_current_prompt_level
+ - changed it_init_aliases to avoid shadowing global variable
+ `aliases'
- 1/9
- ---
-Makefile.in
- - changed release status to `beta4'
-
- 1/18
- ----
-[bash-2.04-beta4 released]
+bashline.c,pathexp.c,general.h
+ - sh_ignore_func_t is now a pointer to a function taking a
+ `const char *'; users changed
- 1/19
- ----
configure.in
- - moved checks for non-unix variants to beginning of tests
-
-Makefile.in, {builtins,support}/Makefile.in
- - added some $(EXEEXT) suffixes to generated programs for non-Unix
- systems
+ - test for <strings.h>
- 1/20
- ----
-parse.y
- - make get_current_prompt_level return 1 if current_prompt_string is
- NULL (as it would be while sourcing startup files)
-
-support/rlvers.sh
- - rmdir $TDIR in the exit trap
- - move the exit trap after we successfully create $TDIR
+config.h.in
+ - add #undef HAVE_STRINGS_H
- 1/21
- ----
-subst.c
- - several changes to split_at_delims to make non-whitespace
- delimiters create separate fields containing those delimiters,
- like the shell parser does with meta characters. This allows
- redirection operators, for example, to be treated as separate
- words by the programmable completion code
-
-examples/complete/complete-examples
- - added new function: _redir_op, which return true if the word
- passed as an argument contains a redirection operator (just
- bare-bones for now)
- - changed set completion function to use _redir_op as an example
+bashansi.h
+ - change like recommended in autoconf manual
-parse.y
- - make parse_string_to_word_list save and restore the value of
- shell_input_line_terminator, since an assignment like
- COMPREPLY=() inside a shell function called by the programmable
- completion code can change shell_input_line_terminator out from
- underneath shell_getc(). shell_getc will set the input line
- terminator to EOF when it gets EOF from the getter function, and
- the string getter function returns EOF at EOS. parse_and_execute
- tests for EOS directly and never gets EOF from shell_getc, so it
- does not have this problem.
-
- 1/24
+ 9/11
----
-lib/readline/funmap.c
- - #define QSFUNC like in complete.c
- - cast _rl_qsort_string_compare to a QSFUNC * in the call to qsort
-
-lib/readline/terminal.c
- - correct a typo in usage of the __EMX__ preprocessor define
- - fix a reversed usage of `#if defined (__DJGPP__)' in
- _rl_control_keypad
- - remove extern declarations for _rl_in_stream and _rl_out_stream
-
-lib/readline/rlprivate.h
- - add extern declaration for _rl_in_stream, since there's already
- one for _rl_out_stream
-
-builtins/ulimit.def
- - if bash is using ulimit(2), make sure that getfilesize() returns
- the value multiplied by 512 to convert it from a number of blocks
- to a number of bytes
+[a date which will live in infamy. prayers for the victims.]
- 1/25
- ----
execute_cmd.c
- - make sure execute_command_internal sets last_command_exit_value
- correctly when inverting the return value of a (...) subshell
- command
+ - don't use an absolute index into abuf in mkfmt, use
+ sizeof(abuf) to compute last index
-tests/{run-invert,invert.{tests,right}}
- - new tests for return value inversion
-
-configure.in
- - compile without bash malloc on m68k-motorola-sysv due to a file
- descriptor leak in closedir(3) -- the motorola implementation
- requires that freed memory be readable so it can free the dirent
- and then look back at it to find the file descriptor
+builtins/common.c
+ - fix read_octal to do a better job of detecting overflow while
+ iterating through the string
-expr.c
- - fix negative exponents in v**e to return an eval error
+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)
- 2/1
- ---
-Makefile.in
- - changed status to beta5
+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
jobs.c
- - fixed a problem with checking the wrong process when checking to
- see whether or not we need to reset the tty state. The old code
- checked the first process in a pipeline; the new code checks all
- processes in the pipeline to see whether any of them exited due
- to a signal or was stopped. If none were signalled or stopped,
- the code uses the exit status of the last process in the job's
- pipeline
-
- 2/4
- ---
-[bash-2.04-beta5 released]
-
-eval.c
- - call set_current_prompt_level instead of setting prompt_string_pointer
- directly
-
- 2/10
- ----
-[bash-2.04-beta5 re-released to net]
-
- 2/11
- ----
-sig.c
- - make sure SIGCHLD is defined in initialize_shell_signals before
- trying to use it in sigdelset() (DJGPP fix)
-
- 2/14
- ----
-lib/sh/shtty.c
- - include <unistd.h> before <shtty.h>
- - separate tests for ONLCR, ONOCR, ONLRET to cope with systems like
- DJGPP that don't implement the full POSIX termios option set
-
-builtins/psize.sh
- - set TMPDIR only if it's not already set
-
-lib/glob/glob.c
- - if a system doesn't define _POSIX_SOURCE but has a `struct dirent'
- without a d_ino member, define REAL_DIR_ENTRY to 1 so all entries
- are read
-
-configure.in
- - check for <arpa/inet.h> header file
+ - include "posixtime.h" instead of <sys/time.h>
config.h.in
- - add HAVE_ARPA_INET_H define
-
-lib/sh/inet_aton.c
- - don't compile unless HAVE_NETWORK, HAVE_NETINET_IN_H, and
- HAVE_ARPA_INET_H are all defined in config.h or config-bot.h
-
- 2/16
- ----
-subst.c
- - if we have a construct like "${@:-}", we need to note that we're
- not using whatever is in $@ (we're using the rhs), so the special
- double-quoting $@ rules do not apply
-
- 2/21
- ----
-lib/readline/signals.c
- - declare SigHandler before using it on non-POSIX systems
-
-lib/sh/{zread,zwrite}.c
- - include <sys/types.h> unconditionally
+ - 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
configure.in
- - m68k-motorola-sysv should be m68k-sysv in the section that sets
- opt_bash_malloc to no for certain systems
-
-builtins/complete.def
- - fixed a typo (stoppped) when printing out completion actions
+ - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf
+ - remove call to BASH_FUNC_SBRK_DECLARED
+ - remove call to BASH_FUNC_PRINTF
- 2/22
- ----
-lib/sh/netopen.c
- - include <arpa/inet.h> if it's present
-
-aclocal.m4
- - new macro, BASH_FUNC_INET_ATON, checks for inet_aton(3) including
- <netinet/in.h> and <arpa/inet.h>, which some systems require to
- resolve the function
+xmalloc.c, lib/malloc/malloc.c
+ - change check of SBRK_DECLARED to HAVE_SBRK_DECL
-configure.in
- - if autoconf can't fund inet_aton on its own, try BASH_FUNC_INET_ATON
+print_cmd.c
+ - change PRINTF_DECLARED to HAVE_DECL_PRINTF
-pcomplete.c
- - fixed a memory leak in gen_wordlist_completions
- - changed gen_wordlist_completions to do prefix-matching against the
- word being completed
+builtins/evalstring.c, builtins/common.h
+ - parse_and_execute now takes a `const char *' as its second argument
-doc/bash.1, lib/readline/doc/rluser.texinfo
- - documented the change in behavior of the -W option to complete and
- compgen
+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
-builtins/umask.def
- - if parse_symbolic_mode() returns -1, symbolic_umask needs to return
- -1 as well, otherwise the umask will be changed inappropriately
+parse.y,externs.h
+ - parse_string_to_word_list now takes a `const char *' as its second
+ argument
-input.c
- - always compile in getc_with_restart and ungetc_with_restart
+tests/builtins.right
+ - change output to account for extra digit in umask output
-parse.y
- - yy_stream_get and yy_stream_unget now call getc_with_restart and
- ungetc_with_restart, respectively, to avoid problems with some
- systems not restarting the read(2) when signals that bash handles
- are received during the read (since bash installs its signal
- handlers without the SA_RESTART flag)
+pcomplib.c
+ - free_progcomp now takes a PTR_T argument
-lib/readline/complete.c
- - don't default rl_completion_case_fold to 1 if __DJGPP__ is defined
+builtins/bashgetopt.h
+ - include <stdc.h>
+ - add prototypes to extern declarations
- 2/25
- ----
-subst.c
- - renamed `varlist' to `subst_assign_varlist' and made it global
+builtins/shopt.def
+ - add prototypes to static function declarations
-jobs.c
- - when running a SIGCHLD trap, need to unwind-protect
- subst_assign_varlist and set it to NULL before running the trap
- command (fix from ericw@bestnet.org and doogie@debian.org)
+builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
+ - include <ctype.h> for isdigit macro (referenced by `digit(x)')
- 2/28
- ----
-lib/readline/doc/rltech.texinfo
- - document rl_funmap_names()
+lib/readline/complete.c
+ - added more static function declarations with prototypes
- 2/29
+ 9/12
----
-subst.c
- - change split_at_delims to set the current word more appropriately
- when the cursor is between two words. Should probably change this
- again to set the current word like this only when the cursor is at
- whitespace or another delim just before the word start
-
- 3/1
- ---
-lib/sh/shtty.c
- - more checks for flag bits being defined before using them
-
- 3/7
- ---
-variables.h
- - fix typo in COPY_EXPORTSTR definition
+lib/sh/tmpfile.c
+ - use `^' instead of `*' in sh_mktmpname to make filenames a bit
+ more random
- 3/14
- ----
-subst.c
- - changed split_at_delims so that if the cursor is at whitespace
- between words, and we're interested in the current word (cwp != NULL),
- make a new empty word and set the cwp to that word
+include/stdc.h,lib/readline/rldstdc.h
+ - add __attribute__ definition
-locale.c
- - support for setting LC_NUMERIC locale category based on value of
- LC_NUMERIC shell variable
+builtins/common.h
+ - add printf __attribute__ to declaration of builtin_error
-variables.c
- - LC_NUMERIC is now treated specially
+error.h
+ - add printf __attribute__ to declaration of programming_error,
+ report_error, parser_error, fatal_error, sys_error, internal_error,
+ internal_warning
-doc/{bash.1,bashref.texi}
- - LC_NUMERIC updates
+lib/readline/readline.h
+ - add printf __attribute__ to declaration of rl_message
- 3/15
- ----
pcomplete.c
- - fix to avoid freeing memory twice
+ - add printf __attribute__ to declaration of debug_printf
- 3/17
- ----
-[bash-2.04 released]
-
- 3/20
- ----
-doc/bash.1
- - minor typo fix to description of `xpg_echo' option in `echo'
- description
-
- 3/23
- ----
-parse.y
- - minor fix to parse_string_to_word_list to allow newlines in
- compound array assignments
-
- 3/27
- ----
-lib/readline/rltty.c
- - fixed a missing-semicolon syntax error in the old 4.3 BSD tty code
-
-support/mksignames.c
- - if SIGRTMAX is >= 2*NSIG, just #undef SIGRTMIN and SIGRTMAX. This
- is an issue on AIX 4.3 (only, so far) -- checked by configure, which
- #defines UNUSABLE_RT_SIGNALS if this is the case
-
-aclocal.m4
- - new macro, BASH_CHECK_RTSIGS, checks whether or not real-time
- signals are defined with large values and defines UNUSABLE_RT_SIGNALS
- if they are
-
-config.h.in
- - place marker for UNDEF_RT_SIGNALS (initially undefined)
-
-configure.in
- - call BASH_CHECK_RTSIGS in the `bash miscellaneous' section
-
- 3/29
- ----
-
-subst.c
- - fixed a problem in match_pattern_char, where `string' was checked
- for a paren following a [?+!@], rather than `pat'
- - the code that checks whether or not to exit after a failed
- ${word?msg} substitution needs to check interactive_shell rather
- than interactive to avoid exiting if such a construct appears in
- a sourced file
-
- 3/31
- ----
-
-bashline.c
- - add `{' to the list of characters that need to be quoted by the
- completion code when appearing in a filename
-
- 4/1
- ---
-lib/glob/fnmatch.c
- - fixed an error in brackmatch() while skipping the rest of a bracket
- expression after a character matched. When `c' was a backslash and
- *p was a backslash, as in a pattern like [/\\], the old code didn't
- take both backslashes into account and ended up skipping the `]'
- after erroneously concluding that it was quoted. Report and fix
- from akim@epita.fr
-
- 4/3
- ---
-lib/readline/rltty.c
- - slight change to the BSD tty interface code, so that if the first
- ioctl fails, get_tty_settings returns -1 immediately
- - better checking of ioctl return values in BSD tty version of
- get_tty_settings
-
- 4/5
- ---
-doc/{bash.1,bashref.texi}
- - documented use of LINES and COLUMNS variables
-
- 4/12
- ----
-lib/readline/rltty.c
- - change the SETATTR define for the termio tty driver to use
- TCSETAW (the analog of the termios TCSADRAIN)
-
-lib/glob/fnmatch.c
- - fix for posix-style bracket expressions ([:xxx:], [=x=]) broken
- by fix of 4/1 for quotes in bracket expressions
-
- 4/26
- ----
-subst.c
- - fix to list_string and get_word_from_string to make a non-whitespace
- IFS character preceded by IFS whitespace part of the current field
- delimiter, not a separate delimiter that would result in a separate
- null field when splitting. cf POSIX.2, 3.6.5, (3)(b). Bug reported
- by amc@cs.berkeley.edu
- - changed the behavior of the (currently undocumented) ${!prefix@}
- expansion to be analogous to the expansion of $@ in other contexts
- when double-quoted. ksh93 seems to do this. Bug reported by
- Ken Pizzini <ken@halcyon.com>
- - changed read_comsub to ignore NUL bytes in the command substitution
- output, printing a warning message for now
-
-parse.y
- - changed shell_getc to ignore NUL bytes in the input, printing a
- warning message for now
- - changed read_a_line to print a warning when a NUL byte is encountered,
- like shell_getc does
-
- 5/18
- ----
-subst.c
- - make sure split_at_delims uses d2 only if it's non-null
- - make split_at_delims skip leading newlines in the string to split,
- if newline is a delimiter
-
-jobs.c
- - prevent hanging processes by marking a child process as not running
- (even if the shell thinks it is) when waitpid() returns -1/ECHILD --
- this indicates that waitpid never returned a reasonable status
- for that child though, which may be a symptom of another problem
-
-builtins/cd.def
- - make `pwd' print an error message if the write fails when displaying
- the current directory
-
-lib/readline/histexpand.c
- - return NULL from history_find_word if history_tokenize_internal
- returns (char **)NULL rather than attempting to dereference a
- possibly-NULL pointer
- - change history_tokenize_internal to set *indp to -1 before any
- processing if indp is non-null
-
- 5/19
- ----
-builtins/trap.def
- - when in POSIX.2 mode and printing trap dispositions, print the
- signal name without the leading `SIG', as POSIX.2 requires
-
- 5/23
- ----
-lib/readline/readline.c
- - readline_initialize_everything now assigns $TERM to rl_terminal_name
- if the application has left it unset, and calls _rl_init_terminal_io
- with the resultant value
+print_cmd.c
+ - add printf __attribute__ to declarations of cprintf, xprintf
-lib/readline/doc/rltech.texinfo
- - updated the description of rl_terminal_name to note initialization
+include/chartypes.h
+ - new file, includes <ctype.h> and defines macros that check for
+ safe (ascii) arguments before calling the regular ctype macros
+{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
parse.y
- - change parse_string_to_word_list to save and restore the value of
- current_command_line_count before calling back into the parser --
- it will screw up history if the string extends over one line. Bug
- reported by Jan.Djarv@mbox200.swipnet.se
-
- 6/7
- ---
-unwind_prot.h
- - change unwind_protect_string to pass the address of the variable to
- unwind_protect_var on machines where ints and char *s are not the
- same size
-
-unwind_prot.c
- - make sure we save the value of a variable in unwind_protect_var on
- machines where sizeof(char *) != sizeof(int), not the contents the
- value points to. Fix from Andreas Schwab <schwab@suse.de>
-
- 6/8
- ---
-configure.in
- - auto-configure MacOS X without bash malloc (like Rhapsody)
-
- 6/12
- ----
-configure.in
- - replace `cygwin32' with `cygwin'
-
-builtins/evalfile.c
- - in _evalfile, change all instances of \r to \n in the file to be
- sourced and evaluated if __CYGWIN__ is defined
+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 <chartypes.h> instead of <ctype.h>
-input.c
- - change \r to \n in the buffer argument to make_buffered_stream and
- after calling zread() from b_fill_buffer if __CYGWIN__ is defined
-
- 6/29
- ----
-lib/sh/Makefile.in
- - add rest of dependency rules for makepath.o
+Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
+ - update dependencies to include chartypes.h
- 7/3
- ---
-jobs.c
- - changed `int' to `WAIT' in a couple of places for non-POSIX
- environments
+lib/sh/inet_aton.c
+ - use `unsigned char' instead of `char' to pass to ctype.h functions
- 7/5
- ---
-locale.c
- - try to avoid an unnecessary memory allocation in localetrans() in
- the case that a translation for the string exists
+lib/sh/netopen.c
+ - check for '0' <= host[0] <= '9' in _getaddr instead of using
+ isdigit
-lib/readline/doc/rluserman.texinfo
- - change the `direntry' information to make it use rluserman instead
- of readline
+subst.c,lib/sh/shquote.c
+ - change array subscripts into sh_syntaxtab from `char' to
+ `unsigned char'
- 7/6
- ---
-execute_cmd.c
- - changes to execute_in_subshell so it honors a `!' prefixing a command
- inside a user subshell (...)
+{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
-support/config.{guess,sub}
- - add cases for Apple Darwin (Mac OS X)
-
-configure.in
- - Apple Darwin (MacOS X) uses its own malloc
+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
-lib/readline/readline.h
- - removed bogus extern declaration of savestring
+lib/readline/util.c
+ - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
+ function replacements for macros in chardefs.h
- 7/7
- ---
-builtins/common.c
- - in get_working_directory, don't count on getcwd returning anything
- useful in the buffer passed as the first argument on failure; just
- use bash_getcwd_errstr in the error message
+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
-examples/loadables/cut.c
- - loadable version of cut(1), from the FreeBSD source tree
+lib/readline/{bind,complete,nls}.c
+ - change to use some of the new macros from chardefs.h
- 7/18
- ----
lib/readline/vi_mode.c
- - changed two instances of (*rl_getc_function) (rl_instream) to calls
- to rl_read_key(), which works better when using the readline
- callback interface
+ - isident -> _rl_isident
+ - remove local defines of macros in chardefs.h
-builtins/evalfile.c
- - added FEVAL_CHECKBINARY flag for _evalfile; controls whether a check
- for a binary file is performed
- - FEVAL_CHECKBINARY is not set by source_file or maybe_execute_file,
- which means that the startup file execution and the `.' builtin will
- not check for binary files
- - FEVAL_CHECKBINARY is not set by fc_execute_file, so that files
- composed of history commands run by the `fc' builtin will not check
- for binary files
-
- 7/21
- ----
-shell.c
- - added `--init-file' as a synonym for `--rcfile'
-
- 7/26
- ----
-support/shobj-conf
- - added commented-out stanzas for hpux 10 and hpux 11 when the HP
- unbundled ANSI C compiler is being used
+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
- 7/27
+ 9/13
----
-shell.c
- - don't call end_job_control() from exit_shell if subshell_environment
- is non-zero, even if the shell is interactive
-
- 8/1
- ---
-bashhist.c
- - change maybe_add_history to remember if we saved the first line of
- a command and don't save the second and subsequent lines of a
- multi-line command if we didn't save the first line
-
-configure.in, config.h.in
- - add autoconf check for getservbyname()
-
-lib/sh/netopen.c
- - add support for named services in /dev/(tcp|udp)/host/service
- translation
- - make sure _netopen sets errno to something other than 0 if something
- goes wrong, so the redirection functions behave
-
- 8/3
- ---
-parse.y
- - changes to shell_getc so that history saving of blank lines in
- multi-line commands does a better job of syntactic correctness
-
-bashline.c
- - bind ^O to operate-and-get-next in emacs_standard_keymap explicitly,
- rather than letting rl_add_defun do it in whatever keymap is current
-
- 8/4
- ---
builtins/ulimit.def
- - removed some of the special handling of RLIM_INFINITY -- the old
- code would let people use RLIM_INFINITY as a shorthand for setting
- the soft limit to the hard limit. Now, the code just passes
- RLIM_INFINITY through if the hard limit is being set, so any kernel
- errors will get through
-
- 8/10
- ----
-parse.y
- - change the grammar rule for group_command so that it's composed of
- a compound_list instead of a list, which requires a terminator
- This means that you can now do (legal) things like
-
- { { echo a b c ; } }
-
- since the second close brace will be recognized as such because a
- reserved word is legal in that context
-
- 8/23
- ----
-subst.c
- - fix parameter_brace_substring to free all memory allocated by
- get_var_and_type in the VT_ARRAYMEMBER case (returned parameter
- `val')
-
- 8/30
- ----
-variables.c
- - now that we have dynamic array variables, remove the check for
- array_p in bind_variable and let array variables with assignment
- functions call the assignment function
-
-subst.c
- - change cond_expand_word to perform tilde expansion (like it should
- have done all along)
-
-lib/readline/complete.c
- - don't allow backslash to quote anything inside a single-quoted
- string in find_completion_word
+ - 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'
doc/{bash.1,bashref.texi}
- - note that `set -a' will cause functions to be exported
-
-lib/readline/parens.c
- - changed the blink timeout so it's settable by the application. A
- new function, int rl_set_paren_blink_timeout (int u), (still
- undocumented) will set the timeout to U usec
+ - documented new `hard' and `soft' limit arguments to `ulimit'
-variables.c
- - at startup of an interactive login shell, if the current directory
- is $HOME, and $HOME and $PWD are not the same, set the current
- directory (and $PWD) to $HOME
- - break code that initializes $PWD and $OLDPWD into set_pwd function
-
-variables.h
- - new extern declaration for set_pwd()
-
- 9/6
- ---
-lib/readline/{readline,callback}.c
- - allocate memory for rl_prompt instead of simply using what's passed
- as the `prompt' argument to readline() or
- rl_callback_handler_install(). This will allow constant strings to
- be passed to readline(), since the prompt processing code wants to
- write to rl_prompt
-
-lib/sh/pathcanon.c
- - new file, does pathname canonicalization
-
-externs.h
- - extern declarations for stuff in lib/sh/pathcanon.c
-
-general.c
- - canonicalize_pathname now simply calls sh_canonpath()
-
- 9/7
- ---
-pcomplete.h
- - new member in a `struct compspec': options
- - define some flag values for options field
+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
pcomplib.c
- - make sure options field is allocated and copied by compspec utility
- functions
-
-builtins/complete.def
- - add struct for completion options. These control the `meta-behavior'
- of the compspec. Initially, there are three:
-
- default - perform bash default completion if programmable
- completion produces no matches
- dirnames - perform directory name completion if programmable
- completion produces no matches
- filenames - tell readline that the compspec produces filenames,
- so it can do things like append slashes to
- directory names and suppress trailing spaces
-
- - add `-o option' to complete and compgen, setting new options field
- in a compspec
- - add code to display any -o options when a compspect is printed
- with the `-p' option to complete
-
-pcomplete.c
- - programmable_completions now passes back to the caller in the last
- argument any options associated with the active compspec (from the
- options field)
- - change gen_compspec_completions to re-call gen_action_completions
- with a CA_DIRECTORY action if the rest of the compspec actions
- generate no matches and the COPT_DIRNAMES option is present
-
-bashline.c
- - if a programmable completion was specified to return filenames with
- the `-o filenames' option, set rl_filename_completion_desired to 1
- so readline does its special filename-specific things
- - if a compspec was defined to fall back to the readline default with
- the `-o default' option, suppress setting the
- rl_attempted_completion_over variable in attempt_shell_completion
- so readline will go on and do filename completion
-
-include/ansi_stdlib.h
- - add extern declarations for atof and strtod
-
-builtins/printf.def
- - change getdouble() to use strtod (since we provide a version in
- libsh if the C library doesn't have one), and change the calling
- convention to match the other getXXX functions (take value pointer
- as argument, return success or failure). This makes printf handle
- invalid floating point numbers better
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
- - documented new `-o' option to complete and compgen; described the
- arguments and their effects
-
-lib/readline/{macro,util}.c
- - renamed _rl_executing_macro to rl_executing_macro; made it public
-
-lib/readline/readline.h
- - new extern declaration for rl_executing_macro
-
-lib/readline/rltech.texinfo
- - documented rl_executing_macro
+ - removed cast from first argument to find_hash_item in find_compspec
- 8/8
- ---
-lib/readline/readline.c
- - new state variable, rl_readline_state
-
-lib/readline/readline.h
- - extern declaration for rl_readline_state
- - define some flag bits for rl_readline_state and macros to test and
- set them
-
-lib/readline/{readline,complete,isearch,macro,rltty,search,signals,undo,vi_mode}.c
- - added calls to the macros that set and unset various readline states
-
-lib/readline/readline.c
- - new private function, _rl_free_saved_history_line, to free up the
- history entry saved in saved_line_for_history
-
-lib/readline/search.c
- - free any saved history entry in rl_history_search_reinit(), because
- rl_get_previous_history makes a call to maybe_save_line without
- freeing up the saved line when it returns (so rl_get_next_history
- can use it)
- - fix up noninc_search_from_pos to deal with invalid history indices
- better
-
- 9/12
- ----
-support/shobj-conf
- - HPUX 11.0 needs the `-fpic' flag passed to the linker as well as
- the compiler
-
-execute_cmd.c
- - on MS-DOS systems, let the #! checking stuff in execute_shell_script
- treat \r as EOL (identical to \n)
-
-input.c
- - on DJGPP systems, allow buffered_getchar to ignore \r. Change
- suggested by snowball3@bigfoot.com
-
- 9/13
- ----
-lib/sh/tmpfile.c
- - new file, with functions for creating and (hopefully safely) opening
- temporary files for the shell
-
-externs.h
- - extern declarations for functions in tmpfile.c
-
-variables.c
- - new function, get_random_number, returns random values from the
- shell's (lame) RNG to the rest of the shell
-
-variables.h
- - new extern declaration for get_random_number()
-
-subst.c
- - changed make_named_pipe to call sh_mktmpname instead of mktemp
-
-redir.c
- - changed here_document_to_fd to call sh_mktmpfd instead of using
- inline code
-
-builtins/fc.def
- - changed fc_builtin to call sh_mktmpfp instead of using inline code
+general.[ch]
+ - absolute_program now takes a `const char *' as its argument
+ - absolute_pathname now takes a `const char *' as its argument
-builtins/common.h
- - new extern declaration for fc_execute_file()
+lib/glob/glob.[ch]
+ - glob_pattern_p now takes a `const char *' as its argument
bashline.c
- - if RL_ISSTATE(RL_STATE_INITIALIZED) is 0 in initialize_readline,
- call rl_initialize to bind the defaults before setting up our
- custom shell functions and key bindings
-
-lib/readline/doc/{rluser,hsuser}.texinfo
- - some markup changes proposed by dima@chg.ru
-
-lib/readline/rlstdc.h, lib/tilde/tilde.h
- - to get ready for some `const' changes to the source, define const
- as either `__const' (gcc -traditional) or nothing if __STDC__ and
- __cplusplus are not defined
-
-lib/readline/readline.c
- - upped the default readline version to `4.2-alpha'
-
-lib/readline/readline.[ch]
- - readline now takes a `const char *' as an argument
-
-lib/readline/history.h
- - read_history(), read_history_range(), write_history(),
- append_history(), history_truncate_file() now take `const char *'
- filename arguments
-
-lib/readline/histfile.c
- - history_filename(), read_history(), read_history_range(),
- write_history(), append_history(), history_truncate_file(),
- history_do_write() now take `const char *' filename arguments
-
-lib/readline/readline.h
- - rl_read_init_file() now takes a `const char *' filename argument
-
-lib/readline/bind.c
- - current_readline_init_file is now a `const char *'
- - _rl_read_init_file(), rl_read_init_file() now take `const char *'
- filename arguments
-
-lib/tilde/tilde.c
- - tilde_expand(), tilde_expand_word() now take a `const char *'
- as their first argument
-
-lib/readline/chardefs.h
- - fixed CTRL_CHAR macro to be right on systems where chars are unsigned
- by default
-
- 9/14
- ----
-lib/readline/doc/{rl,hs}tech.texinfo
- - documented new `const char *' function arguments where appropriate
-
-lib/readline/vi_mode.c
- - clamp the numeric argument in vi mode at 999999, just like in emacs
- mode
-
-lib/readline/doc/rltech.texinfo
- - documented rl_readline_state and its possible bit values
+ - 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
-builtins/source.def
- - in maybe_pop_dollar_vars, don't overwrite a shell function's
- argument list even if the sourced script changes the positional
- parameters
-
-lib/readline/{util.c,rlprivate.h}
- - made _rl_strindex() and _rl_savestring() take `const char *'
- arguments
+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
+
+arrayfunc.[ch]
+ - skipsubscript now takes a `const char *' as its argument
- 9/15
+ 9/17
----
-subst.c
- - renamed `doing_completion' to `no_longjmp_on_fatal_error', a more
- accurate description of its current behavior
-
-pcomplete.[ch], externs.h, lib/sh/stringlist.c
- - moved the stringlist code from pcomplete.c to lib/sh/stringlist.c
- - moved the type declaration and extern function declarations from
- pcomplete.h to externs.h
+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
-stringlib.c, externs.h, lib/sh/stringvec.c
- - moved the char array code from stringlib.c to lib/sh/stringvec.c
+builtins/{let,pushd}.def,{execute_cmd,expr}.c
+ - change some 0L constants to 0 and let the compiler sort it out
9/18
----
-subst.c
- - new static variable, expand_no_split_dollar_star, to ensure that
- $* isn't `split and rejoined' when expanded via a call to
- expand_string_unsplit or expand_word_no_split
-
- 9/19
- ----
-subst.[ch], execute_cmd.c
- - renamed expand_word_no_split to expand_word_unsplit
-
-copy_cmd.c
- - in copy_word, just assign w->flags to new_word->flags rather than
- bcopying the entire structure
-
-configure.in, config.h.in
- - add autoconf check for pathconf(3)
+lib/malloc/alloca.c
+ - alloca now takes a `size_t' argument
-lib/sh/tmpfile.c
- - test for systems with short filenames using pathconf and
- _PC_NAME_MAX, so generated temp file names don't exceed that length
- (only do this if the file name length is less than 32, since the
- current code doesn't generate filenames longer than about 17 chars)
+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
- 9/20
- ----
-command.h
- - added `W_NOSPLIT2' word flag to prepare for supporting weird $@
- expansion on the rhs of assignment statements (inspecting the ksh93
- behavior, it seems like nothing except $@ is split, and $@ is split
- on $IFS and rejoined as a single string)
-
- 9/21
+ 9/19
----
subst.c
- - since verify_substring_values looks for arithmetic expressions
- bounded by `:', do some ad-hoc parsing of the substring passed as
- the argument to avoid cutting the expression off at the wrong `:'
- (since the inclusion of conditional expressions, expressions may
- contain a `:'). Do some paren balancing, too.
+ - do_assignment_internal, do_assignment, and do_assignment_no_expand
+ now take a `const char *' as their first argument
- 9/22
- ----
-command.h
- - new #define, CLOBBERING_REDIRECT, evaluates to true for any redirect
- that will clobber a file and should be subject to `noclobber'
+general.h
+ - a `sh_assign_func_t' is now a function taking a `const char *' and
+ returning int
-redir.c
- - changed redir_open to use CLOBBERING_REDIRECT instead of
- OUTPUT_REDIRECT. This means that <> no longer tests the value of
- noclobber, as POSIX.2 specifies
+hashcmd.c
+ - free_filename_data now takes a `PTR_T' argument to agree with the
+ typedef for `sh_free_func_t'
-parse.y
- - made a change to cond_term so that expressions like [[ (x) ]] are
- parsed correctly
+lib/sh/snprintf.c
+ - use TYPE_MAXIMUM define like strtol.c instead of huge constants
- 9/25
+ 9/20
----
-parse.y
- - small change to grammar for arith_for_command and special_case_tokens
- to allow `do...done' or {...} after ((...)) without an intervening
- list_terminator (for ksh93 compatibility)
+lib/sh/snprintf.c
+ - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
+ or HAVE_ASPRINTF is not defined
-builtins/printf.def
- - `printf' now treats \E and \e the same when performing backslash
- escape expansion for the %b format character for compatibility with
- $'...' quoting (for ksh93 compatibility)
-
- 9/26
+ 9/24
----
-builtins/source.def
- - new variable, source_searches_cwd, initially 1. If non-zero, `.'
- searches $PWD for the filename argument if it's not found in $PATH
-
-general.c
- - changed posix_initialize to turn off source_searches_cwd if posix
- mode is being enabled; turn it on if posix mode is being disabled
- - changed things so interactive_comments is not turned off if posix
- mode is disabled, since that's rarely what is desired
-
-variables.c
- - changed uidset() to set UID and EUID only if they are not already
- set when the shell starts up
- - changed things to HOSTNAME is set only if it's not set when the
- shell starts up
+flags.c
+ - ignore `set -n' if the shell was started interactively
-execute_cmd.c
- - changed execute_builtin_or_function so that if a command like
- `command exec 4<file' is executed, the effect is as if the `command'
- had been omitted, as POSIX.2 requires
+lib/readline/readline.c
+ - initialize readline_echoing_p to 0; let the terminal-specific code
+ in rltty.c set it appropriately
-subst.c
- - changed array_length_reference to support ${foo[X]} when foo is not
- an array variable and X is 0, @, or * (everything else returns 0)
- for ksh compatibility
- - changed array_value_internal to support ${foo[@]} and ${foo[*]}
- when foo is not an array variable (as ksh does)
+lib/malloc/malloc.c
+ - changed internal_memalign() slightly to avoid compiler warnings about
+ negating an unsigned variable (-alignment -> (~alignment + 1))
9/27
----
-general.h
- - added defines for ABSPATH (absolute pathname), RELPATH (relative
- pathname, and ROOTEDPATH (pathname rooted at /), with different
- definitions for Unix and Cygwin
- - added defines for DIRSEP (the directory separator in pathnames,
- and ISDIRSEP (whether a particular character is the directory
- separator)
- - added PATHSEP define: takes a character and decides whether it
- delimits a filename component of a pathname
- - changed isletter(c) #define to just call isalpha(c)
-
-lib/sh/pathcanon.c
- - changed to use new pathname #defines from general.h above
-
-general.c
- - changed make_absolute, absolute_pathname to understand
- Cygwin's idea of an absolute pathname: [[:upper:][:lower:]]:/
- - rewrote absolute_pathname to use PATHSEP and ABSPATH
- - changed full_pathname to use ABSPATH
+lib/readline/readline.c
+ - changed rl_newline to set _rl_history_saved_point appropriately
+ for the {previous,next}_history code
-variables.c
- - changed get_bash_name to use ABSPATH and RELPATH, and to handle the
- case when $PWD is unset when it is called
+lib/readline/rlprivate.h
+ - extern declaration for _rl_history_preserve_point
-subst.c
- - if compiling on cygwin, translate \r\n to \n when reading the output
- of a command substitution in read_comsub()
+lib/readline/bind.c
+ - new bindable variable, `history-preserve-point', sets value of
+ _rl_history_preserve_point
- 9/28
+ 10/1
----
-input.c, shell.c, builtins/read.def, lib/tilde/tilde.c
- - changed __CYGWIN32__ to __CYGWIN__
-
-lib/readline/{bind,funmap,kill}.c, lib/readline/readline.h
- - changed __CYGWIN32__ to __CYGWIN__
-
-input.c
- - a couple of minor changes to clean up the code
-
-parse.y
- - changed shell_getc and shell_ungetc to implement one character of
- lookahead/lookbehind when pushing a character back at the start
- of an input line (the old code would have discarded it because
- shell_input_line_index was 0)
-
-lib/readline{histsearch.c,history.h}
- - history_search_internal, history_search, history_search_prefix,
- history_search_pos now take const char * string arguments
-
-lib/readline/{histexpand.c,history.h}
- - get_history_event, history_arg_extract, history_tokenize_internal,
- history_tokenize now take const char * string arguments
-
-lib/readline/{history.c,history.h}
- - add_history, replace_history_entry now take const char * string
- arguments
-
-lib/readline/{bind.c,readline.h}
- - rl_add_defun, rl_unbind_command_in_map, rl_set_key, rl_macro_bind,
- rl_generic_bind, rl_translate_keyseq, rl_named_function,
- rl_function_of_keyseq, rl_variable_bind, rl_get_keymap_by_name
- now take const char * string arguments where appropriate
- - rl_function_dumper, rl_list_funmap_names needed changes to deal
- with rl_funmap_names returning const char **
- - rl_readline_name is now a const char * variable
-
-lib/readline/keymaps.h
- - duplicate definition of rl_get_keymap_by_name needs const changes
-
-lib/readline/{bind.c,rlprivate.h}
- - _rl_bind_if_unbound takes a const char * string argument
-
-lib/readline/{funmap.c,readline.h}
- - rl_add_funmap_entry now takes a const char * string argument
- - rl_funmap_names now returns a const char **
- - a FUNMAP now has a const char *name member
-
-lib/readline/{terminal.c,readline.h,rlprivate.h}
- - _rl_init_terminal_io, rl_get_termcap, rl_reset_terminal,
- _rl_output_some_chars now take const char * string arguments
-
-lib/readline/{readline.[ch],rlprivate.h}
- - rl_library_version and rl_terminal_name are now const char *
- variables
- - rl_insert_text, _rl_replace_text now take const char * string
- arguments
-
-lib/readline/{callback.c,readline.h}
- - rl_callback_handler_install takes a const char * string argument
-
-lib/readline/doc/{rltech,hstech}.texinfo
- - changed documentation for newly-consted functions and variables
-
-lib/readline/{complete.c,readline.h}
- - rl_strpbrk now takes const char * string arguments
- - username_completion_function and filename_completion_function
- now take const char * string arguments
- - rl_basic_word_break_characters, rl_basic_quote_characters,
- rl_completer_word_break_characters, rl_completer_quote_characters,
- rl_filename_quote_characters, rl_special_prefixes are all
- const char * variables
-
-lib/readline/{display.c,rlprivate.h}
- - _rl_move_cursor_relative takes a const char * string argument
+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
-redir.c
- - change from tbisp@uswest.net to fix a problem with cygwin and
- here_document_to_fd, since cygwin doesn't allow a file to be
- unlinked if there is a descriptor open on it
-
-display.c
- - fixed a slight bug in the logic deciding whether or not to redraw
- a prompt containing invisible characters in update_line. Fixes
- bug reported by bdluevel@heitec.net
+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())
+
+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
- 9/29
- ----
-shell.c
- - fixed a problem with a too-aggressive setting of restricted shell
- mode based on shell_name. Old code set `restricted' even after a
- longjmp due to shell_execve trying to execute an executable script
- without a leading `#!', though that case should result in an
- unrestricted shell
+aclocal.m4
+ - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
+ after `double'
10/2
----
-copy_cmd.c
- - make sure copy_function_def copies the `flags' and `line' members
- of the function_def
-
-parse.y
- - make the function_def production take a new function_body parse
- unit, which is currently just a group_command (in prep for future
- changes)
-
-builtins/printf.def
- - changed getint, getlong, getulong, getdouble to print warnings on
- range errors and return the clamped values that strtol/strtod
- return, as POSIX.2 specifies
-
- 10/3
- ----
-parse.y
- - made a function_def a `command' instead of a `shell_command'
- This makes the grammar more closely resemble that supplied in
- the POSIX.2 standard
- - made a `function_body' be like the function_body production in
- the POSIX.2 standard. This relaxes the restriction that the
- body be composed of a group_command, but introduces a YACC
- shift/reduce conflict
-
-print_cmd.c
- - changes to named_function_string (for normal function printing)
- and print_function_def (for printing function definitions embedded
- in other commands) to print redirections that should be attached
- to the function as a whole after the closing brace, because of
- the changes to the parser
-
-tests/func2.sub
- - tests for new function declarations whose bodies are not group
- commands -- the command printing code still prints them with the
- braces
-
- 10/4
- ----
-lib/sh/pathphys.c
- - new function, sh_physpath, resolves symlinks in pathname passed
- as argument
-
-builtins/cd.def
- - changed pwd_builtin to use sh_physpath if -P supplied or in
- physical mode
- - changed bindpwd to use sh_physpath if the no_symlinks argument is
- non-zero
- - changed change_to_directory to use sh_physpath and set
- the_current_working_directory appropriately if the `nolinks'
- argument is non-zero
-
- 10/5
- ----
-variables.c, bashline.c, builtins/cd.def
- - replaced calls to canonicalize_pathname with sh_canonpath
-
-builtins/cd.def
- - rewrote change_to_directory to make it much shorter and simpler
-
-command.h
- - added SUBSHELL_PIPE as possible flag value for subshell_environment
+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
execute_cmd.c
- - execute_simple_command sets SUBSHELL_PIPE in subshell_environment
- if the command has a pipe in or out
+ - fixed time_command() to use `time_t' instead of `long' to hold
+ time stamps
-subst.c
- - don't reset pipeline_pgrp to shell_pgrp in command_substitute if
- we're already in a pipline
- ((subshell_environment & SUBSHELL_PIPE) != 0)
-
- 10/6
- ----
-subst.c
- - change command_substitute to call setmode(fd, O_TEXT) on the pipe
- file descriptor if __CYGWIN__ is defined; remove the other code
- that converts CR/LF to LF on cygwin
-
- 10/9
- ----
-stringlib.c
- - change strcreplace() to make sure that RESIZE_MALLOCED_BUFFER is
- called everywhere characters are added
-
- 10/11
- -----
-lib/sh/spell.c
- - new file, with the spelling correction code from builtins/cd.def
-
-builtins/cd.def
- - a little surgery on cd_builtin, to make the structure clearer
-
- 10/12
- -----
-builtins/read.def
- - include fcntl.h and io.h on __CYGWIN__
- - set mode of fd 0 to O_TEXT if __CYGWIN__ and O_TEXT are both
- defined
-
-shell.c
- - in open_shell_script, set mode of fd opened to the shell script
- to O_TEXT if __CYGWIN__ and O_TEXT are both defined
-
-builtins/evalfile.c
- - changed the __CYGWIN__ code to call setmode(fd, O_TEXT) instead
- of translating \r to \n after the read() returns
-
- 10/13
- -----
-lib/sh/strtrans.c, stringlib.c
- - moved ansicstr() from stringlib.c to new file lib/sh/strtrans.c
- - new function ansic_quote, to quote a string with $'...'
+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
-lib/sh/strindex.c, stringlib.c
- - moved strindex() from stringlib.c to new file lib/sh/strindex.c
+lib/sh/timeval.c
+ - fixed print_timeval to make `minutes' a `long' and make its
+ structure identical to print_clock_t
-lib/sh/Makefile.in
- - compile `shquote.c' in as part of the shell library
- - compile `strtrans.c' in as part of the shell library
- - compile `strindex.c' in as part of the shell library
+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
Makefile.in
- - link with libsh before any of the readline libraries
-
-builtins/common.c
- - removed the functions also appearing in lib/sh/shquote.c
-
-externs.h, builtins/common.h
- - moved extern declarations for functions in lib/sh/shquote.c to
- externs.h from builtins/common.h
-
-variables.c
- - print_var_value (used in the output of `set') now calls
- ansic_quote to quote the value, so any non-printable characters
- are displayed
-
- 10/14
- -----
-syntax.h
- - new file, with definitions from shell.h having to do with shell
- syntax, metacharacters, and quoting
-
-parse.y
- - moved defines for shell metachars and other char class declarations
- to syntax.h
+ - changed release status to `beta1'
-shell.h
- - now includes syntax.h
+lib/glob/collsyms.h
+ - added a few ASCII symbols to the posix_collsyms array
-Makefile.in,builtins/Makefile.in,lib/sh/Makefile.in
- - added syntax.h to appropriate dependency lists
+ 10/3
+ ----
+aclocal.m4
+ - fixed typo in BASH_TYPE_BITS64_T
- 10/16
- -----
-mksyntax.c
- - new program, to build a syntax table for the shell at compile time
+configure.in
+ - added check for unsigned chars with AC_C_CHAR_UNSIGNED
-Makefile.in
- - new generated file, syntax.c, generated by mksyntax
+config.h.in
+ - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
general.h
- - `digit(x)' is now just defined as `isdigit(x)'
-
-syntax.h
- - now that we have sh_syntaxtab[], change the appropriate defines
- to use it
-
-parse.y, subst.c
- - change checks of member(c, slashify_in_quotes) to test
- sh_syntaxtab[c] & CBSDQUOTE
-
-builtins/set.def
- - corrected the help text for `unset', since PATH and IFS may be
- unset
-
-subst.c
- - changed explicit tests for shell special parameters using member()
- or strchr() to test (sh_syntaxtab[c] & CSPECVAR) instead
- - changed some boilerplate calls to member() that test for validity
- of various characters in the expansion process to macros for
- efficiency
-
-lib/sh/shquote.c
- - changed some of the functions to use checks against sh_syntaxtab[]
- flag values
-
- 10/19
- -----
-findcmd.c
- - find_user_command_in_path no longer finds directories if the caller
- specified FS_NODIRS in the flags argument. This fixes the bug of
- hashing directory names, at the loss of some information about
- attempting to execute directories
+ - if CHAR_MAX is not define by <limits.h>, provide a definition
-builtins/hash.def
- - hash -p dirname name no longer puts directories into the hash table
-
- 10/26
- -----
-builtins/read.def
- - make sure that the last unwind-protect added is the one that calls
- xfree(input_string), so that this is the top element on the
- unwind-protect stack
- - if xrealloc() is called to increase the size of input_string, make
- sure to remove the top element from the unwind-protect stack (the
- old xfree) and add a new one, in case realloc() freed the original
- input_string and allocated new space. This fixes the bug of bash
- crashing because it's trying to free already-freed memory if the
- `read' is interrupted (reported by klausf@Pool.Informatik.RWTH-Aachen.DE)
-
- 10/27
- -----
-subst.c
- - fixed a problem in expand_word_list_internal so that
- last_command_exit_value is set to 1 if a variable assignment fails
- and a jump_to_top_level (DISCARD) is taken. This fixes the problem
- of assignment statements to read-only variables appearing to succeed
- (though it always worked right in non-interactive posix-mode shells)
-
- 10/30
- -----
-lib/readline/readline.h
- - rl_completion_entry_function is now of type CPFunction *, since
- that's the actual type that's used, and casting function pointers
- of different types (which happened all the time as a result), is
- problematic on some architectures
-
-lib/readline/complete.c
- - changed entry function argument to gen_completion_matches to be of
- type CPFunction *, since that's how it's used
- - changed variables that are completion entry function pointers to be
- of type CPFunction *, removed problematic typecasts
-
-lib/readline/doc/rltech.texinfo
- - documented type change for rl_completion_entry_func
-
-lib/readline/rltypedefs.h
- - new file, with all the readline function typedefs
-
-lib/readline/rltypedefs.h
- - new typedef, rl_command_func_t, which is a function returning
- an int
- - a KEYMAP_ENTRY now contains a pointer to an rl_command_func_t
- - new typedef, rl_compentry_func_t, which is a function returning
- a char *
- - new typdef, rl_completion_func_t, which is a function returning
- a char **
- - new typedef, rl_quote_func_t, which is a function returning a
- char *
- - new typedef, rl_dequote_func_t, which is a function returning a
- char *
- - new typedef, rl_compignore_func_t, which is a function returning a
- char *
- - new typedef, rl_compdisp_func_t, which is a void function taking
- a char **, int, int argument list
- - new typedef, rl_hook_func_t, which is a function taking no args
- and returning an int (used for input and other hooks)
- - new typedef, rl_modterm_func_t, which is a void function tkaing
- an int, used to modify terminal (rl_prep_term_function)
- - new typedef, rl_getc_func_t, which is an int-returning function
- that takes a FILE *
- - new typedef, rl_linebuf_func_t, which takes a string and an int
- index and returns an int
- - new generic typedefs, rl_intfunc_t and rl_voidfunc_t, which are
- functions which take and return int and void, respectively
- - new generic typedef, rl_vintfunc_t, which takes an int and returns
- void
- - new generic typedefs, rl_icpfunc_t and rl_vcpfunc_t, which take a
- char * and return int and void, respectively
- - new generic typedefs, rl_icppfunc_t and rl_vcppfunc_t, which take
- a char ** and return int and void, respectively
-
-lib/readline/rlprivate.h
- - rl_last_func is now of type rl_command_func_t *
-
-lib/readline/readline.c
- - declare rl_last_func as rl_command_func_t *
-
-lib/readline/{bind,readline,vi_keymap,emacs_keymap,funmap,keymaps,isearch}.c
-lib/readline/readline.h
- - change appropriate cases of (Function *) to (rl_command_func_t *)
+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/readline/{readline.h,bind.c}
- - rl_named_function and rl_function_of_keyseq now return a
- (rl_command_func_t *)
+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 type of functions in parser function table from Function *
- to _rl_parser_func_t *
-
-lib/readline/funmap.c
- - removed `vi-bracktype' from vi function map -- it's not a
- bindable function
-
-lib/readline/{readline.h,complete.c}
- - changed appropriate uses of CPFunction * to rl_compentry_func_t *
- or rl_quote_func_t *
-
-lib/readline/{rltty.c,readline.h}
- - rl_prep_term_function is now of type rl_vintfunc_t *
- - rl_deprep_term_function is now of type rl_voidfunc_t *
-
-lib/readline/{keymaps,history.h}
- - include rltypedefs.h or <readline/rltypedefs.h> as appropriate
-
-lib/readline/{display.c,readline.h}
- - rl_redisplay_func is now of type rl_voidfunc_t *
-
-lib/readline/{callbacks.c,readline.h}
- - the `linefunc' argument to rl_callback_handler_install and the
- rl_linefunc variable are now of type rl_vcpfunc_t *
+ - changed rl_translate_keyseq() to process at most two hex digits
+ after a `\x'
-lib/readline/{complete.c,readline.h}
- - rl_completion_display_matches_hook is now of type
- rl_compdisplay_func_t *
- - rl_directory_completion_hook is now of type rl_icppfunc_t *
+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
-lib/readline/{history.h,histexpand.c}
- - history_inhibit_expansion_function is now of type
- rl_linebuf_func_t *
-
-lib/readline/histexpand.c
- - new private type, _hist_search_func_t, used to indirect through
- the various history search functions
-
-lib/tilde/tilde.h
- - new typedef, tilde_hook_func_t, which takes a char * and returns
- a char *
-
-lib/tilde/tilde.[ch]
- - tilde_expansion_preexpansion_hook and tilde_expansion_failure_hook
- are now of type tilde_hook_func_t *
-
-[THERE ARE NO LONGER ANY REFERENCES TO Function *, CPFunction *, or
-CPPFunction * IN THE READLINE SOURCE, WHICH INCLUDES THE TILDE LIBRARY]
-
-{bashline,bracecomp}.c, bashline.h
- - changes for changed type of rl_completion_entry_func and other
- changed types (rl_compentry_func_t, rl_completion_func_t,
- const changes for prototypes, etc.)
-
-pathexp.[ch]
- - shell_glob_filename now takes a `const char *' argument
- - quote_string_for_globbing now takes a `const char *' argument
-
- 10/31
- -----
-lib/sh/zwrite.c
- - fix zwrite() to update the buffer pointer in the case of a
- partial write, in addition to decreasing the count of bytes to
- be written
-
-support/config.{guess,sub}
- - added entries for MIPS-based Compaq machines running NonStopUX
+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
- 11/1
+ 10/4
----
-lib/readline/undo.c
- - renamed free_undo_list to be rl_free_undo_list, made a dummy
- replacement function free_undo_list that just calls
- rl_free_undo_list
+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
-lib/readline/readline.h
- - extern declaration for rl_free_undo_list
+configure.in
+ - call AC_CHECK_DECLS([strsignal])
-lib/readline/{readline,signals}.c
- - changed calls to free_undo_list to rl_free_undo_list
+config.h.in
+ - add HAVE_DECL_STRSIGNAL
-lib/readline/doc/rltech.texinfo
- - changed all function types and arguments for new typedefs
+siglist.h
+ - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
- 11/2
+ 10/5
----
-lib/readline/{rlprivate.h,terminal.c,display.c}
- - term_clreol, term_clrpag, term_cr, term_backspace, term_goto,
- term_pc, term_im, term_ei, term_ic, term_ip, term_IC, term_dc,
- term_DC, term_forward_char, term_up, term_mm, term_mo, term_ku,
- term_kd, term_kr, term_kl, term_ks, term_ke, term_kh, term_kH,
- terminal_can_insert variables all now have a _rl_ prefix
-
-lib/readline/{rlprivate.h,terminal.c,display.c, readline.c}
- - screenheight, screenwidth, screenchars now have an _rl_ prefix
-
-lib/readline/{terminal,complete,isearch,kill,macro,readline,search,undo,util,vi_mode}.c
- - changed calls to ding to calls to rl_ding
-
-lib/readine/{isearch,readline,search}.c
- - saved_line_for_history now has an _rl_ prefix
-
-lib/readline/readline.[ch]
- - renamed maybe_{replace,save,unsave} line to have an rl_ prefix
-
-lib/readline/{readline,search,isearch}.c
- - changed calls to maybe_{replace,save,unsave} line to call the
- rl_-prefixed equivalents
-
-lib/readline/{rlprivate.h,readline.c,util.c}
- - renamed alphabetic to rl_alphabetic; changed calls
-
-lib/readline/{bind.c,funmap.c,rlprivate.h}
- - possible_control_prefixes -> _rl_possible_control_prefixes
- - possible_meta_prefixes -> _rl_possible_meta_prefixes
-
-lib/readline/compat.c
- - new file for entry points for backwards compatibility functions
- - moved free_undo_list here from undo.c
- - maybe_{replace,save,unsave}_line function that call their rl_
- counterparts
- - moved ding() here; it just calls rl_ding()
- - moved alphabetic here; it just calls _rl_alphabetic()
-
-lib/readline/Makefile.in
- - make sure compat.o is built and linked appropriately
-
-bashline.c,pcomplete.c
- - changed calls to ding() to call rl_ding()
-
-support/shobj-conf
- - changed linux stanza SHLIB_XLDFLAGS to make the `soname' in a
- shared library have only the major version number, rather than
- major and minor numbers
- - made analogous changes for bsd/os-4
- - changed freebsd 3.x stanza to match `freebsdelf[3-9]*' for
- FreeBSD elf systems and `freebsdaout[3-9]*' for FreeBSD
- a.out systems (are there any?)
-
-lib/readline/doc/{rluser,hsuser}.texinfo
- - changed uses of @samp to @option where appropriate
-
-doc/bashref.texi
- - changed uses of @samp to @option where appropriate
+support/texi2html
+ - upgraded to version 1.64
- 11/3
+ 10/9
----
-lib/readline/{readline.h,complete.c,compat.c}
- - completion_matches, username_completion_function,
- filename_completion_function all have an rl_ prefix
-
-{bashline,bracecomp,pcomplete}.c
- - changed calls to completion_matches, username_completion_function,
- and filename_completion_function
+aclocal.m4
+ - added check for `long long' to BASH_TYPE_PTRDIFF_T
-lib/sh/shquote.c
- - single_quote, double_quote, un_double_quote, backslash_quote,
- backslash_quote_for_double_quotes, contains_shell_metas all now
- have an sh_ prefix
+configure.in
+ - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
-externs.h
- - changed extern declarations for functions from shquote.c
+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, ...)
-{array,bashline,pcomplete,print_cmd,variables}.c, parse.y
-builtins/{alias,complete,trap,type}.def
- - changed callers of single_quote
+[bash-2.05a-beta1 frozen]
-{array,bashline}.c, builtins/setattr.def
- - changed callers of double_quote
+ 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)
-{bashline,bracecomp}.c, parse.y, builtins/printf.def
- - changed callers of backslash_quote
+ 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
-parse.y
- - changed callers of backslash_quote_for_double_quotes
+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
-{print_cmd,variables}.c
- - changed callers of contains_shell_metas
+lib/sh/fmtulong.c
+ - new file, converts unsigned long to string. hooks for `unsigned
+ long long' in the future. unused as yet
-lib/readline/{rlshell.h,shell.c,histexpand.c}
- - single_quote -> sh_single_quote
+ 10/15
+ -----
+lib/readline/rltty.c
+ - change the SET_SPECIAL macro to avoid possible (but highly
+ unlikely) negative array subscripts
-lib/readline/{rlshell.h,shell.c,input.c}
-general.[ch],shell.c,subst.c
- - unset_nodelay_mode -> sh_unset_nodelay_mode
+error.h
+ - add __attribute__ to extern declaration of itrace (even though the
+ function isn't defined in released versions of bash)
-lib/readline/{rlshell.h,shell.c}, lib/tilde/tilde.c, variables.c
- - get_home_dir -> sh_get_home_dir
+bashansi.h
+ - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
+ function declarations provided therein
-lib/readline/rlshell.h,lib/readline/bind,histfile,nls,readline,shell,terminal}.c, lib/tilde/tilde.c, variables.c
- - get_env_value -> sh_get_env_value
+copy_cmd.c
+ - fix typo in forward declaration for copy_arith_for_command
-lib/readline/rlshell.h,lib/readline/{shell,terminal}.c
-variables.h,{jobs,nojobs,variables}.c
- - set_lines_and_columns -> sh_set_lines_and_columns
+lib/malloc/stats.c
+ - make the accumulators in _print_malloc_stats be `unsigned long'
+ instead of `int'
- 11/6
- ----
-configure.in
- - bash can only link with an already-installed readline library whose
- version is 4.2 or greater
+externs.h, sig.h
+ - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
+ declarations
-variables.h
- - new variable attribiute, noassign, with its accompanying test macro,
- noassign_p. Completely internal, not user-settable
+lib/sh/mailstat.c, support/bashversion.c
+ - include <bashansi.h> for some string function declarations
-execute_cmd.c
- - treat noassign variables like readonly variables, except an attempt
- to assign to them does not cause a non-interactive shell in POSIX
- mode to abort
+lib/malloc/shmalloc.h
+ - added extern declarations of functions that do malloc debugging
-{subst,variables}.c,builtins/declare.def
- - attempts to assign to `noassign' variables return an error status,
- but no error messages -- almost identical to readonly variables
+lib/readline/{isearch,readline,vi_mode}.c
+ - make sure we index into _rl_keymap with a non-negative index
-variables.c
- - GROUPS and FUNCNAME are `noassign' variables, meaning assignment to
- them is disallowed, but that they may be unset (in which case they
- lose their special properties)
+parse.y
+ - make sure we index into sh_syntaxtab with a non-negative index
-doc/{bash.1,bashref.texi}
- - documented that assignments to GROUPS and FUNCNAME are disallowed
- and return an error status
+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'
- 11/8
- ----
-lib/readline/{funmap.c,bind.c,rlprivate.h}
- - _rl_possible_{control,meta}_prefixes are now arrays of `const char *'
- and are defined in bind.c, since that's where they're used
+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
-lib/readline/rltty.c
- - changed prepare_terminal_settings to take an `oldtio' argument
- instead of `otio', which shadows the global declaration
+include/chartypes.h
+ - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
-lib/readline/bind.c
- - the `name' member of a parser_directive element is now a
- `const char *'
- - the `name' member of a boolean_varlist element is now a
- `const char *'
- - the `name' member of a string_varlist element is now a
- `const char *'
- - the `name' member of an assoc_list element is now a
- `const char *'
- - the `name' member of an keymap_names element is now a
- `const char *'
+lib/sh/{strcasecmp,strtod,strtol}.c
+ - don't pass possibly-negative characters to tolower() or toupper()
-lib/readline/display.c
- - changed scope-local char * variable `temp' to `vtemp' because
- there's already a function local variable named `temp' of a
- different type (int) in rl_redisplay
+lib/glob/strmatch.c
+ - don't bother testing for isupper in FOLD; rely on TOLOWER macro
+ from <chartypes.h> to do it
+ - don't use local definitions of isblank, et al.; rely on macros
+ from <chartypes.h>
-lib/readline/util.c
- - pathname_alphabetic_chars is now `const char *'
+lib/readline/{display,readline}.c, mksyntax.c
+ - use new ISPRINT macro instead of isprint()
-lib/readline/terminal.c
- - the `tc_var' member of a _tc_string element is now a
- `const char *'
+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/histexpand.c
- - changed history_expand_internal to remove the duplicate local
- declaration of `t' in the `s'/`&' case
+variables.[ch]
+ - the unused put_gnu_argv_flags_into_env now takes a `long' pid
+ argument
-lib/readline/histfile.c
- - in history_filename, `home' is now a `const char *'
+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
+
+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
+
+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
+
+lib/sh/{fmtullong,strtoull.c}
+ - new files, more support for `long long'
-lib/tilde/tilde.c
- - default_prefixes and default_suffixes are now arrays of
- `const char *'
+Makefile.in, lib/sh/Makefile.in
+ - make fmtullong.o and strtoull.o part of libsh
-lib/readline/vi_mode.c
- - vi_motion and vi_texmod are now `const char *'
+lib/sh/itos.c
+ - remove local copy of fmtlong; use fmtulong instead
+ - new functions: uitos, uinttostr work on `unsigned long'
-lib/readline/complete.c
- - simplified the conditional declaration of getpwent()
+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
-variables.[ch]
- - get_string_value now takes a `const char *' argument
+externs.h
+ - extern declarations for fmtulong, fmtulloing, strtoull
+ - extern declarations for uitos, uinttostr
- 11/10
+ 10/16
-----
-display.c
- - changes to expand_prompt and rl_redisplay to keep track of the number
- of invisible characters on the first line of the prompt, in case it
- takes up more than one physical line, and not all invisible chars are
- on the first line
- - the code that determines the index into the line at which to wrap the
- first line if the visible prompt length exceeds the screen width was
- changed to use the number of invisible chars in the first physical
- prompt line rather than the total number of invisible characters
- - changed redraw_prompt to save and restore prompt_invis_chars_first_line
-
-subst.c
- - changed expand_string_internal to savestring() the string argument
- to avoid possible doubly-freed memory on substitution errors
- - fixed expand_word_list_internal so that commands with assignment
- statements preceding words that expand to nothing return a failure
- status if one of the assignments fails; for example
-
- readonly TVAR
- TVAR=7 $ECHO $ABCDE
- - made sure that all cases of jump_to_top_level set
- last_command_exit_value to something non-zero before jumping, since
- they are by definition errors
-
-builtins/evalstring.c
- - changed parse_and_execute to set last_result to EXECUTION_FAILURE
- along with last_command_exit_value in the `DISPOSE' case of a
- jump_to_top_level, since we can return this value in most
- (interactive) circumstances
+configure.in
+ - move header checks before function checks
+ - move c compiler tests before header checks
+ - check for <inttypes.h> with BASH_HEADER_INTTYPES
+ - change type checks for intmax_t, uintmax_t to not attempt to
+ include <stdint.h>
+ - 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)
- 11/14
- -----
-general.c
- - fix legal_number so that it skips any trailing whitespace in its
- string argument after strtol returns, since strtol does not
+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
-lib/readline/{complete.c,readline.h}
- - new function pointer, rl_directory_rewrite_hook, identical in effect
- to rl_directory_completion_hook except that it does not modify what
- is displayed when the possible completions are listed or inserted
+aclocal.m4
+ - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS
+ on <inttypes.h>; separate so it can be AC_REQUIREd
+ - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE
+ - include <inttypes.h> 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
-bashline.c
- - changed tcsh_magic_space to try and insert a space closer to where
- the point was originally, rather than always inserting it at the
- end of the line
+lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
+ - new files
- 11/16
- -----
-jobs.c
- - fixed a bug that happened on cygwin systems that caused the jobs
- table to fill up if a file sourced from an interactive shell ran
- lots of jobs -- notify_and_cleanup() never called notify_of_job_status
+externs.h
+ - extern declarations for strtoll, strtoimax, strtoumax
-subst.c
- - fixed pat_match to avoid infinite recursion on zero-length matches
- from match_pattern
+lib/malloc/alloca.c
+ - include <bashtypes.h> for size_t
- 11/17/2000
- ----------
-[bash-2.05-alpha1 released]
+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
- 11/18
- -----
-support/shobj-conf
- - added GNU Hurd support, identical to linux
+lib/sh/Makefile.in
+ - use LIBOBJS to decide whether or not the strto* functions are
+ needed
-variables.c
- - cygwin systems don't use the exportstr stuff at all, so call
- INVALIDATE_EXPORTSTR before testing var->exportstr, since just
- blindly using the value_cell will break exported functions that
- already have an exportstr set
- - when recomputing the exported value because valid_exportstr fails,
- make sure to call named_function_string if the variable is a shell
- function
-
- 11/20
+ 10/17
-----
-variables.c
- - removed call to valid_exportstr; the exportstr code has been
- adequately debugged
-
-lib/glob/fnmatch.c
- - reverted to the POSIX.2 behavior of using the current locale and
- strcoll() to evaluate range expressions in bracket expressions
+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)
-doc/{bash.1,bashref.texi}
- - added note to Pattern Matching section emphasizing that the current
- locale plays a part in evaluating range expressions within [...]
+lib/sh/Makefile.in
+ - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
+ strtod, vprint from OBJECTS; picked up from LIBOBJS
aclocal.m4
- - added an #include <unistd.h> to the test for posix sigaction
- restarting interrupted system calls
-
-support/config.guess
- - changes from Tim Mooney to support `letter version' releases of
- Tru 64 Unix on the Alpha (e.g., 5.1a)
+ - 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
- 11/21
- -----
-lib/sh/pathphys.c
- - make sure MAXSYMLINKS is defined
+Makefile.in
+ - use SIGLIST_O variable to decide whether or not we need siglist.o
-aclocal.m4
- - changed BASH_CHECK_PWFUNCS to just use AC_EGREP_CPP on a file
- that includes pwd.h and other header files, checking for getpwuid.
- It #defines HAVE_GETPW_DECLS if the egrep succeeds
+{execute_cmd,subst}.c
+ - change a couple of instances of ISDIGIT to DIGIT, where we really,
+ really only want ascii digits
-lib/readline/complete.c
- - provide extern declaration of getpwent if _POSIX_SOURCE is defined,
- since most systems don't declare it in <pwd.h> unless _POSIX_SOURCE
- is undefined
+ansi_stdlib.h
+ - don't need a declaration for atol()
- 11/22
+ 10/18
-----
-input.c
- - fixed a small typo in the cygwin-specific code
-
-doc/{bashref.texi,bash.1}
- - added some more explanatory text about the effect of the current
- locale's collating order on range expressions within bracket
- expressions
-doc/bashref.texi, lib/readline/doc/{rltech,rluser,hstech}.texinfo
- - changed to use @env instead of @code for the names of environment
- and shell variables in text (not in tables yet)
+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
- 11/27
- -----
configure.in
- - configure without the bash malloc on Interix
-
-lib/readline/doc/rltech.texinfo
- - changed completion_matches() to rl_completion_matches()
- - changed filename_completion_function() to
- rl_filename_completion_function()
- - changed username_completion_function() to
- rl_username_completion_function()
-
-lib/readline/rlprivate.h
- - changed declaration of _rl_alphabetic to rl_alphabetic, since that's
- what's used in the C files
-
-support/bashbug.sh
- - Debian has /usr/bin/editor as a link to the system default editor;
- make that one of the alternatives if $EDITOR is not set
- - if the OS provides mktemp(1) or tempfile(1), use those to create
- the temp file for the bug report
+ - call AC_CHECK_FUNCS for isascii
+ - call BASH_FUNC_PRINTF_A_FORMAT
-lib/readline/{readline.[ch], callback.c}
- - new function, rl_set_prompt, called with prompt string as argument,
- sets and, if necessary, expands rl_prompt
-
-lib/readline/{complete.c,compat.c,readline.h}
- - rl_completion_matches now takes a `const char *' as its first
- argument
- - compute_lcd_of_matches now takes a `const char *' as its third
- argument
-
-lib/readline/rltypedefs.h
- - a rl_completion_func_t now takes a `const char *' as its first
- argument
-
-lib/readline/Makefile.in
- - added dependencies on rltypedefs.h
+config.h.in
+ - add a define for HAVE_ISASCII
+ - add a define for HAVE_PRINTF_A_FORMAT
+
+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)
-bashline.c
- - attempt_shell_completion now takes a `const char *' as its first
- argument
- - removed bogus cast when assigning to rl_attempted_completion_function
- and rl_completion_entry_function
- - bash_directory_completion_matches takes a `const char *' argument
+builtins/printf.def
+ - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
-pcomplete.c
- - gen_matches_from_itemlist, pcomp_filename_completion_function,
- gen_action_completions, gen_globpat_matches, gen_wordlist_matches,
- gen_compspec_completions now take `const char *' arguments as
- appropriate
- - programmable_completions now takes `const char *' first and
- second arguments
+include/typemax.h
+ - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
+ files in lib/sh
-pcomplib.c
- - find_compspec now takes a `const char *' argument
+lib/sh/{fmtulong,strtol,snprintf}.c
+ - include <typemax.h> instead of having the definitions in each file
- 11/29
- -----
-shell.c
- - in open_shell_script, if we have /dev/fd, don't perform the check
- for a binary file if isatty(fd) (where fd is opened on the script
- name) returns non-zero
- - in open_shell_script, don't call init_noninteractive again, since it
- can undo changes made by the startup files ($BASH_ENV)
+lib/sh/Makefile.in
+ - updated dependencies for typemax.h
-input.c
- - in fd_to_buffered_stream, make sure buffer size (and hence size
- arg passed to read(2)) is greater than zero. This makes
- bash /dev/stdin work right.
- - return -1 from sync_buffered_stream immediately if buffers is NULL
- (can happen when running `bash -i /dev/stdin' and executing a
- command that requires a fork)
-
- 11/30
+ 10/22
-----
-jobs.c
- - renamed cont_signal_handler to sigcont_sighandler for consistency
- - renamed stop_signal_handler to sigstop_sighandler for consistency
- - if there is no jobs list or no outstanding jobs, return immediately
- from notify_of_job_status, before fussing with the signal state
- - change map_over_jobs to not fuss with the signal state unless there
- are jobs
-
-lib/malloc/malloc.c
- - encapsulated the code to block and unblock signals during morecore()
- execution into two functions: block_signals and unblock_signals
- - only block signals in morecore() if interrupt_immediately is non-zero
- or SIGINT or SIGCHLD is trapped
-
- 12/1
- ----
-lib/readline/readline.c
- - fix to rl_forward to make sure that lend doesn't get set < 0, since
- that will result in rl_point being < 0
-
- 12/5
- ----
-parse.y
- - fix to parse_matched_pair to allow backslash to escape a ' inside a
- $'...' construct inside another grouping construct like ${...}
- - translate $'...' and $"..." in parse_matched_pair, because nothing
- else will do it if such a construct appears inside a grouping
- construct
-
- 12/6
- ----
configure.in
- - make sure all bracket tests for pattern matching in case statements
- are appropriately quoted, so autoconf doesn't swallow the brackets
- - add -rdynamic to LOCAL_LDFLAGS for freebsd-4.x
-
-examples/loadables/realpath.c
- - new loadable builtin, canonicalizes pathnames and expands symlinks
+ - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
+ in chartypes.h
-builtins/ulimit.def
- - added undocumented -w option for setting RLIMIT_SWAP, if it's defined
+config.h.in
+ - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
- 12/7
- ----
-bashline.c
- - reordered code in initialize_readline so all of the rl_add_defun
- calls are made before the call to rl_initialize, and all of the
- rl_{bind,unbind}_key_in_map calls are made after initializing
- readline. This allows the bash-specific function names to be used
- in ~/.inputrc
+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)
- 12/12
- -----
-lib/readline/callback.c
- - in rl_callback_read_char, loop after returning from
- readline_internal_char and test rl_pending_input in case some
- function (like the incremental search functions and digit argument
- functions) pushed input back with rl_execute_next
+lib/sh/strtrans.c
+ - new function, ansic_shouldquote, returns 1 if argument string
+ contains non-printing chars that should be quoted with $'...'
-lib/readline/readline.h
- - new rl_state flag: RL_STATE_INPUTPENDING, indicating that
- rl_execute_next has pushed input back for rl_get_key to read
+externs.h
+ - new declaration for ansic_shouldquote()
-lib/readline/input.c
- - new function to clear rl_pending_input: rl_clear_pending_input()
+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
-lib/readline/{input,readline,signals}.c
- - when rl_pending_input is set, set state RL_STATE_INPUTPENDING;
- unset that state when rl_read_key returns the pending input
- - call rl_clear_pending_input at appropriate points
+lib/sh/shquote.c
+ - add `break' to `case '~':' to avoid fallthrough and extra test
- 12/15
- -----
-lib/readline/histfile.c
- - don't leak file descriptors while attempting to truncate a non-regular
- file
+doc/bashref.texi
+ - note that in POSIX mode, `set' displays variable values that
+ include nonprinting characters without quoting, unless they
+ contain shell metacharacters
-input.c
- - make sure check_bash_input sets the close-on-exec flag for the file
- descriptor used to save the bash input fd
+builtins/printf.def, lib/sh/snprintf.c
+ - handle `F' conversion specifier as equivalent to 'f'
-parse.y
- - if default_buffered_input gets changed while it's on the saved
- stream stack, make sure it gets set to close-on-exec when it's
- restored by pop_stream()
+parse.y, {nojobs,variables}.c
+ - a couple of cleanups for when building a minimal configuration
- 12/18
- -----
-builtins/ulimit.def
- - change set_limit to account for Cygwin's setdtablesize() being
- declared as a void function
+nojobs.c
+ - new function: stop_making_children(), just sets
+ already_making_children to 0 (like stop_pipeline)
-support/config.{guess,sub}
- - change cygwin32 to cygwin
+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
- 12/20
- -----
-nojobs.c
- - make wait_sigint_handler handle the case of interrupt_immediately
- being non-zero when it's called, and jump out appropriately
+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
-jobs.c
- - new function to run sigchld traps: run_sigchld_trap(); called from
- waitchld
- - broke the code that computes the printable job status messages for
- pretty_print_job out into a separate function
- - rearranged some code eliminating a useless `else' branch in wait_for
- - shell_tty_info is now a TTYSTRUCT, using defines from shtty.h
- - broke the code that sets a job's status after waitpid says its state
- has changed and cleans up after a received SIGINT out into a separate
- function: set_job_status_and_cleanup
- - last_stopped_job() -> job_last_stopped() to avoid collision with a
- variable name
- - last_running_job() -> job_last_running() for consistency
-
- 12/21
+ 10/23
-----
variables.c
- - new function, print_func_list (SHELL_VAR **list); prints shell
- functions from list in a form that may be re-used as input to
- redefine the functions
+ - new function, bind_var_to_int (char *var, long val)
variables.h
- - new extern declaration for print_func_list
-
-builtins/set.def
- - set without options now calls print_func_list to have functions
- printed in a way that can be reused as input (this affects
- `declare' and `declare -p' also)
+ - extern declaration for bind_var_to_int
- 12/27
- -----
-general.h
- - add an ISOCTAL define
+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
-builtins/common.h
- - use ISOCTAL in read_octal function
+Makefile.in
+ - pass DEBUG=${DEBUG} down to makes in some subdirectories
-parse.y
- - in decode_prompt_string, don't just skip STRING forward by 3 if an
- octal sequence is translated; handle sequences of fewer than three
- characters by checking each character
+{builtins,lib{glob,sh}}/Makefile.in
+ - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
- 12/28
- -----
-doc/{bash.1,bashref.texi}
- - make sure `vi-move' is a documented keymap argument to bind's
- `-m' option
+builtins/printf.def
+ - added support for %n format conversion char (number of chars printed
+ so far from current format string)
- 12/29
+ 10/24
-----
variables.c
- - change print_assignment so that functions are printed in a way that
- may be reused as input (without the `=')
-
- 1/2/2001
- --------
-test.c
- - fix test_command to print an error message if `[' is supplied a
- single argument that is not `]'
-
-support/shobj-conf
- - change test of $SHOBJ_CC from `gcc*' to `*gcc*' to handle full
- pathnames
-
- 1/11
- ----
-execute_cmd.c
- - in initialize_subshell, zero out builtin_env, since those aren't
- supposed to be exported
-
-variables.c
- - new function: shell_var_from_env_string, creates a SHELL_VAR from
- a `name=value' style environment string and returns it
- - new function: bind_name_in_env_array(name, value, array), makes
- NAME have VALUE in ARRAY, a temporary environment
- - new function: bind_tempenv_variable (name, value), makes NAME have
- VALUE in one of the temporary environments -- temporary_env,
- builtin_env, or function_env
- - changed bind_variable to call bind_tempenv_variable if one of the
- temporary environments is non-null before modifying the
- shell_variables table. This fixes a problem with sourced scripts
- modifying variables in a temporary environment, but not seeing the
- updated values
-
- 1/12
- ----
-variables.c
- - changed things so OSTYPE, HOSTTYPE, and MACHTYPE are set only if
- they don't have a value at shell startup
+ - 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
- 1/17
- ----
-builtins/fc.def
- - create temp file with MT_USETMPDIR
+shell.c
+ - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
+ SSH_SOURCE_BASHRC is defined in config-top.h
-variables.c
- - allow function local readonly variables to overwrite (or shadow)
- other (calling) function readonly variables, but not global
- readonly ones
+config-top.h
+ - added a commented-out definition for SSH_SOURCE_BASHRC
-builtins/wait.def
- - replace unwind_protect of interrupt_immediately, since that's a
- variable that you cannot unwind-protect (the unwind-protect code
- uses it)
+ 10/25
+ -----
- 1/22
- ----
Makefile.in
- - changed RELSTATUS to `beta1'
-
-lib/readline/terminal.c
- - added rl_set_screen_size function, wrapper around
- _rl_set_screen_size so bash doesn't call _rl_ functions
-
-lib/readline/{rlprivate,readline}.h
- - moved rl_explicit_arg to readline.h
- - moved rl_numeric_arg to readline.h
- - moved rl_editing_mode to readline.h
- - moved rl_last_func to readline.h
- - added rl_set_screen_size to readline.h
-
-lib/readline/doc/rltech.texinfo
- - documented rl_explicit_arg, rl_editing_mode, rl_numeric_arg,
- rl_last_func
- - documented rl_set_screen_size
-
-{jobs,nojobs}.c
- - _rl_set_screen_size -> rl_set_screen_size
-
-{bashline,pcomplete}.c, builtins/set.def
- - removed extern declarations of variables defined in readline.h
-
- 1/23
- ----
-support/rlvers.sh
- - use $TMPDIR if it's defined
- - use $RL_INCDIR (set by -I option, /usr/local/include by default)
- as the directory containing the installed readline header files
- - cd to the temp directory before attempting compilation
-
-configure.in
- - pass `-I ${includedir}' to rlvers.sh
-
- 1/29
- ----
-subst.c
- - fixed parameter_brace_expand to only throw away the state of
- quoted dollar-at if we're going to be using the rhs of the
- brace expansion, since whatever parameter_brace_expand_rhs sets
- should be what goes (corrects bad fix of 2/16/2000)
- - fixed param_expand to only free temp after calling
- parameter_brace_expand if it's a quoted null and we *did not*
- have a quoted $@, since in that case we want to keep it and
- do the $@ special handling (fixes real problem from 2/16/2000)
-
- 1/30
- ----
-variables.c
- - remove export attribute from SSH2_CLIENT, like SSH_CLIENT
-
- 2/1
- ---
-unwind_prot.c
- - added new function, clear_unwind_protect_list, to zero out the
- unwind_protect list, optionally freeing the elements
-
-unwind_prot.h
- - new extern declaration for clear_unwind_protect_list
-
-execute_cmd.c
- - call clear_unwind_protect_list in initialize_subshell. This fixes
- the problem of core dumps when calling a shell script without a
- leading `#!' from a shell function or other context with an
- unwind-protect list
- - set variable_context and return_catch_flag to 0 in
- initialize_subshell, since a new subshell is no longer in a shell
- function
-
- 2/2
- ---
-doc/readline.3
- - updated the text; clarified several points
- - changed the usage synopsis to include <readline/readline.h> and
- <readline/history.h>
-
-lib/readline/doc/hstech.texinfo
- - made sure all function prototypes are valid ANSI C (mostly
- changing () to (void))
+ - changed RELSTATUS to `rc1' (release candidate 1)
-lib/readline/doc/rluser.texinfo
- - a few clarifications
+ 10/29
+ -----
+locale.c
+ - fixed an `=' vs. `==' typo in set_locale_var when parsing
+ LC_NUMERIC
-lib/readline/doc/rltech.texinfo
- - a few clarifications
- - added two new subsections for character input and terminal
- management
- - changed all function prototypes to be valid ANSI C (mostly
- replacing () with (void))
- - documented some variables in readline.h but previously not in
- the reference manual (rl_num_chars_to_read, rl_dispatching,
- rl_gnu_readline_p, rl_completion_type)
- - documented some functions in readline.h but previously not in
- the reference manual (rl_clear_pending_input, rl_prep_terminal,
- rl_deprep_terminal, rl_tty_set_default_bindings, rl_alphabetic,
- rl_crlf)
+doc/{bash.1,bashref.texi}
+ - document what bash does with $POSIXLY_CORRECT
-lib/readline/readline.h
- - added extern declaration for rl_clear_pending_input()
- - added extern declaration for rl_alphabetic
- - changed rltty_set_default_bindings to rl_tty_set_default_bindings
- - changed crlf() -> rl_crlf()
+doc/builtins.1
+ - some updates
-lib/readline/rltty.c
- - new function, rl_tty_set_default_bindings, just calls
- rltty_set_default_bindings (needed `rl_' prefix)
+builtins/psize.sh
+ - some mktemp(1) changes
lib/readline/readline.c
- - readline_default_bindings now calls rl_tty_set_default_bindings
+ - change rl_backward to check for rl_point < 0 and reset to 0 if so
-lib/readline/terminal.c
- - renamed crlf() to rl_crlf(); crlf() is still defined for backwards
- compatibility
-
-bashline.c, lib/readline/{complete,display}.c
- - changed all calls to crlf() to rl_crlf()
-
-test.c
- - fix filecomp() so that `test file1 -nt file2' doesn't fail if file1
- exists but file2 does not
-
- 2/5
- ---
-lib/readline/{terminal,compat}.c
- - move crlf() backwards-compatibility definition to compat.c
-
-execute_cmd.c
- - if we're running a command `( command ) &' from a non-interactive
- shell, don't unconditionally disable expand_aliases. Only do it
- when running such a command from an interactive shell, since then
- we're changing to a non-interactive shell
-
- 2/6
- ---
-[bash-2.05-beta1 released]
-
-lib/readline/compat.c
- - add extern declaration for rl_crlf()
-
-lib/readline/undo.c
- - initialize start and end in rl_do_undo to avoid bogus gcc compiler
- warning with -Wall
+lib/readline/util.c
+ - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
lib/readline/rlprivate.h
- - fix typo in extern declaration of _rl_current_display_line()
- - add extern declaration of _rl_free_saved_history_line()
+ - remove extern declaration of _rl_strpbrk
-lib/readline/terminal.c
- - return immediately from _rl_set_screen_size if one of the args is 0
- - new function, rl_get_screen_size (int *rows, int *cols) to return
- readline's idea of the screen dimensions
+lib/readline/rldefs.h
+ - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise
+ add extern declaration of _rl_strpbrk from rlprivate.h
-lib/readline/doc/rltech.texinfo
- - documented rl_get_screen_size
+{mailcheck,shell,variables}.c
+ - make sure to include posixtime.h to get any prototype for time(3)
+ in scope
- 2/7
- ---
-pathexp.c
- - a couple of fixes for the POSIX_GLOB_LIBRARY version of the globbing
- code
+{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
-expr.c
- - fixed omission of ^= from the special assignment operators
+builtins/read.def, parse.y
+ - change some calls to free() to xfree()
-shell.c
- - change logic for setting `posixly_correct' at shell startup: if
- $POSIXLY_CORRECT or $POSIX_PEDANTIC is found in the environment,
- set it to 1, otherwise retain the previous value (which is
- initialized to 0)
+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
- 2/10
- ----
-builtins/evalstring.c
- - since subshell_environment is now a flags word, test for the
- SUBSHELL_COMSUB bit being set when decided whether or not to
- evaluate $(<file), not just for subshell_environment ==
- SUBSHELL_COMSUB
+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
- 2/12
- ----
-lib/readline/doc/rltech.texinfo
- - fixed a couple of problems with the documentation for
- rl_prep_terminal and rl_deprep_terminal
- - added description of rl_set_prompt
+builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
+ - use USE_VAR for some variables
-support/config.sub
- - added support for Linux running on the IBM S390
+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)
- 2/13
- ----
-input.c
- - new function, fd_is_bash_input (fd), encapsulates the test for
- whether or not FD is the file descriptor from which bash is reading
- its input
- - change check_bash_input to call fd_is_bash_input
- - new function, save_bash_input (fd, new_fd), handles saving the
- buffered stream associated with file descriptor FD to one
- associated with NEW_FD. If NEW_FD == -1, this function allocates a
- file descriptor itself with fcntl
- - new function, set_bash_input_fd(fd), sets the fd bash is using to
- read input to FD
- - changed duplicate_buffered_stream to note that the buffer it's
- duplicating to was the bash input buffer (B_WASBASHINPUT)
+test.c
+ - give test_syntax_error(), beyond(), and integer_expected_error()
+ the `__noreturn__' attribute for gcc
-input.h
- - extern declarations for fd_is_bash_input and save_bash_input
- - new flag for b->flag: B_WASBASHINPUT
+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)
-redir.c
- - in add_undo_redirect, if FD is 0, make the undo redirect be of type
- r_duplicating_input instead of r_duplicating_output, since that fd
- requires special handling in the presence of buffered streams (fixes
- problem with scripts reading input through a pipe restoring bash
- input buffered stream correctly after a `read' with an input
- redirection
-
- 2/14
- ----
-lib/readline{complete,util}.c
- - moved rl_strpbrk to util.c with rest of string utility functions,
- renamed to _rl_strpbrk
+ 10/30
+ -----
+print_cmd.c
+ - fixed cprintf to avoid gcc warning about assigning const pointer
+ to non-const (discarding type qualifier)
-lib/readline/rlprivate.h
- - extern declaration for _rl_strpbrk
+{make_cmd,pcomplete,test}.c,parse.y
+ - some minor changes to shut up gcc warnings
-lib/readline/input.c
- - make the timeout in rl_gather_tyi() be a variable
- (_keyboard_input_timeout) rather than a constant
- - new function, rl_set_keyboard_input_timeout (int u) to set
- _keyboard_input_timeout. The argument is in microseconds; returns
- the old value of _keyboard_input_timeout
- - _rl_input_available uses _keyboard_input_timeout also
+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'
-lib/readline/readline.h
- - extern declaration for rl_set_keyboard_input_timeout
+support/bashbug.sh
+ - more changes inspired by a patch from solar designer
-lib/readline/doc/rltech.texinfo
- - documented rl_variable_bind(), rl_macro_bind(), rl_macro_dumper(),
- rl_variable_dumper(), rl_push_macro_input(), rl_show_char()
+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)
- 2/20
- ----
-findcmd.c
- - new function, executable_or_directory(name), returns 1 if NAME is
- an executable file or a directory
+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
-findcmd.h
- - extern declaration for executable_or_directory()
+aclocal.m4
+ - slight change to RL_LIB_READLINE_VERSION to deal with minor version
+ numbers with a letter appended (like 4.2a)
-bashline.c
- - call executable_or_directory() from command_word_completion_function,
- which requires a single stat(2), instead of executable_file() and
- is_directory(), each of which requires a stat(2)
+ 10/31
+ -----
+doc/{bash.1,bashref.texi}
+ - slight change to note that only interactive shells resend a SIGHUP
+ to all jobs before exiting
- 2/21
- ----
-execute_cmd.c
- - changed execute_builtin to handle `return' with a preceding variable
- assignment list specially when in POSIX mode. POSIX says that the
- variable assignments should persist after the builtin returns, since
- `return' is a special builtin. Since `return' does a longjmp and
- doesn't go through the normal cleanup path, we need to do special
- things
+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)
-variables.c
- - new function, merge_function_env(), merges the function_env into
- the shell_variables table
+builtins/printf.def
+ - #define NEED_STRTOIMAX_DECL before including shell.h
-variables.h
- - extern declaration for merge_function_env()
+ 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
-execute_cmd.c
- - changed execute_function to merge any variable assignments preceding
- the function call into shell_variables if the shell is running in
- POSIX mode
+shell.c
+ - fix a problem with $LINENO when executing commands supplied with
+ the -c invocation option when ONESHOT is defined
-subst.c
- - changed parameter_brace_expand_error to do tilde expansion on the
- rhs of the expansion, if it's not null
- - changed command_substitute so that the subshell begun to execute
- the command substitution inherits the setting of the `-e' option
- when in POSIX mode
-
-builtins/break.def
- - changed check_loop_level to not print a complaining message when
- the shell is running in POSIX mode, even if BREAK_COMPLAINS is
- defined. This affects `break' and `continue'
- - changed `break' and `continue' to return success even if the shell
- is not executing a loop, as POSIX specifies
+[bash-2.05a-rc1 frozen]
-builtins/set.def
- - changed reset_shell_options() to not clear posixly_correct, so
- subshells spawned to execute shell scripts without a leading `#!'
- inherit posix mode from their parent shell
+builtins/printf.def
+ - fix the %n conversion to require that the variable name supplied
+ be a valid shell identifier
variables.c
- - changed make_new_variable to create the shell_variables hash table
- if it hasn't been done yet. This is needed because bind_variable
- may be called before initialize_shell_variables (e.g., when
- `bash -o posix' calls bind_variable("POSIXLY_CORRECT", "y") from
- parse_shell_options -> set_minus_o_option -> set_posix_mode
- This makes `bash --posix' and `bash -o posix' equivalent, as they
- should always have been
- - changed maybe_make_export_env to merge the contents of `builtin_env'
- into export_env after function_env and before temporary_env. This
- fixes the problems with variable assignments preceding `eval' or
- `source' not making it into the environment passed to executed disk
- commands (var=20 eval printenv var)
+ - 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
-doc/bashref.texi
- - noted that variable assignments preceding shell function calls
- persist in the shell environment after the function returns when
- the shell is running in POSIX mode
- - noted that when the shell is running in POSIX mode, subshells
- spawned to execute command substitutions inherit the value of
- the `-e' option from the parent shell
-
- 2/26
+ 11/2
----
-doc/bashref.texi
- - augmented description of bash non-posix behavior in posix mode
- with information from running the vsc-lite test suite
+configure.in
+ - if RL_INCLUDEDIR ends up being /usr/include, don't put
+ -I$(RL_INCLUDEDIR) into CFLAGS
- 2/28
+ 11/5
----
-general.c
- - since POSIX.2 says that aliases should be expanded even in
- non-interactive shells, enable alias expansion in
- posix_initialize() when posix mode is enabled, and set it to the
- value of interactive_shell if posix mode is disabled
-
-shell.c
- - before running the startup scripts, set expand_aliases to
- posixly_correct, since we don't want alias expansion in startup
- files unless we've been given the --posix invocation option
-
-doc/bashref.texi
- - added item in BASH Posix Mode section noting that alias expansion
- is always enabled when in posix mode
+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
-Makefile.in
- - changed release level to `beta2'
+variables.c
+ - fix function prologues for init_dirstack_var and init_groups_var
+ to agree with caller (no arguments)
- 3/1
- ---
jobs.c
- - expanded retcode_name_buffer to 64
- - changed printable_job_status to conform to posix.2 for text of
- stopped job status: `Stopped(SIGTSTP)' or `Stopped(SIGSTOP)'
-
-doc/bashref.texi
- - Noted above change in posix mode section
-
- 3/5
- ---
-lib/readline/bind.c
- - changed rl_get_keymap_by_name to work case-insensitively
+ - fix forward function declarations for pipe_read and pipe_close
- 3/6
- ---
-doc/readline.{0,3,ps}
- - removed from distribution; moved to readline distribution
-
-lib/readline/doc/history.3
- - man page for history library; neither built nor installed
- (part of the standalone readline distribution)
-
-lib/readline/histfile.c
- - changed history_truncate_file to return 0 on success, errno
- on failure
- - changed history_do_write to return errno on a write error. This
- affects write_history and append_history
-
-lib/readline/history.c
- - max_input_history is now history_max_entries; the old variable is
- maintained for backwards compatibility
-
-lib/readline/histexpand.c
- - the list of delimiters that separate words for history_tokenize
- is now a variable: history_word_delimiters; default value is as
- before
- - changed history_expand to return 0 immediately if its second
- argument is NULL
-
-bashline.c
- - changed to use history_max_entries
-
-lib/readline/history.h
- - extern declaration for history_max_entries
- - extern declaration for history_word_delimiters
-
- 3/8
- ---
-test.c
- - changed unary_operator() to return FALSE for non-numeric arguments
- to `-t'
-
- 3/9
- ---
-[bash-2.05-beta2 released]
-
- 3/12
- ----
-lib/readline/doc/rltech.texinfo
- - documented rl_set_paren_blink_timeout()
- - moved the example function to its own info node
-
-lib/readline/{hstech.texinfo,history.3}
- - `$' is not in the default value of history_word_delimiters
+subst.c
+ - removed `inline' attribute from skip_double_quoted because it can
+ potentially be called recursively
- 3/13
- ----
bashline.c
- - in maybe_add_history, if the tests for HISTCONTROL succeed, but
- the HISTIGNORE check fails, set first_line_saved to 0
-
- 3/15
- ----
-
-lib/glob/fnmatch.c
- - fixed a bug in patscan that caused `[' to be treated as special
- even inside a nested bracket expression. It's supposed to lose
- it's special handling inside []
- - fixed a bug in patscan that caused `]' to end an embedded bracket
- expression even if it was the first character after the `[' (or
- a leading `!' or `^')
-
- 3/22
- ----
-execute_cmd.c
- - made a small change to shell_execve to report a more user-friendly
- error if execve(2) fails because of a `#! interpreter' error with
- `interpreter'
- - in shell_execve, if HAVE_HASH_BANG_EXEC is not defined, make sure
- the file length is > 2 characters before attempting to execute an
- interpreter
-
- 3/26
- ----
-jobs.c, nojobs.c
- - give_terminal_to now takes a second argument, FORCE. If that
- second argument is non-zero, give the terminal away no matter
- what job_control is set to
+ - 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)
-jobs.h
- - changed extern declaration of give_terminal_to
+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
-{jobs,sig,subst}.c,parse.y
- - changed all calls to give_terminal_to to add a second argument
- of 0
+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
+
+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 `>'
+
+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
-jobs.c
- - changed second argument of call to give_terminal_to in
- end_job_control to 1, to force this even if job_control is 0.
- This fixes the problem of `exec other-job-control-shell' in a
- startup file hanging, since run_startup_files sets job_control to 0
+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)
-subst.c
- - fixed test of subshell_environment in command_substitute to test the
- bit SUBSHELL_ASYNC rather than test equality, since it's now a
- bitmask
+aclocal.m4
+ - add missing `test' in BASH_CHECK_SYS_SIGLIST
- 3/27
+ 11/7
----
-shell.c
- - changed posix initialization calls to set POSIXLY_CORRECT=y and
- then call sv_strict_posix, so $SHELLOPTS includes `posix' and
- POSIXLY_CORRECT is set, for both the posix command line options
- and when act_like_sh is non-zero
+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
-redir.c
- - the `>& filename' redirection now works in posix mode, redirecting
- stdout and stderr, since POSIX.2 leaves it unspecified
+include/chartypes.h
+ - remove superfluous `#undef ISASCII'
-doc/bashref.texi
- - removed item about `>& filename' from Bash POSIX Mode section
+lib/sh/strto[iu]max.c
+ - changes from Paul Eggert to work around buggy compilers and catch
+ configuration errors at compile time
-parse.y
- - fixed a problem in decode_prompt_string with `\W' not printing
- anything if PWD == "//"
+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)
-lib/readline/input.c
- - in rl_read_key, after calling (*rl_event_hook), check for rl_done
- being set, and return '\n' if it is
+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
Makefile.in
- changed RELSTATUS to `release'
- 3/28
+ 11/8
----
-support/bashbug.sh
- - replace use of $(...) with `...` for the benefit of old versions
- of sh
-
-builtins/set.def
- - changed print_all_shell_variables to not print shell function names
- and definitions when in posix mode
-
-doc/bashref.texi
- - noted change in `set' behavior in posix mode section
+lib/sh/strtol.c
+ - make sure chars passed to toupper are cast to unsigned
- 4/2
- ---
-lib/readline/readline.c
- - changed default value of RL_LIBRARY_VERSION to `4.2'
+unwind_prot.c
+ - change clear_unwind_protect_list to not require a cast from `int'
+ to `char *'
- 4/5
- ---
-[bash-2.05-release frozen]
+lib/readline/chardefs.h
+ - make _rl_digit_p succeed only for ascii digits, since that's what
+ most callers assume
diff --git a/CWRU/empty-for-wordlist b/CWRU/empty-for-wordlist
deleted file mode 100644
index 2dd21d67..00000000
--- a/CWRU/empty-for-wordlist
+++ /dev/null
@@ -1,25 +0,0 @@
-This patch is from Brian Fox, in reply to an email message from
-"Marcin 'Qrczak' Kowalczyk" <qrczak@knm.org.pl>, who wrote:
-
- I think that bash should accept such a syntax:
-
- for var in ; do command; done
-
- Of course it should do nothing. It would simplify some scripts.
-
-Here is a patch for those who wish it:
-
-*** parse.y.~1~ Wed Mar 4 09:39:46 1998
---- parse.y Mon Jul 13 14:40:23 1998
-***************
-*** 495,500 ****
---- 495,504 ----
- { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); }
- | FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'
- { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); }
-+ | FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE
-+ { $$ = make_for_command ($2, (WORD_LIST *)NULL, $8); }
-+ | FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}'
-+ { $$ = make_for_command ($2, (WORD_LIST *)NULL, $8); }
- ;
-
diff --git a/CWRU/maildir-patch b/CWRU/maildir-patch
deleted file mode 100644
index 1fcb3b6f..00000000
--- a/CWRU/maildir-patch
+++ /dev/null
@@ -1,175 +0,0 @@
-# DP: From: Miquel van Smoorenburg <miquels@cistron.nl>
-# DP: A patch that adds support for Maildir type mailboxes.
-
---- ./mailcheck.c.orig Wed Feb 4 21:30:33 1998
-+++ ./mailcheck.c Sun Nov 14 15:35:07 1999
-@@ -21,8 +21,10 @@
- #include "config.h"
-
- #include <stdio.h>
-+#include <errno.h>
- #include "bashtypes.h"
- #include "posixstat.h"
-+#include "posixdir.h"
- #ifndef _MINIX
- # include <sys/param.h>
- #endif
-@@ -37,6 +39,8 @@
- #include "mailcheck.h"
- #include <tilde/tilde.h>
-
-+#include "mailstat.c"
-+
- #ifndef NOW
- #define NOW ((time_t)time ((time_t *)0))
- #endif
-@@ -131,7 +135,7 @@
- struct stat finfo;
-
- file = mailfiles[i]->name;
-- if (stat (file, &finfo) == 0)
-+ if (mailstat (file, &finfo) == 0)
- {
- mailfiles[i]->access_time = finfo.st_atime;
- mailfiles[i]->mod_time = finfo.st_mtime;
-@@ -155,7 +159,7 @@
- i = find_mail_file (filename);
- if (i >= 0)
- {
-- if (stat (filename, &finfo) == 0)
-+ if (mailstat (filename, &finfo) == 0)
- {
- mailfiles[i]->mod_time = finfo.st_mtime;
- mailfiles[i]->access_time = finfo.st_atime;
-@@ -221,7 +225,7 @@
- file = mailfiles[i]->name;
- mtime = mailfiles[i]->mod_time;
-
-- if ((stat (file, &finfo) == 0) && (finfo.st_size > 0))
-+ if ((mailstat (file, &finfo) == 0) && (finfo.st_size > 0))
- return (mtime != finfo.st_mtime);
-
- return (0);
-@@ -239,7 +243,7 @@
- file = mailfiles[i]->name;
- atime = mailfiles[i]->access_time;
-
-- if ((stat (file, &finfo) == 0) && (finfo.st_size > 0))
-+ if ((mailstat (file, &finfo) == 0) && (finfo.st_size > 0))
- return (atime != finfo.st_atime);
-
- return (0);
-@@ -257,7 +261,7 @@
- file = mailfiles[i]->name;
- size = mailfiles[i]->file_size;
-
-- return ((stat (file, &finfo) == 0) && (finfo.st_size > size));
-+ return ((mailstat (file, &finfo) == 0) && (finfo.st_size > size));
- }
-
- /* Take an element from $MAILPATH and return the portion from
-
-
-diff -ruN bash-2.01.1.b4/mailstat.c bash-2.01.1/mailstat.c
---- bash-2.01.1.b4/mailstat.c Thu Jan 1 01:00:00 1970
-+++ bash-2.01.1/mailstat.c Wed Jun 2 12:05:04 1999
-@@ -0,0 +1,98 @@
-+/*
-+ * Stat a file. If it's a maildir, check all messages
-+ * in the maildir and present the grand total as a file.
-+ * The fields in the 'struct stat' are from the mail directory.
-+ * The following fields are emulated:
-+ *
-+ * st_nlink always 1
-+ * st_size total number of bytes in all files
-+ * st_blocks total number of messages
-+ * st_atime access time of newest file in maildir
-+ * st_mtime modify time of newest file in maildir
-+ * st_mode S_IFDIR changed to S_IFREG
-+ *
-+ * This is good enough for most mail-checking applications.
-+ */
-+int
-+mailstat(char *path, struct stat *st)
-+{
-+ DIR *dd;
-+ struct dirent *fn;
-+ struct stat st_ret, st_tmp;
-+ static struct stat st_new_last, st_ret_last;
-+ char dir[PATH_MAX * 2];
-+ char file[PATH_MAX * 2];
-+ int i, l;
-+ time_t atime = 0, mtime = 0;
-+
-+ /* First see if it's a directory. */
-+ if ((i = stat(path, st)) != 0 || !S_ISDIR(st->st_mode))
-+ return i;
-+ if (strlen(path) > sizeof(dir) - 5) {
-+ errno = ENAMETOOLONG;
-+ return -1;
-+ }
-+
-+ st_ret = *st;
-+ st_ret.st_nlink = 1;
-+ st_ret.st_size = 0;
-+ st_ret.st_blocks = 0;
-+ st_ret.st_mode &= ~S_IFDIR;
-+ st_ret.st_mode |= S_IFREG;
-+
-+ /* See if cur/ is present */
-+ sprintf(dir, "%s/cur", path);
-+ if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0;
-+ st_ret.st_atime = st_tmp.st_atime;
-+
-+ /* See if tmp/ is present */
-+ sprintf(dir, "%s/tmp", path);
-+ if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0;
-+ st_ret.st_mtime = st_tmp.st_mtime;
-+
-+ /* And new/ */
-+ sprintf(dir, "%s/new", path);
-+ if (stat(dir, &st_tmp) || !S_ISDIR(st_tmp.st_mode)) return 0;
-+ st_ret.st_mtime = st_tmp.st_mtime;
-+
-+ /* Optimization - if new/ didn't change, nothing else did. */
-+ if (st_tmp.st_dev == st_new_last.st_dev &&
-+ st_tmp.st_ino == st_new_last.st_ino &&
-+ st_tmp.st_atime == st_new_last.st_atime &&
-+ st_tmp.st_mtime == st_new_last.st_mtime) {
-+ *st = st_ret_last;
-+ return 0;
-+ }
-+ st_new_last = st_tmp;
-+
-+ /* Loop over new/ and cur/ */
-+ for (i = 0; i < 2; i++) {
-+ sprintf(dir, "%s/%s", path, i ? "cur" : "new");
-+ sprintf(file, "%s/", dir);
-+ l = strlen(file);
-+ if ((dd = opendir(dir)) == NULL)
-+ return 0;
-+ while ((fn = readdir(dd)) != NULL) {
-+ if (fn->d_name[0] == '.' ||
-+ strlen(fn->d_name) + l >= sizeof(file))
-+ continue;
-+ strcpy(file + l, fn->d_name);
-+ if (stat(file, &st_tmp) != 0)
-+ continue;
-+ st_ret.st_size += st_tmp.st_size;
-+ st_ret.st_blocks++;
-+ if (st_tmp.st_atime != st_tmp.st_mtime &&
-+ st_tmp.st_atime > atime)
-+ atime = st_tmp.st_atime;
-+ if (st_tmp.st_mtime > mtime)
-+ mtime = st_tmp.st_mtime;
-+ }
-+ closedir(dd);
-+ }
-+
-+ if (atime) st_ret.st_atime = atime;
-+ if (mtime) st_ret.st_mtime = mtime;
-+
-+ *st = st_ret_last = st_ret;
-+ return 0;
-+}
-