Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Date: Fri, 17 Mar 2000 17:05:45 -0500 From: Chet Ramey To: cygwin AT sourceware DOT cygnus DOT com Subject: Bash-2.04 available for FTP Reply-To: chet AT po DOT CWRU DOT Edu Message-ID: <1000317220545.AA83930.SM@nike.ins.cwru.edu> Read-Receipt-To: chet AT po DOT CWRU DOT Edu MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii The first public release of bash-2.04 is now available with the URLs ftp://ftp.cwru.edu/pub/bash/bash-2.04.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/bash-2.04.tar.gz and from the usual GNU mirror sites. This tar file does not include the formatted documentation (postscript, dvi, html, and nroffed versions of the manual pages); that may be retrieved with the URLs ftp://ftp.cwru.edu/pub/bash/bash-doc-2.03.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.03.tar.gz When unpacking the documentation, make sure to extract the tar file in the bash-2.04 source directory. Diffs from bash-2.03 are available with the URLs ftp://ftp.cwru.edu/pub/bash/bash-2.03-2.04.diff.gz ftp://ftp.gnu.org/pub/gnu/bash/bash-2.03-2.04.diff.gz Make sure to apply the diffs using `patch -p1' from within a bash-2.03 source directory. Please use `bashbug' to report bugs with this version. It is built and installed at the same time as bash. Installation ============ Please read the README file first. Installation instructions are provided in the INSTALL file. New Features ============ Read the file NEWS in the bash-2.04 distribution. Here is a short list: o Programmable word completion with the new `complete' and `compgen' builtins; examples are provided in examples/complete/complete-examples o `history' has a new `-d' option to delete a history entry o `bind' has a new `-x' option to bind key sequences to shell commands o The prompt expansion code has new `\j' and `\l' escape sequences o The `no_empty_command_completion' shell option, if enabled, inhibits command completion when TAB is typed on an empty line o `help' has a new `-s' option to print a usage synopsis o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) o New ksh93-style arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done o `read' has new options: `-t', `-n', `-d', `-s' o The redirection code handles several filenames specially: /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr o The redirection code now recognizes /dev/tcp/HOST/PORT and /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, to the specified port on the specified host o The ${!prefix*} expansion has been implemented o A new FUNCNAME variable, which expands to the name of a currently-executing function o The GROUPS variable is no longer readonly o A new shopt `xpg_echo' variable, to control the behavior of echo with respect to backslash-escape sequences at runtime o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned Changed have been made to the Readline library being released at the same time as bash-2.04, readline-4.1, so that Bash can be linked against an already-installed Readline library rather than the private version in lib/readline. Only readline-4.1 is able to provide all of the symbols that bash-2.04 requires; earlier versions of the Readline library will not work correctly. A complete list of changes between bash-2.03 and bash-2.04 is available in the file CHANGES. A Peek at the Future ==================== I'm thinking about an implementation of associative arrays, like those in ksh-93. Readline ======== Also available is a new release of the standalone readline library, version 4.1, with its own configuration scripts and Makefiles. It can be retrieved with the URLs ftp://ftp.cwru.edu/pub/bash/readline-4.1.tar.gz ftp://ftp.gnu.org/pub/gnu/readline/readline-4.1.tar.gz and from the usual GNU mirror sites. Diffs from readline-4.0 are available with the URLs ftp://ftp.cwru.edu/pub/bash/readline-4.0-4.1.diff.gz ftp://ftp.gnu.org/pub/gnu/readline/readline-4.0-4.1.diff.gz Make sure to install the patches using `patch -p1 < patch-file' from within a readline-4.0 source directory. The formatted Readline documentation is included in the readline distribution tar file. A separate announcement listing the changes in Readline is being distributed. As always, thanks for your help. Chet +========== CHANGES ==========+ This document details the changes between this version, bash-2.04-release, and the previous version, bash-2.04-beta5. 1. Changes to Bash a. Better compile-time and configure-time checks for the necessity of inet_aton(). b. A bug was fixed in the expansion of "${@:-}" when there are positional parameters. c. A typo was fixed in the output of `complete'. d. The matches generated for a word by the `-W' argument to complete and compgen are now matched against the word being completed, and only matches are returned as the result. e. Some fixes were made for systems which do not restart read(2) when a signal caught by bash is received. f. A bug was fixed which caused the umask to be set to 0 when an invalid symbolic mode mask was parsed. g. Fixed a bug that could cause a core dump if a SIGCHLD was received while performing an assignment statement using command substitution. h. Changed the word splitting function for programmable completion so cases in which the cursor is between words are handled a bit better. 2. Changes to Readline a. rl_funmap_names() is now documented. 3. New Features in Bash a. The LC_NUMERIC variable is now treated specially, and used to set the LC_NUMERIC locale category for number formatting, e.g., when `printf' displays floating-point numbers. ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-beta5, and the previous version, bash-2.04-beta4. 1. Changes to Bash a. A couple of changes were made to the Makefiles for easier building on non-Unix systems. b. Fixed a bug where the current prompt would be set to $PS2 at startup. c. The shell script that tests an already-installed version was changed to remove the directory it created its test programs in at exit. d. Several changes were made to the code that tokenizes an input line for the programmable completion code. Shell metacharacters will now appear as individual words in the word list passed to the completion functions. Some of the example completion shell functions were changed to understand redirection operators. e. A bug was fixed that, under obscure circumstances, could confuse the parser when a shell function was run by the programmable completion code. f. A bug was fixed in the ulimit builtin for systems not using getrlimit(). g. The execution code now propagates the correct exit status back to the rest of the code if the return value of a subshell command was being inverted. Some new test cases for inverting return values with the `!' reserved word have been added. h. Negative exponents in the arithmetic evaluation of v**e now return an evaluation error. i. A bug that caused bash to check the wrong process in a pipeline for abnormal termination (and consequently resetting the terminal attributes) was fixed. j. Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was executed. 2. Changes to Readline 1. Fixed a bug in a C preprocessor define that caused the keypad control functions to be compiled out for all platforms except DJGPP. ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-beta4, and the previous version, bash-2.04-beta3. 1. Changes to Bash a. A couple of changes were made to the redirection to attempt to avoid race conditions and malicious file replacement. 2. A change was made to the string evaluation code (used for command substitution, `eval', and the `.' builtin) to fix an obscure core dump on alpha machines. 3. A bug that caused $LINENO to be wrong when executing arithmetic for commands was fixed. 4. A couple of memory leaks in the programmable completion code were fixed. 5. A bug that could cause a core dump by freeing memory twice during a call to `eval' if `set -u' had been enabled and an undefined variable was referenced was fixed. ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-beta3, and the previous version, bash-2.04-beta2. 1. Changes to Bash a. Bash should run the appropriate startup files when invoked by ssh2. b. Fixed a bug in the parsing of conditional commands that could cause a core dump. c. Fixed a bug in parsing job specifications that occasionally caused core dumps when an out-of-range job was referenced. d. Fixed the `type' and `command' builtins to do better reporting of commands that are not found in $PATH or the hash table. e. Fixed a POSIX.2 compliance problem in the command builtin -- commands are supposed to be reported as full pathnames. f. The `echo' builtin now returns failure if a write error occurs. g. Fixed a bug which caused the locale to not be reset correctly when LC_ALL was unset. h. Changed description of `getopts' in man page and reference manual to make it clear that option characters may be characters other than letters. i. If the shell exits while in a function, make sure that any trap on EXIT doesn't think the function is still executing. j. Bashbug now tries harder to find a usable editor if $EDITOR is not set, rather than simply defaulting to `emacs'. k. Changes to the scripts that guess and canonicalize the system type, from the latest `automake' distribution via Debian. l. When using named pipes for process substitution, make sure the file descriptors opened for reading are set to non-blocking mode. m. Fixed a bug that caused termination of pipelines that are killed by a signal to not be reported in some cases. n. When not in literal-history mode, shell comment lines are not added to the history list. o. 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 redirection operators. p. The prompt string decoding code now backslash-quotes only characters that are special within double quotes when expanding the \w and \W escape sequences. q. Fixed a bug in the prompt decoding code that could cause a non-interactive shell to seg fault if `\u' was used in PS4 and the shell was in xtrace mode. r. Fixed a bug that caused function definitions to be printed with any redirections that should be attached to the entire function before the closing brace. s. Changed the tilde expansion code for Cygwin systems to avoid creating pathnames beginning with `//' if $HOME == `/'. t. Fixed a couple of autoconf tests to avoid creating files with fixed names in /tmp. u. The `trap' and `kill' builtins now know the names of the POSIX.1b real- time signals on systems which support them. 2. Changes to Readline a. Fixed a problem with the single-quote quoting function that could cause buffer overflows. b. Fixed a bug that caused incorrect `stat characters' to be printed if the files being completed were in the root directory and visible-stats was enabled. 3. New Features in Bash a. There is a new `rbash.1' manual page, from the Debian release. b. The `--enable-usg-echo-default' option to `configure' has been renamed to `--enable-xpg-echo-default'. The old option is still there for backwards compatibility. ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-beta2, and the previous version, bash-2.04-beta1. 1. Changes to Bash a. Fixed a bug that could cause pipes to be closed inappropriately in some obscure cases. b. Fixed a bug that caused creation of the exported environment to clobber the current command string if there were any exported shell functions. c. Some changes were made to reduce bash's memory usage. d. Fixed a problem with programmable completion and filenames to be completed containing quote characters. e. Changed the code the removes named pipes created for the <(...) and >(...) expansions to defer removal until after any current shell function has finished executing. f. Fixed a bug in `select' which caused it to not handle the `continue' builtin correctly. g. Autoconf tests added for cygwin32 and mingw32. 2. New Features in Bash a. The `--with-bash-malloc' configure option replaces `--with-gnu-malloc' (which is still there for backwards compatibility). ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-beta1, and the previous version, bash-2.04-alpha1. 1. Changes to Bash a. Fixed a bug in the programmable completion code that occurred when trying to complete command lines containing a `;' or `@'. b. The file descriptor from which the shell is reading a script is now moved to a file descriptor above the user-addressible range. c. Changes to `printf' so that it can handle integers beginning with 0 or 0x as octal and hex, respectively. d. Fixes to the programmable completion code so it handles nonsense like `compgen -C xyz' gracefully. e. The shell no longer modifies the signal handler for SIGPROF, allowing profiling again on certain systems. f. The shell checks for a new window size, if the user has requested it, after a process exits due to a signal. g. Fixed a bug with variables with null values in a program's temporary environment and the bash getenv() replacement. h. `declare' and the other builtins that take variable assignments as arguments now honor `set -a' and mark modified variables for export. i. Some changes were made for --dump-po-strings mode when writing strings with embedded newlines. j. The code that caches export strings from the initial environment now duplicates the string rather than just pointing into the environment. k. The filename completion quoting code now uses single quotes by default if the filename being completed contains newlines, since \ has a special meaning to the parser. l. Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and u_int32_t, respectively to avoid conflicts on certain Unix versions. m. Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x. n. Fixed a problem with hostname-to-ip-address translation in the /dev/(tcp|udp)/hostname/port redirection code. o. The texinfo manual has been reorganized slightly. p. Filename generation (globbing) range comparisons in bracket expressions no longer use strcoll(3) even if it is available, since it has unwanted effects in certain locales. q. Fixed a cosmetic problem in the source that caused the shell to not compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was. r. Fixed a bug in the here-document code tripped when the file descriptor opened to the file containing the text of the here document was the same as a redirector specified by the user. s. Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline' in `time ! pipeline'. t. Fixed a bug with the `wait' builtin which manifested itself when an interrupt was received while the shell was waiting for asynchronous processes in a shell script. u. Fixed the DEBUG trap code so that it has the correct value of $?. v. Fixed a bug in the parameter pattern substitution code that could cause the shell to attempt to free unallocated memory if the pattern started with `/' and an expansion error occurs. w. Fixed a bug in the positional parameter substring code that could cause the shell to loop freeing freed memory. x. Fixed a bug in the positional parameter pattern substitution code so that it correctly handles null replacement strings with a pattern string prefixed with `%' or `#'. y. The shell no longer attempts to import functions from the environment if started with `-n'. z. Fixed a bug that caused `return' in a command substitution executed in a shell function to return from the function in a subshell and continue execution. aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell is restricted. bb. The wait* job control functions now behave better if called when there are no unwaited-for children. cc. Command substitution no longer unconditionally disables job control in the subshell started to run the command. dd. A bug was fixed that occasionally caused traps to mess up the parser state. ee. `bashbug' now honors user headers in the mail message it sends. ff. A bug was fixed that caused the `:p' history modifier to not print the history expansion if the `histverify' option was set. 2. Changes to Readline a. Fixed a bug in the redisplay code for lines with more than 256 line breaks. b. A bug was fixed which caused invisible character markers to not be stripped from the prompt string if the terminal was in no-echo mode. c. Readline no longer tries to get the variables it needs for redisplay from the termcap entry if the calling application has specified its own redisplay function. Readline treats the terminal as `dumb' in this case. d. Fixes to the SIGWINCH code so that a multiple-line prompt with escape sequences is redrawn correctly. 3. New Features in Bash a. `bashbug' now accepts `--help' and `--version' options. b. There is a new `xpg_echo' option to `shopt' that controls the behavior of echo with respect to backslash-escaped characters at runtime. ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-alpha1, and the previous version, bash-2.04-devel. 1. Changes to Bash a. Fixed a bug that could cause core dumps when performing substring expansion. b. Shared object configuration changes for: Solaris, OSF/1 c. The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities for pathname expansion now understands GLOBIGNORE. d. The code that implements `eval' was changed to save the value of the current prompt, so an eval in a shell function called by the programmable completion code will not change the prompt to $PS2. e. Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to config-top.h. If this is defined, all login shells will read the startup files, not just interactive and non-interactive started with the `--login' option. f. Fixed a bug that caused the expansion code to occasionally dump core if IFS contained characters > 128. g. Fixed a problem with the grammar so that a newline is not required after the `))' in the new-style arithmetic for statement; a semicolon may be used as expected. h. Variable indirection may now reference the shell's special variables. i. The $'...' and $"..." constructs are now added to the history correctly if they contain newlines and command-oriented history is enabled. j. It is now an error to try to assign a value to a function-local copy of a readonly shell variable (declared with the `local' builtin). 2. Changes to Readline a. The history file code now uses O_BINARY mode when reading and writing the history file on cygwin32. 3. New Features in Bash a. A new programmable completion facility, with two new builtin commands: complete and compgen. b. configure has a new option, `--enable-progcomp', to compile in the programmable completion features (enabled by default). c. `shopt' has a new option, `progcomp', to enable and disable programmable completion at runtime. d. Unsetting HOSTFILE now clears the list of hostnames used for completion. 4. New Features in Readline a. A new variable, rl_gnu_readline_p, always 1. The intent is that an application can verify whether or not it is linked with the `real' readline library or some substitute. ------------------------------------------------------------------------------ This document details the changes between this version, bash-2.04-devel, and the previous version, bash-2.03-release. 1. Changes to Bash a. System-specific configuration and source changes for: Interix, Rhapsody b. Fixed a bug in execute_cmd.c that resulted in a compile-time error if JOB_CONTROL was not defined. c. An obscure race condition in the trap code was fixed. d. The string resulting from $'...' is now requoted to avoid any further expansion. e. The $'...' quoting syntax now allows backslash to escape a single quote, for ksh-93 compatibility. f. The $"..." quoting syntax now escapes backslashes and double quotes in the translated string when displaying them with the --dump-po-strings option. g. `echo -e' no longer converts \' to '. h. Fixes were made to the extended globbing code to handle embedded (...) patterns better. i. Some improvements were made to the code that unsets `nodelay' mode on the file descriptor from which bash is reading input. j. Some changes were made to the replacement termcap library for better operation on MS-DOS. k. Some changes were made to the tilde expansion code to handle backslash as a pathname separator on MS-DOS. l. The source has been reorganized a little bit -- there is now an `include' subdirectory, and lib/posixheaders has been removed. m. Improvements were made to the `read' builtin so that it makes many fewer read(2) system calls. n. The expansion of $- will include `c' and `s' when those options are supplied at shell invocation. o. Several improvments were made to the completion code: variable completion now works better when there are unterminated expansions, command completion understands quotes better, and completion now works in certain unclosed $(... constructs. p. The arithmetic expansion code was fixed to not need the value of a variable being assigned a value (fixes the "ss=09; let ss=10" bug). q. Some changes were made to make exported environment creation faster. r. The html documentation will be installed into $(htmldir) if that variable has a value when `make install' is run. s. Fixed a bug that would cause the bashrc file to be sourced inappropriately when bash is started by sshd. t. The SSH_CLIENT environment variable is no longer auto-exported. u. A bug that caused redirections with (...) subshells to be performed in the wrong order was fixed. v. A bug that occasionally caused inaapropriate expansion of assignment statements in compound array assignments was fixed. w. The code that parses the words in a compound array assignment was simplified considerably and should work better now. x. Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant when a user attempts to retrieve the status of a terminated background process. y. Fixes to the `printf' builtin so that it doesn't try to expand all backslash escape sequences in the format string before parsing it for % format specifiers. 2. Changes to Readline a. The history library tries to truncate the history file only if it is a regular file. b. A bug that caused _rl_dispatch to address negative array indices on systems with signed chars was fixed. c. rl-yank-nth-arg now leaves the history position the same as when it was called. d. Changes to the completion code to handle MS-DOS drive-letter:pathname filenames. e. Completion is now case-insensitive by default on MS-DOS. f. Fixes to the history file manipulation code for MS-DOS. g. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS. h. Some fixes were made to the redisplay code for better operation on MS-DOS. i. The quoted-insert code will now insert tty special chars like ^C. j. A bug was fixed that caused the display code to reference memory before the start of the prompt string. k. More support for __EMX__ (OS/2). l. A bug was fixed in readline's signal handling that could cause infinite recursion in signal handlers. m. A bug was fixed that caused the point to be less than zero when rl_forward was given a very large numeric argument. n. The vi-mode code now gets characters via the application-settable value of rl_getc_function rather than calling rl_getc directly. 3. New Features in Bash a. The history builtin has a `-d offset' option to delete the history entry at position `offset'. b. The prompt expansion code has two new escape sequences: \j, the number of active jobs; and \l, the basename of the shell's tty device name. c. The `bind' builtin has a new `-x' option to bind key sequences to shell commands. d. There is a new shell option, no_empty_command_completion, which, when enabled, disables command completion when TAB is typed on an empty line. e. The `help' builtin has a `-s' option to just print a builtin's usage synopsys. f. There are several new arithmetic operators: id++, id-- (variable post-increment/decrement), ++id, --id (variabl pre-increment/decrement), expr1 , expr2 (comma operator). g. There is a new ksh-93 style arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done h. The `read' builtin has a number of new options: -t timeout only wait timeout seconds for input -n nchars only read nchars from input instead of a full line -d delim read until delim rather than newline -s don't echo input chars as they are read i. The redirection code now handles several filenames specially: /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or not they are present in the file system. j. The redirection code now recognizes pathnames of the form /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket of the appropriate type to the specified port on the specified host. k. The ksh-93 ${!prefix*} expansion, which expands to the names of all shell variables whose names start with prefix, has been implemented. l. There is a new dynamic variable, FUNCNAME, which expands to the name of a currently-executing function. Assignments to FUNCNAME have no effect. m. The GROUPS variable is no longer readonly; assignments to it are silently discarded. This means it can be unset. 4. New Features in Readline a. Parentheses matching is now always compiled into readline, and enabled or disabled when the value of the `blink-matching-paren' variable is changed. b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. c. MS-DOS systems now use ~/_history as the default history file. d. history-search-{forward,backward} now leave the point at the end of the line when the string to search for is empty, like {reverse,forward}-search-history. e. history-search-{forward,backward} now leave the last history line found in the readline buffer if the second or subsequent search fails. f. New function for use by applications: rl_on_new_line_with_prompt, used when an application displays the prompt itself before calling readline(). g. New variable for use by applications: rl_already_prompted. An application that displays the prompt itself before calling readline() must set this to a non-zero value. ------------------------------------------------------------------------------ -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ( ``Discere est Dolere'' -- chet) Chet Ramey, CWRU chet AT po DOT CWRU DOT Edu http://cnswww.cns.cwru.edu/~chet/ -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com