From 595e3e69254f52a691dae922bc6bf3c4fff54b12 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Thu, 20 Feb 2014 10:25:06 -0500 Subject: [PATCH] commit bash-20140207 snapshot --- CHANGES | 4 +- CHANGES-4.3 | 4 +- CWRU/CWRU.chlog | 41 + CWRU/CWRU.chlog~ | 5813 +++++++++++++++++++++++++++ CWRU/POSIX.NOTES.old | 82 + CWRU/old/set.def.save | 544 +++ CWRU/save/unwind_prot.h.save | 50 + MANIFEST | 1 + bashline.c | 15 +- bashline.c~ | 4211 +++++++++++++++++++ cross-build/cygwin32.cache.old | 42 + doc/FAQ.orig | 1745 ++++++++ doc/bash.0 | 21 +- doc/bash.1 | 3 + doc/bash.html | 16 +- doc/bash.pdf | Bin 312461 -> 312737 bytes doc/bash.ps | 547 +-- doc/bashref.aux | 10 +- doc/bashref.cp | 12 +- doc/bashref.cps | 12 +- doc/bashref.dvi | Bin 721324 -> 721588 bytes doc/bashref.html | 18 +- doc/bashref.info | 315 +- doc/bashref.log | 14 +- doc/bashref.pdf | Bin 463398 -> 463627 bytes doc/bashref.ps | 2113 +++++----- doc/bashref.texi | 4 + doc/bashref.toc | 6 +- doc/builtins.ps | 2 +- doc/rbash.ps | 2 +- examples/loadables/Makefile.in.save | 238 ++ input.c | 2 + lib/readline/doc/Makefile.old | 76 + lib/readline/doc/rltech.texi | 14 +- lib/readline/doc/rluser.texi | 2 + lib/sh/strtrans.c | 7 +- support/mk-takehome | 70 + test.c | 21 + tests/array.right | 8 + tests/array.tests | 2 + tests/array16.sub | 21 + tests/misc/regress/log.orig | 50 + tests/misc/regress/shx.orig | 10 + trap.c | 6 +- 44 files changed, 14631 insertions(+), 1543 deletions(-) create mode 100644 CWRU/CWRU.chlog~ create mode 100644 CWRU/POSIX.NOTES.old create mode 100644 CWRU/old/set.def.save create mode 100644 CWRU/save/unwind_prot.h.save create mode 100644 bashline.c~ create mode 100644 cross-build/cygwin32.cache.old create mode 100644 doc/FAQ.orig create mode 100644 examples/loadables/Makefile.in.save create mode 100644 lib/readline/doc/Makefile.old create mode 100755 support/mk-takehome create mode 100644 tests/array16.sub create mode 100644 tests/misc/regress/log.orig create mode 100644 tests/misc/regress/shx.orig diff --git a/CHANGES b/CHANGES index c6d06495..4f95e42e 100644 --- a/CHANGES +++ b/CHANGES @@ -790,8 +790,8 @@ j. New user-settable variable, show-mode-in-prompt, adds a characters to the beginning of the prompt indicating the current editing mode. k. New application-settable variable: rl_input_available_hook; function to be - called when readline detects there is data available on its input file - descriptor. + called when readline needs to check whether there is data available on its + input source. The default hook checks rl_instream. l. Readline calls an application-set event hook (rl_signal_event_hook) after it gets a signal while reading input (read returns -1/EINTR but readline diff --git a/CHANGES-4.3 b/CHANGES-4.3 index ce0b98a8..9660b342 100644 --- a/CHANGES-4.3 +++ b/CHANGES-4.3 @@ -791,8 +791,8 @@ j. New user-settable variable, show-mode-in-prompt, adds a characters to the beginning of the prompt indicating the current editing mode. k. New application-settable variable: rl_input_available_hook; function to be - called when readline detects there is data available on its input file - descriptor. + called when readline needs to check whether there is data available on its + input source. The default hook checks rl_instream. l. Readline calls an application-set event hook (rl_signal_event_hook) after it gets a signal while reading input (read returns -1/EINTR but readline diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 71594ddd..37311daa 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -5779,3 +5779,44 @@ doc/{bash.1,bashref.texi} - added slight clarifying language to the description of $*, describing what happens when the expansion is not within double quotes + + 2/4 + --- +test.c + - unary_test: add code to -v case so that it interprets `bare' array + references (foo[1]) and returns true if that index has a value + + 2/5 + --- +trap.c + - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag + off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER; + continue with resetting handler in this case. maybe_set_sigchld_trap + will check these things before resetting sigchld trap from + run_sigchld_trap. Fixes (apparently long-standing?) problem reported + by Alexandru Damian + + 2/6 + --- +lib/sh/strtrans.c + - ansic_quote: fixed a bug when copying a printable character that + consumes more than one byte; byte counter was not being incremented. + Bug report from jidanni@jidanni.org + + 2/7 + --- +input.c + - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or + terminating_signal is set (which means QUIT; will longjmp out of this + function), make sure the local buffer variables are zeroed out to + avoid reading past the end of the buffer on the next call. Bug report + from Dan Jacobson + + 2/9 + --- +bashline.c + - command_word_completion_function: if a directory in $PATH contains + quote characters, we need to quote them before passing the candidate + path to rl_filename_completion_function, which performs dequoting on + the pathname it's passed. Fixes bug reported by Ilyushkin Nikita + diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~ new file mode 100644 index 00000000..1f249f92 --- /dev/null +++ b/CWRU/CWRU.chlog~ @@ -0,0 +1,5813 @@ + 2/14/2011 + --------- +[bash-4.2 released] + + 2/15 + ---- +lib/glob/gmisc.c + - fix wmatchlen and umatchlen to avoid going past the end of the + string on an incomplete bracket expression that ends with a + NUL. Partial fix for bug reported by Clark Wang + + 2/16 + ---- +subst.h + - new string extract flag value: SX_WORD. Used when calling + extract_dollar_brace_string to skip over the word in + ${param op word} from parameter_brace_expand + +subst.c + - change parameter_brace_expand to add SX_WORD to flags passed to + extract_dollar_brace_string + - change parameter_brace_expand to use SX_POSIXEXP for all non-posix + word expansion operators that treat single quotes as special, not + just % and # + - change extract_dollar_brace_string to initialize dolbrace_state to + DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use + DOLBRACE_QUOTE. Fixes bug reported by Juergen Daubert + +doc/{bash.1,bashref.texi} + - document the exact expansions here strings undergo + + 2/17 + ---- +lib/readline/vi_mode.c + - make sure that `dd', `cc', and `yy' call vidomove_dispatch from + rl_domove_read_callback. Fixes bug reported by Clark Wang + + +lib/readline/callback.c + - make sure _rl_internal_char_cleanup is called after the + vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char. + Companion to above fix + +doc/{bash.1,bashref.texi} + - make sure that the text describing the rhs of the == and =~ + operators to [[ states that only the quoted portion of the pattern + is matched as a string + + 2/18 + ---- +lib/glob/gmisc.c + - better fix for umatchlen/wmatchlen: keep track of the number of + characters in a bracket expression as the value to increase + matchlen by if the bracket expression is not well-formed. Fixes + bug reported by Clark Wang + +subst.c + - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag + in the word flags. We will not perform word splitting or quote + removal on the result, so we do not want to add quoted nulls if + we see "" or ''. Fixes bug reported by Mike Frysinger + + + 2/19 + ---- +variables.c + - new function, int chkexport(name), checks whether variable NAME is + exported and remakes the export environment if necessary. Returns + 1 if NAME is exported and 0 if not + - call chkexport(name) to get tzset to look at the right variable in + the environment when modifying TZ in sv_tz. Don't call tzset if + chkexport doesn't indicate that the variable is exported + +variables.h + - new extern declaration for chkexport + + +{parse.y,builtins/printf.def} + - call sv_tz before calling localtime() when formatting time strings + in prompt strings or using printf. Fixes bug reported by + Dennis Williamson + +execute_cmd.c + - modify fix of 2/9 to add casts when those variables are passed to + functions; some compilers throw errors instead of warnings. Report + and fix from Joachim Schmitz + +support/shobj-conf + - add a stanza for nsk on the Tandem from Joachim Schmitz + + +{shell,lib/readline/shell}.c + - Tandem systems should use getpwnam (getlogin()); for some reason + they don't do well with using getuid(). Fix from Joachim Schmitz + + + 3/1 + --- +variables.c + - make sure that the return value from find_variable is non-null + before trying to use it in chkexport. Fixes bug reported by + Evangelos Foutras + + 3/3 + --- +parse.y + - when adding $$ to the current token buffer in read_token_word(), + don't xmalloc a buffer for two characters and then strcpy it, just + copy the characters directly into the token buffer. Fix from + Michael Whitten + +execute_cmd.c + - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to + be expanded, so "" doesn't add CTLNUL. Similar to fix of 2/18 to + expand_string_for_rhs. Fixes bug reported by Nathanael D. Noblet + and Matthias Klose + +parse.y + - fix extended_glob case of read_token_word to allocate an extra + space in the buffer for the next character read after the extended + glob specification if it's a CTLESC or CTLNUL. Report and fix from + Michael Witten + - fix shell expansions case of read_token_word to allocate an extra + space in the buffer for the next character read after the shell + expansion if it's a CTLESC or CTLNUL. Report and fix from + Michael Witten + - TENTATIVE: fix read_token_word to reduce the amount of buffer space + required to hold the translated and double-quoted value of $"..." + strings. Report and fix from Michael Witten + - change code around got_character and got_escaped_character labels to + make sure that we call RESIZE_MALLOCED_BUFFER before adding the + CTLESC before a CTLESC or CTLNUL, and before adding the character if + we're not adding a CTLESC. Report and fix from + Michael Witten + +subst.c + - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that + parameter expansion is on rhs of assignment statement. That inhibits + word splitting + - change param_expand to call string_list_dollar_at with quoted == 1 + if PF_ASSIGNRHS is set, so it will quote IFS characters in the + positional parameter before separating them with the first char of + $IFS. This keeps the rhs from being split inappropriately. Fixes + bug reported by Andres Perera + + 3/4 + --- +lib/readline/bind.c + - add a missing free of `names' in rl_function_dumper. Bug report + and fix from Michael Snyder + + 3/5 + --- +lib/readline/rltty.c + - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd + if rl_instream is not set, like rl_prep_terminal + + 3/6 + --- +lib/readline/display.c + - fix rl_message to use a dynamically-allocated buffer instead of a + fixed-size buffer of 128 chars for the `local message prompt'. Bug + report and fix from Micah Cowan + + 3/7 + --- +jobs.c + - add sentinel to wait_sigint_handler so it only sets wait_sigint_received + if waiting_for_child is non-zero; otherwise, it restores the old + SIGINT handler and sends itself the SIGINT + - set waiting_for_child around the calls to waitchld that use it to + synchronously wait for a process + - change logic that decides whether or not the child process blocked + or handled SIGINT based on whether or not waitpid returns -1/EINTR + and the shell receives a SIGINT and the child does not exit. If + the child later exits due to SIGINT, cancel the assumoption that it + was handled + - instead of testing whether or not the child exited due to SIGINT + when deciding whether the shell should act on a SIGINT it received + while waiting, test whether or not we think the child caught + SIGINT. If it did, we let it go (unless the shell has it trapped); + if it did not catch it, the shell acts on the SIGINT. Fix from + Linus Torvalds , bug report originally + from Oleg Nesterov + + 3/8 + --- +shell.c + - initialize no_line_editing to 1 if READLINE is not defined -- we + can't have line editing without readline + + 3/12 + ---- +lib/readline/signals.c + - add SIGHUP to the set of signals readline handles + +lib/readline/doc/rltech.texi + - document that SIGHUP is now part of the set of signals readline + handles + +lib/readline/input.c + - if _rl_caught_signal indicates that read() was interrupted by a + SIGHUP or SIGTERM, return READERR or EOF as appropriate + - call rl_event_hook, if it's set, if call to read in rl_getc + returns -1/EINTR. If rl_event_hook doesn't do anything, this + continues the loop as before. This handles the other fatal + signals + +execute_cmd.c + - add a couple of QUIT; calls to execute_disk_command and + execute_simple_command to improve responsiveness to interrupts + and fatal signals + +input.c + - rearrange getc_with_restart so that the return values from read() + are handled right + +parse.y + - don't need to set terminate_immediately in yy_stream_get, since + getc_with_restart checks for terminating signals itself + - since readline returns READERR on SIGHUP or SIGTERM, don't need + to set terminate_immediately. Still doesn't handle other + signals well -- will have to check that some more + +bashline.c + - new function, bash_event_hook, for rl_event_hook. Just checks for + terminating signals and acts on them using CHECK_TERMSIG. + - set rl_event_hook to bash_event_hook + +builtins/read.def + - take out setting terminate_immediately; add calls to CHECK_TERMSIG + after read calls + +doc/{bash.1,bashref.texi} + - move the text describing the effect of negative subscripts used to + reference indexed array elements to the paragraphs describing + ${parameter[subscript]}, since that's where they are implemented. + Pointed out by Christopher F. A. Johnson + +arrayfunc.[ch],subst.c + - array_expand_index now takes a new first argument: a SHELL_VAR * + of the array variable being subscripted. Can be used later to fully + implement negative subscripts + + 3/14 + ---- +lib/glob/glob.c + - fix mbskipname to not turn the directory entry name into a wide char + string if the conversion of the pattern to a wide char string fails + - fix mbskipname to call skipname if either the pattern or the filename + can't be converted into a wide-char string + +lib/glob/xmbsrtowcs.c + - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and + short-circuit with failure in that case. Fixes bug reported by + Roman Rakus + + 3/15 + ---- +bashline.c + - new variable, bash_filename_quote_characters to store the value + assigned to rl_filename_quote_characters so it can be restored + if changed. + - change bashline_reset and attempt_shell_completion to restore + rl_filename_quote_characters if not set to default + + 3/22 + ---- +lib/glob/glob.c + - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs + fails to convert the pathname to a wide-character string + +lib/glob/xmbsrtowcs.c + - xdupmbstowcs2: change to fix problem with leading '\\' (results in + nms == 0, which causes it to short-circuit with failure right + away). Fixes bug pointed out by Werner Fink + - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the + next single-byte character and going on + - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC + bytes; try to avoid calls to realloc (even if they don't actually + result in more memory being allocated) + + 3/24 + ---- +doc/{bash.1,bashref.texi} + - slightly modify BASH_SUBSHELL description based on complaint from + Sam Liddicott + + 3/25 + ---- +trap.c + - change free_trap_strings to not call free_trap_string for signals + that are being ignored, like reset_or_restore_signal_handlers. + Fixes bug reported by Satoshi Takahashi + + 3/26 + ---- +lib/readline/rltypedefs.h + - remove old Function/VFunction/CPFunction/CPPFunction typedefs as + suggested by Tom Tromey + +lib/readline/rlstdc.h + - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from + config.h.in to here because declaration of rl_message in + readline.h uses the defines. This makes it hard for another packages + to use after the header files are installed, since config.h is not + one of the installed files. Suggested by Tom Tromey + + + 3/27 + ---- +print_cmd.c + - change indirection_string from a static buffer to a dynamic one + managed by indirection_level_string(), so we don't end up truncating + PS4. Suggested by Dennis Williamson + +lib/readline/shell.c + - change sh_set_lines_and_columns to use static buffers instead of + allocating the buffers to pass to setenv/putenv + +lib/readline/terminal.c + - change _rl_get_screen_size to not call sh_set_lines_and_columns if + ignore_env == 0 + - _rl_sigwinch_resize_terminal: new function to just retrieve terminal + size, ignoring environment + +lib/readline/rlprivate.h + - new external declaration for _rl_sigwinch_resize_terminal() (currently + unused) + +lib/readline/signals.c + - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH + - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just + leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle + - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH. + Should fix hang when sending multiple repeated SIGWINCH reported by + Henning Bekel + + 3/29 + ---- +lib/sh/snprintf.c + - include math.h for any defines for isinf/isnan + - use code from gnulib documentation to implement isinf/isnan if they + are not defined + +configure.in + - don't check for isinf or isnan; c99 says they're macros anyway + +config.h.in + - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used + by snprintf.c + + 4/2 + --- +braces.c + - brace_gobbler: fix to understand double-quoted command substitution, + since the shell understands unquoted comsubs. Fixes bug reported + by Michael Whitten + +lib/readline/display.c + - include on MDOS + - get and set screen size using DJGPP-specific calls on MSDOS + - move cursor up clear screen using DJGPP-specific calls + - don't call tputs on DJGPP; there is no good terminfo support + +lib/readline/terminal.c + - include on MDOS + - get and set screen size using DJGPP-specific calls on MSDOS + - use DJGPP-specific initialization on MSDOS, zeroing all the + _rl_term_* variables + - don't call tputs on DJGPP; there is no good terminfo support + DJGPP support from Eli Zaretskii + + 4/6 + --- + +config-top.h + - change DEFAULT_PATH_VALUE to something more useful and modern + + 4/8 + --- +tests/printf2.sub + - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect. + Reported by Cedric Arbogast + + 4/11 + ---- +include/chartypes.h + - fix a couple of dicey defines (though ones that don't cause any + compiler warnings) in IN_CTYPE_DOMAIN + +doc/{bashref.texi,bash.1} + - add note referring to duplicating file descriptors in sections + describing redirecting stdout and stderr and appending to stdout + and stderr. Suggested by Matthew Dinger + +pcomplete.c + - it_init_helptopics: new function to support completing on help topics, + not just builtins + - it_helptopics: new programmable completion list of help topics + - build list of helptopic completions in gen_action_completions on + demand + +pcomplete.h + - new extern declaration for it_helptopics + +builtins/complete.def + - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN, + since there are more help topics than just builtins. Suggested by + Clark Wang + + 4/12 + ---- +print_cmd.c + - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS + before ending the body of the command, so heredocs get attached to + the right command instead of to the loop. From gentoo bug 363371 + http://bugs.gentoo.org/show_bug.cgi?id=363371 + +execute_cmd.c + - change coproc_pidchk to unset the appropriate shell variables when + the (currently single) known coproc pid terminates + - cleanup and new functions to fully support multiple coprocesses when + and if I decide to go there + + 4/13 + ---- +print_cmd.c + - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS + after call to make_command_string_internal before printing closing + `}' + - fix make_command_string_internal to add a call to + PRINT_DEFERRED_HEREDOCS after recursive call to + make_command_string_internal in case cm_subshell before printing + closing `)' + + 4/14 + ---- +print_cmd.c + - change overlapping strcpy in named_function_string to memmove + +sig.h + - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just + restores an old signal mask + +trap.c + - set_signal: instead of setting the signal handler to SIG_IGN while + installing the new trap handler, block the signal and unblock it + after the new handler is installed. Fixes bug reported by Roman + Rakus + + 4/15 + ---- +doc/{bash.1,bashref.texi} + - make it clear that enabling monitor mode means that all jobs run in + separate process groups + + 4/18 + ---- +builtins/fc.def + - update fix of 4/15/2010 to not take saved_command_line_count into + account when stepping down the history list to make sure that + last_hist indexes something that is valid. Fixes bug reported by + + + 4/19 + ---- +builtins/fc.def + - fc_gethnum: make sure the calculation to decide the last history + entry is exactly the same as fc_builtin. Fixes bug uncovered by + fix of 4/18 to stop seg fault + + 4/22 + ---- +lib/readline/terminal.c + - change _rl_enable_meta_key to set a flag indicating that it sent the + enable-meta sequence + - _rl_disable_meta_key: new function to turn off meta mode after we + turned it on with _rl_enable_meta_key + +lib/readline/rlprivate.h + - extern declaration for _rl_disable_meta_key + +configure.in + - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited + from the environment. Fixes HP/UX build problem reported by + "Daniel Richard G." + + 4/26 + ---- +config-top.h + - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy + to enable via configure option or editing this file + + 4/29 + ---- +lib/sh/eaccess.c + - freebsd provides faccessat, with the same misfeature as their eaccess + and access implementations (X_OK returns true for uid==0 regardless + of the actual file permissions), so reorganize code to check the + file permissions as with eaccess. Report and fix from Johan Hattne + + + 5/2 + --- +doc/{bash.1,bashref.texi} + - add forward reference to `Pattern Matching' from `Pathname + Expansion', suggested by Greg Wooledge + + 5/5 + --- +pcomplib.c + - the bash_completion project now distributes over 200 completions + for various programs, with no end in sight, so increase the value + of COMPLETE_HASH_BUCKETS from 32 to 128 + +pathexp.c + - quote_string_for_globbing: make sure CTLESC quoting CTLESC is + translated into \ even if the flags include QGLOB_REGEXP. + We don't want to process the second CTLESC as a quote character. + Fixes bug reported by Shawn Bohrer + + 5/6 + --- +builtins/printf.def + - change PRETURN to not call fflush if ferror(stdout) is true + - if a call to one of the stdio functions or printstr leaves + ferror(stdout) true, and PRETURN is going to be called, let PRETURN + print the error message rather than doubling up the messages. Fixes + problem reported by Roman Rakus + + 5/9 + --- +doc/{bash.1,bashref.texi} + - add note to the effect that lists inside compound command can be + terminated by newlines as well as semicolons. Suggested by + Roman Byshko + + 5/10 + ---- +subst.c + - remove_quoted_nulls: fix problem that caused it to skip over the + character after a CTLNUL, which had the effect of skipping every + other of a series of CTLNULs. Fixes bug reported by + Marten Wikstrom + + 5/11 + ---- +subst.c + - extract_process_subst: add SX_COMMAND flag to call to + extract_delimited_string, since we're expanding the same sort of + command as command substitution. Fixes bug reported in Ubuntu + bug 779848 + + 5/12 + ---- +configure.in + - set the prefer_shared and prefer_static variables appropriately + depending on the value of $opt_static_link + +aclocal.m4 + - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the + libraries it's searching for if the prefer_shared variable is "no". + Fixes problem reported by Cedric Arbogast + + 5/13 + ---- +lib/readline/readline.c + - _rl_internal_teardown: add call to _rl_disable_meta_key to make the + meta key active only for the duration of the call to readline() + - _rl_internal_setup: move call to _rl_enable_meta_key here from + readline_initialize_everything so the meta key is active only for + the duration of the call to readline(). Suggestion from Miroslav + Lichvar + +builtins/help.def + - help_builtin: change strncmp to strcmp so that `help read' no longer + matches `readonly'. Suggested by Clark Wang + +config.h.in + - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests + for libintl + +lib/malloc/malloc.c + - internal_free: don't use the cached value of memtop when deciding + whether or not to adjust the break and give memory back to the kernel + when using the GNU C library, since glibc uses sbrk for its own + internal purposes. From Debian bug 614815, reported by Samuel + Thibault + +aclocal.m4 + - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN + to avoid warning about not using AC_LANG_SOURCE + + 5/14 + ---- +bashline.[ch] + - two new functions, bashline_set_event_hook and bashline_reset_event_hook, + to set rl_event_hook to bash_event_hook and back to NULL, respectively + - don't set rl_event_hook unconditionally + +sig.c + - termsig_sighandler: if the shell is currently interactive and + readline is active, call bashline_set_event_hook to cause + termsig_handler to be called via bash_event_hook when the shell + returns from the signal handler + + 5/15 + ---- +lib/readline/display.c + - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0 + for UTF-8 combining characters. Added workaround dependent on + MACOSX. Fixes problem pointed out by Thomas De Contes + + + 5/16 + ---- +lib/readline/rlmbutil.h + - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining + characters on systems where wcwidth is broken (e.g., Mac OS X). + +lib/readline/{complete,display,mbutil}.c + - use WCWIDTH instead of wcwidth + + 5/17 + ---- +lib/readline/display.c + - update_line: after computing ofd and nfd, see whether the next + character in ofd is a zero-width combining character. If it is, + back ofd and nfd up one, so the base characters no longer compare + as equivalent. Fixes problem reported by Keith Winstein + + +lib/readline/nls.c + - _rl_utf8locale: new flag variable, set to non-zero if the current + locale is UTF-8 + - utf8locale(): new function, returns 1 if the passed lspec (or the + current locale) indicates that the locale is UTF-8. Called from + _rl_init_eightbit + +lib/readline/rlprivate.h + - extern declaration for _rl_utf8locale + +locale.c + - locale_utf8locale: new flag variable, set to non-zero if the current + locale is UTF-8 (currently unused) + - locale_isutf8(): new function, returns 1 if the passed lspec (or the + current locale) indicates that the locale is UTF-8. Should be called + whenever the locale or LC_CTYPE value is modified + +aclocal.m4 + - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns + zero-width characters like unicode combining characters as having + display length 1; define WCWIDTH_BROKEN in this case + +config.h.in + - WCWIDTH_BROKEN: new define + +lib/readline/rlmbutil.h + - change WCWIDTH macro to use _rl_utf8locale and the full range of + Unicode combining characters (U+0300-U+036F) + + 5/19 + ---- +lib/readline/rlprivate.h + - _rl_search_context: new member, prevc, will hold character read + prior to lastc + +lib/readline/isearch.c + - _rl_isearch_dispatch: if the character causes us to index into + another keymap, save that character in cxt->prevc + - _rl_isearch_dispatch: if we index into another keymap, but don't + find a function that's special to i-search, and the character that + caused us to index into that keymap would have terminated the + search, push back cxt->prevc and cxt->lastc to make it appear as + if `prevc' terminated the search, and execute lastc as a command. + We have to push prevc back so we index into the same keymap before + we read lastc. Fixes bug report from Davor Cubranic + + + 5/20 + ---- +expr.c + - expr_bind_variable: pay attention to the return value from + bind_variable and check whether or not we should error out due to + a readonly or noassign variable. Fixes bug reported by Eric + Blake + + 5/26 + ---- + +lib/readline/search.c + - include histlib.h for ANCHORED_SEARCH defines + - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for + the duration of a history search + - rl_history_search_reinit: takes a new flags variable, defines whether + or not the search is anchored; assigned to rl_history_search_flags + - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to + beginning of search string; otherwise search string is unmodified + - rl_history_search_internal: set rl_point appropriately based on + whether or not rl_history_search_flags includes ANCHORED_SEARCH + - rl_history_substr_search_forward: new function, for non-anchored + substring search forward through history for string of characters + preceding rl_point + - rl_history_substr_search_backward: new function, for non-anchored + substring search backward through history for string of characters + preceding rl_point. Original code from Niraj Kulkarni + + +lib/readline/readline.h + - extern declarations for rl_history_substr_search_{for,back}ward + +lib/readline/funmap.c + - history-substring-search-forward: new bindable command, invokes + rl_history_substr_search_forward + - history-substring-search-backward: new bindable command, invokes + rl_history_substr_search_backward + +lib/readline/doc/{rluser.texi,readline.3} + - document history-substring-search-forward and + history-substring-search-backward + + 5/27 + ---- +{nojobs,jobs}.c + - add support for DONT_REPORT_SIGTERM so that the shell doesn't print + a message when a job exits due to SIGTERM since that's the default + signal sent by the kill builtin. Suggested by Marc Herbert + + +config-top.h + - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out + by default + + 5/28 + ---- +lib/readline/bind.c + - _rl_skip_to_delim: skip to a closing double quote or other delimiter, + allowing backslash to quote any character, including the delimiter + - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline + code + - rl_parse_and_bind: allow quoted strings as the values of string + variables. Variable values without double quotes have trailing + whitespace removed (which still allows embedded whitespace, for + better or worse). Fixes problem with string variables not matching + in `set' command if values happen to have trailing spaces or tabs + (debian bash bug #602762), but introduces slight incompatibility. + + 5/29 + ---- +doc/{bash.1,bashref.texi} + - clarify unset description to specify that without options, a + variable, then a shell function if there is no variable by that + name, is unset. Fixes discrepancy reported by Mu Qiao + + + 6/4 + ---- +doc/{bash.1,bashref.texi} + - clarify description of LINES and COLUMNS (and checkwinsize shopt + option) to make it clear that only interactive shells set a + handler for SIGWINCH and update LINES and COLUMNS. Original + report submitted by Jonathan Nieder + +arrayfunc.c + - expand_compound_array_assignment: defer expansion of words between + parens when performing compound assignmnt to an associative array + variable + - assign_compound_array_list: perform the same expansions when doing + a compound array assignment to an associative array variable as + when doing a straight array index assignment. The idea is that + foo=( [ind1]=bar [ind2]=quux) + is the same as + foo[ind1]=bar ; foo[ind2]=quux + + This fixes problems with double-expansion and quote removal being + performed on the array indices + + 6/13 + ---- +doc/{bash.1,bashref.texi} + - Add a little text to make it clear that the locale determines how + range expressions in glob patterns are handled. + + + 6/21 + ---- +builtins/read.def + - display a message and return error status if -a is used with an + existing associative array. Fixes bug reported by Curtis Doty + + + 6/24 + ---- +{jobs,nojobs}.c + - non-interactive shells now react to the setting of checkwinsize + and set LINES and COLUMNS after a foreground job exits. From a + suggestion by Leslie Rhorer + +doc/{bash.1,bashref.texi} + - checkwinsize: remove language saying that only interactive shells + check the window size after each command + +lib/readline/histfile.c + - history_backupfile: new file, creates a backup history file name + given a filename (appending `-') + - history_do_write: when overwriting the history file, back it up + before writing. Restore backup file on a write error. Suggested + by chkno@chkno.net + +bashline.c + - find_cmd_name: two new arguments, return the start and end of the + actual text string used to find the command name, without taking + whitespace into account + - attempt_shell_completion: small changes to make sure that completion + attempted at the beginning of a non-empty line does not find a + programmable completion, even if the command name starts at point + - attempt_shell_completion: small change to make sure that completion + does not find a progcomp when in whitespace before the command + name + - attempt_shell_completion: small change to make sure that completion + does not find a progcomp when point is at the first character of a + command name, even when there is leading whitespace (similar to + above). Fixes problems noted by Ville Skytta + +subst.c + - brace_expand_word_list: since the individual strings in the strvec + returned by brace_expand are already allocated, don't copy them to + newly-allocated memory when building the WORD_LIST, just use them + intact + +locale.c + - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change + the locale to avoid a function call every time we need to read it + +shell.h + - new struct to save shell_input_line and associated variables: + shell_input_line_state_t + - add members of sh_parser_state_t to save and restore token and the + size of the token buffer + +parse.y + - {save,restore}_input_line_state: new functions to save and restore + shell_input_line and associated variables + - {save,restore}_parser_state: add code to save and restore the token + and token buffer size + - xparse_dolparen: call save_ and restore_input_line_state to avoid + problems with overwriting shell_input_line when we recursively + call the parser to parse a command substitution. Fixes bug + reported by Rui Santos + +include/shmbutil.h + - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and + similar macros + +lib/glob/smatch.c + - rangecmp,rangecmp_wc: change to take an additional argument, which + forces the use of strcoll/wscoll when non-zero. If it's 0, a new + variable `glob_asciirange' controls whether or not we use strcoll/ + wscoll. If glob_asciirange is non-zero, we use straight + C-locale-like ordering. Suggested by Aharon Robbins + + + 6/30 + ---- +execute_cmd.c + - execute_pipeline: make sure the lastpipe code is protected by + #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort + + + 7/2 + --- +lib/readline/complete.c + - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around + completion functions that touch the file system. Idea from Jan + Kratochvil and the GDB development + team + +lib/readline/signals.c + - rl_signal_handler: if we're in callback mode, don't interrupt + immediately on a SIGWINCH + + 7/3 + --- +bashline.c + - set_directory_hook: and its siblings are a new set of functions to + set, save, and restore the appropriate directory completion hook + - change callers to use {set,save,restore}_directory_hook instead of + manipulating rl_directory_rewrite_hook directly + - dircomplete_expand: new variable, defaults to 0, if non-zero causes + directory names to be word-expanded during word and filename + completion + - change {set,save,restore}_directory_hook to look at dircomplete_expand + and change rl_directory_completion_hook or rl_directory_rewrite_hook + appropriately + +bashline.h + - extern declaration for set_directory_hook so shopt code can use it + + 7/6 + --- +builtins/shopt.def + - globasciiranges: new settable shopt option, makes glob ranges act + as if in the C locale (so b no longer comes between A and B). + Suggested by Aharon Robbins + + 7/7 + --- +doc/{bash.1,bashref.texi} + - document new `globasciiranges' shopt option + + 7/8 + --- +builtins/shopt.def + - direxpand: new settable option, makes filename completion expand + variables in directory names like bash-4.1 did. + - shopt_set_complete_direxpand: new function, does the work for the + above by calling set_directory_hook + +doc/{bash.1,bashref.texi} + - document new `direxpand' shopt option + + 7/15 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: when adding character to search string, use + cxt->lastc (which we use in the switch statement) instead of c, + since lastc can be modified earlier in the function + + 7/18 + ---- +lib/readline/rlprivate.h + - _rl_search_context: add another member to save previous value of + (multibyte) lastc: pmb is to mb as prevc is to lastc + +lib/readline/isearch.c: + - _rl_isearch_dispatch: if a key sequence indexes into a new keymap, + but doesn't find any bound function (k[ind].function == 0) or is + bound to self-insert (k[ind].function == rl_insert), back up and + insert the previous character (the one that caused the index into a + new keymap) and arrange things so the current character is the next + one read, so both of them end up in the search string. Fixes bug + reported by Clark Wang + - _rl_isearch_dispatch: a couple of efficiency improvements when adding + characters to the isearch string + + 7/24 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb + appropriately when in a multibyte locale + +doc/{bash.1,bashref.texi} + - correct description of {x}>file (and other redirection operators + that allocate a file descriptor) to note the the fd range is + greater than or equal to 10. Fixes problem reported by + Christian Ullrich + +lib/readline/signals.c + - rl_signal_handler: don't interrupt immediately if in callback mode + +lib/readline/callback.c + - rl_callback_read_char: install signal handlers only when readline + has control in callback mode, so readline's signal handlers aren't + called when the application is active (e.g., between the calls to + rl_callback_handler_install and rl_callback_read_char). If the + readline signal handlers only set a flag, which the application + doesn't know about, the signals will effectively be ignored until + the next time the application calls into the readline callback + interface. Fixes problem of calling unsafe functions from signal + handlers when in callback mode reported by Jan Kratochvil + + +execute_cmd.c + - fix_assignment_words: when in Posix mode, the `command' builtin + doesn't change whether or not the command name it protects is an + assignment builtin. One or more instances of `command' + preceding `export', for instance, doesn't make `export' treat its + assignment statement arguments differently. Posix interpretation + #351 + +doc/{bash.1,bashref.texi} + - document new Posix-mode behavior of `command' when preceding builtins + that take assignment statements as arguments + +builtins/printf.def + - printstr: if fieldwidth or precision are < 0 or > INT_MAX when + supplied explicitly (since we take care of the `-' separately), + clamp at INT_MAX like when using getint(). Fixes issue reported + by Ralph Coredroy + + 7/25 + ---- +lib/readline/chardefs.h + - isxdigit: don't define if compiling with c++; declared as a c++ + template function. Fixes bug reported by Miroslav Lichvar + + +builtins/printf.def + - getint: if garglist == 0, return whatever getintmax returns (0). + Fixes bug reported by Ralph Coredroy + + 7/28 + ---- +doc/{bash.1,bashref.texi} + - minor changes to the descriptions of the cd and pushd builtins + +lib/sh/zread.c + - zsyncfd: change variable holding return value from lseek to + off_t. Bug report and fix from Gregory Margo + + 8/1 + --- +expr.c + - don't check for division by 0 when in a context where no evaluation + is taking place. Fixes bug reported by dnade.ext@orange-ftgroup.com + + 8/6 + --- +execute_cmd.c + - execute_command_internal: the parent branch of the subshell code + (where the child calls execute_in_subshell) should not close all + open FIFOs with unlink_fifo_list if it's part of a shell function + that's still executing. Fixes bug reported by Maarten Billemont + + + 8/9 + --- +builtins/common.c + - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument + +builtins/return.def + - return_builtin: just call get_exitstat to get the return status, + let it handle proper parsing and handling of arguments. Fixes + issue most recently raised by Linda Walsh . + Reverses change from 9/11/2008 (see above) + + 8/16 + ---- +doc/{bash.1,bashref.texi} + - clean up `set -e' language to make it clearer that any failure of + a compound command will cause the shell to exit, not just subshells + and brace commands + + 8/17 + ---- +configure.in + - make the various XXX_FOR_BUILD variables `precious' to autoconf to + avoid stale data + - change how CC_FOR_BUILD is initialized when cross-compiling and not, + but do not change behavior + - initialize CFLAGS_FOR_BUILD to -g when cross-compiling + - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty + when cross-compiling + - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when + CFLAGS not inherited from environment (like effect of old + auto_cflags variable) + - substitute LIBS_FOR_BUILD into output Makefiles + [changes inspired by bug report from Nathan Phillip Brink + -- gentoo bug 378941] + +builtins/Makefile.in + - substitute LIBS_FOR_BUILD from configure, not strictly initialized + to $(LIBS) + + 8/27 + ---- +doc/{bash.1,bashref.texi} + - minor changes to the here string description to clarify the + expansions performed on the word + +support/shobj-conf + - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes + to darwin stanzas. Fixes readline bug reported by Vincent + Sheffer + +lib/sh/strtrans.c + - ansic_wshouldquote: check a string with multi-byte characters for + characters that needs to be backslash-octal escaped for $'...' + - ansic_shouldquote: if is_basic fails for one character, let + ansic_wshouldquote examine the rest of the string and return what + it returns. From a patch sent by Roman Rakus + + 8/30 + ---- +lib/sh/strtrans.c + - ansic_quote: changes to quote (or not) multibyte characters. New + code converts them to wide characters and uses iswprint to check + valid wide chars. From a patch sent by Roman Rakus + + + 9/7 + --- +lib/sh/shquote.c + - sh_backslash_quote: change to be table-driven so we can use a + different table if we want to + - sh_backslash_quote: takes a second char table[256] argument; + +externs.h + - sh_backslash_quote: add second argument to function prototype + +bashline.c,braces.c,parse.y,builtins/printf.def + - change callers of sh_backslash_quote to add second argument + +bashline.c + - filename_bstab: table of characters to pass to sh_backslash_quote; + characters with value 1 will be backslash-quoted + - set_filename_bstab: turn on characters in filename backslash-quote + table according to passed string argument + - call set_filename_bstab every time rl_filename_quote_characters is + assigned a value + - bash_quote_filename: call sh_backslash_quote with filename_bstab + as second argument. This allows other characters in filenames to + be quoted without quoting, for instance, a dollar sign in a shell + variable reference + + 9/8 + --- +bashline.c + - complete_fullquote: new variable, controls table passed to + sh_backslash_quote. If non-zero (the default), the standard set + of shell metacharacters -- as in bash versions up to and including + bash-4.2 -- gets backslash-quoted by the completion code. If zero, + sh_backslash_quote gets the table with the characters in the + variable reference removed, which means they are removed from the + set of characters to be quoted in filenames + + 9/10 + ---- +bashline.c + - bash_filename_stat_hook: new function, designed to expand variable + references in filenames before readline passes them to stat(2) + to determine whether or not they are a directory + + 9/15 + ---- +builtins/declare.def + - if assign_array_element fails due to a bad (or empty) subscript, mark + it as an assignment error and don't attempt any further processing + of that declaration. Fixes segfault bug reported by Diego Augusto + Molina + + 9/19 + ---- +expr.c + - exppower: replace the simple exponentiation algorithm with an + implementation of exponentiation by squaring. Inspired by report + from Nicolas ARGYROU + +bashline.c + - bash_quote_filename: check for rtext being non-null before + dereferencing it + - set_saved_history: operate_and_get_next assumes that the previous + line was added to the history, even when the history is stifled and + at the max number of entries. If it wasn't, make sure the history + number is incremented properly. Partial fix for bug reported by + gregrwm + +doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi + - minor editorial changes inspired by suggestions from + Roger Zauner + + 9/20 + ---- +lib/intl/localealias.c + - read_alias_file: close resource leak (fp) when returning on error + + 9/22 + ---- +execute_command.c + - execute_intern_function: implement Posix interpretation 383 by making + it an error to define a function with the same name as a special + builtin when in Posix mode. + http://austingroupbugs.net/view.php?id=383#c692 + + 9/25 + ---- +doc/{bash.1,bashref.texi} + - formatting and some content changes from Benno Schulenberg + + - document new posix-mode behavior from interp 383 change of 9/22 + + 9/30 + ---- +execute_cmd.c + - shell_execve: add strerror to error message about executable file + that shell can't execute as a shell script. From suggestion by + daysleeper + + 10/1 + ---- +bashhist.c + - maybe_add_history: act as if literal_history is set when parser_state + includes PST_HEREDOC, so we save the bodies of here-documents just + as they were entered. Fixes bug reported by Jonathan Wakely + + - bash_add_history: make sure that the second and subsequent lines of + a here document don't have extra newlines or other delimiting + chars added, since they have the trailing newline preserved, when + `lithist' is set and history_delimiting_chars isn't called + +execute_cmd.c + - execute_command_internal: avoid fd exhaustion caused by using + process substitution in loops inside shell functions by using + copy_fifo_list and close_new_fifos (). Fixes debian bash bug + 642504 + +lib/readline/complete.c + - new variable, rl_filename_stat_hook, used by append_to_match. If + filename completion is desired, and rl_filename_stat_hook points + to a function, call that function to expand the filename in an + application-specific way before calling stat. + +bashline.c + - bash_default_completion: if variable completion returns a single + match, use bash_filename_stat_hook and file_isdir to determine + whether or not the variable name expands to a directory. If it + does, set the filename_append_character to `/'. This is not + perfect, so we will see how it works out. Adds functionality + requested by Peter Toft and Patrick Pfeifer + + - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things + like $HOME/Downloads (after completion) have a slash appended. + In general, this causes the stat hook to be called whenever + filename completion is appended. Adds functionality requested by + Patrick Pfeifer + +lib/readline/readline.h + - new extern declaration for rl_filename_stat_hook + +lib/readline/doc/rltech.texi + - rl_directory_rewrite_hook: now documented + - rl_filename_stat_hook: document + +pcomplete.c + - gen_action_completions: in the CA_DIRECTORY case, turn off + rl_filename_completion_desired if it was off before we called + rl_filename_completion_function and we didn't get any matches. + Having it on causes readline to quote the matches as if they + were filenames. Adds functionality requested by many, + including Clark Wang + +assoc.[ch] + - assoc_replace: new function, takes the same arguments as + assoc_insert, but returns the old data instead of freeing it + - assoc_insert: if the object returned by hash_insert doesn't have + the same value for its key as the key passed as an argument, we + are overwriting an existing value. In this case, we can free the + key. Fixes bug reported by David Parks + + 10/5 + ---- +print_cmd.c + - indirection_level_string: small change to only re-enable `x' + option after calling decode_prompt_string if it was on before. In + normal mode, it will be, but John Reiser + has a novel use for that code in conjunction with a pre-loaded + shared library that traces system call usage in shell scripts + + 10/10 + ----- +Makefile.in + - Fix from Mike Frysinger to avoid trying to + build y.tab.c and y.tab.h with two separate runs of yacc if + parse.y changes. Problem with parallel makes + - Fix from Mike Frysinger to avoid subdirectory + builds each trying to make version.h (and all its dependencies) + +lib/sh/Makefile.in + - remove some dependencies on version.h where it doesn't make sense + +variables.c + - initialize_shell_variables: while reading the environment, a shell + running in posix mode now checks for SHELLOPTS being readonly (it + gets set early on in main()) before trying to assign to it. It + saves an error message and the variable gets parsed as it should. + Fixes bug reported by Len Giambrone + + 10/14 + ----- +doc/{bash.1,bashref.texi} + - add to the "duplicating file descriptors" description that >&word + doesn't redirect stdout and stderr if word expands to `-' + - add to the "appending standard output and standard error" + description a note that >&word, where word is a number or `-', + causes other redirection operators to apply for sh and Posix + compatibility reasons. Suggested by Greg Wooledge + + + 10/15 + ----- +pcomplete.c + - change pcomp_filename_completion_function to only run the filename + dequoting function in the cases (as best as it can figure) where + readline won't do it via rl_filename_completion_function. Based + on reports from + + 10/19 + ----- +bashline.c + - attempt_shell_completion: add call to set_directory_hook() to make + sure the rewrite functions are correct. It's cheap and doesn't + hurt + - command_word_completion_function: if completing a command name that + starts with `.' or `..', temporarily suppress the effects of the + `direxpand' option and restore the correct value after calling + rl_filename_completion_function. If it's enabled, the directory + name will be rewritten and no longer match `./' or `../'. Fixes + problem reported by Michael Kalisz + + 10/22 + ----- +builtins/history.def + - push_history: make sure remember_on_history is enabled before we + try to delete the last history entry -- the `history -s' command + might not have been saved. Fixes bug reported by + lester@vmw-les.eng.vmware.com + +lib/readline/complete.c + - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN + instead of straight return; add same call at end of function. + Placeholder for future work in deinstalling signal handlers when + readline is not active + + 10/25 + ----- +expr.c + - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1 + for DIV and MOD and avoid SIGFPE. Bug report and pointer to fix + from Jaak Ristioja + - expassign: same changes for arithmetic overflow for DIV and MOD + + 10/28 + ----- +subst.c + - parameter_brace_expand: allow pattern substitution when there is an + expansion of the form ${var/} as a no-op: replacing nothing with + nothing + - parameter_brace_patsub: don't need to check for PATSUB being NULL; + it never is + +flags.c + - if STRICT_POSIX is defined, initialize history_expansion to 0, since + history expansion (and its treatment of ! within double quotes) is + not a conforming posix environment. From austin-group issue 500 + +lib/readline/histexpand.c + - history_expand: when processing a string within double quotes + (DQUOTE == 1), make the closing double quote inhibit history + expansion, as if the word were outside double quotes. In effect, + we assume that the double quote is followed by a character in + history_no_expand_chars. tcsh and csh seem to do this. This + answers a persistent complaint about history expansion + + 10/29 + ----- +make_cmd.c + - make_arith_for_command: use skip_to_delim to find the next `;' + when breaking the string between the double parens into three + separate components instead of a simple character loop. Fixes + bug reported by Dan Douglas + + 11/2 + ---- +Makefile.in + - make libbuiltins.a depend on builtext.h to serialize its creation + and avoid conflict between multiple invocations of mkbuiltins. + Fix from Mike Frysinger + + 11/5 + ---- +findcmd.c + - user_command_matches: if stat(".", ...) returns -1, set st_dev + and st_ino fields in dotinfo to 0 to avoid same_file matches + - find_user_command_in_path: check stat(2) return the same way + +lib/glob/glob.c + - glob_vector: don't call strlen(pat) without checking pat == 0 + - glob_dir_to_array: make sure to free `result' and all allocated + members before returning error due to malloc failure + - glob_vector: make sure to free `nextname' and `npat' on errors + (mostly when setting lose = 1) + - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make + sure we free `subdir' + - glob_filename: when expanding ** (GX_ALLDIRS), make sure we + free temp_results (return value from glob_vector) + +lib/glob/xmbsrtowcs.c + - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead + of sizeof (char **) when assigning idxtmp + +execute_cmd.c + - print_index_and_element: return 0 right away if L == 0 + - is_dirname: fix memory leak by freeing `temp' + - time_command: don't try to deref NULL `command' when assigning + to `posix_time' + - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's + terminated for functions that expect that + +builtins/read.def + - read_builtin: don't call bind_read_variable with a potentially-null + string + +pcomplete.c + - gen_command_matches: don't call dispose_word_desc with a NULL arg + - gen_compspec_completions: fix memory leak by freeing `ret' before + calling gen_action_completions (tcs, ...). happens when + performing directory completion as default and no completions + have been generated + - gen_progcomp_completions: make sure to set foundp to 0 whenever + returning NULL + - it_init_aliases: fix memory leak by freeing alias_list before + returning + +bashline.c + - command_word_completion_function: don't call restore_tilde with a + NULL directory_part argument + - bash_directory_expansion: bugfix: don't throw away results of + rl_directory_rewrite_hook if it's set and returns non-zero + - bind_keyseq_to_unix_command: free `kseq' before returning error + +arrayfunc.c + - assign_array_element_internal: make sure `akey' is freed if non-null + before returning error + - assign_compound_array_list: free `akey' before returning error + - array_value_internal: free `akey' before returning error + - unbind_array_element: free `akey' before returning error + +subst.c + - array_length_reference: free `akey' before returning error in case + of expand_assignment_string_to_string error + - array_length_reference: free `akey' after call to assoc_reference + - skip_to_delim: if skipping process and command substitution, free + return value from extract_process_subst + - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before + returning if verify_substring_values fails + - parameter_brace_expand: remove two duplicate lines that allocate + ret in parameter_brace_substring case + - parameter_brace_expand: convert `free (name); name = xmalloc (...)' + to use `xrealloc (name, ...)' + - parameter_brace_expand: free `name' before returning when handling + ${!PREFIX*} expansion + - split_at_delims: fix memory leak by freeing `d2' before returning + +redir.c + - redirection_error: free `filename' if the redirection operator is + REDIR_VARASSIGN by assigning allocname + +eval.c + - send_pwd_to_eterm: fix memory leak by freeing value returned by + get_working_directory() + +builtins/cd.def + - change_to_directory: fix memory leak by freeing return value from + resetpwd() + - cd_builtin: fix memory leak by freeing value returned by dirspell() + - cd_builtin: fix memory leak by freeing `directory' if appropriate + before overwriting with return value from resetpwd() + +builtins/type.def + - describe_command: free `full_path' before overwriting it with return + value from sh_makepath + +builtins/complete.def + - compgen_builtin: fix memory leak by calling strlist_dispose (sl) + before overwriting sl with return value from completions_to_stringlist + +builtins/hash.def + - list_hashed_filename_targets: fix memory leak by freeing `target' + +make_cmd.c + - make_arith_for_command: free `init', `test', and `step' before + returning error on parse error + +jobs.c + - initialize_job_control: don't call move_to_high_fd if shell_tty == -1 + +general.c + - check_dev_tty: don't call close with an fd < 0 + - legal_number: deal with NULL `string' argument, return invalid + +lib/sh/fmtulong.c + - fmtulong: if the `base' argument is invalid, make sure we index + buf by `len-1' at maximum + +print_cmd.c + - print_deferred_heredocs: don't try to dereference a NULL `cstring' + - cprintf: make sure to call va_end (args) + +variables.c + - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *) + instead of sizeof (WORD_LIST **) + +lib/sh/zmapfd.c + - zmapfd: if read returns error, free result and return -1 immediately + instead of trying to reallocate it + + 11/6 + ---- +execute_cmd.c + - cpl_reap: rewrote to avoid using pointer after freeing it; now builds + new coproc list on the fly while traversing the old one and sets the + right values for coproc_list when done + + 11/12 + ----- +builtins/set.def + - if neither -f nor -v supplied, don't allow a readonly function to + be implicitly unset. Fixes bug reported by Jens Schmidt + + +lib/readline/callback.c + - change CALLBACK_READ_RETURN to clear signal handlers before returning + from rl_callback_read_char so readline's signal handlers aren't + installed when readline doesn't have control. Idea from Jan + Kratochvil and the GDB development + team + +pcomplete.h + - COPT_NOQUOTE: new complete/compgen option value + +builtins/complete.def + - noquote: new complete/compgen option; will be used to disable + filename completion quoting + +pcomplete.c + - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns + of rl_filename_quoting_desired if set; turns it on if unset (value + is inverted, since default is on) + +doc/bash.1,lib/readline/doc/rluser.texi + - document new -o noquote option to complete/compgen/compopt + +pathexp.c + - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters + between brackets in an ERE bracket expression are not inappropriately + quoted with backslashes. This is a pretty substantial change, + should be stressed when opening bash up for alpha and beta tests. + Fixes bug pointed out by Stephane Chazleas + + +doc/{bash.1,bashref.texi} + - document that regexp matches can be inconsistent when quoting + characters in bracket expressions, since usual quoting characters + lose their meaning within brackets + - note that regular expression matching when the pattern is stored + in a shell variable which is quoted for expansion causes string + matching + +redir.h + - RX_SAVEFD: new flag value; notes that a redirection denotes an + fd used to save another even if it's not >= SHELL_FD_BASE + +redir.c + - do_redirection_internal: when deciding whether or not to reset the + close-on-exec flag on a restored file descriptor, trust the value + of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE + if the RX_SAVEFD flag is set + - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor + limit is such that the shell can't duplicate to a file descriptor + >= 10. Fixes a limitation that tripped a coreutils test reported + by Paul Eggert + + 11/19 + ----- +doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi + - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading + the startup files + - make it clear that bash runs HISTSIZE=500 after reading the + startup files + - make it clear that setting HISTSIZE=0 causes commands to not be + saved in the history list + - make it clear that setting HISTFILESIZE=0 causes the history file + to be truncated to zero size + +variables.c + - sv_histsize: change so setting HISTSIZE to a value less than 0 + causes the history to be `unstifled' + - sv_histsize: change so setting HISTFILESIZE to a value less than 0 + results in no file truncation + - make it clear that numeric values less than 0 for HISTFILESIZE or + HISTSIZE inhibit the usual functions + + 11/23 + ----- +parse.y + - save_input_line_state: add missing `return ls' at the end, since the + function is supposed to return its argument. Pointed out by + Andreas Schwab + +builtins/read.def + - skip over NUL bytes in input, as most modern shells seem to. Bug + report by Matthew Story + +lib/readline/vi_mode.c + - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key + + 11/25 + ----- +builtins/read.def + - read_builtin: if xrealloc returns same pointer as first argument, + don't bother with the remove_unwind_protect/add_unwind_protect pair + - read_builtin: set a flag (`reading') around calls to zread/zreadc + and readline() + - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if + currently in read(2) (reading != 0) + - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero, + behavior of old SIGALRM catching function + - read_builtin: call CHECK_ALRM in appropriate places while reading + line of input. Fixes bug reported by Pierre Gaston + + +lib/readline/vi_mode.c + - rl_vi_replace: initialize characters before printing characters in + vi_replace_keymap to their default values in vi_insertion_keymap, + since we're supposed to be in insert mode replacing characters + - rl_vi_replace: call rl_vi_start_inserting to set last command to + `R' for undo + - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future + use by _rl_vi_done_inserting + - vi_save_insert_buffer: new function, broke out code that copies text + into vi_insert_buffer from _rl_vi_save_insert + - _rl_vi_save_replace: new function, saves text modified by + rl_vi_replace (using current point and vi_replace_count to figure + it out) to vi_replace_buffer + - _rl_vi_save_insert: call vi_save_insert_buffer + - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call + _rl_vi_save_replace to save text modified in replace mode (uses + vi_save_insert_buffer) + - _rl_vi_replace_insert: new function, replaces the number of chars + in vi_insert_buffer after rl_point with contents ov vi_insert_buffer + - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and + there's something in vi_insert_buffer. Fixes bug with `.' not + redoing the most recent `R' command, reported by Geoff Clare + in readline area on savannah + + 11/26 + ----- +lib/readline/rlprivate.h + - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal + to be handled + - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending + SIGINT to be handled + +lib/readline/complete.c + - remove all mention of _rl_interrupt_immediately + - rl_completion_matches: check RL_SIG_RECEIVED after each call to + the entry function, call RL_CHECK_SIGNALS if true to handle the + signal + - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free + and zero out the match_list this function allocated + - rl_completion_matches: if the completion entry function is + rl_filename_completion_function, free the contents of match_list, + because that function does not keep state and will not free the + entries; avoids possible memory leak pointed out by + Garrett Cooper + - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after + calling rl_attempted_completion_function, free the returned match + list and handle the signal with RL_CHECK_SIGNALS; avoids + possible memory leak pointed out by Garrett Cooper + + - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after + calling rl_completion_matches, free the returned match list and + handle the signal with RL_CHECK_SIGNALS + +lib/readline/util.c + - rl_settracefp: new utility function to set the tracing FILE * + +lib/readline/signals.c + - _rl_sigcleanup: pointer to a function that will be called with the + signal and a void * argument from _rl_handle_signal + - _rl_sigcleanarg: void * that the rest of the code can set to have + passed to the signal cleanup function + - _rl_handle_signal: if _rl_sigcleanup set, call as + (*_rl_sigcleanup) (sig, _rl_sigcleanarg) + +lib/readline/rlprivate.h + - extern declarations for _rl_sigcleanup and _rl_sigcleanarg + +lib/readline/complete.c + - _rl_complete_sigcleanup: signal cleanup function for completion code; + calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT + - rl_complete_internal: before calling display_matches if what_to_do + == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match + list gets freed on SIGINT; avoids possible memory leak pointed out + by Garrett Cooper + - rl_complete_internal: in default switch case, call _rl_free_match_list + before returning to avoid memory leak + +doc/bashref.texi + - start at a set of examples for the =~ regular expression matching + operator, touching on keeping the pattern in a shell variable and + quoting portions of the pattern to remove their special meaning + + 12/1 + ---- +lib/glob/gmisc.c + - extglob_pattern: new function, returns 1 if pattern passed as an + argument looks like an extended globbing pattern + +lib/glob/glob.c + - skipname: return 0 immediately if extglob_pattern returns non-zero, + let the extended globbing code do the right thing with skipping + names beginning with a `.' + - mbskipname: return 0 immediately if extglob_pattern returns non-zero, + let the extended globbing code do the right thing with skipping + names beginning with a `.'. Fixes bug reported by Yongzhi Pan + + + 12/2 + ---- +lib/glob/smatch.c + - patscan, patscan_wc: no longer static so other parts of the glob + library can use them, renamed to glob_patscan, glob_patscan_wc + +lib/glob/glob.c + - extern declarations for glob_patscan, glob_patscan_wc + - wchkname: new function, does skipname on wchar_t pattern and dname, + old body of mbskipname after converting to wide chars + - extglob_skipname: new function, checks all subpatterns in an extglob + pattern to determine whether or not a filename should be skipped. + Calls skipname for each subpattern. Dname is only skipped if all + subpatterns indicate it should be. Better fix for bug reported by + Yongzhi Pan + - wextglob_skipname: wide-char version of extglob_skipname, calls + wchkname instead of calling back into mbskipname for each + subpattern to avoid problems with char/wchar_t mismatch + - skipname: call extglob_skipname if extglob_pattern returns non-zero + - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero + - mbskipname: short-circuit immediately if no multibyte chars in + pattern or filename + +execute_cmd.c + - execute_cond_node: added parens to patmatch assignment statement to + make intent clearer + + 12/3 + ---- +configure.in,config.h.in + - check for imaxdiv, define HAVE_IMAXDIV if present + +expr.c + - expassign, exp2: use imaxdiv if available. Doesn't help with checks + for overflow from 10/25 + + 12/6 + ---- +lib/readline/complete.c + - compute_lcd_of_matches: if we're ignoring case in the matches, only + use what the user typed as the lcd if it matches the first match + (after sorting) up to the length of what was typed (if what the + user typed is longer than the shortest of the possible matches, use + the shortest common length of the matches instead). If it doesn't + match, use the first of the list of matches, as if case were not + being ignored. Fixes bug reported by Clark Wang + + + 12/7 + ---- +builtins/cd.def + - cd_builtin: add code to return error in case cd has more than one + non-option argument, conditional on CD_COMPLAINS define (which is + not defined anywhere) + +doc/{bash.1,bashref.texi} + - note that additional arguments to cd following the directory name + are ignored. Suggested by Vaclav Hanzl + + 12/10 + ----- +lib/readline/input.c + - rl_read_key: don't need to increment key sequence length here; doing + it leads to an off-by-one error + +lib/readline/macro.c + - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length + fixed, can decrement current_macro_index by rl_key_sequence_length + (length of key sequence that closes keyboard macro) + +lib/readline/readline.c + - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length + when ESC maps to a new keymap and we're converting meta characters + to ESC+key + - _rl_dispatch_subseq: better increment of rl_key_sequence_length + before we dispatch to a function in the ISFUNC case (where the + second increment above should have happened) + - rl_executing_keyseq: the full key sequence that ended up executing + a readline command. Available to the calling application, maintained + by _rl_dispatch_subseq, indexed by rl_key_sequence_length + - rl_executing_key: the key that was bound to the currently-executing + readline command. Same as the `key' argument to the function + +lib/readline/readline.h + - rl_executing_keyseq: extern declaration + - rl_executing_key: extern declaration + - rl_key_sequence_length: declaration moved here from rlprivate.h, + now part of public interface + +lib/readline/rlprivate.h + - new extern declaration for _rl_executing_keyseq_size, buffer size + for rl_executing_keyseq + +lib/readline/doc/rltech.texi + - documented new variables: rl_executing_key, rl_executing_keyseq, + rl_key_sequence_length + + 12/13 + ----- +bashline.c + - bash_execute_unix_command: replace ad-hoc code that searches + cmd_xmap for correct command with call to rl_function_of_keyseq + using rl_executing_keyseq; now supports key sequences longer + than two characters. Fixes bug reported by Michael Kazior + + + 12/15 + ----- +make_cmd.c + - make_function_def: don't null out source_file before calling + make_command so it can be used later on when the function definition + is executed + +execute_cmd.c + - execute_intern_function: second argument is now FUNCTION_DEF * + instead of COMMAND * + - execute_command_internal: call execute_intern_function with the + new second argument (the entire FUNCTION_DEF instead of just the + command member) + - execute_intern_function: if DEBUGGER is defined, call + bind_function_def before calling bind_function, just like + make_function_def does (might be able to take out the call in + make_function_def depending on what the debugger does with it). + Fixes bug reported by + +expr.c + - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1; + fix typos and logic errors + + 12/16 + ----- +bashline.c + - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over + command substitutions and doesn't treat them as command separators + - attempt_shell_completion: instead of taking first return from + find_cmd_name as command name to use for programmable completion, + use loop to skip over assignment statements. Fixes problem reported + by Raphael Droz + - attempt_shell_completion: if we don't find a command name but the + command line is non-empty, assume the other words are all assignment + statements and flag that point is in a command position so we can + do command name completion + - attempt_shell_completion: if the word being completed is the first + word following a series of assignment statements, and the + command line is non-empty, flag that point is in a command position + so we can do command name completion + +lib/readline/history.c + - history_get_time: atol -> strtol + + 12/18 + ----- +parse.y + - parser_in_command_position: external interface to the + command_token_position macro for use by other parts of the shell, + like the completion mechanism + +externs.h + - extern declaration for parser_in_command_position + + 12/19 + ----- + +builtins/read.def + - read_builtin: make sure all calls to bind_read_variable are passed + a non-null string. Fixes bug reported by Dan Douglas + + +bashline.c + - attempt_shell_completion: mark that we're in a command position if + we're at the start of the line and the parser is ready to accept + a reserved word or command name. Feature most recently suggested + by Peng Yu + + 12/21 + ----- +lib/readline/bind.c + - _rl_escchar: return the character that would be backslash-escaped + to denote the control character passed as an argument ('\n' -> 'n') + - _rl_isescape: return 1 if character passed is one that has a + backslash escape + - _rl_untranslate_macro_value: new second argument: use_escapes, if + non-zero translate to backslash escapes where possible instead of + using straight \C-x for control character `x'. Change callers + - _rl_untranslate_macro_value: now global + +lib/readline/rlprivate.h + - _rl_untranslate_macro_value: extern declaration + +lib/readline/{macro.c,readline.h} + - rl_print_last_kbd_macro: new bindable function, inspired by patch + from Mitchel Humpherys + +lib/readline/funmap.c + - print-last-kbd-macro: new bindable command, bound to + rl_print_last_kbd_macro + +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - print-last-kbd-macro: document. + +lib/readline/text.c + - _rl_insert_next: if we're defining a macro, make sure the key gets + added to the macro text (should really audit calls to rl_read_key() + and make sure the right thing is happening for all of them) + +bashline.[ch] + - print_unix_command_map: new function, prints all bound commands in + cmd_xmap using rl_macro_dumper in a reusable format + +builtins/bind.def + - new -X option: print all keysequences bound to Unix commands using + print_unix_command_map. Feature suggested by Dennis Williamson + (2/2011) + +doc/{bash.1,bashref.texi} + - document new `bind -X' option + + 12/24 + ----- + +doc/{bash.1,bashref.texi} + - add a couple of sentences to the description of the case modification + operators making it clearer that each character of parameter is + tested against the pattern, and that the pattern should only attempt + to match a single character. Suggested by Bill Gradwohl + + + 12/28 + ----- +shell.c + - init_noninteractive: instead of calling set_job_control(0) to + unconditionally turn off job control, turn on job control if + forced_interactive or jobs_m_flag is set + - shell_initialize: call initialize_job_control with jobs_m_flag as + argument so `bash -m script' enables job control while running the + script + +jobs.c + - initialize_job_control: if the `force' argument is non-zero, turn on + job control even if the shell is not currently interactive + (interactive == 0) + + 12/29 + ----- + +flags.h + - new extern declaration for jobs_m_flag + +builtins/{cd,set}.def,doc/{bash.1,bashref.texi} + - added text clarifying the descriptions of cd -L and -P, suggested by + Padraig Brady + - slight change to the description of `set -P' about resolving symbolic + links + +lib/readline/doc/rluser.texi + - Added an example to the programmable completion section: _comp_cd, + a completion function for cd, with additional verbiage. Text + includes a reference to the bash_completion project + + 1/1/2012 + -------- +jobs.c + - set_job_status_and_cleanup: note that a job is stopped due to + SIGTSTP (any_tstped) if job_control is set; there's no need to + test interactive + + 1/5 + --- +quit.h + - LASTSIG(): new macro, expands to signal number of last terminating + signal received (terminating_signal or SIGINT) + +trap.c + - first_pending_trap: returns lowest signal number with a trap pending + - trapped_signal_received: set to the last trapped signal the shell + received in trap_handler(); reset to 0 in run_pending_traps + +builtins/read.def + - read_builtin: changes to posix-mode (posixly_correct != 0) to make + `read' interruptible by a trapped signal. After the trap runs, + read returns 128+sig and does not assign the partially-read line + to the named variable(s). From an austin-group discussion started + by David Korn + + 1/11 + ---- +doc/{bash.1,bashref.texi} + - slight changes to the descriptions of the compat32 and compat40 shell + options to clarify their meaning + + 1/12 + ---- +lib/readline/{colors.[ch],parse-colors.[ch]} + - new files, part of color infrastructure support + +Makefile.in,lib/readline/Makefile.in + - arrange to have colors.o and parse-colors.o added to readline + library + +{configure,config.h}.in + - check for stdbool.h, define HAVE_STDBOOL_H if found + + 1/14 + ---- +lib/readline/bind.c + - colored_stats: new bindable variable, enables using colors to + indicate file type when listing completions + +lib/readline/complete.c + - _rl_colored_stats: new variable, controlled by colored-stats bindable + variable + - colored_stat_start, colored_stat_end: new functions to set and reset + the terminal color appropriately depending on the type of the + filename to be printed + - print_filename: changes to print colors if `colored-stats' variable + set. Changes contributed by Raphael Droz + + +lib/readline/readline.c + - rl_initialize_everything: add call to _rl_parse_colors to parse + color values out of $LS_COLORS. May have to add to rl_initialize + to make more dynamic if LS_COLORS changes (which doesn't happen + very often, if at all) + +lib/readline/rlprivate.h + - _rl_colored_stats: new extern declaration + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - colored-stats: document new bindable readline variable + +lib/readline/colors.c + - _rl_print_color_indicator: call rl_filename_stat_hook before calling + lstat/stat so we can get color indicators for stuff like + $HOME/Applications + +lib/readline/complete.c + - stat_char: call rl_filename_stat_hook before calling lstat/stat + +findcmd.[ch],execute_cmd.c + - search_for_command: now takes a second `flags' argument; changed + header function prototype and callers + - search_for_command: if (flags & 1), put the command found in $PATH + into the command hash table (previous default behavior) + +execute_cmd.c + - is_dirname: call search_for_command with flags argument of 0 so it + doesn't try to put something in the command hash table + +bashline.c + - bash_command_name_stat_hook: a hook function for readline's + filename_stat_hook that does $PATH searching the same way that + execute_cmd.c:execute_disk_command() does it, and rewrites the + passed filename if found. Does not put names into command hash + table. This allows command name completion to take advantage + of `visible-stats' and `colored-stats' settings. + - executable_completion: new function, calls the directory completion + hook to expand the filename before calling executable_file or + executable_or_directory; change command_word_completion_function to + call executable_completion. This allows $HOME/bin/[TAB] to do + command completion and display alternatives + + 1/17 + ---- +pcomplete.c + - gen_command_matches: now takes a new second argument: the command + name as deciphered by the programmable completion code and used + to look up the compspec; changed callers (gen_compspec_completions) + - gen_shell_function_matches: now takes a new second argument: the + command that originally caused the completion function to be + invoked; changed callers (gen_compspec_completions)) + - build_arg_list: now takes a new second argument: the command name + corresponding to the current compspec; changed callers + (gen_command_matches, gen_shell_function_matches) + - build_arg_list: now uses `cmd' argument to create $1 passed to + invoked command or shell function + - gen_compspec_completions: if we skipped a null command at the + beginning of the line (e.g., for completing `>'), add a new word for + it at the beginning of the word list and increment nw and cw + appropriately. This is all a partial fix for the shortcoming + pointed out by Sung Pae + + 1/18 + ---- + +{configure,config.h}.in + - new check: check for AUDIT_USER_TTY defined in , + define HAVE_DECL_AUDIT_USER_TTY if both are found + +lib/readline/rlconf.h + - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel + tty auditing system if it's available and enabled + +lib/readline/util.c + - _rl_audit_tty: new function, send a string to the kernel tty audit + system + +lib/readline/rlprivate.h + - _rl_audit_tty: new extern declaration + +lib/readline/readline.c + - readline: call _rl_audit_tty with line to be returned before returning + it if the Linux tty audit system is available and it's been enabled + in rlconf.h Original patch from Miroslav Trmac; recent request + from Miroslav Lichvar + + 1/21 + ---- + +lib/readline/readline.c: + - _rl_dispatch_subseq: add an inter-character timeout for multi-char + key sequences. Suggested by . Still needs + work to make a user-settable variable + +parse.y + - shell_getc: make code that uses the pop_alias dependent on ALIAS + define + +variables.h + - sv_tz: extern define should only depend on HAVE_TZSET + +expr.c + - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1; + move assignment to `ind' inside define + - expr_bind_array_element: declaration and uses need to be #ifdef + ARRAY_VARS + +arrayfunc.h + - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not + defined; used in subst.c unconditionally + +sig.h + - make the signal blocking functions not dependent on JOB_CONTROL + +sig.c + - sigprocmask: make the replacement definition not dependent on + JOB_CONTROL + +trap.c + - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on + HAVE_POSIX_SIGNALS and BSD signals + + 1/24 + ---- + +print_cmd.c + - print_redirection_list: change the conditions under which + r_duplicating_output_word is mapped to r_err_and_out to more or + less match those used in redir.c. Fixes bug pointed out by + Dan Douglas + + + 1/29 + ---- +lib/readline/signals.c + - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies + unless SIGWINCH is defined. Fixes bug reported by Pierre Muller + + +doc/{bash.1,bashref.texi} + - small modifications to the introduction to the REDIRECTION section + to describe how redirections can modify file handles + - small modification to the section describing base#n to make it + clearer that n can be denoted using non-numerics. From a posting + by Linda Walsh + + 2/2 + --- +builtins/printf.def + - printf_builtin: make sure vbuf is intialized and non-null when -v + is supplied, since other parts of the code assume that it's not + null (e.g., bind_printf_variable()). Fixes bug reported by Jim + Avera + + 2/4 + --- +lib/readline/undo.c + - _rl_free_undo_list: new function, old body of rl_free_undo_list, + frees undo entries in UNDO_LIST * passed as argument + - rl_free_undo_list: call _rl_free_undo_list + +lib/readline/rlprivate.h + - _rl_free_undo_list: new extern declaration + - _rl_keyseq_timeout: new extern declaration (see below) + +lib/readline/misc.c + - rl_clear_history: new function. Clears the history list and frees + all associated data similar to history.c:clear_history(), but + takes rl_undo_list into account and frees and UNDO_LISTs saved as + `data' members of a history list entry + +lib/readline/doc/rltech.texi + - rl_clear_history: documented + +lib/readline/readline.c + - _rl_keyseq_timeout: new variable to hold intra-key timeout value + from 1/21 fix; specified in milliseconds. Default value is 500 + - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key + timeout if it's greater than 0; no timeout if <= 0 + - _rl_dispatch_subseq: don't check for queued keyboard input if we have + pushed or pending input, or if we're reading input from a macro + +lib/readline/bind.c + - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout + - string_varlist: add keyseq-timeout + - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout; + clamps negative values at 0 for now + - _rl_get_string_variable_value: return value for keyseq-timeout + +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - keyseq-timeout: documented + +lib/readline/isearch.c + - _rl_isearch_dispatch: modification to fix from 7/18 to not use + cxt->keymap and cxt->okeymap, since by the time this code is + executed, they are equal. Use `f' to check for rl_insert or + unbound func + - _rl_isearch_dispatch: if we're switching keymaps, not in + callback mode, and don't have pending or pushed input, use + _rl_input_queued to resolve a potentially ambiguous key sequence. + Suggested by Roger Zauner + - _rl_isearch_dispatch: if we have changed keymaps and resolved to + an editing function (not self-insert), make sure we stuff the + right characters back onto the input after changing the keymap + back so the right editing function is executed after the search + is terminated. Rest of fix for bug reported by Roger Zauner + + + 2/5 + --- +builtins/gen-helpfiles.c + - new file: reads struct builtin and writes the long docs to files + in the `helpdirs' subdirectory. The filename is given in the + previously-unused `handle' member of the struct builtin. Links + with `tmpbuiltins.o', which is created by Makefile to have the + right long documentation. When not cross-compiling, gets the + right #defines based on configuration options from config.h instead + of trying to parse conditional parts of def files. Fixes + shortcoming pointed out by Andreas Schwab + +builtins/Makefile.in + - tmpbuiltins.c: new generated file, created to enable creation of + separate helpfiles based on correct #defines instead of trying to + parse conditional parts of def files + - gen-helpfiles: new program to generate helpfiles, links with + tmpbuiltins.o + - HELPFILES_TARGET: new target, substituted by configure to `helpdoc' + if separate helpfiles requested + - targets: new target, libbuiltins.a and $(HELPFILES_TARGET) + - CREATED_OBJECTS: new variable, holds created object files for + make clean; changed make clean to remove created objects + - helpdoc: changed to call gen-helpfiles instead of mkbuiltins + +Makefile.in + - when building libbuiltins.a, recursively call make with `targets' + argument to make sure separate helpfiles get built + +configure.in + - substitute `helpdoc' as value of HELPFILES_TARGET if + --enable-separate-helpfiles supplied as configure argument + +builtins/mkbuiltins.c + - `-nofunctions': new argument, causes mkbuiltins to not write value + for function implementing a particular builtin to struct builtin + and to write document file name to `handle' member of struct builtin + - no longer writes separate helpfiles; that is left to gen-helpfiles + + 2/8 + --- +subst.c + - make sure last_command_exit_value is set to a non-zero value before + any calls to report_error, since `-e' set will short-circuit + report_error. Fixes bug reported by Ewan Mellor + + +variables.c + - make_local_array_variable: added second argument; if non-zero, + function will return an existing local associative array variable + instead of insisting on an indexed array + +variable.h,subst.c + - make_local_array_variable: changed prototype and caller + +builtins/declare.def + - declare_internal: add second arg to call to make_local_array_variable; + making_array_special, which indicates we're processing an + assignment like declare a[b]=c. Fixes seg fault resulting from + a being an already-declared local associative array variable in a + function. Ubuntu bash bug 928900. + + 2/14 + ---- + +execute_cmd.c + - execute_command_internal: if redirections into or out of a loop fail, + don't try to free ofifo_list unless saved_fifo is non-zero. It's + only valid if saved_fifo is set + + 2/15 + ---- +{arrayfunc,braces,variables}.c + - last_command_exit_value: make sure it's set before any calls to + report_error, since -e will cause that to exit the shell + +builtins/common.c + - get_job_by_name: call internal_error instead of report_error so this + doesn't exit the shell + + 2/18 + ---- +builtins/evalstring.c + - parse_and_execute: make sure the file descriptor to be redirected to + is 1 before calling cat_file. One fix for bug reported by Dan Douglas + + +parse.y + - read_token_word: don't return NUMBER if a string of all digits + resolves to a number that overflows the bounds of an intmax_t. + Other fix for bug reported by Dan Douglas + + 2/19 + ---- +lib/sh/strtrans.c + - ansicstr: use 0x7f as the boundary for characters that translate + directly from ASCII to unicode (\u and \U escapes) instead of + UCHAR_MAX, since everything >= 0x80 requires more than one byte. + Bug and fix from John Kearney + +builtins/printf.def + - tescape: ditto for printf \u and \U escape sequences + + 2/20 + ---- +lib/sh/unicode.c + - u32toutf8: fix to handle encodings up to six bytes long correctly + (though technically UTF-8 only has characters up to 4 bytes long). + Report and fix from John Kearney + - u32toutf8: first argument is now an unsigned 32-bit quantity, + changed callers (u32cconv) to pass c instead of wc + - u32reset: new function, resets local static state to uninitialized + (locale information, currently) + +locale.c + - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the + cached locale information used by u32cconv. From a report from + John Kearney + + 2/21 + ---- +doc/{bash,builtins}.1 + - minor changes from Bjarni Ingi Gislason + +lib/sh/unicode.c + - u32cconv: only assume you can directly call wctomb on the passed + value if __STDC_ISO_10646__ is defined and the value is <= + 0x7fffffff + - stub_charset: return locale as default instead of "ASCII", let + rest of code decide what to do with it + +lib/readline/parens.c + - _rl_enable_paren_matching: make paren matching work in vi insert + mode. Bug report from + + 2/22 + ---- +lib/sh/shquote.c + - sh_backslash_quote: quote tilde in places where it would be + expanded. From a report from John Kearney + + 2/23 + ---- +execute_cmd.c + - execute_pipeline: wrap the discard_unwind_frame call in #ifdef + JOB_CONTROL, since the frame is only created if JOB_CONTROL is + defined. Bug and fix from Doug Kehn + + 2/25 + ---- +error.c + - report_error: make sure last_command_exit_value is non-zero before + we call exit_shell, since the exit trap may reference it. Call + exit_shell with last_command_exit_value to allow exit statuses + other than 1 + +unicode.c + - stub_charset: use local static buffer to hold charset, don't change + value returned by get_locale_var. Based on idea and code from + John Kearney + - u32toutf16: function to convert unsigned 32-bit value (unicode) to + UTF-16. From John Kearney + - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t + is two bytes, send result to wcstombs, return if not encoding error. + From John Kearney + - u32cconv: return UTF-8 conversion if iconv conversion to local + charset is unsupported + + 3/2 + --- +lib/readline/complete.c + - print_filename: if there is no directory hook, but there is a stat + hook, and we want to append a slash to directories, call the stat + hook before calling path_isdir on the expanded directory name. + Report and pointer to fix from Steve Rago + + 3/3 + --- +builtins/evalstring.c + - parse_and_execute: fix to change of 2/18: make sure the file + descriptor being redirected to is 0 before calling cat_file when + we see something like $(< file). Real fix for bug reported by + Dan Douglas + +subst.c + - parameter_brace_patsub: run the replacement string through quote + removal even if the expansion is within double quotes, because + the parser and string extract functions treat the quotes and + backslashes as special. If they're treated as special, quote + removal should remove them (this is the Posix position and + compatible with ksh93). THIS IS NOT BACKWARDS COMPATIBLE. + + 3/4 + --- +lib/readline/complete.c + - rl_menu_complete: fix to make show-all-if-ambiguous and + menu-complete-display-prefix work together if both are set. Fix + from Sami Pietila + + 3/5 + --- +bashline.c + - dircomplete_expand_relpath: new variable, if non-zero, means that + `shopt -s direxpand' should expand relative pathnames. Zero by + default, not user-settable yet + - bash_directory_completion_hook: if we have a relative pathname that + isn't changed by canonicalization or spell checking after being + appended to $PWD, then don't change what the user typed. Controlled + by dircomplete_expand_relpath + + 3/7 + --- +m4/timespec.m4 + - new macros, cribbed from gnulib and coreutils: find out whether we + have `struct timespec' and what file includes it + +m4/stat-time.m4 + - new macros, cribbed from gnulib and coreutils: find out whether the + mtime/atime/ctime/etctime fields of struct stat are of type + struct timespec, and what the name is + +include/stat-time.h + - new file, cribbed from gnulib, with additions from coreutils: include + the right file to get the struct timespec define, or provide our own + replacement. Provides a bunch of inline functions to turn the + appropriate members of struct stat into `struct timespec' values, + zeroing out the tv_nsec field if necessary + +test.c + - include "stat-time.h" for the nanosecond timestamp resolution stuff + - stat_mtime: new function, returns struct stat and the mod time + normalized into a `struct timespec' for the filename passed as the + first argument + - filecomp: call stat_mtime instead of sh_stat for each filename + argument to get the mtime as a struct timespec + - filecomp: call timespec_cmp instead of using a straight arithmetic + comparison for the -nt and -ot operators, using timespec returned by + stat_mtime. Added functionality requested by by Werner Fink + for systems that can support it + + 3/10 + ---- +include/posixdir.h + - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature + test macros to decide whether dirent.d_ino is present and usable; + define D_INO_AVAILABLE. Report and fix from Fabrizion Gennari + + - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno + +lib/sh/getcwd.c + - use D_FILENO_AVAILABLE to decide whether or not to compile in + _path_checkino and whether or not to call it. Report and initial + fix from Fabrizion Gennari + +lib/readline/signals.c + - make sure all occurrences of SIGWINCH are protected by #ifdef + +sig.c + - make sure all occurrences of SIGCHLD are protected by #ifdef + +nojobs.c + - make sure SA_RESTART is defined to 0 if the OS doesn't define it + +version.c + - show_shell_version: don't use string literals in printf, use %s. + Has added benefit of removing newline from string to be translated + +trap.c + - queue_sigchld_trap: new function, increments the number of pending + SIGCHLD signals by the argument, which is by convention the number + of children reaped in a call to waitchld() + +trap.h + - queue_sigchld_trap: new extern declaration + +jobs.c + - waitchld: if called from the SIGCHLD signal handler (sigchld > 0), + then call queue_sigchld_trap to avoid running the trap in a signal + handler context. Report and original fix from Siddhesh Poyarekar + + +lib/sh/unicode.c + - u32tocesc: take an unsigned 32-bit quantity and encode it using + ISO C99 string notation (\u/\U) + - u32cconv: call u32tocesc as a fallback instead of u32cchar + - u32cconv: call u32tocesc if iconv cannot convert the character. + Maybe do the same thing if iconv_open fails + - u32reset: call iconv_close on localconv if u32init == 1 + + 3/11 + ---- +config-top.h + - CHECKWINSIZE_DEFAULT: new define, set to initial value of + check_window_size (shopt checkwinsize): 0 for off, 1 for on. + Default is 0 + +{jobs,nojobs}.c + - check_window_size: default initial value to CHECKWINSIZE_DEFAULT + + 3/13 + ---- +doc/bashref.texi + - change text referring to the copying restrictions to that + recommended by the FSF (no Front-Cover Texts and no Back-Cover + Texts) + +lib/readline/doc/{history,rlman,rluserman}.texi + - change text referring to the copying restrictions to that + recommended by the FSF (no Front-Cover Texts and no Back-Cover + Texts) + + 3/15 + ---- +array.c + - LASTREF_START: new macro to set the starting position for an array + traversal to `lastref' if that's valid, and to the start of the array + if not. Used in array_reference, array_insert, array_remove + - array_remove: try to be a little smarter with lastref instead of + unconditionally invalidating it + + 3/16 + ---- +array.c + - array_insert: fix memory leak by deleting element to be added in the + case of an error + + 3/18 + ---- +lib/sh/mbschr.c + - mbschr: don't call mbrlen unless is_basic is false; devolves to a + straight character-by-character run through the string + + 3/19 + ---- +stringlib.c + - substring: use memcpy instead of strncpy, since we know the length + and are going to add our own NUL terminator + + 3/20 + ---- +subst.c + - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted + null string (a list with one element for which + QUOTED_NULL(list->word->word) returns true), return the quoted null + and set the flags in the returned word to indicate it. Fixes bug + reported by Mark Edgar + +lib/sh/tmpfile.c + - use random(3) instead of get_random_number to avoid perturbing the + random sequence you get using $RANDOM. Bug report and fix from + Jurij Mihelic + + 3/21 + ---- +config-top.h + - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize + sequential indexed array assignment patterns. Defined to 1 by + default + +array.c + - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined, + start the search at lastref (see change from 3/15) + + 3/27 + ---- +print_cmd.c + - debug_print_word_list: new debugging function, prints a word list + preceded by an optional string and using a caller-specified + separator + + 4/1 + --- +command.h + - W_ASSNGLOBAL: new flag, set to indicate declare -g + +execute_cmd.c + - fix_assignment_words: note that we have a -g argument to an assignment + builtin and set the W_ASSNGLOBAL flag in the variable word + +subst.c + - dump_word_flags: print out W_ASSNGLOBAL if present + - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set + and W_ASSNGLOBAL is not. Don't want to create a local variable even + if variable_context is non-zero if ASSNGLOBAL is set. Fixes bug + reported by Bill Gradwohl + + 4/7 + --- +lib/readline/readline.c + - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to + ESC processing when in vi mode. After hitting ESC, readline will + wait up to _rl_keyseq_timeout*1000 microseconds (if set) for + additional input before dispatching on the ESC and switching to + command/movement mode. Completes timeout work suggested by + ; this prompted by report from Barry Downes + + +lib/sh/shmbchar.c + - sh_mbsnlen: new function, returns the number of (possibly multibyte) + characters in a passed string with a passed length, examining at most + maxlen (third argument) bytes + +externs.h + - sh_mbsnlen: extern declaration for new function + +shell.c + - exit_shell: call maybe_save_shell_history if remember_on_history is + set, not just in interactive shells. That means the history is + saved if history is enabled, regardless of whether or not the shell + is interactive + +doc/{bash.1,bashref.texi} + - TMOUT: fix description to make it explicit that TMOUT is the timeout + period for a complete line of input, not just any input. Fixes + problem reported in Ubuntu bug 957303: + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303 + - HISTFILE: document change to write history list to history file in + any shell with history enabled, not just interactive shells. This + seems to be more logical behavior. Suggested by Greg Wooledge + + + 4/12 + ---- +lib/readline/colors.h + - only include stdbool.h if HAVE_STDBOOL_H is defined + - if HAVE_STDBOOL_H is not defined, provide enough definition for the + library to use `bool', `true', and `false' + +lib/readline/parse-colors.[ch] + - don't try to include at all; rely on colors.h to do it + +lib/sh/snprintf.c + - vsnprintf_internal: only treat '0' as a flag to indicate zero padding + if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat + it as the first digit of a precision specifier. Fixes bug reported + by Petr Sumbera + + 4/15 + ---- +lib/sh/snprintf.c + - vsnprintf_internal: if the '0' and '-' flags both occur, the '0' + flag is ignored -- Posix. Start of a series of fixes based on + tests and patches from Petr Sumbera + - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+' + - vsnprintf_internal: when '+' is read as a flag, don't set right- + justify flag if the LADJUST (`-') flag has already been supplied + - floating: make sure to output space padding before the `+', zero + padding after + - exponent: make sure to output space padding before the `+', zero + padding after + - exponent: only subtract one from the width for the decimal point + if we're really going to print one + - floating: use presence of PF_PLUS flag to decide whether to account + for the `+' in the padded field width. Ditto for exponent() + + 4/16 + ---- +lib/sh/snprintf.c + - vsnprint_internal: only reduce precision by 1 when processing the `g' + format if it's > 0. A precision of 0 should stay 0; otherwise it + gets set to -1 (NOT_FOUND) and converted to the default + - number, lnumber: if an explicit precision is supplied, turn off the + zero-padding flag and set the pad character back to space + - number, lnumber: only account for a `+' when performing the field + width calculation if the coversion is base 10; we don't add a `+' + for other bases + + 4/18 + ---- +tests/printf3.sub + - try using "perl -e 'print time'" to get the current time in seconds + since the epoch if "date +%s" is not available (solaris 8-10) + + 4/19 + ---- +tests/run-printf + - use cat -v instead of relying on diff -a being available to convert + control characters to ascii and avoid the dreaded "Binary files + /tmp/xx and printf.right differ" + + 4/20 + ---- +lib/sh/strftime.c + - incoporated new version from Aharon Robbins + + 4/22 + ---- +doc/{bash.1,bashref.texi} + - slight change to the description of /dev/tcp and /dev/udp + +subst.c + - match_wpattern: logic fix to the calculation of `simple' (was |=, + needs to be &=). Bug report from Mike Frysinger , + fix from Andreas Schwab + +bashline.c + - bash_filename_stat_hook: add code from bash_directory_completion_hook + that performs pathname canonicalization in the same way that cd and + other builtins will do + + 4/25 + ---- +execute_cmd.c + - execute_pipeline: change the call to move_to_high_fd to make it use + getdtablesize() and to not stomp on existing open file descriptors, + like the fd the shell is using to read a script. Bug report from + Greg Wooledge + + 5/6 + --- +subst.c + - expand_word_internal: case '$': after calling param_expand and + setting had_quoted_null, set TEMP to null. The code that builds the + returned string at the end of the function will take care of making + and returning a quoted null string if there's nothing else in + ISTRING. If there is, the quoted null should just go away. Part of + fix for bug reported by Ruediger Kuhlmann + - expand_word_internal: when processing ISTRING to build return value, + only set W_HASQUOTEDNULL in the returned word flags if the word is + a quoted null string AND had_quoted_null is set. Rest of fix + + 5/9 + --- +variables.c + - bind_variable_internal: if we get an array variable here (implicit + assignment to index 0), call make_array_variable_value, which + dummies up a fake SHELL_VAR * from array[0]. This matters when + we're appending and have to use the current value + - bind_variable_internal: after computing the new value, treat assoc + variables with higher precedence than simple array variables; it + might be that a variable has both attributes set + +arrayfunc.c + - bind_array_var_internal: break code out that handles creating the + new value to be assigned to an array variable index into a new + function, make_array_variable_value. This handles creating a + dummy SHELL_VAR * for implicit array[0] assignment. Fixes bug + reported by Dan Douglas + +arrayfunc.h + - make_array_variable_value: new extern declaration + + 5/19 + ---- +variables.c + - bind_int_variable: if an assignment statement like x=y comes in + from the expression evaluator, and x is an array, handle it like + x[0]=y. Fixes bug reported by Dan Douglas + + 5/24 + ---- + +braces.c + - mkseq: handle possible overflow and break the sequence generating + loop if it occurs. Fixes OpenSUSE bug 763591: + https://bugzilla.novell.com/show_bug.cgi?id=763591 + + 5/25 + ---- +Makefile.in + - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools + buildversion, mksignames, mksyntax + - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools + recho, zecho, printenv, xcase + +builtins/Makefile.in + - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools + gen-helpfiles, psize.aux + +variables.c + - bind_int_variable: if LHS is a simple variable name without an array + reference, but resolves to an array variable, call + bind_array_variable with index 0 to make x=1 equivalent to x[0]=1. + Fixes bug reported by Dan Douglas + + 5/27 + ---- +subst.c + - expand_word_internal: make sure has_dollar_at doesn't get reset before + recursive calls to param_expand or expand_word_internal, since it has + to save state of what came before. Use temp variable and make sure + has_dollar_at is incremented if recursive call processes "$@". + Fixes bug reported by gregrwm and + supplemented by Dan Douglas + +doc/{bash.1,bashref.texi} + - changes to the description of substring expansion inspired by + suggestions from Bill Gradwohl + +doc/bashref.texi + - added substring expansion examples inspired by suggestions from + Bill Gradwohl + +variables.c + - find_shell_variable: search for a variable in the list of shell + contexts, ignore the temporary environment + - find_variable_tempenv: search for a variable in the list of shell + contexts, force search of the temporary environment + - find_variable_notempenv: search for a variable in the list of shell + contexts, don't force search of the temporary environment + +variables.h + - find_shell_variable: extern declaration + - find_variable_tempenv: extern declaration + - find_variable_notempenv: extern declaration + +arrayfunc.c + - bind_array_variable: call find_shell_variable instead of calling + var_lookup directly + +findcmd.c + - search_for_command: call find_variable_tempenv instead of + find_variable_internal directly + - _find_user_command_internal: call find_variable_tempenv instead of + find_variable_internal directly + +builtins/setattr.def + - set_var_attribute: call find_variable_notempenv instead of + find_variable_internal directly + - show_name_attributes: call find_variable_tempenv instead of + find_variable_internal directly + + 6/1 + --- +sig.c + - termsig_handler: don't try to save the shell history on a terminating + signal any more, since it just causes too many problems on Linux + systems using glibc and glibc malloc + +lib/readline/vi_mode.c + - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi + motion character. From Red Hat bug 813289 + - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi + motion character + - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi + motion character + + 6/4 + --- +lib/sh/mktime.c + - current versions of VMS do not need to include . Fix from + John E. Malmberg + + 6/5 + --- +lib/sh/eaccess.c + - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX + translation, use a dynamically-allocated buffer that we keep + resizing. Fixes potential security hole reported by David Leverton + + + 6/5 + --- +braces.c + - expand_seqterm: check errno == ERANGE after calling strtoimax for + rhs and incr. Part of a set of fixes from Scott McMillan + + - expand_seqterm: incr now of type `intmax_t', which changes + arguments to mkseq + - mkseq: a better fix for detecting overflow and underflow since it's + undefined in C and compilers `optimize' out overflow checks. Uses + ADDOVERFLOW and SUBOVERFLOW macros + - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t + variables + - mkseq: don't allow incr to be converted to -INTMAX_MIN + - mkseq: make sure that strvec_create isn't called with a size argument + greater than INT_MAX, since it only takes an int + + 6/6 + --- +braces.c + - mkseq: try and be smarter about not overallocating elements in + the return array if the increment is not 1 or -1 + + 6/7 + --- +parse.y + - history_delimiting_chars: if the parser says we're in the middle of + a compound assignment (PST_COMPASSIGN), just return a space to avoid + adding a stray semicolon to the history entry. Fixes bug reported + by "Davide Brini" + + 6/8 + --- +bashline.c + - bash_directory_completion_hook: don't attempt spelling correction + on the directory name unless the direxpand option is set and we are + going to replace the directory name with the corrected one in the + readline line. Suggested by Linda Walsh + +lib/sh/shquote.c + - sh_backslash_quote: now takes a third argument: flags. If non-zero, + tildes are not backslash-escaped. Have to handle both printf %q, + where they should be escaped, and filename completion, where they + should not when used as usernames + +externs.h + - sh_backslash_quote: declaration now takes a third argument + +builtins/printf.def + - printf_builtin: call sh_backslash_quote with 1 as third argument + so tildes get escaped + +{bashline,bracecomp}.c + - call sh_backslash_quote with 0 as third argument so tildes are not + escaped in completed words + +doc/bash.1 + - add `coproc' to the list of reserved words. From a report by + Jens Schweikhardt + + 6/10 + ---- +execute_cmd.c + - line_number_for_err_trap: now global, so parse_and_execute can save + and restore it with unwind-protect + +builtins/evalstring.c + - parse_prologue: save and restore line_number_for_err_trap along + with line_number + - restore_lastcom: new function, unwind-protect to restore + the_printed_command_except_trap + - parse_prologue: use restore_lastcom to save and restore the value + of the_printed_command_except_trap around calls to parse_and_execute + (eval/source/.) + + 6/15 + ---- +lib/readline/complete.c + - complete_fncmp: change filename comparison code to understand + multibyte characters, even when doing case-sensitive or case-mapping + comparisons. Fixes problem reported by Nikolay Shirokovskiy + + + 6/20 + ---- +builtins/mapfile.def + - mapfile: move the line count increment and check for having read + the specified number of lines to the end of the loop to avoid + reading an additional line with zgetline. Fixes bug reported by + Dan Douglas + + 6/21 + ---- + +execute_cmd.c + - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on + all systems, since it's tested later in the function. Fixes bug + reported by John E. Malmberg + + 6/22 + ---- +mailcheck.c + - file_mod_date_changed: return 0 right away if mailstat() does not + return success. Fixes bug with using uninitialized values reported + by szymon.kalasz@uj.edu.pl + +builtins/set.def + - the `monitor' option is not available when the shell is compiled + without job control, since the underlying `m' flag is not available + +nojobs.c + - job_control: now declared as int variable, initialized to 0, never + modified + +jobs.h + - job_control: extern declaration no longer dependent on JOB_CONTROL + +execute_cmd.c + - execute_pipeline: made necessary changes so `lastpipe' shell option + is now available in all shells, even those compiled without + JOB_CONTROL defined + + 6/23 + ---- +lib/glob/glob.c + - glob_filename: check for interrupts before returning if glob_vector + returns NULL or an error. Bug reported by Serge van den Boom + , fix from Andreas Schwab + - call run_pending_traps after each call to QUIT or test of + interrupt_state, like we do in mainline shell code + - glob_vector: don't call QUIT; in `if (lose)' code block; just free + memory, return NULL, and let callers deal with interrupt_state or + other signals and traps + + 6/25 + ---- +lib/readline/input.c + - rl_read_key: restructure the loop that calls the event hook a little, + so that the hook is called only after rl_gather_tyi returns no input, + and any pending input is returned first. This results in better + efficiency for processing pending input without calling the hook + on every input character as bash-4.1 did. From a report from + Max Horn + + 6/26 + ---- +trap.c + - signal_is_pending: return TRUE if SIG argument has been received and + a trap is waiting to execute + +trap.h + - signal_is_pending: extern declaration + +lib/glob/glob.c + - glob_vector: check for pending SIGINT trap each time through the loop, + just like we check for interrupt_state or terminating_signal, and + set `lose = 1' so we clean up after ourselves and interrupt the + operation before running the trap. This may require a change later, + maybe call run_pending_traps and do that if run_pending_traps returns? + +variables.c + - sv_histtimefmt: set history_comment_character to default (`#') if + it's 0 when we're turning on history timestamps. The history code + uses the history comment character to prefix timestamps, and + leaving it at 0 effectively removes them from the history. From a + report to help-bash by Dennis Williamson + + 6/27 + ---- +lib/readline/signals.c + - rl_maybe_restore_sighandler: new function, sets handler for SIG to + HANDLER->sa_handler only if it's not SIG_IGN. Needs to be called + on same signals set using rl_maybe_set_sighandler, which does not + override an existing SIG_IGN handler (SIGALRM is ok since it does + the check inline; doesn't mess with SIGWINCH) + + 6/30 + ---- +variables.h + - additional defines for the new `nameref' variable attribute + (att_nameref): nameref_p, nameref_cell, var_setref + +variables.c + - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs + - find_variable_last_nameref: resolve variable NAME until last in a + chain of possibly more than one nameref starting at shell_variables + - find_global_variable_last_nameref: resolve variable NAME until last + in a chain of possibly more than one nameref starting at + global_variables + - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs + in a specific variable context (usually a local variable hash table) + - find_variable_nameref_context: resolve SHELL_VAR V through chain of + namerefs following a chain of varible contexts + - find_variable_last_nameref_context: resolve SHELL_VAR V as in + find_variable_last_context, but return the final nameref instead of + what the final nameref resolves to + - find_variable_tempenv, find_variable_notempenv, find_global_variable, + find_shell_variable, find_variable: modified to follow namerefs + - find_global_variable_noref: look up a global variable without following + any namerefs + - find_variable_noref: look up a shell variable without following any + namerefs + - bind_variable_internal: modify to follow a chain of namerefs in the + global variables table; change to handle assignments to a nameref by + following nameref chain + - bind_variable: modify to follow chain of namerefs when binding to a + local variable + - unbind_variable: changes to unset nameref variables (unsets both + nameref and variable it resolves to) + +subst.c + - parameter_brace_expand_word: change to handle expanding nameref whose + value is x[n] + - parameter_brace_expand_indir: change to expand in ksh93-compatible + way if variable to be indirected is nameref and a simple (non-array) + expansion + - param_expand: change to expand $foo where foo is a nameref whose value + is x[n] + +execute_cmd.c + - execute_for_command: changes to implement ksh93 semantics when index + variable is a nameref + +builtins/setattr.def + - show_var_attributes: change to add `n' to flags list if att_nameref + is set + +builtins/set.def + - unset_builtin: changes to error messages to follow nameref variables + +builtins/declare.def + - document new -n option + - declare_internal: new `-n' and `+n' options + - declare_internal: handle declare -n var[=value] and + declare +n var[=value] for existing and non-existant variables. + Enforce restriction that nameref variables cannot be arrays. + Implement semi-peculiar ksh93 semantics for typeset +n ref=value + + 7/5 + --- +variables.c + - unbind_variable: unset whatever a nameref resolves to, leaving the + nameref variable itself alone + - unbind_nameref: new function, unsets a nameref variable, not the + variable it references + +variables.h + - unbind_nameref: extern declaration + +builtins/set.def + - unset_builtin: modify to add -n option, which calls unbind_nameref + leaving unbind_variable for the usual case. This required slight + changes and additions to the test suite + +doc/{bash.1,bashref.texi} + - document namerefs and typeset/declare/local/unset -n + + 7/13 + ---- +lib/sh/casemod.c + - include shmbchar.h for is_basic and supporting pieces + - sh_casemod: use _to_wupper and _to_wlower to convert wide character + case instead of TOUPPER and TOLOWER. Fixes bug reported by + Dennis Williamson , fix from + Andreas Schwab + - cval: short-circuit and return ascii value if is_basic tests true + - sh_casemod: short-circuit and use non-multibyte case modification + and toggling code if is_basic tests true + +lib/readline/signals.c + - _rl_{block,release}_sigint: remove the code that actually blocks and + releases the signals, since we defer signal handling until calls to + RL_CHECK_SIGNALS() + +lib/readline/{callback,readline,util}.c + - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without + saving and restoring the signal mask instead of setjmp/longjmp + +lib/readline/rltty.c + - prepare_terminal_settings: don't mess with IXOFF setting if + USE_XON_XOFF defined + +doc/{bash.1,bashref.texi} + - add some text to the description of set -e clarifying its effect + on shell functions and shell function execution. Suggested by + Rainer Blome + +bashline.c + - edit_and_execute_command: increment current_command_line_count before + adding partial line to command history (for command-oriented-history + because of rl_newline at beginning of function), then reset it to 0 + before adding the dummy history entry to make sure the dummy entry + doesn't get added to previous incomplete command. Partial fix for + problem reported by Peng Yu + + 7/24 + ---- +configure.in + - interix: define RECYCLES_PIDS. Based on a report from Michael + Haubenwallner + + 7/26 + ---- +jobs.c + - make_child: call bgp_delete on the newly-created pid unconditionally. + Some systems reuse pids before cycling through an entire set of + CHILD_MAX/_SC_CHILD_MAX unique pids. This is no longer dependent + on RECYCLES_PIDS. Based on a report from Michael Haubenwallner + + +support/shobj-conf + - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We + can finally kill Panther + + 7/28 + ---- +subst.c + - command_substitute: make sure last_made_pid gets reset if make_child + fails + +execute_cmd.c + - execute_command_internal: case cm_simple: decide whether or not to + wait_for a child if already_making_children is non-zero, indicates + that there is an unwaited-for child. More of fix for bug report + from Michael Haubenwallner + +jobs.c + - make_child: call delete_old_job (new_pid) unconditionally, don't + bother to check whether or not pid wrap occurred. Rest of fix for + bug report from Michael Haubenwallner + + + 7/29 + ---- +shell.c + - subshell_exit: new function, exits the shell (via call to sh_exit()) + after calling any defined exit trap + +externs.h + - subshell_exit: new extern declaration + +execute_cmd.c + - execute_command_internal: make sure to call subshell_exit for + {} group commands executed asynchronously (&). Part of fix for + EXIT trap bug reported by Maarten Billemont + +sig.c + - reset_terminating_signals: make sure to set termsigs_initialized back + to 0, so a subsequent call to initialize_terminating_signals works + right. Rest of fix for bug reported by Maarten Billemont + + +{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c +builtins/{cd,fc,pushd,ulimit}.def +lib/malloc/getpagesize.h +lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c + - make inclusion of dependent on HAVE_SYS_PARAM_H + consistently + + 8/6 + --- +lib/readline/histexpand.c + - history_expand_internal: now takes an additional argument saying + whether the history expansion occurs within a quoted string, set to + the open quote character + - history_expand_internal: use new argument instead of checking prev + char and initializing quoted_search_delimiter, pass qc directly to + get_history_event, where it allows a matching quote to terminate a + string defining an event + - history_expand: change single-quote handling code so that if + history_quotes_inhibit_expansion is 0, single quotes are treated + like double quotes + - history_expand: change call to history_expand_internal to pass new + argument of `"' if double-quoted string, `'' if single-quoted string; + this lets history_expand decide what is a quoted string and what + is not + + 8/7 + --- +configure.in + - AC_CANONICAL_BUILD: invoke for later use + +lib/readline/macro.c + - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key: + backs up the index into the current macro by 1 + +lib/readline/rlprivate.h + - _rl_prev_macro_key: extern declaration + + +lib/readline/readline.c + - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char + if we're currently reading from a macro; call _rl_prev_macro_key + instead. Fixes bug reported by Clark Wang + + 8/13 + ---- +builtins/evalstring.c + - evalstring(): new function, wrapper around parse_and_execute. + make sure we handle cases where parse_and_execute can call `return' + and short-circuit without cleaning up properly. We call + parse_and_execute_cleanup() then jump to the previous-saved return + location + +builtins/common.h + - extern declaration for evalstring() + +builtins/eval.def + - eval_builtin: make sure we handle `eval " ... return"' in contexts + where `return' is valid by calling evalstring(). Fixes bug with + `eval return' in sourced files reported by Clark Wang + + +trap.c + - run_pending_traps: call evalstring instead of parse_and_execute. + XXX - still needs to handle saving and restoring token state in the + presence of `return'; could use unwind_protects for that + +builtins/mapfile.def + - run_callback: call evalstring instead of parse_and_execute + + 8/15 + ---- +bashline.c + - bash_filename_stat_hook: make sure we don't free local_dirname + before using it to canonicalize any expanded filename. Make sure + it always points to *dirname and only free it if we're replacing + it. + +lib/readline/complete.c + - append_to_match: make sure we call rl_filename_stat_hook with + newly-allocated memory to avoid problems with freeing it twice + + 8/17 + ---- +variables.c,config-top.h + - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the + code that allows indexed arrays to be exported is enabled and + included + + 8/19 + ---- +shell.c + - call start_debugger from main() only if dollar_vars[1] != 0 (close + enough to a non-interactive shell, since we can be interactive with + -i while running a shell script). Fixes oddity reported by + Techlive Zheng + + 8/20 + ---- +arrayfunc.c + - quote_array_assignment_chars: don't bother quoting if the word has + not been marked as an assignment (W_ASSIGNMENT) + - quote_array_assignment_chars: turn on W_NOGLOB in the word flags + so assignment statements don't undergo globbing. Partial fix for + problems reported by Dan Douglas + + 8/21 + ---- +command.h + - W_NOBRACE: new word flag that means to inhibit brace expansion + +subst.c + - brace_expand_word_list: suppress brace expansion for words with + W_NOBRACE flag + + 8/22 + ---- +builtins/read.def + - read_builtin: don't call dequote_string on what we've read, even if + we saw an escape character, unless (input_string && *input_string). + We may have escaped an IFS whitespace character. Fixes seg fault + reported by + +execute_cmd.c + - execute_command_internal: set the_printed_command_except trap when + about to execute a ( ... ) user subshell. For now, set it only if + ERR is trapped; can relax that later. Fixes bug reported by + Mike Frysinger + + 8/23 + ---- +jobs.c + - remove references to first_pid and pid_wrap, since we're not using + them for anything anymore + + 8/24 + ---- +subst.c + - changes for W_NOBRACE everywhere appropriate: so it can be displayed + for debugging, and passed out of expand_word_internal + +doc/{bash.1,bashref.texi} + - small changes to make it clearer that the = and == operators are + equivalent, and will cause pattern matching when used with [[. + From a question from Michal Soltys + +doc/bashref.texi + - some small formatting changes from Karl Berry + + 8/27 + ---- +lib/readline/doc/{history,rlman,rluserman}.texi + - some small formatting changes from Karl Berry + +arrayfunc.c + - assign_array_element_internal, assign_compound_array_list, + unbind_array_element, array_value_internal: changes to make + assignment statements to negative indices (a[-1]=2) and unsetting + array elements using negative indices (unset 'a[-1]') work. + From suggestions by Dennis Williamson + and Chris F. A. Johnson + +subst.c + - array_length_reference: changes to make length references to array + elements using negative indices (${#a[-1]}) work + + 8/28 + ---- +doc/{bash.1,bashref.texi} + - document new treatment of negative indices to indexed arrays when + assigning, referencing, calculating length, and unsetting + + 8/29 + ---- +shell.c + - show_shell_usage: add -l to list of shell invocation options (short + for --login). From Red Hat bug 852469 + +configure.ac + - renamed from configure.in, as latest autoconf versions want. Patches + Stefano Lattarini + +MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles + - configure.in -> configure.ac + + 9/1 + --- + +parse.y + - read_token_word: allow words like {array[ind]} to be valid redirection + words for constructs like {x} + +lib/readline/display.c + - update_line: if the first difference between the old and new lines + is completely before any invisible characters in the prompt, we + should not adjust _rl_last_c_pos, since it's before any invisible + characters. Fixed in two places + - prompt_modechar: return a character indicating the editing mode: + emacs (@), vi command (:), or vi insert (+) + - _rl_reset_prompt: new function, just calls rl_expand_prompt. Will be + inlined, placeholder for more changes + - expand_prompt: if show-mode-in-prompt is enabled, add a character to + the front of the prompt indicating the editing mode, adjusting the + various variables as appropriate to keep track of the number of + visible characters and number of screen positions + +lib/readline/bind.c + - show-mode-in-prompt: new bindable boolean variable, shadowed by + _rl_show_mode_in_prompt variable + - hack_special_boolean_var: call _rl_reset_prompt when toggling or + setting show-mode-in-prompt + +lib/readline/readline.c + - readline_internal_setup: make sure the correct vi mode keymap is set + before expanding the prompt string for the first time + +lib/readline/misc.c + - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're + showing the editing mode in the prompt + +lib/readline/rlprivate.h + - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations + +lib/readline/vi_mode.c + - rl_vi_insertion_mode: call _rl_reset_prompt + - rl_vi_movement_mode: call _rl_reset_prompt. Finishes changes for + showing mode in prompt string, originally requested by Miroslav + Koskar and most recently by Jordan Michael + Ziegler + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - document new show-mode-in-prompt variable, off by default + + 9/3 + --- + +jobs.c + - set_childmax: new function, external mechanism for other parts of + the shell to set js.c_childmax, the number of saved exited child + statuses to remember +jobs.h + - set_childmax: extern declaration + +variables.c + - CHILD_MAX: new special variable, with sv_childmax function to + run when it changes. Setting CHILD_MAX to a value greater than + zero but less than some maximum (currently 8192) sets the number of + exited child statuses to remember. set_childmax (jobs.c) ensures + that the number does not drop below the posix-mandated minimum + (CHILD_MAX) + +doc/{bash.1,bashref.texi} + - CHILD_MAX: document new meaning and action when variable is set + + 9/5 + --- +redir.c + - redir_varassign: call stupidly_hack_special_variables after + assigning fd number to specified variable, so we can use constructs + like {BASH_XTRACEFD}>foo. Suggested by Pierre Gaston + + + 9/8 + --- +expr.c + - readtok: invalidate previous contents of `curlval' before freeing + and reallocating tokstr (which, chances are, will get the same + pointer as before and render curlval inconsistent). Fixes other + bug reported by Dan Douglas + + 9/9 + --- +lib/readline/complete.c + - rl_username_completion_function: protect call to setpwent() with + #ifdef (HAVE_GETPWENT)/#endif. Fixes bug reported by + Gerd Hofmann + +lib/readline/display.c + - rl_message: second and subsequent calls to rl_message can result in + local_prompt being overwritten with new values (e.g., from the + successive calls displaying the incremental search string). Need + to free before overwriting if it's not the same as the value saved + in saved_local_prompt. Fixes memory leak reported by + Wouter Vermaelen + +lib/readline/{terminal.c,rlprivate.h} + - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from + terminal.c to rlprivate.h so other files can use them + +expr.c + - expr_streval: if noeval is non-zero, just return 0 right away, + short-circuiting evaluation completely. readtok will leave curtok + set correctly without re-entering the evaluator at all. Rest of + fix for bug reported by Dan Douglas + + 9/11 + ---- + +parse.y + - parse_comsub: make sure the `reserved word ok in this context' flag + is preserved after we read `do' followed by whitespace. Fixes bug + reported by Benoit Vaugon + + 9/13 + ---- +configure.ac,config.h.in + - enable-direxpand-default: new configure option, turns the `direxpand' + shell option on by default + +bashline.c + - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if + DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero + +doc/bashref.texi + - enable-direxpand-default: document new configure option + + 9/14 + ---- +shell.c + - --protected: make option valid only when wordexp is compiled into + the shell. Fix from Roman Rakus + +configure.ac + - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from + Joachim Schmitz + + 9/16 + ---- +subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c + - minor code cleanups from Joachim Schmitz + +lib/readline/colors.h + - workaround for HP NonStop compiler issue with from + Joachim Schmitz + + 9/17 + ---- +builtins/printf.def + - printf_builtin: handle localtime returning NULL, as can happen when + encountering overflow. Bug report and initial fix from + Eduardo A. Bustamante López + +doc/{bash.1,bashref.texi} + - emphasize that brace expansion using character ranges ({a..c}) acts + as if the C locale were in use. Prompted by message from + Marcel Giannelia + + 9/20 + ---- +lib/sh/wcsnwidth.c + - wcsnwidth: new function, variant of wcwidth, returns the number of + wide characters from a string that will be displayed to not exceed + a specified max column position + + 9/21 + ---- +builtins/help.def + - show_builtin_command_help: break code that displays the short-doc + for each builtin in two columns into a new function: dispcolumn + - wdispcolumn: multibyte-char version of dispcolumn; uses wide + chars and printf "%ls" format. Fixes problem reported by + Nguyá»n Thái Ngá»c Duy + + 9/22 + ---- +execute_cmd.c + - execute_disk_command: before running the command-not-found hook, + call kill_current_pipeline() to make sure we don't add processes + to an existing pipeline or wait for processes erroneously + + 9/23 + ---- +lib/readline/input.c + - rl_input_available_hook: new hook function, called from + _rl_input_available (or _rl_input_queued) to return whether or not + input is available wherever the input source is + +lib/readline/doc/rltech.texi + - rl_input_available_hook: document + + 9/27 + ---- +lib/glob/sm_loop.c: + - GMATCH: after one or more `*', an instance of ?(x) can match zero or + 1 times (unlike ?, which has to match one character). The old code + failed if it didn't match at least once. Fixes `a*?(x)' bug. + - GMATCH: if we hit the end of the search string, but not the end of + the pattern, and the rest of the pattern is something that can + match the NUL at the end of the search string, we should successfully + match. Fixes `a*!(x)' bug reported by + + 10/2 + ---- +command.h + - add c_lock member to coproc structure for future use to tell who is + manipulating it + +execute_cmd.c + - execute_coproc: block SIGCHLD while parent is forking coproc + process and adding pid to sh_coproc struct to avoid race condition + where child is reaped before the pid is assigned and the coproc is + never marked as having died. Fixes race condition identified by + Davide Baldini + - add assignments to c_lock member of struct coproc in various + functions that manipulate it; was used to identify race condition + - coproc_pidchk: don't call coproc_dispose to avoid using malloc and + other functions in a signal handler context + - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while + manipulating the sh_coproc struct + + 10/6 + ---- +lib/readline/complete.c + - rl_display_match_list: if printing completions horizontally, don't + bother with spacing calculations if limit == 1, which means we are + printing one completion per line no matter what. Fixes bug + reported by David Kaasen + + 10/7 + ---- +builtins/declare.def + - declare_internal: add error checking for nameref attribute and + variable assignments: self-references, attempts to make an array + variable a nameref + +subst.c + - parameter_brace_expand: handle parameter_brace_expand_word returning + &expand_param_fatal or &expand_param_error and return the appropriate + error value + - parameter_brace_expand_word: if a nameref variable's value is not a + valid identifier, return an error + - param_expand: if a nameref variable's value is not a valid identifier, + return an error + +test.c + - unary_operator: add new -R variable, returns true if variable is set + and has the nameref attribute. From ksh93 + +builtins/test.def + - add -R to description of conditional commands for help test + +doc/{bash.1,bashref.texi} + - document new -R unary conditional operator + + 10/13 + ----- +trap.c + - check_signals_and_traps: new function, convenience function for the + rest of the shell to check for pending terminating and interrupt + signals, and to check for and process any pending traps + - any_signals_trapped: new function, returns non-zero if any signals + are trapped and -1 if not + +trap.h + - extern declaration for check_signals_and_traps + +bashline.c + - bashline_reset: make sure we reset the event hook + - bash_event_hook: call check_signals_and_traps instead of just + checking for terminating signals so we can run pending traps and + react to interrupts, and reset the event hook when we're done + + + 10/14 + ----- +trap.c + - trap_handler: if executing in a readline signal handler context, + call bashline_set_event_hook to install bash_event_hook to process + the signal (if bash cares about it) + +sig.c + - sigint_sighandler: call bashline_set_event_hook to set the event + hook if we're executing in a readline signal handler context + +lib/readline/input.c + - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught + signal is SIGINT or SIGQUIT rather than waiting until the next time + around the loop + - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow + an application signal handler to set the event hook in its own + signal handler (e.g., like bash trap_handler or sigint_sighandler) + + +parse.y + - yy_readline_get: don't set interrupt_immediately before we call + readline(). Inspired by report from lanshun zhou + + +input.c + - getc_with_restart: add call to run_pending_traps after call to + CHECK_TERMSIG + +lib/sh/zread.c + - zread: call check_signals_and_traps if read() returns -1/EINTR + instead of just ignoring the EINTR and deferring handling any + signal that generated it + +builtins/mapfile.def + - mapfile: don't set interrupt_immediately before calling zgetline() + (which uses zread internally) + +builtins/read.def + - read_builtin: don't set interrupt_immediately before calling zread + (moved code around so that it was only being set right around calls + to zread to avoid signal handler conflicts). Inspired by report + from lanshun zhou + - edit_line: don't set interrupt_immediately around call to readline() + - include shmbutil.h + - read_builtin: don't call read_mbchar unless is_basic(c) returns + false for the character we just read + + 10/15 + ----- +sig.c + - throw_to_top_level: if interrupt_state is non-zero, make sure that + last_command_exit_value reflects 128+SIGINT if it's not already + greater than 128 + + 10/20 + ----- +builtins/wait.def + - WAIT_RETURN: set wait_signal_received back to 0 for the potential + next call to wait + +quit.h + - CHECK_WAIT_INTR: macro to check whether trap_handler handled a + signal and set wait_signal_received; longjmp to wait_intr_buf in + that case + +jobs.c + - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call + CHECK_TERMSIG to check for terminating signals + - wait_sigint_handler: don't longjmp out of the wait builtin unless + interrupt_immediately is set; otherwise just SIGRETURN from the + handler + - wait_sigint_handler: if interrupt_immediately not set, but we are + executing in the wait builtin and SIGINT is not trapped, treat it + as a `normally received' SIGINT: restore the signal handler and + send SIGINT to ourselves + - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp + to wait_intr_buf (and let wait be interrupted) if we're running from + a signal handler. Wait for CHECK_WAIT_INTR to do the longjmp. + run_pending_traps will run the SIGCHLD trap later + +nojobs.c + - reap_zombie_children, wait_for_single_pid, wait_for: call + CHECK_WAIT_INTR where we call CHECK_TERMSIG + - wait_sigint_handler: don't longjmp out of the wait builtin unless + interrupt_immediately is set; otherwise just SIGRETURN from the + handler + +trap.c + - trap_handler: make sure wait_signal_received is set if the wait + builtin is executing, and only longjmp if interrupt_immediately is + set. This whole set of fixes was prompted by report from + lanshun zhou + + 10/24 + ----- +lib/glob/glob.c + - glob_filename: only check directory_name for globbing chars if + it's of non-zero length + +lib/sh/strchrnul.c + - new simpler implementation + +subst.c + - command_substitute: call set_shellopts after turning off errexit + in subshells so it's reflected in $SHELLOPTS + + 11/7 + ---- +builtins/evalstring.c + - parse_and_execute: treat ERREXIT case like reader_loop does: set + variable_context to 0 before longjmping back to top_level. Don't + run the unwind-protect context to avoid side effects from popping + function contexts. Part of fix for problem reported by Nikolai + Kondrashov + +execute_cmd.c + - execute_simple_command: call unlink_fifo_list only if this is the + last element of a pipeline (or not in a pipeline), rather than for + every child. Fixes difference in behavior between /dev/fd and + FIFOs reported by Zev Weiss + - execute_null_command: do the same thing in the parent branch after + make_child + + 11/14 + ----- +subst.c + - parameter_brace_expand: a variable is null if it's special ($@, $*), + the expansion occurs within double quotes, and the expansion turns + into a quoted null. Fixes debian bug 692447 reported by + Matrosov Dmitriy + +jobs.c + - run_sigchld_trap: make sure `running_trap' sentinel is set + appropriately + - waitchld: only run the sigchld trap if we're not in a signal + handler, not running a trap, and executing the wait builtin. + Otherwise, queue for later handling. We still run one instance + of the trap handler per exited child. Bulk of fix for bug + reported by Elliott Forney + +trap.c + - queue_sigchld_trap: set catch_flag so run_pending_traps notices, + and set trapped_signal_received for completeness. Rest of fix + for bug reported by Elliott Forney + +lib/malloc/malloc.c + - block_signals: renamed to _malloc_block_signals, made public + - unblock_signals: renamed to _malloc_unblock_signals, made public + +lib/malloc/imalloc.h + - extern declarations for _malloc_{un,}block_signals + +lib/malloc/table.c + - mregister_alloc, mregister_free: block signals around table + manipulation + + 11/15 + ----- +trap.c + - run_pending_traps: set SIG_INPROGRESS flag around calls to + run_sigchld_handler so other parts of the shell know that the + SIGCHLD trap handler is executing + - run_pending_traps: if we get a situation where we are looking at + running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER + and the SIG_INPROGRESS flag is set, just skip it. This is possible + if run_pending_traps is called from a SIGCHLD trap handler run by + run_sigchld_trap + +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - corrected description of the effect of `set history-size 0'. Report + from Vesa-Matti J Kari + +include/stdc.h + - CPP_STRING: new define, replaces __STRING + +lib/malloc/{malloc.c,imalloc.h} + - replace __STRING with CPP_STRING + + 11/16 + ----- +lib/readline/bind.c + - sv_histsize: if argument evaluates to a value < 0, unstifle the + history + + 11/22 + ----- +redir.c + - do_redirection_internal: if we have REDIR_VARASSIGN set in the + redirection flags and we set up `redirector' using fcntl or dup2, + don't add a redirect to make sure it stays open. Let the + script programmer manage the file handle. Fixes bug reported by + Sam Liddicott + + 11/24 + ----- +jobs.c + - wait_for_any_job: new function, waits for an unspecified background + job to exit and returns its exit status. Returns -1 on no background + jobs or no children or other errors. Calls wait_for with new + sentinel value ANY_PID + - wait_for: changes to handle argument of ANY_PID: don't look up or + try to modify the child struct, only go through the wait loop once. + Return -1 if waitpid returns no children + +jobs.h + - ANY_PID: new define + +builtins/wait.def + - new option: -n. Means to wait for the next job and return its exit + status. Returns 127 if there are no background jobs (or no + children). Feature most recently requested by Elliott Forney + + +doc/{bash.1,bashref.texi} + - document new `wait -n' option + +execute_cmd.c + - execute_command_internal: save make_command_string () result in a + temp variable before calling savestring() on it; avoids evaluating + make_command_string() result twice. Fix from John E. Malmberg + + + 11/28 + ----- + +builtins/declare.def + - declare_internal: if an array variable is declared using `declare -a' + or `declare -A', but not assigned a value, set the `invisible' + attribute so the variable does not show up as set. Fix for bug + about variable initialization reported by Tim Friske + +builtins/{mapfile,read}.def + - after calling find_or_make_array_variable, make sure the invisible + flag is turned off, in case the variable was declared previously + using `declare -a' or `declare -A'. Side effect of above change to + declare_internal + +subst.c + - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into + the list of options passed to make_internal_declare as appropriate. + Fix for bug reported by Tim Friske + + 11/30 + ----- +test.c + - unary_op: make sure -v and -n check that the variable is not marked + as invisible before calling var_isset. Fix for bug reported by Tim + Friske + + 12/2 + ---- +subst.c + - process_substitute: turn off the `expanding_redir' flag, which + controls whether or not variables.c:find_variable_internal uses the + temporary environment to find variables. We want to use the + temp environment, since we don't have to worry about order of + evaluation in a subshell. Fixes bug reported by Andrey Borzenkov + + + 12/4 + ---- +lib/glob/glob.c + - glob_filename: changes to avoid null filenames and multiple entries + returned for patterns like **/** (globstar enabled). Fixes bug + reported by Ulf Magnusson + + 12/10 + ----- +lib/glob/glob.c + - glob_filename: finish up a series of changes to make globstar-style + globbing more efficient, avoid more duplicate filenames, and be more + compatible with other shells that implement it + o collapse a sequence of **/**/** to one ** + o note when the directory name is all ** or ends in ** so we + can treat it specially when the filename is ** + All inspired by report from Andrey Borzenkov + +lib/sh/zread.c + - zreadn: new function, like zread, but takes an additional argument + saying how many bytes to read into the local buffer. Can be used to + implement `read -N' without so many one-byte calls to zreadc. Code + from Mike Frysinger + + 12/12 + ----- +lib/glob/sm_loop.c + - PATSCAN (glob_patscan): if passed string already points to end of + pattern, return NULL immediately. Fixes problem with + extglob_skipname reported by Raphaël Droz + + 12/13 + ----- +execute_cmd.c + - execute_coproc: handle the command's exit status being inverted + (an oversight). Fixes bug reported by DJ Mills + and Andreas Schwab + + 12/14 + ----- +lib/readline/readline.c + - bind_arrow_keys_internal: add MINGW key bindings for Home, End, + Delete, and Insert keys. Fix from Pierre Muller + + +builtins/printf.def + - printf_builtin: '%()T' conversion: if there is no argument supplied, + behave as if -1 had been supplied (current time). ksh93-like feature + suggested by Clark Wang + +doc/{bash.1,bashref.texi} + - document new printf %()T default argument behavior + + 12/15 + ----- +lib/readline/display.c + - displaying_prompt_first_line: new variable, indicates whether or + not the first line of output is displaying the prompt. Always true + in normal mode, sometimes false in horizontal scrolling mode + - rl_redisplay: set displaying_prompt_first_line to true unless we + are in horizontal mode; set to false in horizontal mode if the left + margin of the displayed line is greater than the end of the prompt + string + - rl_redisplay: when in horizontal scroll mode, don't adjust + _rl_last_c_pos by the wrap offset unless the line is displaying + a prompt containing invisible chars + - update line: don't adjust _rl_last_c_pos by the wrap offset unless + the line is displaying a prompt containing invisible chars + - update_line: if shrinking the line by reducing the number of + displayed characters, but we have already moved the cursor to the + beginning of the line where the first difference starts, don't + try to delete characters + +builtins/read.def + - unbuffered_read: set to 2 if invoked as `read -N' + - if unbuffered_read is set to 2, compute the number of chars we + need to read and read that many with zreadn. Posix mode still + uses zreadintr. Code from Mike Frysinger + +doc/{bash.1,bashref.texi} + - read: make it clear that if read times out, it saves any input + read to that point into the variable arguments. Report from + Fiedler Roman + +subst.c + - command_substitute: change direct assignment of exit_immediately_on_error + to use change_flag ('e', FLAG_OFF) instead + +flags.c + - use errexit_flag as the variable modified by changes to the -e + option, reflect those changes to exit_immediately_on_error + +execute_cmd.c + - execute_builtin: new global variable, builtin_ignoring_errexit, set + to 0 by default and set to 1 if eval/source/command executing in a + context where -e should be ignored + - execute_builtin: set exit_immediately_on_error to errextit_flag + after executing eval/source/command in a context where -e should + be ignored + +flags.c + - if builtin_ignoring_errexit is set, changes to errexit_flag are + not reflected in the setting of exit_immediately_on_error. Fixes + bug reported by Robert Schiele + + 12/23 + ----- +include/posixjmp.h + - setjmp_nosigs: new define, call setjmp in such a way that it will + not manipulate the signal mask + +{expr,test,trap}.c + - setjmp_nosigs: call instead of setjmp; don't need to manipulate + signal mask + +builtins/read.def + - read_builtin: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask + +builtins/evalstring.c: + - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask + - parse_string: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask + - parse_and_execute: save and restore the signal mask if we get a + longjmp that doesn't cause us to return or exit (case DISCARD) + + 12/24 + ----- +general.c + - bash_tilde_expand: only set interrupt_immediately if there are no + signals trapped; we want to jump to top level if interrupted but + not run any trap commands + + 12/25 + ----- +jobs.c + - run_sigchld_trap: no longer set interrupt_immediately before calling + parse_and_execute, even if this is no longer run in a signal handler + context + +input.c + - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG + +parse.y + - yy_stream_get: now that getc_with_restart calls QUIT, don't need to + set interrupt_immediately (already had call to run_pending_traps) + +execute_cmd.c + - execute_subshell_builtin_or_function,execute_function,execute_in_subshell: + setjmp_nosigs: call instead of setjmp when saving return_catch; don't + need to manipulate signal mask + - execute_subshell_builtin_or_function,execute_in_subshell: + setjmp_nosigs: call instead of setjmp where appropriate when saving + top_level; don't need to manipulate signal mask if we're going to + exit right away + +subst.c + - command_substitute: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + - command_substitute: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + +trap.c + - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + - run_exit_trap: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + +builtins/evalfile.c + - _evalfile: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + +builtins/evalstring.c + - evalstring: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + +shell.c + - main: setjmp_nosigs: call instead of setjmp where appropriate when + saving top_level; don't need to manipulate signal mask if we're + going to exit right away + - run_one_command: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + - run_wordexp: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + +eval.c + - reader_loop: save and restore the signal mask if we get a longjmp + that doesn't cause us to return or exit (case DISCARD) + + 12/26 + ----- +parse.y + - shell_input_line_{index,size,len}: now of type size_t; in some cases + the unsigned property makes a difference + - STRING_SAVER: saved_line_{size,index} now of type size_t + - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX; + lines longer than that are truncated until read sees a newline; + addresses theoretical buffer overflow described by Paul Eggert + + - set_line_mbstate: size_t changes like shell_getc + - shell_getc: if shell_input_line is larger than 32K, free it and + start over to avoid large memory allocations sticking around + +variables.c + - bind_global_variable: new function, binds value to a variable in + the global shell_variables table + +variables.h + - bind_global_variable: new extern declaration + +builtins/declare.def + - declare_internal: if -g given with name=value, but variable is not + found in the global variable table, make sure to call + bind_global_variable so the variable is created and modified at + global scope. Fixes a bug where declare -g x=y could modify `x' + at a previous function scope + +command.h + - W_ASSIGNARRAY: new word flag, compound indexed array assignment + +subst.h + - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in + a function context, used by declare -g + +execute_cmd.c + - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to + declaration builtin + +subst.c + - do_assignment_internal: explicitly handle case where we are + executing in a function and we want to create a global array or + assoc variable + - shell_expand_word_list: call make_internal_declare if -a option + given to declaration builtin (W_ASSIGNARRAY); handle -g option with + it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce + Diaz , where declare -ag foo=(bar) could modify + array variable foo at previous function scope, not global scope + + 12/27 + ----- +bashline.c + - Minix needs the third argument to tputs to be a void funtion taking + an int argument, not an int-returning function. Fix from + John E. Malmberg as part of VMS bash port + + 12/29 + ----- +configure.ac,version.c,patchlevel.h + - bash-4.3-devel: new version, new shell compatibility level (43) + +subst.c + - parameter_brace_patsub: put the bash-4.2 code back in from the + change of 3/3 that runs the replacement string through quote + removal, make it dependent on shell_compatibility_level <= 42 + +builtins/shopt.def + - compat42: new shopt option + - set_compatibility_level: change logic to set and unset various + compat variables and shell_compatibility_level + +COMPAT + - new documentation for bash-4.3 compatibility changes + +doc/{bash.1,bashref.texi} + - compat42: document new shopt option + +builtins/shopt.def + - set_compatibility_opts: new function, sets the various shopt + compat variables based on the value of shell_compatibility_level + +builtins/common.h + - set_compatibility_opts: new extern declaration + +variables.c + - BASH_COMPAT: new special variable; sets the shell compatibility + level. Accepts values in decimal (4.2) or integer (42) form; + Unsetting variable, setting it to empty string, or setting it to + out-of-range value sets the shell's compatibility level to the + default for the current version. Valid values are 3.1/31 through + the current version + - sv_shcompat: new function implementing logic for BASH_COMPAT + +variables.h + - sv_shcompat: new extern declaration + +doc/{bash.1,bashref.texi} + - BASH_COMPAT: description of new variable + +lib/readline/complete.c + - _rl_colored_stats: default back to 0 for 4.3 release branch + + 1/5/2013 + -------- +quit.h + - remove spurious call to itrace in CHECK_WAIT_INTR + +bashline.c + - bash_event_hook: if we're going to jump to top_level, make sure we + clean up after readline() by calling rl_cleanup_after_signal(). + Fixes bug reported against devel branch by Raphaël Droz + + - bash_event_hook: reset the event hook before checking for signals + or traps in case we longjmp + +doc/{bash.1,bashref.texi} + - small additions to the set -e section to make it more clear that + contexts where -e is ignored extend to compound commands as well + as shell functions + +lib/readline/readline.h + - rl_signal_event_hook: new extern declaration + +lib/readline/input.c + - rl_signal_event_hook: new variable, hook function to call when a + function (currently just read(2)) is interrupted by a signal and + not restarted + - rl_getc: call rl_signal_event_hook instead of rl_event_hook + +lib/readline/doc/rltech.texi + - rl_signal_event_hook: document new function + +bashline.c + - changes to set rl_signal_event_hook instead of rl_event_hook + +lib/readline/readline.h + - change readline version numbers to 6.3 + + 1/6 + --- +doc/{bash.1,bashref.texi} + - a couple of changes to the descriptions of the ERR trap and its + effects based on a message from Rob Nagler + + 1/9 + --- +expr.c + - expassign: invalidate curlval before freeing and NULLing tokstr to + avoid aliasing issues. Fixes bug reported by Eduardo A. Bustamante + López and Dan Douglas + +braces.c + - array_concat: don't be so aggressive in trying to short-circuit. We + can only short-circuit if we have a single-element array where the + element is an empty string (array[0] == "" array[1] = 0x0). Existing + practice requires us to replicate arrays and prefix or append empty + strings. Fixes bug reported by Eduardo A. Bustamante López + + + 1/11 + ---- +execute_cmd.c + - execute_builtin: since mapfile uses evalstring() to run its callbacks + internally, just like eval, so it needs to handle the case where the + temp environment given to mapfile persists throughout the entire + set of callback commands. This might be a problem with trap also, but + trap isn't run in the same way. Fixes bug reported by Dan Douglas + + + 1/13 + ---- +redir.c + - redirection_error: before expanding the redirection word (if + expandable_redirection_filename returns true), disable command + substitution during expansion. Fixes bug reported by Dan Douglas + + +subst.c + - expand_word_internal: case '\\': if the next character is an IFS + character, and the expansion occurs within double quotes, and the + character is not one for which backslash retains its meaning, add + the (escaped) '\' and the (escaped) character. Fixes bug reported + by Dan Douglas + + 1/15 + ---- +builtins/cd.def + - cd_builtin: make sure call to internal_getopt handles -e option. + Fixes bug reported by + + 1/17 + ---- +subst.c + - expand_word_list_internal: make sure tempenv_assign_error is + initialized to 0 + +execute_cmd.c + - execute_simple_command: make sure tempenv_assign_error is reset to 0 + after it's tested to see if an error should force the shell to exit. + Fixes problem where a the failure of a tempenv assignment preceding + a non-special builtin `sticks' and causes the next special builtin + to exit the shell. From a discussion on bug-bash started by + douxin + + 1/20 + ---- +subst.c + - parameter_brace_expand_rhs: call stupidly_hack_special_variables + after assigning with ${param[:]=word} even if IFS is changing. + Suggested by Dan Douglas [TENTATIVE, needs work + on IFS side effects] + +command.h + - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used + yet) + +{execute_cmd,subst,variables}.c + - removed all code that mentioned W_GLOBEXP + - removed mention of gnu_argv_flags and code that set it + + 1/22 + ---- +subst.c + - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and + IFS is unset or null so we can be sure to split this on spaces + no matter what happens with IFS later + - expand_word_internal: note that param_expand returns W_SPLITSPACE + in the returned word flags and keep track of that state with + `split_on_spaces' + + 1/23 + ---- +subst.c + - expand_word_internal: if split_on_spaces is non-zero, make sure + we split `istring' on spaces and return the resultant word. The + previous expansions should have quoted spaces in the positional + parameters where necessary. Suggested by Dan Douglas + + +execute_cmd.c + - execute_command_internal: make sure any subshell forked to run a + group command or user subshell at the end of a pipeline runs any + EXIT trap it sets. Fixes debian bash bug 698411 + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411 + +subst.c + - shell_expand_word_list: fix code that creates args for and calls + make_internal_declare to avoid calling it twice (missing `else' + in 12/26 change) + - do_assignment_internal: fix code from 12/26 change to fix problem + where an existing assoc variable could be converted to an array + without checking `mkassoc' + + 1/24 + ---- +builtins/evalfile.c + - _evalfile: add missing `close (fd)' calls before returning to + avoid fd leaks. Bug and fix from Roman Rakus + + 1/25 + ---- +builtins/read.def + - read_builtin: don't try to play tricks with the top of the unwind- + protect stack after read gets a SIGALRM; save input_string to new + memory, run the stack, then restore input_string and assign the + variables. Part of fix for bug reported by konsolebox + ; the rest of the fix is with the changes in + trap and signal handling and doing away with interrupt_immediately + + 1/26 + ---- +redir.c + - redirection_expand, write_here_string, write_here_document: before + calling any of the word expansion functions, after setting + expanding_redir to 1 (which bypasses the temp environment in the + variable lookup functions), call sv_ifs to reset the cached IFS- + related variables set by subst.c:setifs(). This ensures that + redirections will not get any IFS values that are set in the + temporary environment, as Posix specifies. Then, after the word + expansions, after resetting expanding_redir to 0, call sv_ifs + again to make sure the cached IFS values are set from any + assignments in the temporary environment. We force executing_builtin + to 1 to `fool' the variable lookup functions into using any temp + environment, then reset it to its old value after sv_ifs returns. + This is what allows read() to use the (cached) IFS variables set + in the temp environment. Fixes inconsistency reported by Dan Douglas + + + 1/29 + ---- +lib/readline/display.c + - update_line: fix off-by-one error when updating vis_lbreaks array + in a multibyte locale that occurs when moving multibyte chars from + one line down to another. Bug report and fix from Egmont + Koblinger + + 1/30 + ---- +configure.ac + - changed version to 4.3-alpha + +redir.c + - redir_open: handle open returning -1/EINTR, which seems to happen + a lot with FIFOs and SIGCHLD, and call QUIT to handle other + signals that can interrupt open(2). Bug report and initial fix + from Mike Frysinger + + 1/31 + ---- +subst.c + - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag + to parameter_brace_expand_word + - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag + is set and we are expanding ${a[@]} or ${a[*]} we set quoted to + include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring + what we do for $@ and $*. Fixes inconsistency reported by Dan + Douglas + +configure.ac + - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it + will find $host-prefixed versions of utilities. Report and fix from + Mike Frysinger + +builtins/setattr.def + - set_var_attribute: check whether bind_variable (called when the + variable whose attributes are being modified is found in the temp + environment) just modified a read-only global variable, and don't + bother marking the temporary variable for propagation if so. The + propagation is superfluous and will result in a strange error + message + + 2/2 + --- +variables.c + - initialize_shell_variables: don't try to import function definitions + with invalid names from the environment if already in posix mode, + but create them as (invisible) exported variables so they pass + through the environment. Print an error message so user knows + what's wrong. Fixes bug reported by Tomas Trnka + + 2/9 + --- + +builtins/read.def + - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c) + can use them + - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was + longjmp without manipulating signal mask, leaving SIGALRM blocked + +quit.h + - move CHECK_ALRM macro here from builtins/read.def so trap.c: + check_signals() can call it + +trap.c + - check_signals: add call to CHECK_ALRM before QUIT + - check_signals_and_traps: call check_signals() instead of including + CHECK_ALRM and QUIT inline. Integrating check for read builtin's + SIGALRM (where zread call to check_signals_and_traps can see it) + fixes problem reported by Mike Frysinger + + 2/12 + ---- +lib/glob/xmbsrtowcs.c + - xdupmbstowcs2: fixed but where end of string was not handled + correctly, causing loop to go past end of string in a bunch of cases. + Fixes bug reported by "Dashing" + + + 2/13 + ---- +builtins/pushd.def + - popd_builtin: treat any argument that isn't -n or of the form + [-+][[:digit:]]* as an error. Fixes problem reported by Bruce + Korb + + 2/14 + ---- +configure.ac + - add check for sig_atomic_t; already a placeholder for it in + config.h.in + + 2/15 + ---- +subst.c + - do_compound_assignment: don't call assign_compound_array_list with + a NULL variable in case make_local_xxx_variable returns NULL + (it will if you try to shadow a readonly or noassign variable). + Fixes bug reported by Richard Tollerton + + 2/16 + ---- +variables.c + - make_local_variable: print error messager if an attempt is made to + create a local variable shadowing a `noassign' variable. Previously + we just silently refused to do it + +trap.[ch] + - get_original_signal: now global so rest of the shell can use it + +sig.c + - initialize_shell_signals: install a signal handler for SIGTERM + that does nothing except set a sigterm_received flag instead of + ignoring it with SIG_IGN, as long as SIGTERM is not ignored when + the shell is started. Use get_original_signal early to get the + original handler, since we will do that later anyway + - set_signal_handler: if installing sigterm_sighandler as the SIGTERM + handler, make sure to add SA_RESTART flag to make it as close to + SIG_IGN as possible + +sig.h + - sigterm_sighandler: new extern declaration + +quit.h + - RESET_SIGTERM: set sigterm_receved to 0 + - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it + as a fatal signal and call termsig_handler to exit the shell + +jobs.c + - make_child: call RESET_SIGTERM just before fork() so we can detect + if the child process received a SIGTERM before it's able to change + the signal handler back to what it was when the shell started + (presumably SIG_DFL). Only has effect if the shell installed + sigterm_sighandler for SIGTERM, interactive shells that were not + started with SIG_IGN as the SIGTERM handler + - make_child: call RESET_SIGTERM in the parent after fork() so the + rest of the shell won't react to it + +execute_cmd.c + - execute_simple_command: call CHECK_SIGTERM after make_child in child + to catch SIGTERM received after fork() and before restoring old + signal handlers + - execute_disk_command: call CHECK_SIGTERM after make_child in child + process after restoring old signal handlers and again just before + calling shell_execve. Fixes race condition observed by + Padraig Brady when testing with his `timeout' + program + +lib/readline/display.c + - open_some_spaces: new function, subset of insert_some_chars that just + opens up a specified number of spaces to be overwritten + - insert_some_spaces: now just calls to open_some_spaces followed by + _rl_output_some_chars + - update_line: use col_temp instead of recalculating it using + _rl_col_width in the case where we use more columns with fewer bytes + - update_line: use open_some_spaces and then output the right number + of chars instead of trying to print new characters then overwrite + existing characters in two separate calls. This includes removing + some dodgy code and making things simpler. Fix from Egmont + Koblinger + - use new variable `bytes_to_insert' instead of overloading temp in + some code blocks (nls - nfd, bytes that comprise the characters + different in the new line from the old) + + 2/18 + ---- +redir.c + - do_redirection_internal: add undoable redirection for the implicit + close performed by the <&n- and >&n- redirections. Fixes bug + reported by Stephane Chazelas + + 2/19 + ---- +sig.c + - termsig_handler: an interactive shell killed by SIGHUP and keeping + command history will try to save the shell history before exiting. + This is an attempt to preserve the save-history-when-the-terminal- + window-is-closed behavior + + 2/21 + ---- +braces.c + - brace_expand: if a sequence expansion fails (e.g. because the + integers overflow), treat that expansion as a simple string, including + the braces, and try to process any remainder of the string. The + remainder may include brace expansions. Derived from SuSE bug + 804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551) + + 2/23 + ---- +{quit,sig}.h,sig.c + - sigterm_received declaration now in sig.h; type is sig_atomic_t + - sigwinch_received type now sig_atomic_t + - sig.h includes bashtypes.h and if SIG_DFL not defined + (same logic as trap.h) to pick up sig_atomic_t + +unwind_prot.c + - include sig.h before quit.h (reverse order) + + 2/27 + ---- +builtins/shopt.def + - reset_shopt_options: make sure check_window_size is reset to the + default from config.h, not unconditionally to 0 + +jobs.[ch] + - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE + +jobs.c + - wait_for: if we're using sigaction to install a handler for SIGCHLD, + make sure we specify SA_RESTART + +lib/{tilde,readline}/shell.c + - get_home_dir: instead of looking in the password file every time, + look once and cache the result + +sig.[ch] + - sigwinch_received, sigterm_received: now `volatile' qualified + +sig.c,quit.h + - interrupt_state,terminating_signal: now sig_atomic_t + + 3/1 + --- +MANIFEST,examples/* + - removed around 120 files without FSF copyrights; requested by + Karl Berry in early January + + 3/2 + --- +lib/malloc/malloc.c + - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined + +doc/bashref.texi + - Fixed most of the examples in the GNU Parallel section to use better + shell idioms following complaints on bug-bash; added a couple of + examples and smoothed out the text + +quit.h + - include "sig.h" for sig_atomic_t + +lib/readline/display.c + - update_line: when inserting one or more characters at the end of + the display line in a non-multibyte environment, just write from the + first difference to the end of the line and return. We don't have + to adjust _rl_last_c_pos. This is needed to adjust from the old + two-part copy to a single call to _rl_output_some_chars (change of + 2/16) + + 3/4 + --- +Makefile.in,doc/Makefile.in + - PACKAGE_TARNAME, docdir: new variables substituted by autoconf + - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary + documentation files to be installed into $(docdir) + - install: add new rule to install $(OTHER_DOCS) + - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS) + +doc/bash.1 + - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that + section in --posix and set -o posix descriptions + +examples/ + - removed around 110 examples at the request of the FSF due to copyright + issues + + 3/5 + --- +builtins/setattr.def + - readonly: modified help text slightly to make it clearer that + functions aren't changed or displayed unless the -f option is given. + Report from + + 3/9 + --- +include/typemax.h + - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined + +parse.y + - include "typemax.h" for possible SIZE_MAX definition, make sure we + include it after shell.h + +{braces,expr}.c + - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions + + 3/10 + ---- +bashline.c + - bash_default_completion: make sure completion type of `!' (same as + TAB but with show-all-if-ambiguous set) and glob-word-completion + sets rl_filename_completion_desired to 0 so extra backslashes don't + get inserted by `quoting' the completion. We can't kill all the + matches because show-all-if-ambiguous needs them. Bug report from + Marcel (Felix) Giannelia + +[bash-4.3-alpha frozen] + + 3/14 + ---- +general.c + - trim_pathname: use memmove instead of memcpy since the source and + destination pathnames may overlap. Report and fix from Matthew + Riley + + 3/18 + ---- +configure.ac + - socklen_t is defined as `unsigned int' if configure can't find it + + 3/20 + ---- +lib/readline/complete.c + - S_ISVTX: since it's not defined on all platforms (Minix), make sure + its use is protected with #ifdef + + 3/21 + ---- +doc/{bash.1,bashref.texi} + - Added mention of ${!name[@]} and ${!name[*]} expansions to get all + indices of an array. Suggested by Jonathan Leffler + + + 3/24 + ---- +subst.h + - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that + single quotes (for now) will be treated as ordinary characters + +subst.c + - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now + + 3/25 + ---- +support/config.{guess,sub} + - updated to versions from autoconf-2.69 + + 3/31 + ---- +lib/sh/shquote.c + - sh_single_quote: short-circuit quoting a single "'" instead of + creating a long string with empty single-quoted strings + +parser.h + - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single- + quote results of $'...' expansion because quote removal will be + done later. Right now this is only done for ${word/pat/rep} + +parse.y + - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern + substitution word expansion so we don't treat single quote specially + in the pattern or replacement string + - parse_matched_pair: if we're parsing a dollar-brace word expansion + (${...}) and we're not treating single quote specially within + double quotes, single-quote the translation of $'...' ansi-c + escaped strings. Original report and fix from Eduardo A. + Bustamante López + +subst.c + - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the + DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat + single quotes specially within a double-quoted string + +execute_cmd.c + - fix_assignment_words: skip over assignment statements preceding a + command word before trying to figure out whether or not assignment + statements following a possible declaration command should be + treated specially. Fixes bug reported by Dan Douglas + + + 4/4 + --- +lib/readline/readline.c + - _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether + the key is a text modification command) if the key sequence length + is 1. That keeps the arrow keys from setting the last command + when called in vi command mode. Fixes bug reported by Ian A. + Watson + + 4/6 + --- +lib/readline/bind.c + - rl_parse_and_bind: when parsing a double-quoted string as the value + of a variable, make sure we skip past the leading double quote. + Fix from Andreas Schwab + +variables.c + - hash_lookup: set new local variable last_table_searched to the table + a successful lookup appears in; tested in make_local_variable to + solve the problem below + - make_local_variable: if we find a variable with the tempenv flag + set at the same `level' as variable_context', but not found in the + temporary_env (temp environment preceding the builtin), return it. + The temp environment preceding the function call has already been + merged (in execute_function) into the list of variable contexts the + function sees as shell_variables by the time this is called. Fixes + inconsistency pointed out by Dan Douglas + +subst.c + - expand_arith_string: expanded out contents of expand_string, + expand_string_internal, expand_string_if_necessary to create a + WORD_DESC and call call_expand_word_internal() on it directly. + We don't want process substitution to be performed ( 1<(2) ) should + mean something different in an arithmetic expression context. + It doesn't work to just turn on the DQUOTE flag, since that means + that things like ${x["expression"]} are not expanded correctly. + Fixes problem pointed out by Dan Douglas + + 4/13 + ---- +subst.c + - process_substitute: run the EXIT trap before exiting, as other + shells seem to. Fixes problem pointed out by Dan Douglas + + +lib/readline/readline.c + - readline_internal_setup: call rl_vi_insertion_mode to enter vi + mode instead of rl_vi_insert_mode to avoid resetting the saved last + command information. Posix says that `.' can repeat a command + that was entered on a previous line so we need to save the info. + Fixes bug reported by Ian A. Watson + + 4/14 + ---- +lib/readline/complete.c + - rl_completion_matches: make sure xrealloc returns something non-null + (can happen when interrupted by a signal) before trying to add + matches to match_list + +subst.c + - array_remove_pattern: return NULL right away if array_variable_part + returns an invisible variable + - array_length_reference: handle array_variable_part returning an + invisible variable + - get_var_and_type: handle array_variable_part returning an invisible + variable + + 4/15 + ---- +execute_cmd.c + - execute_command_internal: make sure to run the EXIT trap for group + commands anywhere in pipelines, not just at the end. From a point + raised by Andreas Schwab + +variables.c + - bind_int_variable: make sure invisible flag is unset. Fixes problems + like "declare -ai a; : $(( a[4]=4 ));" + +arrayfunc.c + - array_variable_part: return variable even if invisible flag set, + callers must handle invisible vars + + 4/18 + ---- +builtins/set.def + - unset_builtin: if -n flag given, call unset_nameref instead of + unset_variable + +variables.c + - find_variable_nameref: print warning message if nameref circular + reference detected, return NULL and let caller deal with it + +builtins/declare.def + - declare_builtin: only disallow global references at this point if + we are at the global scope + + 5/16 + ---- +configure.ac + - update release status to beta + + 5/23 + ---- +trap.c + - run_pending_traps: save and restore pipeline around calls to + evalstring() in case we get a trap while running a trap. Have to + figure out the recursive running traps issue elsewhere. Fixes + bug reported by Roman Rakus + - run_pending_traps: make sure to set running_trap to the appropriate + signal value when running a trap command + - run_pending_traps: short-circuit immediately if running_trap set + when invoked. Could change this later to only skip if it would + run the same trap as currently being run (running_trap == sig + 1) + +configure.ac + - add warning if bison not found + +lib/readline/doc/rltech.texi + - new section with an example program illustrating the callback + interface. Suggested by Peng Yu + +examples/loadables/Makefile.in + - remove references to `cut' and `getconf', which were removed in + early March + + 5/28 + ---- +lib/sh/pathphys.c + - sh_realpath: correct inverted two arguments to call to sh_makepath. + Report and fix from Julien Thomas + + 6/7 + --- +execute_cmd.c + - executing_line_number: the else clauses that are conditional on + various options being defined can simply be if clauses -- they are + mutually exclusive and all have `return' in the body. Fixes bug + reported by Flavio Medeiros + + 6/25 + ---- +lib/readline/readline.c + - readline_internal_setup: only sent the meta-key enable string to the + terminal if we've been told to use one and the terminal has been + successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0). + Suggested by Dan Mick + +lib/readline/signals.c + - _rl_signal_handler: call any defined signal hook after calling + rl_resize_terminal when handling a SIGWINCH. We already have called + the original SIGWINCH handler but will not be resending the signal + to ourselves + + 6/27 + ---- +lib/readline/doc/history.3, doc/bash.1 + - fix description of the `$' modifier to note that it expands to the + last *word*, which is not always the last argument. Report from + ariyetz@gmail.com via gnu.org RT + + 6/29 + ---- +lib/glob/smatch.c + - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead + of 0 (0 if not defined) + +configure.ac,config.h.in + - --enable-glob-asciiranges-default: new option, controls the value of + GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on + by default + +doc/bashref.texi + - document new --enable-glob-asciiranges-default configure option + +variables.c + - assign_in_env: implement += value appending semantics for assignments + preceding command names + + 7/4 + --- +expr.c + - set lasttok = NUM in all of the functions that result in a number, + even if it's a boolean, to avoid errors with constructs like + 1 * x = 1, which should be an asignment error. Fixes problem + pointed out by Dan Douglas + +parse.y + - decode_prompt_string: don't bother to call strcpy if + polite_directory_format returns its argument unchanged. It's not + necessary and Mac OS X 10.9 aborts because of a supposed overlapping + string copy. Bug and fix from simon@hitzemann.org + +subst.c + - parameter_brace_find_indir: new function, code from + parameter_brace_expand_indir that looks up the indirectly-referenced + variable, but does not expand it + - parameter_brace_expand_indir: call parameter_brace_find_indir to + look up indirected variable reference + - get_var_and_type: call parameter_brace_find_indir if it looks like we + are trying to manipulate an indirect variable reference like + ${!b%%foo}. This makes a difference if !b references an array + variable. Bug report from Dan Douglas + + 7/6 + --- +lib/sh/casemod.c + - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX, + since cval can convert something to a wchar_t greater than UCHAR_MAX. + Fixes bug reported by Tomasz Tomasik + + 7/8 + --- +lib/readline/history.c + - add_history_time: if history_length == 0, referencing history_length + - 1 will result in an array bounds error, so make history_length be + at least 1 before going on. Fixes bug reported by Geng Sheng Liu + + +builtins/setattr.def + - show_func_attributes: display definition (if NODEFS argument is 0) and + attributes for a particular function; used by `declare -fp name' + +builtins/declare.def + - declare_internal: call show_func_attributes if -f supplied with -p. + Fixes inconsistency observed by Linda Walsh + +builtins/common.h + - new extern declaration for show_func_attributes + +builtins/read.def + - read_builtin: check the first supplied variable name for validity + before attempting to read any input, since we know we will have to + at least use that one. Don't check any other names yet. Suggested + by jidanni@jidanni.org + + 7/10 + ---- +redir.c + - do_redirection_internal: when closing a file descriptor with + r_close_this ([n]<&-) count close errors as redirection errors if + errno ends up as EIO or ENOSPC. Originally reported back in April + 2012 by Andrey Zaitsev + + 7/11 + ---- +redir.c + - do_redirection_internal: before calling check_bash_input, make sure + that we don't call check_bash_input for an asynchronous process that + is replacing stdin with something else. The seek backwards affects + the parent process as well, since parents and children share the + file pointer. Fixes problem originally reported in March 2013 by + Martin Jackson + + 7/13 + ---- +doc/{bash.1,bashref.texi} + - slight change to add a description of `shopt -o' suggested by Bruce + Korb + + 7/19 + ---- +lib/readline/histfile.c + - history_do_write: if close returns < 0, make sure we restore the + backup history file and return a non-zero value + - history_truncate_file: if write or close return < 0, make sure we + return a non-zero value + +[bash-4.3-beta frozen] + + 7/21 + ---- +lib/readline/isearch.c + - rl_display_search: now takes an entire search context flags word as + the second argument, instead of just reverse flag; changed callers + - rl_display_search: if the search has failed, add `failed ' to the + beginning of the search prompt + - _rl_isearch_dispatch: if the search has failed, display the entire + search string with an indication that the search failed but with the + last matching line. Suggested by jidanni@jidanni.org + +command.h + - W_ASSIGNINT: new word flag; used internally for make_internal_declare + and set by fix_assignment_words + +execute_cmd.c + - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i + given as option. We don't do anything with the value yet + +subst.c + - shell_expand_word_list: rework the way the option list that is + passed to make_internal_declare is created + + 8/1 + --- +doc/{bash.1,bashref.texi} + - minor changes to description of $! based on a report from Chris + Down + +arrayfunc.c + - assign_array_element_internal: before trying to get an array's max + index to process a negative subscript, make sure the array exists. + Bug report from Geir Hauge + + 8/2 + --- +arrayfunc.c + - assign_array_element_internal: before using array_max_index() when + processing a negative subscript, make sure the variable is an array. + if it's not, use 0 as array_max_index assuming it's a string. + Fixes bug report from Geir Hauge + + 8/3 + --- +Makefile.in + - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by + Curtis Doty + + 8/5 + --- +lib/glob/sm_loop.c + - strcompare: short-circuit and return FNM_NOMATCH if the lengths of the + pattern and string (pe - p and se - s, respectively) are not equal + - strcompare: don't bother trying to set *pe or *se to '\0' if that's + what they already are. Fixes bug reported by Geir Hauge + + + 8/6 + --- +doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi + - minor typo changes from Geir Hauge + +bultins/help.def + - show_longdoc: avoid trying to translate the empty string because it + often translates to some boilerplate about the project and + translation. Report and fix from Geir Hauge + + 8/8 + --- +builtins/help.def + - help_builtin: try two passes through the list of help topics for each + argument: one doing exact string matching and one, if the first pass + fails to find a match, doing string prefix matching like previous + versions. This prevents `help read' from matching both `read' and + `readonly', but allows `help r' to match everything beginning with + `r'. Inspired by report from Geir Hauge + + 8/13 + ---- +builtins/fc.def + - fc_builtin,fc_gethnum: calculate `real' end of the history list and + use it if -0 is specified as the beginning or end of the history + range to list. Doesn't work for fc -e or fc -s by design. Feature + requested by Mike Fied + + 8/16 + ---- +trap.c + - _run_trap_internal: use {save,restore}_parser_state instead of + {save,restore}_token_state. It's more comprehensive + + 8/23 + ---- +doc/bash.1 + - disown: remove repeated text. Report and fix from Thomas Hood + + + 8/25 + ---- +lib/readline/rltty.c + - set_special_char: fix prototype (last arg is rl_command_func_t *) + +sig.c + - set_signal_handler: return oact.sa_handler only if sigaction + succeeds; if it doesn't, return SIG_DFL (reasonable default). From + https://bugzilla.redhat.com/show_bug.cgi?id=911404 + +bashline.c + - attempt_shell_completion: fix to skip assignment statements preceding + command name even if there are no programmable completions defined. + From https://bugzilla.redhat.com/show_bug.cgi?id=994659 + - attempt_shell_completion: if still completing command word following + assignment statements, do command completion even if programmable + completion defined for partial command name entered so far + + 8/26 + ---- +pcomplete.c + - pcomp_filename_completion_function: make sure rl_filename_dequoting_function + is non-NULL before trying to call it. Bug and fix from + Andreas Schwab + +bashline.c + - bash_command_name_stat_hook: if *name is not something we're going + to look up in $PATH (absolute_program(*name) != 0), just call the + usual bash_filename_stat_hook and return those results. This makes + completions like $PWD/exam[TAB] add a trailing slash + + 9/2 + --- +builtins/read.def + - read_builtin: before comparing what we read to the delim, make sure + we are not supposed to be ignoring the delimiter (read -N). We + set the delim to -1, but it's possible to read a character whose + int value ends up being between -1 and -128. Fixes bug + reported by Stephane Chazelas + +doc/{bash.1,bashref.texi} + - word splitting: crib some language from Posix to make it clear that + characters in IFS are treated as field *terminators*, not field + *separators*. Addresses issue raised by DJ Mills + + +lib/readline/{util.c,rldefs.h} + - _rl_stricmp,_rl_strnicmp: now take const char * string arguments; + changed prototype declarations + + 9/5 + --- +doc/{bash.1,bashref.texi} + - [[: modify description of pattern matching to make it clear that the + match is performed as if the extglob option were enabled. From Red + Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078 + + 9/12 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we read an ESC and it's supposed to + terminate the search, make sure we check for typeahead with + _rl_pushed_input_available, since installing a hook function causes + typeahead to be collected in `ibuffer' (input.c). If there is any, + make sure we still use the ESC as a prefix character. Bug and fix + from Mike Miller + + 9/16 + ---- +builtins/{caller,cd,kill,pushd,wait}.def + - builtin_usage(): make sure call to this sets return status to + EX_USAGE + + 9/18 + ---- +terminal.c + - rl_change_environment: new application-settable variable; if non- + zero (the default), readline will modify LINES and COLUMNS in the + environment when it handles SIGWINCH + - _rl_get_screen_size: if rl_change_environment is non-zero, use setenv + to modify LINES and COLUMNS environment variables + +readline.h + - rl_change_environment: new extern declaration for applications + + 9/22 + ---- +configure.ac + - relstatus: bumped version to bash-4.3-beta2 + + 9/24 + ---- + +lib/readline/readline.c + - bind_arrow_keys_internal: added more key bindings for the numeric key + pad arrow keys on mingw32. Patch from Pierre Muller + + + 10/19 + ----- + +bashline.c + - maybe_restore_tilde: version of restore_tilde that honors `direxpand'; + calls restore_tilde after saving directory expansion hook if + necessary. Report from Andreas Schwab + +builtins/cd.def + - -@: new option, allows cd to use `extended attributes' present in + NFSv4, ZFS; idea taken from ksh93. Attributes associated with a + file are presented as a directory containing the attributes as + individual files. Original patch contributed by Cedric Blancher + + + 10/20 + ----- +aclocal.m4 + - BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode + combining characters needs a value to use when cross-compiling. + Bug report from Bert Sutherland + +doc/{bash.1,bashref.texi} + - document new -@ option to cd builtin + + 10/28 + ----- +lib/glob/{{gmisc,glob}.c,glob.h} + - extglob_pattern renamed to extglob_pattern_p, declared in glob.h + +subst.c + - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2 + had a typo (& isexp instead of &&) + + 10/29 + ----- +input.c + - getc_with_restart: make sure local_index and local_bufused are + reset to 0 before returning EOF, in case we are running an interactive + shell without line editing and ignoreeof is set. Report and fix + from Yong Zhang + +lib/readline/search.c + - _rl_nsearch_init: take out extra third argument to rl_message; it + only matches prototype (and maybe format) in cases where + PREFER_STDARG and USE_VARARGS are both undefined, which is rare + + 10/31 + ----- +subst.c + - process_substitute: when opening the named pipe in the child, open + without O_NONBLOCK to avoid race conditions. Happens often on AIX. + Bug report and fix from Michael Haubenwallner + + +builtins/ulimit.def + - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is, + use RLIMIT_NTHR (NetBSD) + + 11/5 + ---- +locale.c + - set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been + set, and default_dir has a non-null value, call bindtextdomain(3) + when TEXTDOMAIN is assigned a value. Fixes problem reported by + Michael Arlt + + 11/6 + ---- +builtins/cd.def + - cdxattr: only create synthetic pathname in `buf' if NDIRP argument + is non-null + - change_to_directory: if we have specified -@ and cdxattr returns + failure, fail immediately. Fixes bug reported by Joshuah Hurst + + + 11/12 + ----- +redir.c + - print_redirection: change r_err_and_out (&>) and its append form, + r_append_err_and_out (&>>) cases to separate redirection operator + from filename by a space, in case we have a process substitution. + Fixes bug reported by admn ombres + + 11/15 + ----- +execute_cmd.c + - execute_simple_command: don't close process substitution fds until + we are finished executing any current shell function. Partial fix + for bug reported by John Dawson + +support/shobj-conf + - add support for Darwin 13 (Mac OS X 10.9, Mavericks). Based on a + report by Ludwig Schwardt + + 11/20 + ----- +[bash-4.3-rc1 frozen] + + 11/24 + ----- +builtins/printf.def + - bind_printf_variable: make sure that the variable assigned to is + no longer marked as invisible. Fixes bug reported by NBaH + + + 11/28 + ----- +jobs.c + - delete_old_job: fix off-by-one error in job index in call to + internal_warning. Bug report from Peter Cordes + + 11/30 + ----- +doc/bashref.texi + - add string to description of special parameters with name of + special parameter prefixed by a $, so you can search for $#, + for instance + + 12/2 + ---- +lib/readline/{histexpand.c + - get_history_event: account for current_history() possibly returning + NULL. Report and fix from Pankaj Sharma + + + 12/11 + ----- + +lib/readline/parse-colors.c + - get_funky_string: don't call abort if we see something we can't + parse; just return an error + - _rl_parse_colors: if we encounter an error while parsing $LS_COLORS + we need to leave _rl_color_ext_list as NULL after freeing its + elements, then turn off _rl_colored_stats. Report and fix from Martin + Wesdorp + + 12/13 + ----- + +lib/readline/parse-colors.c + - _rl_parse_colors: if we encounter an unrecognized prefix, throw an + error but try to recover and go on to the next specification + +variables.c + - make_local_variable: for new variables this function creates, set + the att_invisible attribute. All callers from declare_internal. + Indirectly, this is a fix for bug with `declare -n var; var=foo;' + reported by Pierre Gaston + - bind_variable: if assigning to nameref variable that doesn't have + a value yet (e.g., with `declare -n var; var=foo'), don't try to + use the unset name. Fixes a segfault reported by Pierre Gaston + + +execute_cmd.c + - execute_command_internal: make sure last_command_exit_value is set + to 0 after any command executed in the background. Fixes bug + reported by Martin Kealey + + 12/17 + ----- +support/config.{guess,sub} + - updated to latest versions from git + + 12/19 + ----- +parse.y + - struct STRING_SAVER: now has a new `flags' element, to identify the + caller: alias expansion, double-paren parsing, or parse_and_execute + - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL + - push_string: now doesn't attempt to call strlen on a NULL string to + set shell_input_line_size + - parser_expanding_alias, parser_save_alias, parser_restore_alias: new + functions to provide an external interface to push_string and + pop_string; parser_save_alias sets flags element to PSH_SOURCE (could + be renamed PSH_EXTERN someday) + - shell_getc: when yy_getc returns '\0', instead of just testing + whether the pushed_string_list is not-empty before popping it, don't + pop if if the saved string has flags PSH_SOURCE, indicating that + parse_and_execute set it before setting bash_input to the string. + We should continue reading to the end of that string before popping + back to a potential alias. Partial solution for the problem of aliases + with embedded newlines containing `.' commands being executed out of + order reported by Andrew Martin + - shell_getc: when yy_getc returns '\0' and there is a saved string of + type PSH_SOURCE, restart the read without popping the string stack + if we have not read to the end of bash_input.location.string. Rest + of fix for out-of-order execution problem + +externs.h + - parser_expanding_alias, parser_save_alias, parser_restore_alias: new + extern function declarations + +builtins/evalstring.c + - pe_prologue: if the parser is expanding an alias, make sure to add + an unwind-protect to restore the alias; undoes the work that will be + performed by parse_and_execute/parse_string + - parse_and_execute,parse_string: after calling push_stream to save + bash_input, check whether or not the parser is currently expanding + an alias (parser_expanding_alias() != 0). If it is, we want to save + that string in the pushed_string_list, which we do with + parser_save_alias. + + 12/23 + ----- +execute_cmd.c + - execute_for_command: make sure to set line_number before expanding + the word list, so expansion errors have the right line number. + From a report from Ben Okopnik + +expr.c + - exp2: save token pointer before calling readtok(), arrange to use + saved token pointer when printing error token on a division by 0 + error + + 12/27 + ----- +lib/readline/display.c + - rl_redisplay: when calculating effects of invisible characters in a + prompt that is split across physical screen lines to set the indices + of linebreaks, don't bother testing local_prompt_prefix (line 751). + That prefix doesn't matter when calculating prompt visible and + invisible characters. Fixes problem reported by Jinesh Choksi + + +Makefile.in + - install: make sure to use $(DESTDIR) when installing OTHER_DOCS. + Report and fix from Matthias Klose + +doc/texinfo.tex + - updated to version of 2013-09-11 + + 12/28 + ----- +lib/readline/undo.c + - rl_do_undo: if we are undoing from a history entry (rl_undo_list == + current_history()->data), make sure the change to rl_line_buffer is + reflected in the history entry. We use the guts of + rl_maybe_replace_line to do the work. Fixes problem reported by + gregrwm + + 12/30 + ----- +sig.c + - sigint_sighandler: if we get a SIGINT (and this signal handler is + installed) while the wait builtin is running, note that we received + it in the same way as jobs.c:wait_sigint_handler and return. The + various wait_for functions will look for that with CHECK_WAIT_INTR. + This fixes the wait builtin not being interruptible in an interactive + job control shell + + 12/31 + ----- +trap.c + - set_signal_hard_ignored: rename set_signal_ignored to this, since it + both sets original_signals[sig] and sets the HARD_IGNORE flag + - set_signal_ignored: new function, now just sets original_signals[sig] + +trap.h + - set_signal_hard_ignored: new external declaration + +sig.c + - initialize_terminating_signals: call set_signal_hard_ignored instead + of set_signal_ignored for signals with disposition SIG_IGN when the + shell starts + +execute_cmd.c + - setup_async_signals: make sure we get the original dispositions for + SIGINT and SIGQUIT before starting the subshell, and don't call + set_signal_ignored because that sets original_signals[sig]. If we + don't, subsequent attempts to reset handling using trap will fail + because it thinks the original dispositions were SIG_IGN. Posix + interpretation 751 (http://austingroupbugs.net/view.php?id=751) + + 1/2/2014 + -------- +lib/sh/stringvec.c + - strvec_mcreate, strvec_mresize: versions of create and resize that + use malloc and realloc, respectively, instead of xmalloc/xrealloc + +braces.c + - expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can + catch and handle memory allocation failures instead of aborting + with the xmalloc/xrealloc interface + +lib/sh/strdup.c + - strdup replacement function for ancient systems that don't have it + +lib/sh/itos.c + - mitos: new function, itos that uses strdup instead of savestring + +externs.h + - strvec_mcreate/strvec_mresize: new extern declarations + - mitos: new extern declaration + +configure.ac + - bash version moved to 4.3-rc2 + + 1/6 + --- +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - separate the description of what happens when readline reads the + tty EOF character from the description of delete-char, leaving a + note in the delete-char description about common binding for ^D. + From suggestion by Parke + +lib/readline/doc/{version.texi,history.3,*.texi} + - updated email addresses and copyright dates + + 1/7 + --- +variables.c + - delete_var: new function, just removes a variable from a hash table + and frees it, without doing anything else + - make_variable_value: if we are trying to assign to a nameref variable, + return NULL if the value is null or the empty string or not a valid + identifier + +variables.h + - delete_var: new extern declaration + +subst.h + - ASS_NAMEREF: new define for assignments, means assigning to a nameref + variable + +builtins/declare.def + - declare_internal: if we are creating and assigning to a nameref + variable, make sure the value is a valid variable name (checks done + by make_variable_value via bind_variable_value) and display an + error message, deleting the variable we just created, if it is not. + Fixes bug reported by Peggy Russell + + 1/9 + --- +builtins/declare.def + - declare_internal: turning on nameref attribute for an existing + variable turns off -i/-l/-u/-c attributes (essentially the ones + that cause evaluation at assignment time) for ksh93 compat + +builtins/setattr.def + - show_name_attributes: if asked to display attributes and values for + a nameref variable, don't follow the nameref chain to the end. More + ksh93 compat + + 1/10 + ---- +trap.c + - _run_trap_internal: use {save,restore}_parser_state instead of + {save,restore}_token_state, like in run_pending_traps(); don't + need to save and restore last_command_exit_value as a result + - _run_trap_internal: call {save,restore}_pipeline like in + run_pending_traps() + - run_pending_traps: since we no longer run traps in a signal handler + context, do not block and unblock the trapped signal while the + trap is executing + - run_pending_traps: allow recursive invocations (basically, running + traps from a trap handler) with only a warning if the shell is + compiled in debug mode. If a caller doesn't want this to happen, + it should test running_trap > 0. signal_in_progress (sig) only works + for the signals the shell handles specially + +bashline.c + - bash_event_hook: make sure we clean up readline if interrupt_state + is set, not only when SIGINT is not trapped. check_signals_and_traps + will call check_signals, which calls QUIT, which will longjmp back + to top_level, running the interrupt trap along the way. Fixes the + problem of signal handlers being reset out from under readline, and + not being set properly the next time readline is called, because + signals_set_flag is still set to 1. XXX - might need to do this + for other signals too? + + 1/11 + ---- +subst.h + - SD_GLOB: new define for skip_to_delim; means we are scanning a + glob pattern. + +subst.c + - skip_to_delim: if flags include SD_GLOB, assume we are scanning a + glob pattern. Currently only used to skip bracket expressions + which may contain one of the delimiters + + 1/12 + ---- +subst.c + - parameter_brace_expand: when expanding $@ as part of substring + expansion, pattern substitution, or case modification, don't turn + on the QUOTED_NULL flag. The code that constructs the word to be + returned from expand_word_internal expects a different code path + when $@ is being expanded. Fixes bug reported by Theodoros + V. Kalamatianos + + 1/19 + ---- +subst.c + - list_dequote_escapes: new function; analogue of list_quote_escapes + +pathexp.c + - quote_string_for_globbing: fix case where unescaped ^A is last char + in string; need to pass it through unaltered instead of turning it + into a bare backslash + - quote_string_for_globbing: when quoting for regexp matching in [[, + don't treat backslash as a quote character; quote the backslash as + any other character. Part of investigation into reports from + Eduardo A. Bustamante López + + 1/25 + ---- +builtins/gen-helpfiles.c + - write_helpfiles: add prototype + - make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC + is defined. the code does not use them, and we don't link against + xmalloc.o. Report from Linda Walsh + +Makefile.in + - variables.o: add dependency on builtins/builtext.h; helps with + parallel builds. Report from Linda Walsh + +support/shobj-conf + - darwin: combine the stanzas into one that will not require them to + be updated on each Mac OS X release. Report and fix from Max Horn + + + 1/27 + ---- +support/shobj-conf + - darwin: changed the install_name embedded into the shared library + to contain only the major version number, not the minor one. The + idea is that the minor versions should all be API/ABI compatible, + and it is better to link automatically with the latest one. Idea + from Max Horn + + 1/29 + ---- +[bash-4.3-rc2 released] + + 1/30 + ---- +lib/readline/readline.h + - rl_clear_history, rl_free_keymap: add extern declarations. Report + from Hiroo Hayashi + +general.c + - include trap.h for any_signals_trapped() prototype + +lib/sh/unicode.c + - include for sprintf prototype + + 1/31 + ---- +execute_cmd.c + - execute_simple_command: only posix-mode shells should exit on an + assignment failure in the temporary environment preceding a special + builtin. This is what the documentation and code comments have + always said + - execute_simple_command: make sure redirection errors, word expansion + errors, and assignment errors to Posix special builtins cause a + non-interactive posix mode shell to exit. Previously the shell + would not exit if the failed special builtin was on the LHS of || + or && + +pathexp.c + - quote_string_for_globbing: when quoting a regular expression + (QGLOB_REGEXP), allow an unquoted backslash to pass through + unaltered. Don't use it as a quote character or quote it. More + investigation from 1/24 and report by Mike Frysinger + + - quote_string_for_globbing: when quoting a regular expression + (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a + backslash to quote it. We should not have to quote it because it is + not a character special to EREs. More investigation from 1/24 + +lib/glob/glob.c + - glob_testdir: now takes a second flags argument (currently unused); + changed prototype and callers + + 2/1 + --- +lib/glob/glob.c + - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use + lstat so we skip symlinks when traversing the directory tree. + Originally reported by Chris Down + + 2/2 + --- +lib/readline/undo.c + - rl_do_undo: make sure CUR is non-zero before dereferencing it to + check cur->data against rl_undo_list. Report and fix from + Andreas Schwab + +doc/{bash.1,bashref.texi} + - added slight clarifying language to the description of $*, + describing what happens when the expansion is not within double + quotes + + 2/4 + --- +test.c + - unary_test: add code to -v case so that it interprets `bare' array + references (foo[1]) and returns true if that index has a value + + 2/5 + --- +trap.c + - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag + off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER; + continue with resetting handler in this case. maybe_set_sigchld_trap + will check these things before resetting sigchld trap from + run_sigchld_trap. Fixes (apparently long-standing?) problem reported + by Alexandru Damian + + 2/6 + --- +lib/sh/strtrans.c + - ansic_quote: fixed a bug when copying a printable character that + consumes more than one byte; byte counter was not being incremented. + Bug report from jidanni@jidanni.org + + 2/7 + --- +input.c + - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or + terminating_signal is set (which means QUIT; will longjmp out of this + function), make sure the local buffer variables are zeroed out to + avoid reading past the end of the buffer on the next call. Bug report + from Dan Jacobson diff --git a/CWRU/POSIX.NOTES.old b/CWRU/POSIX.NOTES.old new file mode 100644 index 00000000..1707ab10 --- /dev/null +++ b/CWRU/POSIX.NOTES.old @@ -0,0 +1,82 @@ +Starting bash with the `--posix' command-line option or executing +`set -o posix' while bash is running will cause bash to conform more +closely to the Posix.2 standard by changing the behavior to match that +specified by Posix.2 in areas where the bash default differs. + +The following list is what's changed when `posix mode' is in effect: + +1. When a command in the hash table no longer exists, bash will re-search + $PATH to find the new location. This is also available with + `shopt -s checkhash'. + +2. The >& redirection does not redirect stdout and stderr. + +3. The message printed by the job control code and builtins when a job + exits with a non-zero status is `Done(status)'. + +4. Reserved words may not be aliased. + +5. The Posix.2 PS1 and PS2 expansions of `!' -> history number and + `!!' -> `!' are enabled, and parameter expansion is performed on + the value regardless of the setting of the `promptvars' option. + +6. Interactive comments are enabled by default. (Note that bash has + them on by default anyway.) + +7. The Posix.2 startup files are executed ($ENV) rather than the normal + bash files. + +8. Tilde expansion is only performed on assignments preceding a command + name, rather than on all assignment statements on the line. + +9. The default history file is ~/.sh_history (default value of $HISTFILE). + +10. The output of `kill -l' prints all the signal names on a single line, + separated by spaces. + +11. Non-interactive shells exit if `file' in `. file' is not found. + +12. Redirection operators do not perform pathname expansion on the word + in the redirection unless the shell is interactive + +13. Function names must be valid shell identifiers. That is, they may not + contain characters other than letters, digits, and underscores, and + may not start with a digit. Declaring a function with an illegal name + causes a fatal syntax error in non-interactive shells. + +14. Posix.2 `special' builtins are found before shell functions during command + lookup. + +15. If a Posix.2 special builtin returns an error status, a non-interactive + shell exits. The fatal errors are those listed in the POSIX.2 standard, + and include things like passing incorrect options, redirection errors, + variable assignment errors for assignments preceding the command name, + and so on. + +16. The environment passed to executed commands is not sorted. Neither is + the output of `set'. This is not strictly Posix.2 behavior, but sh + does it this way. Ksh does not. It's not necessary to sort the + environment; no program should rely on it being sorted. + +17. If the `cd' builtin finds a directory to change to using $CDPATH, the + value it assigns to $PWD does not contain any symbolic links, as if + `cd -P' had been executed. + +18. A non-interactive shell exits with an error status if a variable + assignment error occurs when no command name follows the assignment + statements. A variable assignment error occurs, for example, when + trying to assign a value to a read-only variable. + +19. A non-interactive shell exits with an error status if the iteration + variable in a for statement or the selection variable in a select + statement is a read-only variable. + +20. Process substitution is not available. + +21. Assignment statements preceding POSIX.2 `special' builtins persist in + the shell environment after the builtin completes. + +There is other Posix.2 behavior that bash does not implement. Specifically: + +1. Assignment statements affect the execution environment of all builtins, + not just special ones. diff --git a/CWRU/old/set.def.save b/CWRU/old/set.def.save new file mode 100644 index 00000000..87b78d7c --- /dev/null +++ b/CWRU/old/set.def.save @@ -0,0 +1,544 @@ +This file is set.def, from which is created set.c. +It implements the "set" and "unset" builtins in Bash. + +Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +$PRODUCES set.c + +#include +#include "../shell.h" +#include "../flags.h" + +#include "bashgetopt.h" + +extern int interactive; +extern int noclobber, posixly_correct; +#if defined (READLINE) +extern int rl_editing_mode, no_line_editing; +#endif /* READLINE */ + +$BUILTIN set +$FUNCTION set_builtin +$SHORT_DOC set [--abefhkmnptuvxldBCHP] [-o option] [arg ...] + -a Mark variables which are modified or created for export. + -b Notify of job termination immediately. + -e Exit immediately if a command exits with a non-zero status. + -f Disable file name generation (globbing). + -h Locate and remember function commands as functions are + defined. Function commands are normally looked up when + the function is executed. + -i Force the shell to be an "interactive" one. Interactive shells + always read `~/.bashrc' on startup. + -k All keyword arguments are placed in the environment for a + command, not just those that precede the command name. + -m Job control is enabled. + -n Read commands but do not execute them. + -o option-name + Set the variable corresponding to option-name: + allexport same as -a + braceexpand same as -B +#if defined (READLINE) + emacs use an emacs-style line editing interface +#endif /* READLINE */ + errexit same as -e + histexpand same as -H + ignoreeof the shell will not exit upon reading EOF + interactive-comments + allow comments to appear in interactive commands + monitor same as -m + noclobber disallow redirection to existing files + noexec same as -n + noglob same as -f + nohash same as -d + notify save as -b + nounset same as -u + physical same as -P + posix change the behavior of bash where the default + operation differs from the 1003.2 standard to + match the standard + privileged same as -p + verbose same as -v +#if defined (READLINE) + vi use a vi-style line editing interface +#endif /* READLINE */ + xtrace same as -x + -p Turned on whenever the real and effective user ids do not match. + Disables processing of the $ENV file and importing of shell + functions. Turning this option off causes the effective uid and + gid to be set to the real uid and gid. + -t Exit after reading and executing one command. + -u Treat unset variables as an error when substituting. + -v Print shell input lines as they are read. + -x Print commands and their arguments as they are executed. + -l Save and restore the binding of the NAME in a FOR command. + -d Disable the hashing of commands that are looked up for execution. + Normally, commands are remembered in a hash table, and once + found, do not have to be looked up again. +#if defined (BRACE_EXPANSION) + -B the shell will perform brace expansion +#endif /* BRACE_EXPANSION */ +#if defined (BANG_HISTORY) + -H Enable ! style history substitution. This flag is on + by default. +#endif /* BANG_HISTORY */ + -C If set, disallow existing regular files to be overwritten + by redirection of output. + -P If set, do not follow symbolic links when executing commands + such as cd which change the current directory. + +Using + rather than - causes these flags to be turned off. The +flags can also be used upon invocation of the shell. The current +set of flags may be found in $-. The remaining n ARGs are positional +parameters and are assigned, in order, to $1, $2, .. $n. If no +ARGs are given, all shell variables are printed. +$END + +/* An a-list used to match long options for set -o to the corresponding + option letter. */ +struct { + char *name; + int letter; +} o_options[] = { + { "allexport", 'a' }, +#if defined (BRACE_EXPANSION) + { "braceexpand",'B' }, +#endif + { "errexit", 'e' }, + { "histexpand", 'H' }, + { "monitor", 'm' }, + { "noexec", 'n' }, + { "noglob", 'f' }, + { "nohash", 'd' }, +#if defined (JOB_CONTROL) + { "notify", 'b' }, +#endif /* JOB_CONTROL */ + {"nounset", 'u' }, + {"physical", 'P' }, + {"privileged", 'p' }, + {"verbose", 'v' }, + {"xtrace", 'x' }, + {(char *)NULL, 0}, +}; + +#define MINUS_O_FORMAT "%-15s\t%s\n" + +void +list_minus_o_opts () +{ + register int i; + char *on = "on", *off = "off"; + + printf (MINUS_O_FORMAT, "noclobber", (noclobber == 1) ? on : off); + + if (find_variable ("ignoreeof") || find_variable ("IGNOREEOF")) + printf (MINUS_O_FORMAT, "ignoreeof", on); + else + printf (MINUS_O_FORMAT, "ignoreeof", off); + + printf (MINUS_O_FORMAT, "interactive-comments", + interactive_comments ? on : off); + + printf (MINUS_O_FORMAT, "posix", posixly_correct ? on : off); + +#if defined (READLINE) + if (no_line_editing) + { + printf (MINUS_O_FORMAT, "emacs", off); + printf (MINUS_O_FORMAT, "vi", off); + } + else + { + /* Magic. This code `knows' how readline handles rl_editing_mode. */ + printf (MINUS_O_FORMAT, "emacs", (rl_editing_mode == 1) ? on : off); + printf (MINUS_O_FORMAT, "vi", (rl_editing_mode == 0) ? on : off); + } +#endif /* READLINE */ + + for (i = 0; o_options[i].name; i++) + { + int *on_or_off, zero = 0; + + on_or_off = find_flag (o_options[i].letter); + if (on_or_off == FLAG_UNKNOWN) + on_or_off = &zero; + printf (MINUS_O_FORMAT, o_options[i].name, (*on_or_off == 1) ? on : off); + } +} + +set_minus_o_option (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + int option_char = -1; + + if (STREQ (option_name, "noclobber")) + { + if (on_or_off == FLAG_ON) + bind_variable ("noclobber", ""); + else + unbind_variable ("noclobber"); + stupidly_hack_special_variables ("noclobber"); + } + else if (STREQ (option_name, "ignoreeof")) + { + unbind_variable ("ignoreeof"); + unbind_variable ("IGNOREEOF"); + if (on_or_off == FLAG_ON) + bind_variable ("IGNOREEOF", "10"); + stupidly_hack_special_variables ("IGNOREEOF"); + } + +#if defined (READLINE) + else if ((STREQ (option_name, "emacs")) || (STREQ (option_name, "vi"))) + { + if (on_or_off == FLAG_ON) + { + rl_variable_bind ("editing-mode", option_name); + + if (interactive) + with_input_from_stdin (); + no_line_editing = 0; + } + else + { + int isemacs = (rl_editing_mode == 1); + if ((isemacs && STREQ (option_name, "emacs")) || + (!isemacs && STREQ (option_name, "vi"))) + { + if (interactive) + with_input_from_stream (stdin, "stdin"); + no_line_editing = 1; + } + else + builtin_error ("not in %s editing mode", option_name); + } + } +#endif /* READLINE */ + else if (STREQ (option_name, "interactive-comments")) + interactive_comments = (on_or_off == FLAG_ON); + else if (STREQ (option_name, "posix")) + { + posixly_correct = (on_or_off == FLAG_ON); + unbind_variable ("POSIXLY_CORRECT"); + unbind_variable ("POSIX_PEDANTIC"); + if (on_or_off == FLAG_ON) + { + bind_variable ("POSIXLY_CORRECT", ""); + stupidly_hack_special_variables ("POSIXLY_CORRECT"); + } + } + else + { + register int i; + for (i = 0; o_options[i].name; i++) + { + if (STREQ (option_name, o_options[i].name)) + { + option_char = o_options[i].letter; + break; + } + } + if (option_char == -1) + { + builtin_error ("%s: unknown option name", option_name); + return (EXECUTION_FAILURE); + } + if (change_flag (option_char, on_or_off) == FLAG_ERROR) + { + bad_option (option_name); + return (EXECUTION_FAILURE); + } + } + return (EXECUTION_SUCCESS); +} + +/* Set some flags from the word values in the input list. If LIST is empty, + then print out the values of the variables instead. If LIST contains + non-flags, then set $1 - $9 to the successive words of LIST. */ +set_builtin (list) + WORD_LIST *list; +{ + int on_or_off, flag_name, force_assignment = 0; + + if (!list) + { + SHELL_VAR **vars; + + vars = all_shell_variables (); + if (vars) + { + print_var_list (vars); + free (vars); + } + + vars = all_shell_functions (); + if (vars) + { + print_var_list (vars); + free (vars); + } + + return (EXECUTION_SUCCESS); + } + + /* Check validity of flag arguments. */ + if (*list->word->word == '-' || *list->word->word == '+') + { + register char *arg; + WORD_LIST *save_list = list; + + while (list && (arg = list->word->word)) + { + char c; + + if (arg[0] != '-' && arg[0] != '+') + break; + + /* `-' or `--' signifies end of flag arguments. */ + if (arg[0] == '-' && + (!arg[1] || (arg[1] == '-' && !arg[2]))) + break; + + while (c = *++arg) + { + if (find_flag (c) == FLAG_UNKNOWN && c != 'o') + { + char s[2]; + s[0] = c; s[1] = '\0'; + bad_option (s); + if (c == '?') + builtin_usage (); + return (c == '?' ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + } + list = list->next; + } + list = save_list; + } + + /* Do the set command. While the list consists of words starting with + '-' or '+' treat them as flags, otherwise, start assigning them to + $1 ... $n. */ + while (list) + { + char *string = list->word->word; + + /* If the argument is `--' or `-' then signal the end of the list + and remember the remaining arguments. */ + if (string[0] == '-' && (!string[1] || (string[1] == '-' && !string[2]))) + { + list = list->next; + + /* `set --' unsets the positional parameters. */ + if (string[1] == '-') + force_assignment = 1; + + /* Until told differently, the old shell behaviour of + `set - [arg ...]' being equivalent to `set +xv [arg ...]' + stands. Posix.2 says the behaviour is marked as obsolescent. */ + else + { + change_flag ('x', '+'); + change_flag ('v', '+'); + } + + break; + } + + if ((on_or_off = *string) && + (on_or_off == '-' || on_or_off == '+')) + { + int i = 1; + while (flag_name = string[i++]) + { + if (flag_name == '?') + { + builtin_usage (); + return (EXECUTION_SUCCESS); + } + else if (flag_name == 'o') /* -+o option-name */ + { + char *option_name; + WORD_LIST *opt; + + opt = list->next; + + if (!opt) + { + list_minus_o_opts (); + continue; + } + + option_name = opt->word->word; + + if (!option_name || !*option_name || (*option_name == '-')) + { + list_minus_o_opts (); + continue; + } + list = list->next; /* Skip over option name. */ + + if (set_minus_o_option (on_or_off, option_name) != EXECUTION_SUCCESS) + return (EXECUTION_FAILURE); + } + else + { + if (change_flag (flag_name, on_or_off) == FLAG_ERROR) + { + char opt[3]; + opt[0] = on_or_off; + opt[1] = flag_name; + opt[2] = '\0'; + bad_option (opt); + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + } + } + else + { + break; + } + list = list->next; + } + + /* Assigning $1 ... $n */ + if (list || force_assignment) + remember_args (list, 1); + return (EXECUTION_SUCCESS); +} + +$BUILTIN unset +$FUNCTION unset_builtin +$SHORT_DOC unset [-f] [-v] [name ...] +For each NAME, remove the corresponding variable or function. Given +the `-v', unset will only act on variables. Given the `-f' flag, +unset will only act on functions. With neither flag, unset first +tries to unset a variable, and if that fails, then tries to unset a +function. Some variables (such as PATH and IFS) cannot be unset; also +see readonly. +$END + +#define NEXT_VARIABLE() any_failed++; list = list->next; continue; + +unset_builtin (list) + WORD_LIST *list; +{ + int unset_function, unset_variable, unset_array, opt, any_failed; + char *name; + + unset_function = unset_variable = unset_array = any_failed = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "fv")) != -1) + { + switch (opt) + { + case 'f': + unset_function = 1; + break; + case 'v': + unset_variable = 1; + break; + default: + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + + list = loptend; + + if (unset_function && unset_variable) + { + builtin_error ("cannot simultaneously unset a function and a variable"); + return (EXECUTION_FAILURE); + } + + while (list) + { + SHELL_VAR *var; + int tem; +#if defined (ARRAY_VARS) + char *t; +#endif + + name = list->word->word; + +#if defined (ARRAY_VARS) + if (!unset_function && valid_array_reference (name)) + { + t = strchr (name, '['); + *t++ = '\0'; + unset_array++; + } +#endif + + var = unset_function ? find_function (name) : find_variable (name); + + if (var && !unset_function && non_unsettable_p (var)) + { + builtin_error ("%s: cannot unset", name); + NEXT_VARIABLE (); + } + + /* Posix.2 says that unsetting readonly variables is an error. */ + if (var && readonly_p (var)) + { + builtin_error ("%s: cannot unset: readonly %s", + name, unset_function ? "function" : "variable"); + NEXT_VARIABLE (); + } + + /* Unless the -f option is supplied, the name refers to a variable. */ +#if defined (ARRAY_VARS) + if (var && unset_array) + { + if (array_p (var) == 0) + { + builtin_error ("%s: not an array variable", name); + NEXT_VARIABLE (); + } + else + tem = unbind_array_element (var, t); + } + else +#endif /* ARRAY_VARS */ + tem = makunbound (name, unset_function ? shell_functions : shell_variables); + + /* This is what Posix.2 draft 11+ says. ``If neither -f nor -v + is specified, the name refers to a variable; if a variable by + that name does not exist, a function by that name, if any, + shall be unset.'' */ + if ((tem == -1) && !unset_function && !unset_variable) + tem = makunbound (name, shell_functions); + + if (tem == -1) + any_failed++; + else if (!unset_function) + stupidly_hack_special_variables (name); + + list = list->next; + } + + if (any_failed) + return (EXECUTION_FAILURE); + else + return (EXECUTION_SUCCESS); +} diff --git a/CWRU/save/unwind_prot.h.save b/CWRU/save/unwind_prot.h.save new file mode 100644 index 00000000..998fd72b --- /dev/null +++ b/CWRU/save/unwind_prot.h.save @@ -0,0 +1,50 @@ +/* unwind_prot.h - Macros and functions for hacking unwind protection. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#if !defined (_UNWIND_PROT_H) +#define _UNWIND_PROT_H + +/* Run a function without interrupts. */ +extern void begin_unwind_frame (); +extern void discard_unwind_frame (); +extern void run_unwind_frame (); +extern void add_unwind_protect (); +extern void remove_unwind_protect (); +extern void run_unwind_protects (); +extern void unwind_protect_var (); + +/* Define for people who like their code to look a certain way. */ +#define end_unwind_frame() + +/* How to protect an integer. */ +#define unwind_protect_int(X) unwind_protect_var (&(X), (char *)(X), sizeof (int)) + +/* How to protect a pointer to a string. */ +#define unwind_protect_string(X) \ + unwind_protect_var ((int *)&(X), (X), sizeof (char *)) + +/* How to protect any old pointer. */ +#define unwind_protect_pointer(X) unwind_protect_string (X) + +/* How to protect the contents of a jmp_buf. */ +#define unwind_protect_jmp_buf(X) \ + unwind_protect_var ((int *)(X), (char *)(X), sizeof (procenv_t)) + +#endif /* _UNWIND_PROT_H */ diff --git a/MANIFEST b/MANIFEST index 9865929b..f6fa6954 100644 --- a/MANIFEST +++ b/MANIFEST @@ -805,6 +805,7 @@ tests/array12.sub f tests/array13.sub f tests/array14.sub f tests/array15.sub f +tests/array16.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f diff --git a/bashline.c b/bashline.c index 79b8bcf8..1f127644 100644 --- a/bashline.c +++ b/bashline.c @@ -1720,6 +1720,7 @@ command_word_completion_function (hint_text, state) static char *path = (char *)NULL; static char *val = (char *)NULL; static char *filename_hint = (char *)NULL; + static char *fnhint = (char *)NULL; static char *dequoted_hint = (char *)NULL; static char *directory_part = (char *)NULL; static char **glob_matches = (char **)NULL; @@ -1799,7 +1800,7 @@ command_word_completion_function (hint_text, state) if (filename_hint) free (filename_hint); - filename_hint = savestring (hint); + fnhint = filename_hint = savestring (hint); istate = 0; @@ -2007,15 +2008,25 @@ globword: if (current_path[0] == '.' && current_path[1] == '\0') dot_in_path = 1; + if (fnhint && fnhint != filename_hint) + free (fnhint); if (filename_hint) free (filename_hint); filename_hint = sh_makepath (current_path, hint, 0); + /* Need a quoted version (though it doesn't matter much in most + cases) because rl_filename_completion_function dequotes the + filename it gets, assuming that it's been quoted as part of + the input line buffer. */ + if (strpbrk (filename_hint, "\"'\\")) + fnhint = sh_backslash_quote (filename_hint, filename_bstab, 0); + else + fnhint = filename_hint; free (current_path); /* XXX */ } inner: - val = rl_filename_completion_function (filename_hint, istate); + val = rl_filename_completion_function (fnhint, istate); if (mapping_over == 4 && dircomplete_expand) set_directory_hook (); diff --git a/bashline.c~ b/bashline.c~ new file mode 100644 index 00000000..fb441f4d --- /dev/null +++ b/bashline.c~ @@ -0,0 +1,4211 @@ +/* bashline.c -- Bash's interface to the readline library. */ + +/* Copyright (C) 1987-2013 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if defined (READLINE) + +#include "bashtypes.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_GRP_H) +# include +#endif + +#if defined (HAVE_NETDB_H) +# include +#endif + +#include + +#include +#include "chartypes.h" +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "input.h" +#include "builtins.h" +#include "bashhist.h" +#include "bashline.h" +#include "execute_cmd.h" +#include "findcmd.h" +#include "pathexp.h" +#include "shmbutil.h" +#include "trap.h" + +#include "builtins/common.h" + +#include +#include +#include + +#include + +#if defined (ALIAS) +# include "alias.h" +#endif + +#if defined (PROGRAMMABLE_COMPLETION) +# include "pcomplete.h" +#endif + +/* These should agree with the defines for emacs_mode and vi_mode in + rldefs.h, even though that's not a public readline header file. */ +#ifndef EMACS_EDITING_MODE +# define NO_EDITING_MODE -1 +# define EMACS_EDITING_MODE 1 +# define VI_EDITING_MODE 0 +#endif + +#define RL_BOOLEAN_VARIABLE_VALUE(s) ((s)[0] == 'o' && (s)[1] == 'n' && (s)[2] == '\0') + +#if defined (BRACE_COMPLETION) +extern int bash_brace_completion __P((int, int)); +#endif /* BRACE_COMPLETION */ + +/* To avoid including curses.h/term.h/termcap.h and that whole mess. */ +#ifdef _MINIX +extern int tputs __P((const char *string, int nlines, void (*outx)(int))); +#else +extern int tputs __P((const char *string, int nlines, int (*outx)(int))); +#endif + +/* Forward declarations */ + +/* Functions bound to keys in Readline for Bash users. */ +static int shell_expand_line __P((int, int)); +static int display_shell_version __P((int, int)); +static int operate_and_get_next __P((int, int)); + +static int bash_ignore_filenames __P((char **)); +static int bash_ignore_everything __P((char **)); + +#if defined (BANG_HISTORY) +static char *history_expand_line_internal __P((char *)); +static int history_expand_line __P((int, int)); +static int tcsh_magic_space __P((int, int)); +#endif /* BANG_HISTORY */ +#ifdef ALIAS +static int alias_expand_line __P((int, int)); +#endif +#if defined (BANG_HISTORY) && defined (ALIAS) +static int history_and_alias_expand_line __P((int, int)); +#endif + +static int bash_forward_shellword __P((int, int)); +static int bash_backward_shellword __P((int, int)); +static int bash_kill_shellword __P((int, int)); +static int bash_backward_kill_shellword __P((int, int)); + +/* Helper functions for Readline. */ +static char *restore_tilde __P((char *, char *)); +static char *maybe_restore_tilde __P((char *, char *)); + +static char *bash_filename_rewrite_hook __P((char *, int)); + +static void bash_directory_expansion __P((char **)); +static int bash_filename_stat_hook __P((char **)); +static int bash_command_name_stat_hook __P((char **)); +static int bash_directory_completion_hook __P((char **)); +static int filename_completion_ignore __P((char **)); +static int bash_push_line __P((void)); + +static int executable_completion __P((const char *, int)); + +static rl_icppfunc_t *save_directory_hook __P((void)); +static void restore_directory_hook __P((rl_icppfunc_t)); + +static void cleanup_expansion_error __P((void)); +static void maybe_make_readline_line __P((char *)); +static void set_up_new_line __P((char *)); + +static int check_redir __P((int)); +static char **attempt_shell_completion __P((const char *, int, int)); +static char *variable_completion_function __P((const char *, int)); +static char *hostname_completion_function __P((const char *, int)); +static char *command_subst_completion_function __P((const char *, int)); + +static void build_history_completion_array __P((void)); +static char *history_completion_generator __P((const char *, int)); +static int dynamic_complete_history __P((int, int)); +static int bash_dabbrev_expand __P((int, int)); + +static void initialize_hostname_list __P((void)); +static void add_host_name __P((char *)); +static void snarf_hosts_from_file __P((char *)); +static char **hostnames_matching __P((char *)); + +static void _ignore_completion_names __P((char **, sh_ignore_func_t *)); +static int name_is_acceptable __P((const char *)); +static int test_for_directory __P((const char *)); +static int return_zero __P((const char *)); + +static char *bash_dequote_filename __P((char *, int)); +static char *quote_word_break_chars __P((char *)); +static void set_filename_bstab __P((const char *)); +static char *bash_quote_filename __P((char *, int, char *)); + +#ifdef _MINIX +static void putx __P((int)); +#else +static int putx __P((int)); +#endif +static int bash_execute_unix_command __P((int, int)); +static void init_unix_command_map __P((void)); +static int isolate_sequence __P((char *, int, int, int *)); + +static int set_saved_history __P((void)); + +#if defined (ALIAS) +static int posix_edit_macros __P((int, int)); +#endif + +static int bash_event_hook __P((void)); + +#if defined (PROGRAMMABLE_COMPLETION) +static int find_cmd_start __P((int)); +static int find_cmd_end __P((int)); +static char *find_cmd_name __P((int, int *, int *)); +static char *prog_complete_return __P((const char *, int)); + +static char **prog_complete_matches; +#endif + +/* Variables used here but defined in other files. */ +#if defined (BANG_HISTORY) +extern int hist_verify; +#endif + +extern int current_command_line_count, saved_command_line_count; +extern int last_command_exit_value; +extern int array_needs_making; +extern int posixly_correct, no_symbolic_links; +extern char *current_prompt_string, *ps1_prompt; +extern STRING_INT_ALIST word_token_alist[]; +extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; + +/* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual + completion functions which indicate what type of completion should be + done (at or before point) that can be bound to key sequences with + the readline library. */ +#define SPECIFIC_COMPLETION_FUNCTIONS + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) +static int bash_specific_completion __P((int, rl_compentry_func_t *)); + +static int bash_complete_filename_internal __P((int)); +static int bash_complete_username_internal __P((int)); +static int bash_complete_hostname_internal __P((int)); +static int bash_complete_variable_internal __P((int)); +static int bash_complete_command_internal __P((int)); + +static int bash_complete_filename __P((int, int)); +static int bash_possible_filename_completions __P((int, int)); +static int bash_complete_username __P((int, int)); +static int bash_possible_username_completions __P((int, int)); +static int bash_complete_hostname __P((int, int)); +static int bash_possible_hostname_completions __P((int, int)); +static int bash_complete_variable __P((int, int)); +static int bash_possible_variable_completions __P((int, int)); +static int bash_complete_command __P((int, int)); +static int bash_possible_command_completions __P((int, int)); + +static char *glob_complete_word __P((const char *, int)); +static int bash_glob_completion_internal __P((int)); +static int bash_glob_complete_word __P((int, int)); +static int bash_glob_expand_word __P((int, int)); +static int bash_glob_list_expansions __P((int, int)); + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + +static int edit_and_execute_command __P((int, int, int, char *)); +#if defined (VI_MODE) +static int vi_edit_and_execute_command __P((int, int)); +static int bash_vi_complete __P((int, int)); +#endif +static int emacs_edit_and_execute_command __P((int, int)); + +/* Non-zero once initalize_readline () has been called. */ +int bash_readline_initialized = 0; + +/* If non-zero, we do hostname completion, breaking words at `@' and + trying to complete the stuff after the `@' from our own internal + host list. */ +int perform_hostname_completion = 1; + +/* If non-zero, we don't do command completion on an empty line. */ +int no_empty_command_completion; + +/* Set FORCE_FIGNORE if you want to honor FIGNORE even if it ignores the + only possible matches. Set to 0 if you want to match filenames if they + are the only possible matches, even if FIGNORE says to. */ +int force_fignore = 1; + +/* Perform spelling correction on directory names during word completion */ +int dircomplete_spelling = 0; + +/* Expand directory names during word/filename completion. */ +#if DIRCOMPLETE_EXPAND_DEFAULT +int dircomplete_expand = 1; +int dircomplete_expand_relpath = 1; +#else +int dircomplete_expand = 0; +int dircomplete_expand_relpath = 0; +#endif + +/* When non-zero, perform `normal' shell quoting on completed filenames + even when the completed name contains a directory name with a shell + variable referene, so dollar signs in a filename get quoted appropriately. + Set to zero to remove dollar sign (and braces or parens as needed) from + the set of characters that will be quoted. */ +int complete_fullquote = 1; + +static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:"; +static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:"; +/* )) */ + +static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/ +static char *custom_filename_quote_characters = 0; +static char filename_bstab[256]; + +static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL; + +static int dot_in_path = 0; + +/* Set to non-zero when dabbrev-expand is running */ +static int dabbrev_expand_active = 0; + +/* What kind of quoting is performed by bash_quote_filename: + COMPLETE_DQUOTE = double-quoting the filename + COMPLETE_SQUOTE = single_quoting the filename + COMPLETE_BSQUOTE = backslash-quoting special chars in the filename +*/ +#define COMPLETE_DQUOTE 1 +#define COMPLETE_SQUOTE 2 +#define COMPLETE_BSQUOTE 3 +static int completion_quoting_style = COMPLETE_BSQUOTE; + +/* Flag values for the final argument to bash_default_completion */ +#define DEFCOMP_CMDPOS 1 + +/* Change the readline VI-mode keymaps into or out of Posix.2 compliance. + Called when the shell is put into or out of `posix' mode. */ +void +posix_readline_initialize (on_or_off) + int on_or_off; +{ + if (on_or_off) + rl_variable_bind ("comment-begin", "#"); +#if defined (VI_MODE) + rl_bind_key_in_map (CTRL ('I'), on_or_off ? rl_insert : rl_complete, vi_insertion_keymap); +#endif +} + +void +reset_completer_word_break_chars () +{ + rl_completer_word_break_characters = perform_hostname_completion ? savestring (bash_completer_word_break_characters) : savestring (bash_nohostname_word_break_characters); +} + +/* When this function returns, rl_completer_word_break_characters points to + dynamically allocated memory. */ +int +enable_hostname_completion (on_or_off) + int on_or_off; +{ + int old_value; + char *at, *nv, *nval; + + old_value = perform_hostname_completion; + + if (on_or_off) + { + perform_hostname_completion = 1; + rl_special_prefixes = "$@"; + } + else + { + perform_hostname_completion = 0; + rl_special_prefixes = "$"; + } + + /* Now we need to figure out how to appropriately modify and assign + rl_completer_word_break_characters depending on whether we want + hostname completion on or off. */ + + /* If this is the first time this has been called + (bash_readline_initialized == 0), use the sames values as before, but + allocate new memory for rl_completer_word_break_characters. */ + + if (bash_readline_initialized == 0 && + (rl_completer_word_break_characters == 0 || + rl_completer_word_break_characters == rl_basic_word_break_characters)) + { + if (on_or_off) + rl_completer_word_break_characters = savestring (bash_completer_word_break_characters); + else + rl_completer_word_break_characters = savestring (bash_nohostname_word_break_characters); + } + else + { + /* See if we have anything to do. */ + at = strchr (rl_completer_word_break_characters, '@'); + if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0)) + return old_value; + + /* We have something to do. Do it. */ + nval = (char *)xmalloc (strlen (rl_completer_word_break_characters) + 1 + on_or_off); + + if (on_or_off == 0) + { + /* Turn it off -- just remove `@' from word break chars. We want + to remove all occurrences of `@' from the char list, so we loop + rather than just copy the rest of the list over AT. */ + for (nv = nval, at = rl_completer_word_break_characters; *at; ) + if (*at != '@') + *nv++ = *at++; + else + at++; + *nv = '\0'; + } + else + { + nval[0] = '@'; + strcpy (nval + 1, rl_completer_word_break_characters); + } + + free (rl_completer_word_break_characters); + rl_completer_word_break_characters = nval; + } + + return (old_value); +} + +/* Called once from parse.y if we are going to use readline. */ +void +initialize_readline () +{ + rl_command_func_t *func; + char kseq[2]; + + if (bash_readline_initialized) + return; + + rl_terminal_name = get_string_value ("TERM"); + rl_instream = stdin; + rl_outstream = stderr; + + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "Bash"; + + /* Add bindable names before calling rl_initialize so they may be + referenced in the various inputrc files. */ + rl_add_defun ("shell-expand-line", shell_expand_line, -1); +#ifdef BANG_HISTORY + rl_add_defun ("history-expand-line", history_expand_line, -1); + rl_add_defun ("magic-space", tcsh_magic_space, -1); +#endif + + rl_add_defun ("shell-forward-word", bash_forward_shellword, -1); + rl_add_defun ("shell-backward-word", bash_backward_shellword, -1); + rl_add_defun ("shell-kill-word", bash_kill_shellword, -1); + rl_add_defun ("shell-backward-kill-word", bash_backward_kill_shellword, -1); + +#ifdef ALIAS + rl_add_defun ("alias-expand-line", alias_expand_line, -1); +# ifdef BANG_HISTORY + rl_add_defun ("history-and-alias-expand-line", history_and_alias_expand_line, -1); +# endif +#endif + + /* Backwards compatibility. */ + rl_add_defun ("insert-last-argument", rl_yank_last_arg, -1); + + rl_add_defun ("operate-and-get-next", operate_and_get_next, -1); + rl_add_defun ("display-shell-version", display_shell_version, -1); + rl_add_defun ("edit-and-execute-command", emacs_edit_and_execute_command, -1); + +#if defined (BRACE_COMPLETION) + rl_add_defun ("complete-into-braces", bash_brace_completion, -1); +#endif + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + rl_add_defun ("complete-filename", bash_complete_filename, -1); + rl_add_defun ("possible-filename-completions", bash_possible_filename_completions, -1); + rl_add_defun ("complete-username", bash_complete_username, -1); + rl_add_defun ("possible-username-completions", bash_possible_username_completions, -1); + rl_add_defun ("complete-hostname", bash_complete_hostname, -1); + rl_add_defun ("possible-hostname-completions", bash_possible_hostname_completions, -1); + rl_add_defun ("complete-variable", bash_complete_variable, -1); + rl_add_defun ("possible-variable-completions", bash_possible_variable_completions, -1); + rl_add_defun ("complete-command", bash_complete_command, -1); + rl_add_defun ("possible-command-completions", bash_possible_command_completions, -1); + rl_add_defun ("glob-complete-word", bash_glob_complete_word, -1); + rl_add_defun ("glob-expand-word", bash_glob_expand_word, -1); + rl_add_defun ("glob-list-expansions", bash_glob_list_expansions, -1); +#endif + + rl_add_defun ("dynamic-complete-history", dynamic_complete_history, -1); + rl_add_defun ("dabbrev-expand", bash_dabbrev_expand, -1); + + /* Bind defaults before binding our custom shell keybindings. */ + if (RL_ISSTATE(RL_STATE_INITIALIZED) == 0) + rl_initialize (); + + /* Bind up our special shell functions. */ + rl_bind_key_if_unbound_in_map (CTRL('E'), shell_expand_line, emacs_meta_keymap); + +#ifdef BANG_HISTORY + rl_bind_key_if_unbound_in_map ('^', history_expand_line, emacs_meta_keymap); +#endif + + rl_bind_key_if_unbound_in_map (CTRL ('O'), operate_and_get_next, emacs_standard_keymap); + rl_bind_key_if_unbound_in_map (CTRL ('V'), display_shell_version, emacs_ctlx_keymap); + + /* In Bash, the user can switch editing modes with "set -o [vi emacs]", + so it is not necessary to allow C-M-j for context switching. Turn + off this occasionally confusing behaviour. */ + kseq[0] = CTRL('J'); + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == rl_vi_editing_mode) + rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap); + kseq[0] = CTRL('M'); + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == rl_vi_editing_mode) + rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap); +#if defined (VI_MODE) + rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap); +#endif + +#if defined (BRACE_COMPLETION) + rl_bind_key_if_unbound_in_map ('{', bash_brace_completion, emacs_meta_keymap); /*}*/ +#endif /* BRACE_COMPLETION */ + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + rl_bind_key_if_unbound_in_map ('/', bash_complete_filename, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('/', bash_possible_filename_completions, emacs_ctlx_keymap); + + /* Have to jump through hoops here because there is a default binding for + M-~ (rl_tilde_expand) */ + kseq[0] = '~'; + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == 0 || func == rl_tilde_expand) + rl_bind_keyseq_in_map (kseq, bash_complete_username, emacs_meta_keymap); + + rl_bind_key_if_unbound_in_map ('~', bash_possible_username_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('@', bash_complete_hostname, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('@', bash_possible_hostname_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('$', bash_complete_variable, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('$', bash_possible_variable_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('!', bash_complete_command, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('!', bash_possible_command_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('g', bash_glob_complete_word, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('*', bash_glob_expand_word, emacs_ctlx_keymap); + rl_bind_key_if_unbound_in_map ('g', bash_glob_list_expansions, emacs_ctlx_keymap); + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + + kseq[0] = TAB; + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == 0 || func == rl_tab_insert) + rl_bind_key_in_map (TAB, dynamic_complete_history, emacs_meta_keymap); + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = attempt_shell_completion; + + /* Tell the completer that we might want to follow symbolic links or + do other expansion on directory names. */ + set_directory_hook (); + + rl_filename_rewrite_hook = bash_filename_rewrite_hook; + + rl_filename_stat_hook = bash_filename_stat_hook; + + /* Tell the filename completer we want a chance to ignore some names. */ + rl_ignore_some_completions_function = filename_completion_ignore; + + /* Bind C-xC-e to invoke emacs and run result as commands. */ + rl_bind_key_if_unbound_in_map (CTRL ('E'), emacs_edit_and_execute_command, emacs_ctlx_keymap); +#if defined (VI_MODE) + rl_bind_key_if_unbound_in_map ('v', vi_edit_and_execute_command, vi_movement_keymap); +# if defined (ALIAS) + rl_bind_key_if_unbound_in_map ('@', posix_edit_macros, vi_movement_keymap); +# endif + + rl_bind_key_in_map ('\\', bash_vi_complete, vi_movement_keymap); + rl_bind_key_in_map ('*', bash_vi_complete, vi_movement_keymap); + rl_bind_key_in_map ('=', bash_vi_complete, vi_movement_keymap); +#endif + + rl_completer_quote_characters = "'\""; + + /* This sets rl_completer_word_break_characters and rl_special_prefixes + to the appropriate values, depending on whether or not hostname + completion is enabled. */ + enable_hostname_completion (perform_hostname_completion); + + /* characters that need to be quoted when appearing in filenames. */ + rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + + rl_filename_quoting_function = bash_quote_filename; + rl_filename_dequoting_function = bash_dequote_filename; + rl_char_is_quoted_p = char_is_quoted; + +#if 0 + /* This is superfluous and makes it impossible to use tab completion in + vi mode even when explicitly binding it in ~/.inputrc. sv_strict_posix() + should already have called posix_readline_initialize() when + posixly_correct was set. */ + if (posixly_correct) + posix_readline_initialize (1); +#endif + + bash_readline_initialized = 1; +} + +void +bashline_reinitialize () +{ + bash_readline_initialized = 0; +} + +void +bashline_set_event_hook () +{ + rl_signal_event_hook = bash_event_hook; +} + +void +bashline_reset_event_hook () +{ + rl_signal_event_hook = 0; +} + +/* On Sun systems at least, rl_attempted_completion_function can end up + getting set to NULL, and rl_completion_entry_function set to do command + word completion if Bash is interrupted while trying to complete a command + word. This just resets all the completion functions to the right thing. + It's called from throw_to_top_level(). */ +void +bashline_reset () +{ + tilde_initialize (); + rl_attempted_completion_function = attempt_shell_completion; + rl_completion_entry_function = NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + + set_directory_hook (); + rl_filename_stat_hook = bash_filename_stat_hook; + + bashline_reset_event_hook (); +} + +/* Contains the line to push into readline. */ +static char *push_to_readline = (char *)NULL; + +/* Push the contents of push_to_readline into the + readline buffer. */ +static int +bash_push_line () +{ + if (push_to_readline) + { + rl_insert_text (push_to_readline); + free (push_to_readline); + push_to_readline = (char *)NULL; + rl_startup_hook = old_rl_startup_hook; + } + return 0; +} + +/* Call this to set the initial text for the next line to read + from readline. */ +int +bash_re_edit (line) + char *line; +{ + FREE (push_to_readline); + + push_to_readline = savestring (line); + old_rl_startup_hook = rl_startup_hook; + rl_startup_hook = bash_push_line; + + return (0); +} + +static int +display_shell_version (count, c) + int count, c; +{ + rl_crlf (); + show_shell_version (0); + putc ('\r', rl_outstream); + fflush (rl_outstream); + rl_on_new_line (); + rl_redisplay (); + return 0; +} + +/* **************************************************************** */ +/* */ +/* Readline Stuff */ +/* */ +/* **************************************************************** */ + +/* If the user requests hostname completion, then simply build a list + of hosts, and complete from that forever more, or at least until + HOSTFILE is unset. */ + +/* THIS SHOULD BE A STRINGLIST. */ +/* The kept list of hostnames. */ +static char **hostname_list = (char **)NULL; + +/* The physical size of the above list. */ +static int hostname_list_size; + +/* The number of hostnames in the above list. */ +static int hostname_list_length; + +/* Whether or not HOSTNAME_LIST has been initialized. */ +int hostname_list_initialized = 0; + +/* Initialize the hostname completion table. */ +static void +initialize_hostname_list () +{ + char *temp; + + temp = get_string_value ("HOSTFILE"); + if (temp == 0) + temp = get_string_value ("hostname_completion_file"); + if (temp == 0) + temp = DEFAULT_HOSTS_FILE; + + snarf_hosts_from_file (temp); + + if (hostname_list) + hostname_list_initialized++; +} + +/* Add NAME to the list of hosts. */ +static void +add_host_name (name) + char *name; +{ + if (hostname_list_length + 2 > hostname_list_size) + { + hostname_list_size = (hostname_list_size + 32) - (hostname_list_size % 32); + hostname_list = strvec_resize (hostname_list, hostname_list_size); + } + + hostname_list[hostname_list_length++] = savestring (name); + hostname_list[hostname_list_length] = (char *)NULL; +} + +#define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c)) + +static void +snarf_hosts_from_file (filename) + char *filename; +{ + FILE *file; + char *temp, buffer[256], name[256]; + register int i, start; + + file = fopen (filename, "r"); + if (file == 0) + return; + + while (temp = fgets (buffer, 255, file)) + { + /* Skip to first character. */ + for (i = 0; buffer[i] && cr_whitespace (buffer[i]); i++) + ; + + /* If comment or blank line, ignore. */ + if (buffer[i] == '\0' || buffer[i] == '#') + continue; + + /* If `preprocessor' directive, do the include. */ + if (strncmp (buffer + i, "$include ", 9) == 0) + { + char *incfile, *t; + + /* Find start of filename. */ + for (incfile = buffer + i + 9; *incfile && whitespace (*incfile); incfile++) + ; + + /* Find end of filename. */ + for (t = incfile; *t && cr_whitespace (*t) == 0; t++) + ; + + *t = '\0'; + + snarf_hosts_from_file (incfile); + continue; + } + + /* Skip internet address if present. */ + if (DIGIT (buffer[i])) + for (; buffer[i] && cr_whitespace (buffer[i]) == 0; i++); + + /* Gobble up names. Each name is separated with whitespace. */ + while (buffer[i]) + { + for (; cr_whitespace (buffer[i]); i++) + ; + if (buffer[i] == '\0' || buffer[i] == '#') + break; + + /* Isolate the current word. */ + for (start = i; buffer[i] && cr_whitespace (buffer[i]) == 0; i++) + ; + if (i == start) + continue; + strncpy (name, buffer + start, i - start); + name[i - start] = '\0'; + add_host_name (name); + } + } + fclose (file); +} + +/* Return the hostname list. */ +char ** +get_hostname_list () +{ + if (hostname_list_initialized == 0) + initialize_hostname_list (); + return (hostname_list); +} + +void +clear_hostname_list () +{ + register int i; + + if (hostname_list_initialized == 0) + return; + for (i = 0; i < hostname_list_length; i++) + free (hostname_list[i]); + hostname_list_length = hostname_list_initialized = 0; +} + +/* Return a NULL terminated list of hostnames which begin with TEXT. + Initialize the hostname list the first time if necessary. + The array is malloc ()'ed, but not the individual strings. */ +static char ** +hostnames_matching (text) + char *text; +{ + register int i, len, nmatch, rsize; + char **result; + + if (hostname_list_initialized == 0) + initialize_hostname_list (); + + if (hostname_list_initialized == 0) + return ((char **)NULL); + + /* Special case. If TEXT consists of nothing, then the whole list is + what is desired. */ + if (*text == '\0') + { + result = strvec_create (1 + hostname_list_length); + for (i = 0; i < hostname_list_length; i++) + result[i] = hostname_list[i]; + result[i] = (char *)NULL; + return (result); + } + + /* Scan until found, or failure. */ + len = strlen (text); + result = (char **)NULL; + for (i = nmatch = rsize = 0; i < hostname_list_length; i++) + { + if (STREQN (text, hostname_list[i], len) == 0) + continue; + + /* OK, it matches. Add it to the list. */ + if (nmatch >= (rsize - 1)) + { + rsize = (rsize + 16) - (rsize % 16); + result = strvec_resize (result, rsize); + } + + result[nmatch++] = hostname_list[i]; + } + if (nmatch) + result[nmatch] = (char *)NULL; + return (result); +} + +/* The equivalent of the Korn shell C-o operate-and-get-next-history-line + editing command. */ +static int saved_history_line_to_use = -1; +static int last_saved_history_line = -1; + +#define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries) + +static int +set_saved_history () +{ + /* XXX - compensate for assumption that history was `shuffled' if it was + actually not. */ + if (HISTORY_FULL () && + hist_last_line_added == 0 && + saved_history_line_to_use < history_length - 1) + saved_history_line_to_use++; + + if (saved_history_line_to_use >= 0) + { + rl_get_previous_history (history_length - saved_history_line_to_use, 0); + last_saved_history_line = saved_history_line_to_use; + } + saved_history_line_to_use = -1; + rl_startup_hook = old_rl_startup_hook; + return (0); +} + +static int +operate_and_get_next (count, c) + int count, c; +{ + int where; + + /* Accept the current line. */ + rl_newline (1, c); + + /* Find the current line, and find the next line to use. */ + where = where_history (); + + if (HISTORY_FULL () || (where >= history_length - 1)) + saved_history_line_to_use = where; + else + saved_history_line_to_use = where + 1; + + old_rl_startup_hook = rl_startup_hook; + rl_startup_hook = set_saved_history; + + return 0; +} + +/* This vi mode command causes VI_EDIT_COMMAND to be run on the current + command being entered (if no explicit argument is given), otherwise on + a command from the history file. */ + +#define VI_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-vi}}\"" +#define EMACS_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-emacs}}\"" +#define POSIX_VI_EDIT_COMMAND "fc -e vi" + +static int +edit_and_execute_command (count, c, editing_mode, edit_command) + int count, c, editing_mode; + char *edit_command; +{ + char *command, *metaval; + int r, rrs, metaflag; + sh_parser_state_t ps; + + rrs = rl_readline_state; + saved_command_line_count = current_command_line_count; + + /* Accept the current line. */ + rl_newline (1, c); + + if (rl_explicit_arg) + { + command = (char *)xmalloc (strlen (edit_command) + 8); + sprintf (command, "%s %d", edit_command, count); + } + else + { + /* Take the command we were just editing, add it to the history file, + then call fc to operate on it. We have to add a dummy command to + the end of the history because fc ignores the last command (assumes + it's supposed to deal with the command before the `fc'). */ + /* This breaks down when using command-oriented history and are not + finished with the command, so we should not ignore the last command */ + using_history (); + current_command_line_count++; /* for rl_newline above */ + bash_add_history (rl_line_buffer); + current_command_line_count = 0; /* for dummy history entry */ + bash_add_history (""); + history_lines_this_session++; + using_history (); + command = savestring (edit_command); + } + + metaval = rl_variable_value ("input-meta"); + metaflag = RL_BOOLEAN_VARIABLE_VALUE (metaval); + + /* Now, POSIX.1-2001 and SUSv3 say that the commands executed from the + temporary file should be placed into the history. We don't do that + yet. */ + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); + save_parser_state (&ps); + r = parse_and_execute (command, (editing_mode == VI_EDITING_MODE) ? "v" : "C-xC-e", SEVAL_NOHIST); + restore_parser_state (&ps); + if (rl_prep_term_function) + (*rl_prep_term_function) (metaflag); + + current_command_line_count = saved_command_line_count; + + /* Now erase the contents of the current line and undo the effects of the + rl_accept_line() above. We don't even want to make the text we just + executed available for undoing. */ + rl_line_buffer[0] = '\0'; /* XXX */ + rl_point = rl_end = 0; + rl_done = 0; + rl_readline_state = rrs; + + rl_forced_update_display (); + + return r; +} + +#if defined (VI_MODE) +static int +vi_edit_and_execute_command (count, c) + int count, c; +{ + if (posixly_correct) + return (edit_and_execute_command (count, c, VI_EDITING_MODE, POSIX_VI_EDIT_COMMAND)); + else + return (edit_and_execute_command (count, c, VI_EDITING_MODE, VI_EDIT_COMMAND)); +} +#endif /* VI_MODE */ + +static int +emacs_edit_and_execute_command (count, c) + int count, c; +{ + return (edit_and_execute_command (count, c, EMACS_EDITING_MODE, EMACS_EDIT_COMMAND)); +} + +#if defined (ALIAS) +static int +posix_edit_macros (count, key) + int count, key; +{ + int c; + char alias_name[3], *alias_value, *macro; + + c = rl_read_key (); + alias_name[0] = '_'; + alias_name[1] = c; + alias_name[2] = '\0'; + + alias_value = get_alias_value (alias_name); + if (alias_value && *alias_value) + { + macro = savestring (alias_value); + rl_push_macro_input (macro); + } + return 0; +} +#endif + +/* Bindable commands that move `shell-words': that is, sequences of + non-unquoted-metacharacters. */ + +#define WORDDELIM(c) (shellmeta(c) || shellblank(c)) + +static int +bash_forward_shellword (count, key) + int count, key; +{ + size_t slen; + int sindex, c, p; + DECLARE_MBSTATE; + + if (count < 0) + return (bash_backward_shellword (-count, key)); + + /* The tricky part of this is deciding whether or not the first character + we're on is an unquoted metacharacter. Not completely handled yet. */ + /* XXX - need to test this stuff with backslash-escaped shell + metacharacters and unclosed single- and double-quoted strings. */ + + p = rl_point; + slen = rl_end; + + while (count) + { + if (p == rl_end) + { + rl_point = rl_end; + return 0; + } + + /* Are we in a quoted string? If we are, move to the end of the quoted + string and continue the outer loop. We only want quoted strings, not + backslash-escaped characters, but char_is_quoted doesn't + differentiate. */ + if (char_is_quoted (rl_line_buffer, p) && p > 0 && rl_line_buffer[p-1] != '\\') + { + do + ADVANCE_CHAR (rl_line_buffer, slen, p); + while (p < rl_end && char_is_quoted (rl_line_buffer, p)); + count--; + continue; + } + + /* Rest of code assumes we are not in a quoted string. */ + /* Move forward until we hit a non-metacharacter. */ + while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c)) + { + switch (c) + { + default: + ADVANCE_CHAR (rl_line_buffer, slen, p); + continue; /* straight back to loop, don't increment p */ + case '\\': + if (p < rl_end && rl_line_buffer[p]) + ADVANCE_CHAR (rl_line_buffer, slen, p); + break; + case '\'': + p = skip_to_delim (rl_line_buffer, ++p, "'", SD_NOJMP); + break; + case '"': + p = skip_to_delim (rl_line_buffer, ++p, "\"", SD_NOJMP); + break; + } + + if (p < rl_end) + p++; + } + + if (rl_line_buffer[p] == 0 || p == rl_end) + { + rl_point = rl_end; + rl_ding (); + return 0; + } + + /* Now move forward until we hit a non-quoted metacharacter or EOL */ + while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c) == 0) + { + switch (c) + { + default: + ADVANCE_CHAR (rl_line_buffer, slen, p); + continue; /* straight back to loop, don't increment p */ + case '\\': + if (p < rl_end && rl_line_buffer[p]) + ADVANCE_CHAR (rl_line_buffer, slen, p); + break; + case '\'': + p = skip_to_delim (rl_line_buffer, ++p, "'", SD_NOJMP); + break; + case '"': + p = skip_to_delim (rl_line_buffer, ++p, "\"", SD_NOJMP); + break; + } + + if (p < rl_end) + p++; + } + + if (p == rl_end || rl_line_buffer[p] == 0) + { + rl_point = rl_end; + return (0); + } + + count--; + } + + rl_point = p; + return (0); +} + +static int +bash_backward_shellword (count, key) + int count, key; +{ + size_t slen; + int sindex, c, p; + DECLARE_MBSTATE; + + if (count < 0) + return (bash_forward_shellword (-count, key)); + + p = rl_point; + slen = rl_end; + + while (count) + { + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Move backward until we hit a non-metacharacter. */ + while (p > 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) + BACKUP_CHAR (rl_line_buffer, slen, p); + break; + } + + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Now move backward until we hit a metacharacter or BOL. */ + while (p > 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) + break; + BACKUP_CHAR (rl_line_buffer, slen, p); + } + + count--; + } + + rl_point = p; + return 0; +} + +static int +bash_kill_shellword (count, key) + int count, key; +{ + int p; + + if (count < 0) + return (bash_backward_kill_shellword (-count, key)); + + p = rl_point; + bash_forward_shellword (count, key); + + if (rl_point != p) + rl_kill_text (p, rl_point); + + rl_point = p; + if (rl_editing_mode == 1) /* 1 == emacs_mode */ + rl_mark = rl_point; + + return 0; +} + +static int +bash_backward_kill_shellword (count, key) + int count, key; +{ + int p; + + if (count < 0) + return (bash_kill_shellword (-count, key)); + + p = rl_point; + bash_backward_shellword (count, key); + + if (rl_point != p) + rl_kill_text (p, rl_point); + + if (rl_editing_mode == 1) /* 1 == emacs_mode */ + rl_mark = rl_point; + + return 0; +} + + +/* **************************************************************** */ +/* */ +/* How To Do Shell Completion */ +/* */ +/* **************************************************************** */ + +#define COMMAND_SEPARATORS ";|&{(`" +/* )} */ +#define COMMAND_SEPARATORS_PLUS_WS ";|&{(` \t" +/* )} */ + +/* check for redirections and other character combinations that are not + command separators */ +static int +check_redir (ti) + int ti; +{ + register int this_char, prev_char; + + /* Handle the two character tokens `>&', `<&', and `>|'. + We are not in a command position after one of these. */ + this_char = rl_line_buffer[ti]; + prev_char = rl_line_buffer[ti - 1]; + + if ((this_char == '&' && (prev_char == '<' || prev_char == '>')) || + (this_char == '|' && prev_char == '>')) + return (1); + else if (this_char == '{' && prev_char == '$') /*}*/ + return (1); +#if 0 /* Not yet */ + else if (this_char == '(' && prev_char == '$') /*)*/ + return (1); + else if (this_char == '(' && prev_char == '<') /*)*/ + return (1); +#if defined (EXTENDED_GLOB) + else if (extended_glob && this_char == '(' && prev_char == '!') /*)*/ + return (1); +#endif +#endif + else if (char_is_quoted (rl_line_buffer, ti)) + return (1); + return (0); +} + +#if defined (PROGRAMMABLE_COMPLETION) +/* + * XXX - because of the <= start test, and setting os = s+1, this can + * potentially return os > start. This is probably not what we want to + * happen, but fix later after 2.05a-release. + */ +static int +find_cmd_start (start) + int start; +{ + register int s, os; + + os = 0; + /* Flags == SD_NOJMP only because we want to skip over command substitutions + in assignment statements. Have to test whether this affects `standalone' + command substitutions as individual words. */ + while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP/*|SD_NOSKIPCMD*/)) <= start) && + rl_line_buffer[s]) + os = s+1; + return os; +} + +static int +find_cmd_end (end) + int end; +{ + register int e; + + e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS, SD_NOJMP); + return e; +} + +static char * +find_cmd_name (start, sp, ep) + int start; + int *sp, *ep; +{ + char *name; + register int s, e; + + for (s = start; whitespace (rl_line_buffer[s]); s++) + ; + + /* skip until a shell break character */ + e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n", SD_NOJMP); + + name = substring (rl_line_buffer, s, e); + + if (sp) + *sp = s; + if (ep) + *ep = e; + + return (name); +} + +static char * +prog_complete_return (text, matchnum) + const char *text; + int matchnum; +{ + static int ind; + + if (matchnum == 0) + ind = 0; + + if (prog_complete_matches == 0 || prog_complete_matches[ind] == 0) + return (char *)NULL; + return (prog_complete_matches[ind++]); +} + +#endif /* PROGRAMMABLE_COMPLETION */ + +/* Do some completion on TEXT. The indices of TEXT in RL_LINE_BUFFER are + at START and END. Return an array of matches, or NULL if none. */ +static char ** +attempt_shell_completion (text, start, end) + const char *text; + int start, end; +{ + int in_command_position, ti, saveti, qc, dflags; + char **matches, *command_separator_chars; +#if defined (PROGRAMMABLE_COMPLETION) + int have_progcomps, was_assignment; +#endif + + command_separator_chars = COMMAND_SEPARATORS; + matches = (char **)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + + rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + set_directory_hook (); + rl_filename_stat_hook = bash_filename_stat_hook; + + /* Determine if this could be a command word. It is if it appears at + the start of the line (ignoring preceding whitespace), or if it + appears after a character that separates commands. It cannot be a + command word if we aren't at the top-level prompt. */ + ti = start - 1; + saveti = qc = -1; + + while ((ti > -1) && (whitespace (rl_line_buffer[ti]))) + ti--; + +#if 1 + /* If this is an open quote, maybe we're trying to complete a quoted + command name. */ + if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\'')) + { + qc = rl_line_buffer[ti]; + saveti = ti--; + while (ti > -1 && (whitespace (rl_line_buffer[ti]))) + ti--; + } +#endif + + in_command_position = 0; + if (ti < 0) + { + /* Only do command completion at the start of a line when we + are prompting at the top level. */ + if (current_prompt_string == ps1_prompt) + in_command_position++; + else if (parser_in_command_position ()) + in_command_position++; + } + else if (member (rl_line_buffer[ti], command_separator_chars)) + { + in_command_position++; + + if (check_redir (ti) == 1) + in_command_position = 0; + } + else + { + /* This still could be in command position. It is possible + that all of the previous words on the line are variable + assignments. */ + } + + /* Check that we haven't incorrectly flagged a closed command substitution + as indicating we're in a command position. */ + if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' && + *text != '`' && unclosed_pair (rl_line_buffer, end, "`") == 0) + in_command_position = 0; + + /* Special handling for command substitution. If *TEXT is a backquote, + it can be the start or end of an old-style command substitution, or + unmatched. If it's unmatched, both calls to unclosed_pair will + succeed. Don't bother if readline found a single quote and we are + completing on the substring. */ + if (*text == '`' && rl_completion_quote_character != '\'' && + (in_command_position || (unclosed_pair (rl_line_buffer, start, "`") && + unclosed_pair (rl_line_buffer, end, "`")))) + matches = rl_completion_matches (text, command_subst_completion_function); + +#if defined (PROGRAMMABLE_COMPLETION) + /* Attempt programmable completion. */ + have_progcomps = prog_completion_enabled && (progcomp_size () > 0); + if (matches == 0 && (in_command_position == 0 || text[0] == '\0') && + current_prompt_string == ps1_prompt) + { + int s, e, s1, e1, os, foundcs; + char *n; + + /* XXX - don't free the members */ + if (prog_complete_matches) + free (prog_complete_matches); + prog_complete_matches = (char **)NULL; + + os = start; + n = 0; + s = find_cmd_start (os); + e = find_cmd_end (end); + do + { + /* Skip over assignment statements preceding a command name. If we + don't find a command name at all, we can perform command name + completion. If we find a partial command name, we should perform + command name completion on it. */ + FREE (n); + n = find_cmd_name (s, &s1, &e1); + s = e1 + 1; + } + while (was_assignment = assignment (n, 0)); + s = s1; /* reset to index where name begins */ + + /* s == index of where command name begins (reset above) + e == end of current command, may be end of line + s1 = index of where command name begins + e1 == index of where command name ends + start == index of where word to be completed begins + end == index of where word to be completed ends + if (s == start) we are doing command word completion for sure + if (e1 == end) we are at the end of the command name and completing it */ + if (start == 0 && end == 0 && e != 0 && text[0] == '\0') /* beginning of non-empty line */ + foundcs = 0; + else if (start == end && start == s1 && e != 0 && e1 > end) /* beginning of command name, leading whitespace */ + foundcs = 0; + else if (e == 0 && e == s && text[0] == '\0' && have_progcomps) /* beginning of empty line */ + prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs); + else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start])) + foundcs = 0; /* whitespace before command name */ + else if (e > s && was_assignment == 0 && e1 == end && rl_line_buffer[e] == 0 && whitespace (rl_line_buffer[e-1]) == 0) + { + /* not assignment statement, but still want to perform command + completion if we are composing command word. */ + foundcs = 0; + in_command_position = s == start && STREQ (n, text); /* XXX */ + } + else if (e > s && was_assignment == 0 && have_progcomps) + { + prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); + /* command completion if programmable completion fails */ + in_command_position = s == start && STREQ (n, text); /* XXX */ + } + else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0) + { + foundcs = 0; /* empty command name following assignments */ + in_command_position = was_assignment; + } + else if (s == start && e == end && STREQ (n, text) && start > 0) + { + foundcs = 0; /* partial command name following assignments */ + in_command_position = 1; + } + else + foundcs = 0; + FREE (n); + /* XXX - if we found a COMPSPEC for the command, just return whatever + the programmable completion code returns, and disable the default + filename completion that readline will do unless the COPT_DEFAULT + option has been set with the `-o default' option to complete or + compopt. */ + if (foundcs) + { + pcomp_set_readline_variables (foundcs, 1); + /* Turn what the programmable completion code returns into what + readline wants. I should have made compute_lcd_of_matches + external... */ + matches = rl_completion_matches (text, prog_complete_return); + if ((foundcs & COPT_DEFAULT) == 0) + rl_attempted_completion_over = 1; /* no default */ + if (matches || ((foundcs & COPT_BASHDEFAULT) == 0)) + return (matches); + } + } +#endif + + if (matches == 0) + { + dflags = 0; + if (in_command_position) + dflags |= DEFCOMP_CMDPOS; + matches = bash_default_completion (text, start, end, qc, dflags); + } + + return matches; +} + +char ** +bash_default_completion (text, start, end, qc, compflags) + const char *text; + int start, end, qc, compflags; +{ + char **matches, *t; + + matches = (char **)NULL; + + /* New posix-style command substitution or variable name? */ + if (!matches && *text == '$') + { + if (qc != '\'' && text[1] == '(') /* ) */ + matches = rl_completion_matches (text, command_subst_completion_function); + else + { + matches = rl_completion_matches (text, variable_completion_function); + if (matches && matches[0] && matches[1] == 0) + { + t = savestring (matches[0]); + bash_filename_stat_hook (&t); + /* doesn't use test_for_directory because that performs tilde + expansion */ + if (file_isdir (t)) + rl_completion_append_character = '/'; + free (t); + } + } + } + + /* If the word starts in `~', and there is no slash in the word, then + try completing this word as a username. */ + if (matches == 0 && *text == '~' && mbschr (text, '/') == 0) + matches = rl_completion_matches (text, rl_username_completion_function); + + /* Another one. Why not? If the word starts in '@', then look through + the world of known hostnames for completion first. */ + if (matches == 0 && perform_hostname_completion && *text == '@') + matches = rl_completion_matches (text, hostname_completion_function); + + /* And last, (but not least) if this word is in a command position, then + complete over possible command names, including aliases, functions, + and command names. */ + if (matches == 0 && (compflags & DEFCOMP_CMDPOS)) + { + /* If END == START and text[0] == 0, we are trying to complete an empty + command word. */ + if (no_empty_command_completion && end == start && text[0] == '\0') + { + matches = (char **)NULL; + rl_ignore_some_completions_function = bash_ignore_everything; + } + else + { +#define CMD_IS_DIR(x) (absolute_pathname(x) == 0 && absolute_program(x) == 0 && *(x) != '~' && test_for_directory (x)) + + dot_in_path = 0; + matches = rl_completion_matches (text, command_word_completion_function); + + /* If we are attempting command completion and nothing matches, we + do not want readline to perform filename completion for us. We + still want to be able to complete partial pathnames, so set the + completion ignore function to something which will remove + filenames and leave directories in the match list. */ + if (matches == (char **)NULL) + rl_ignore_some_completions_function = bash_ignore_filenames; + else if (matches[1] == 0 && CMD_IS_DIR(matches[0]) && dot_in_path == 0) + /* If we found a single match, without looking in the current + directory (because it's not in $PATH), but the found name is + also a command in the current directory, suppress appending any + terminating character, since it's ambiguous. */ + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } + else if (matches[0] && matches[1] && STREQ (matches[0], matches[1]) && CMD_IS_DIR (matches[0])) + /* There are multiple instances of the same match (duplicate + completions haven't yet been removed). In this case, all of + the matches will be the same, and the duplicate removal code + will distill them all down to one. We turn on + rl_completion_suppress_append for the same reason as above. + Remember: we only care if there's eventually a single unique + completion. If there are multiple completions this won't + make a difference and the problem won't occur. */ + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } + } + } + + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ + if (!matches && glob_pattern_p (text)) + { + matches = rl_completion_matches (text, glob_complete_word); + /* A glob expression that matches more than one filename is problematic. + If we match more than one filename, punt. */ + if (matches && matches[1] && rl_completion_type == TAB) + { + strvec_dispose (matches); + matches = (char **)0; + } + else if (matches && matches[1] && rl_completion_type == '!') + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } + } + + return (matches); +} + +static int +bash_command_name_stat_hook (name) + char **name; +{ + char *cname, *result; + + /* If it's not something we're going to look up in $PATH, just call the + normal filename stat hook. */ + if (absolute_program (*name)) + return (bash_filename_stat_hook (name)); + + cname = *name; + /* XXX - we could do something here with converting aliases, builtins, + and functions into something that came out as executable, but we don't. */ + result = search_for_command (cname, 0); + if (result) + { + *name = result; + return 1; + } + return 0; +} + +static int +executable_completion (filename, searching_path) + const char *filename; + int searching_path; +{ + char *f; + int r; + + f = savestring (filename); + bash_directory_completion_hook (&f); + + r = searching_path ? executable_file (f) : executable_or_directory (f); + free (f); + return r; +} + +/* This is the function to call when the word to complete is in a position + where a command word can be found. It grovels $PATH, looking for commands + that match. It also scans aliases, function names, and the shell_builtin + table. */ +char * +command_word_completion_function (hint_text, state) + const char *hint_text; + int state; +{ + static char *hint = (char *)NULL; + static char *path = (char *)NULL; + static char *val = (char *)NULL; + static char *filename_hint = (char *)NULL; + static char *dequoted_hint = (char *)NULL; + static char *directory_part = (char *)NULL; + static char **glob_matches = (char **)NULL; + static int path_index, hint_len, dequoted_len, istate, igncase; + static int mapping_over, local_index, searching_path, hint_is_dir; + static int old_glob_ignore_case, globpat; + static SHELL_VAR **varlist = (SHELL_VAR **)NULL; +#if defined (ALIAS) + static alias_t **alias_list = (alias_t **)NULL; +#endif /* ALIAS */ + char *temp, *cval, *fnhint; + + /* We have to map over the possibilities for command words. If we have + no state, then make one just for that purpose. */ + if (state == 0) + { + rl_filename_stat_hook = bash_command_name_stat_hook; + + if (dequoted_hint && dequoted_hint != hint) + free (dequoted_hint); + if (hint) + free (hint); + + mapping_over = searching_path = 0; + hint_is_dir = CMD_IS_DIR (hint_text); + val = (char *)NULL; + + temp = rl_variable_value ("completion-ignore-case"); + igncase = RL_BOOLEAN_VARIABLE_VALUE (temp); + + if (glob_matches) + { + free (glob_matches); + glob_matches = (char **)NULL; + } + + globpat = glob_pattern_p (hint_text); + + /* If this is an absolute program name, do not check it against + aliases, reserved words, functions or builtins. We must check + whether or not it is unique, and, if so, whether that filename + is executable. */ + if (globpat || absolute_program (hint_text)) + { + /* Perform tilde expansion on what's passed, so we don't end up + passing filenames with tildes directly to stat(). */ + if (*hint_text == '~') + { + hint = bash_tilde_expand (hint_text, 0); + directory_part = savestring (hint_text); + temp = strchr (directory_part, '/'); + if (temp) + *temp = 0; + else + { + free (directory_part); + directory_part = (char *)NULL; + } + } + else + hint = savestring (hint_text); + + dequoted_hint = hint; + /* If readline's completer found a quote character somewhere, but + didn't set the quote character, there must have been a quote + character embedded in the filename. It can't be at the start of + the filename, so we need to dequote the filename before we look + in the file system for it. */ + if (rl_completion_found_quote && rl_completion_quote_character == 0) + { + dequoted_hint = bash_dequote_filename (hint, 0); + free (hint); + hint = dequoted_hint; + } + dequoted_len = hint_len = strlen (hint); + + if (filename_hint) + free (filename_hint); + + fnhint = filename_hint = savestring (hint); + + istate = 0; + + if (globpat) + { + mapping_over = 5; + goto globword; + } + else + { + if (dircomplete_expand && path_dot_or_dotdot (filename_hint)) + { + dircomplete_expand = 0; + set_directory_hook (); + dircomplete_expand = 1; + } + mapping_over = 4; + goto inner; + } + } + + dequoted_hint = hint = savestring (hint_text); + dequoted_len = hint_len = strlen (hint); + + if (rl_completion_found_quote && rl_completion_quote_character == 0) + { + dequoted_hint = bash_dequote_filename (hint, 0); + dequoted_len = strlen (dequoted_hint); + } + + path = get_string_value ("PATH"); + path_index = dot_in_path = 0; + + /* Initialize the variables for each type of command word. */ + local_index = 0; + + if (varlist) + free (varlist); + + varlist = all_visible_functions (); + +#if defined (ALIAS) + if (alias_list) + free (alias_list); + + alias_list = all_aliases (); +#endif /* ALIAS */ + } + + /* mapping_over says what we are currently hacking. Note that every case + in this list must fall through when there are no more possibilities. */ + + switch (mapping_over) + { + case 0: /* Aliases come first. */ +#if defined (ALIAS) + while (alias_list && alias_list[local_index]) + { + register char *alias; + + alias = alias_list[local_index++]->name; + + if (STREQN (alias, hint, hint_len)) + return (savestring (alias)); + } +#endif /* ALIAS */ + local_index = 0; + mapping_over++; + + case 1: /* Then shell reserved words. */ + { + while (word_token_alist[local_index].word) + { + register char *reserved_word; + + reserved_word = word_token_alist[local_index++].word; + + if (STREQN (reserved_word, hint, hint_len)) + return (savestring (reserved_word)); + } + local_index = 0; + mapping_over++; + } + + case 2: /* Then function names. */ + while (varlist && varlist[local_index]) + { + register char *varname; + + varname = varlist[local_index++]->name; + + if (STREQN (varname, hint, hint_len)) + return (savestring (varname)); + } + local_index = 0; + mapping_over++; + + case 3: /* Then shell builtins. */ + for (; local_index < num_shell_builtins; local_index++) + { + /* Ignore it if it doesn't have a function pointer or if it + is not currently enabled. */ + if (!shell_builtins[local_index].function || + (shell_builtins[local_index].flags & BUILTIN_ENABLED) == 0) + continue; + + if (STREQN (shell_builtins[local_index].name, hint, hint_len)) + { + int i = local_index++; + + return (savestring (shell_builtins[i].name)); + } + } + local_index = 0; + mapping_over++; + } + +globword: + /* Limited support for completing command words with globbing chars. Only + a single match (multiple matches that end up reducing the number of + characters in the common prefix are bad) will ever be returned on + regular completion. */ + if (globpat) + { + if (state == 0) + { + glob_ignore_case = igncase; + glob_matches = shell_glob_filename (hint); + glob_ignore_case = old_glob_ignore_case; + + if (GLOB_FAILED (glob_matches) || glob_matches == 0) + { + glob_matches = (char **)NULL; + return ((char *)NULL); + } + + local_index = 0; + + if (glob_matches[1] && rl_completion_type == TAB) /* multiple matches are bad */ + return ((char *)NULL); + } + + while (val = glob_matches[local_index++]) + { + if (executable_or_directory (val)) + { + if (*hint_text == '~' && directory_part) + { + temp = maybe_restore_tilde (val, directory_part); + free (val); + val = temp; + } + return (val); + } + free (val); + } + + glob_ignore_case = old_glob_ignore_case; + return ((char *)NULL); + } + + /* If the text passed is a directory in the current directory, return it + as a possible match. Executables in directories in the current + directory can be specified using relative pathnames and successfully + executed even when `.' is not in $PATH. */ + if (hint_is_dir) + { + hint_is_dir = 0; /* only return the hint text once */ + return (savestring (hint_text)); + } + + /* Repeatedly call filename_completion_function while we have + members of PATH left. Question: should we stat each file? + Answer: we call executable_file () on each file. */ + outer: + + istate = (val != (char *)NULL); + + if (istate == 0) + { + char *current_path; + + /* Get the next directory from the path. If there is none, then we + are all done. */ + if (path == 0 || path[path_index] == 0 || + (current_path = extract_colon_unit (path, &path_index)) == 0) + return ((char *)NULL); + + searching_path = 1; + if (*current_path == 0) + { + free (current_path); + current_path = savestring ("."); + } + + if (*current_path == '~') + { + char *t; + + t = bash_tilde_expand (current_path, 0); + free (current_path); + current_path = t; + } + + if (current_path[0] == '.' && current_path[1] == '\0') + dot_in_path = 1; + + if (fnhint && filename_hint && fnhint != filename_hint) + free (fnhint); + if (filename_hint) + free (filename_hint); + + filename_hint = sh_makepath (current_path, hint, 0); + /* Need a quoted version (though it doesn't matter much in most + cases) because rl_filename_completion_function dequotes the + filename it gets, assuming that it's been quoted as part of + the input line buffer. */ + if (strpbrk (filename_hint, "\"'\\")) + fnhint = sh_backslash_quote (filename_hint, filename_bstab, 0); + else + fnhint = filename_hint; + free (current_path); /* XXX */ + } + + inner: + val = rl_filename_completion_function (fnhint, istate); + if (mapping_over == 4 && dircomplete_expand) + set_directory_hook (); + + istate = 1; + + if (val == 0) + { + /* If the hint text is an absolute program, then don't bother + searching through PATH. */ + if (absolute_program (hint)) + return ((char *)NULL); + + goto outer; + } + else + { + int match, freetemp; + + if (absolute_program (hint)) + { + if (igncase == 0) + match = strncmp (val, hint, hint_len) == 0; + else + match = strncasecmp (val, hint, hint_len) == 0; + + /* If we performed tilde expansion, restore the original + filename. */ + if (*hint_text == '~') + temp = maybe_restore_tilde (val, directory_part); + else + temp = savestring (val); + freetemp = 1; + } + else + { + temp = strrchr (val, '/'); + + if (temp) + { + temp++; + if (igncase == 0) + freetemp = match = strncmp (temp, hint, hint_len) == 0; + else + freetemp = match = strncasecmp (temp, hint, hint_len) == 0; + if (match) + temp = savestring (temp); + } + else + freetemp = match = 0; + } + + /* If we have found a match, and it is an executable file, return it. + We don't return directory names when searching $PATH, since the + bash execution code won't find executables in directories which + appear in directories in $PATH when they're specified using + relative pathnames. */ +#if 0 + /* If we're not searching $PATH and we have a relative pathname, we + need to re-canonicalize it before testing whether or not it's an + executable or a directory so the shell treats .. relative to $PWD + according to the physical/logical option. The shell already + canonicalizes the directory name in order to tell readline where + to look, so not doing it here will be inconsistent. */ + /* XXX -- currently not used -- will introduce more inconsistency, + since shell does not canonicalize ../foo before passing it to + shell_execve(). */ + if (match && searching_path == 0 && *val == '.') + { + char *t, *t1; + + t = get_working_directory ("command-word-completion"); + t1 = make_absolute (val, t); + free (t); + cval = sh_canonpath (t1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + } + else +#endif + cval = val; + + if (match && executable_completion ((searching_path ? val : cval), searching_path)) + { + if (cval != val) + free (cval); + free (val); + val = ""; /* So it won't be NULL. */ + return (temp); + } + else + { + if (freetemp) + free (temp); + if (cval != val) + free (cval); + free (val); + goto inner; + } + } +} + +/* Completion inside an unterminated command substitution. */ +static char * +command_subst_completion_function (text, state) + const char *text; + int state; +{ + static char **matches = (char **)NULL; + static const char *orig_start; + static char *filename_text = (char *)NULL; + static int cmd_index, start_len; + char *value; + + if (state == 0) + { + if (filename_text) + free (filename_text); + orig_start = text; + if (*text == '`') + text++; + else if (*text == '$' && text[1] == '(') /* ) */ + text += 2; + /* If the text was quoted, suppress any quote character that the + readline completion code would insert. */ + rl_completion_suppress_quote = 1; + start_len = text - orig_start; + filename_text = savestring (text); + if (matches) + free (matches); + + /* + * At this point we can entertain the idea of re-parsing + * `filename_text' into a (possibly incomplete) command name and + * arguments, and doing completion based on that. This is + * currently very rudimentary, but it is a small improvement. + */ + for (value = filename_text + strlen (filename_text) - 1; value > filename_text; value--) + if (whitespace (*value) || member (*value, COMMAND_SEPARATORS)) + break; + if (value <= filename_text) + matches = rl_completion_matches (filename_text, command_word_completion_function); + else + { + value++; + start_len += value - filename_text; + if (whitespace (value[-1])) + matches = rl_completion_matches (value, rl_filename_completion_function); + else + matches = rl_completion_matches (value, command_word_completion_function); + } + + /* If there is more than one match, rl_completion_matches has already + put the lcd in matches[0]. Skip over it. */ + cmd_index = matches && matches[0] && matches[1]; + + /* If there's a single match and it's a directory, set the append char + to the expected `/'. Otherwise, don't append anything. */ + if (matches && matches[0] && matches[1] == 0 && test_for_directory (matches[0])) + rl_completion_append_character = '/'; + else + rl_completion_suppress_append = 1; + } + + if (matches == 0 || matches[cmd_index] == 0) + { + rl_filename_quoting_desired = 0; /* disable quoting */ + return ((char *)NULL); + } + else + { + value = (char *)xmalloc (1 + start_len + strlen (matches[cmd_index])); + + if (start_len == 1) + value[0] = *orig_start; + else + strncpy (value, orig_start, start_len); + + strcpy (value + start_len, matches[cmd_index]); + + cmd_index++; + return (value); + } +} + +/* Okay, now we write the entry_function for variable completion. */ +static char * +variable_completion_function (text, state) + const char *text; + int state; +{ + static char **varlist = (char **)NULL; + static int varlist_index; + static char *varname = (char *)NULL; + static int namelen; + static int first_char, first_char_loc; + + if (!state) + { + if (varname) + free (varname); + + first_char_loc = 0; + first_char = text[0]; + + if (first_char == '$') + first_char_loc++; + + if (text[first_char_loc] == '{') + first_char_loc++; + + varname = savestring (text + first_char_loc); + + namelen = strlen (varname); + if (varlist) + strvec_dispose (varlist); + + varlist = all_variables_matching_prefix (varname); + varlist_index = 0; + } + + if (!varlist || !varlist[varlist_index]) + { + return ((char *)NULL); + } + else + { + char *value; + + value = (char *)xmalloc (4 + strlen (varlist[varlist_index])); + + if (first_char_loc) + { + value[0] = first_char; + if (first_char_loc == 2) + value[1] = '{'; + } + + strcpy (value + first_char_loc, varlist[varlist_index]); + if (first_char_loc == 2) + strcat (value, "}"); + + varlist_index++; + return (value); + } +} + +/* How about a completion function for hostnames? */ +static char * +hostname_completion_function (text, state) + const char *text; + int state; +{ + static char **list = (char **)NULL; + static int list_index = 0; + static int first_char, first_char_loc; + + /* If we don't have any state, make some. */ + if (state == 0) + { + FREE (list); + + list = (char **)NULL; + + first_char_loc = 0; + first_char = *text; + + if (first_char == '@') + first_char_loc++; + + list = hostnames_matching ((char *)text+first_char_loc); + list_index = 0; + } + + if (list && list[list_index]) + { + char *t; + + t = (char *)xmalloc (2 + strlen (list[list_index])); + *t = first_char; + strcpy (t + first_char_loc, list[list_index]); + list_index++; + return (t); + } + + return ((char *)NULL); +} + +/* + * A completion function for service names from /etc/services (or wherever). + */ +char * +bash_servicename_completion_function (text, state) + const char *text; + int state; +{ +#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GETSERVENT) + return ((char *)NULL); +#else + static char *sname = (char *)NULL; + static struct servent *srvent; + static int snamelen, firstc; + char *value; + char **alist, *aentry; + int afound; + + if (state == 0) + { + FREE (sname); + firstc = *text; + + sname = savestring (text); + snamelen = strlen (sname); + setservent (0); + } + + while (srvent = getservent ()) + { + afound = 0; + if (snamelen == 0 || (STREQN (sname, srvent->s_name, snamelen))) + break; + /* Not primary, check aliases */ + for (alist = srvent->s_aliases; *alist; alist++) + { + aentry = *alist; + if (STREQN (sname, aentry, snamelen)) + { + afound = 1; + break; + } + } + + if (afound) + break; + } + + if (srvent == 0) + { + endservent (); + return ((char *)NULL); + } + + value = afound ? savestring (aentry) : savestring (srvent->s_name); + return value; +#endif +} + +/* + * A completion function for group names from /etc/group (or wherever). + */ +char * +bash_groupname_completion_function (text, state) + const char *text; + int state; +{ +#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) + return ((char *)NULL); +#else + static char *gname = (char *)NULL; + static struct group *grent; + static int gnamelen; + char *value; + + if (state == 0) + { + FREE (gname); + gname = savestring (text); + gnamelen = strlen (gname); + + setgrent (); + } + + while (grent = getgrent ()) + { + if (gnamelen == 0 || (STREQN (gname, grent->gr_name, gnamelen))) + break; + } + + if (grent == 0) + { + endgrent (); + return ((char *)NULL); + } + + value = savestring (grent->gr_name); + return (value); +#endif +} + +/* Functions to perform history and alias expansions on the current line. */ + +#if defined (BANG_HISTORY) +/* Perform history expansion on the current line. If no history expansion + is done, pre_process_line() returns what it was passed, so we need to + allocate a new line here. */ +static char * +history_expand_line_internal (line) + char *line; +{ + char *new_line; + int old_verify; + + old_verify = hist_verify; + hist_verify = 0; + new_line = pre_process_line (line, 0, 0); + hist_verify = old_verify; + + return (new_line == line) ? savestring (line) : new_line; +} +#endif + +/* There was an error in expansion. Let the preprocessor print + the error here. */ +static void +cleanup_expansion_error () +{ + char *to_free; +#if defined (BANG_HISTORY) + int old_verify; + + old_verify = hist_verify; + hist_verify = 0; +#endif + + fprintf (rl_outstream, "\r\n"); + to_free = pre_process_line (rl_line_buffer, 1, 0); +#if defined (BANG_HISTORY) + hist_verify = old_verify; +#endif + if (to_free != rl_line_buffer) + FREE (to_free); + putc ('\r', rl_outstream); + rl_forced_update_display (); +} + +/* If NEW_LINE differs from what is in the readline line buffer, add an + undo record to get from the readline line buffer contents to the new + line and make NEW_LINE the current readline line. */ +static void +maybe_make_readline_line (new_line) + char *new_line; +{ + if (strcmp (new_line, rl_line_buffer) != 0) + { + rl_point = rl_end; + + rl_add_undo (UNDO_BEGIN, 0, 0, 0); + rl_delete_text (0, rl_point); + rl_point = rl_end = rl_mark = 0; + rl_insert_text (new_line); + rl_add_undo (UNDO_END, 0, 0, 0); + } +} + +/* Make NEW_LINE be the current readline line. This frees NEW_LINE. */ +static void +set_up_new_line (new_line) + char *new_line; +{ + int old_point, at_end; + + old_point = rl_point; + at_end = rl_point == rl_end; + + /* If the line was history and alias expanded, then make that + be one thing to undo. */ + maybe_make_readline_line (new_line); + free (new_line); + + /* Place rl_point where we think it should go. */ + if (at_end) + rl_point = rl_end; + else if (old_point < rl_end) + { + rl_point = old_point; + if (!whitespace (rl_line_buffer[rl_point])) + rl_forward_word (1, 0); + } +} + +#if defined (ALIAS) +/* Expand aliases in the current readline line. */ +static int +alias_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + + new_line = alias_expand (rl_line_buffer); + + if (new_line) + { + set_up_new_line (new_line); + return (0); + } + else + { + cleanup_expansion_error (); + return (1); + } +} +#endif + +#if defined (BANG_HISTORY) +/* History expand the line. */ +static int +history_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + + new_line = history_expand_line_internal (rl_line_buffer); + + if (new_line) + { + set_up_new_line (new_line); + return (0); + } + else + { + cleanup_expansion_error (); + return (1); + } +} + +/* Expand history substitutions in the current line and then insert a + space (hopefully close to where we were before). */ +static int +tcsh_magic_space (count, ignore) + int count, ignore; +{ + int dist_from_end, old_point; + + old_point = rl_point; + dist_from_end = rl_end - rl_point; + if (history_expand_line (count, ignore) == 0) + { + /* Try a simple heuristic from Stephen Gildea . + This works if all expansions were before rl_point or if no expansions + were performed. */ + rl_point = (old_point == 0) ? old_point : rl_end - dist_from_end; + rl_insert (1, ' '); + return (0); + } + else + return (1); +} +#endif /* BANG_HISTORY */ + +/* History and alias expand the line. */ +static int +history_and_alias_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + + new_line = 0; +#if defined (BANG_HISTORY) + new_line = history_expand_line_internal (rl_line_buffer); +#endif + +#if defined (ALIAS) + if (new_line) + { + char *alias_line; + + alias_line = alias_expand (new_line); + free (new_line); + new_line = alias_line; + } +#endif /* ALIAS */ + + if (new_line) + { + set_up_new_line (new_line); + return (0); + } + else + { + cleanup_expansion_error (); + return (1); + } +} + +/* History and alias expand the line, then perform the shell word + expansions by calling expand_string. This can't use set_up_new_line() + because we want the variable expansions as a separate undo'able + set of operations. */ +static int +shell_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + WORD_LIST *expanded_string; + + new_line = 0; +#if defined (BANG_HISTORY) + new_line = history_expand_line_internal (rl_line_buffer); +#endif + +#if defined (ALIAS) + if (new_line) + { + char *alias_line; + + alias_line = alias_expand (new_line); + free (new_line); + new_line = alias_line; + } +#endif /* ALIAS */ + + if (new_line) + { + int old_point = rl_point; + int at_end = rl_point == rl_end; + + /* If the line was history and alias expanded, then make that + be one thing to undo. */ + maybe_make_readline_line (new_line); + free (new_line); + + /* If there is variable expansion to perform, do that as a separate + operation to be undone. */ + new_line = savestring (rl_line_buffer); + expanded_string = expand_string (new_line, 0); + FREE (new_line); + if (expanded_string == 0) + { + new_line = (char *)xmalloc (1); + new_line[0] = '\0'; + } + else + { + new_line = string_list (expanded_string); + dispose_words (expanded_string); + } + + maybe_make_readline_line (new_line); + free (new_line); + + /* Place rl_point where we think it should go. */ + if (at_end) + rl_point = rl_end; + else if (old_point < rl_end) + { + rl_point = old_point; + if (!whitespace (rl_line_buffer[rl_point])) + rl_forward_word (1, 0); + } + return 0; + } + else + { + cleanup_expansion_error (); + return 1; + } +} + +/* If FIGNORE is set, then don't match files with the given suffixes when + completing filenames. If only one of the possibilities has an acceptable + suffix, delete the others, else just return and let the completer + signal an error. It is called by the completer when real + completions are done on filenames by the completer's internal + function, not for completion lists (M-?) and not on "other" + completion types, such as hostnames or commands. */ + +static struct ignorevar fignore = +{ + "FIGNORE", + (struct ign *)0, + 0, + (char *)0, + (sh_iv_item_func_t *) 0, +}; + +static void +_ignore_completion_names (names, name_func) + char **names; + sh_ignore_func_t *name_func; +{ + char **newnames; + int idx, nidx; + char **oldnames; + int oidx; + + /* If there is only one completion, see if it is acceptable. If it is + not, free it up. In any case, short-circuit and return. This is a + special case because names[0] is not the prefix of the list of names + if there is only one completion; it is the completion itself. */ + if (names[1] == (char *)0) + { + if (force_fignore) + if ((*name_func) (names[0]) == 0) + { + free (names[0]); + names[0] = (char *)NULL; + } + + return; + } + + /* Allocate space for array to hold list of pointers to matching + filenames. The pointers are copied back to NAMES when done. */ + for (nidx = 1; names[nidx]; nidx++) + ; + newnames = strvec_create (nidx + 1); + + if (force_fignore == 0) + { + oldnames = strvec_create (nidx - 1); + oidx = 0; + } + + newnames[0] = names[0]; + for (idx = nidx = 1; names[idx]; idx++) + { + if ((*name_func) (names[idx])) + newnames[nidx++] = names[idx]; + else if (force_fignore == 0) + oldnames[oidx++] = names[idx]; + else + free (names[idx]); + } + + newnames[nidx] = (char *)NULL; + + /* If none are acceptable then let the completer handle it. */ + if (nidx == 1) + { + if (force_fignore) + { + free (names[0]); + names[0] = (char *)NULL; + } + else + free (oldnames); + + free (newnames); + return; + } + + if (force_fignore == 0) + { + while (oidx) + free (oldnames[--oidx]); + free (oldnames); + } + + /* If only one is acceptable, copy it to names[0] and return. */ + if (nidx == 2) + { + free (names[0]); + names[0] = newnames[1]; + names[1] = (char *)NULL; + free (newnames); + return; + } + + /* Copy the acceptable names back to NAMES, set the new array end, + and return. */ + for (nidx = 1; newnames[nidx]; nidx++) + names[nidx] = newnames[nidx]; + names[nidx] = (char *)NULL; + free (newnames); +} + +static int +name_is_acceptable (name) + const char *name; +{ + struct ign *p; + int nlen; + + for (nlen = strlen (name), p = fignore.ignores; p->val; p++) + { + if (nlen > p->len && p->len > 0 && STREQ (p->val, &name[nlen - p->len])) + return (0); + } + + return (1); +} + +#if 0 +static int +ignore_dot_names (name) + char *name; +{ + return (name[0] != '.'); +} +#endif + +static int +filename_completion_ignore (names) + char **names; +{ +#if 0 + if (glob_dot_filenames == 0) + _ignore_completion_names (names, ignore_dot_names); +#endif + + setup_ignore_patterns (&fignore); + + if (fignore.num_ignores == 0) + return 0; + + _ignore_completion_names (names, name_is_acceptable); + + return 0; +} + +/* Return 1 if NAME is a directory. NAME undergoes tilde expansion. */ +static int +test_for_directory (name) + const char *name; +{ + char *fn; + int r; + + fn = bash_tilde_expand (name, 0); + r = file_isdir (fn); + free (fn); + + return (r); +} + +/* Remove files from NAMES, leaving directories. */ +static int +bash_ignore_filenames (names) + char **names; +{ + _ignore_completion_names (names, test_for_directory); + return 0; +} + +static int +return_zero (name) + const char *name; +{ + return 0; +} + +static int +bash_ignore_everything (names) + char **names; +{ + _ignore_completion_names (names, return_zero); + return 0; +} + +/* Replace a tilde-prefix in VAL with a `~', assuming the user typed it. VAL + is an expanded filename. DIRECTORY_PART is the tilde-prefix portion + of the un-tilde-expanded version of VAL (what the user typed). */ +static char * +restore_tilde (val, directory_part) + char *val, *directory_part; +{ + int l, vl, dl2, xl; + char *dh2, *expdir, *ret; + + vl = strlen (val); + + /* We need to duplicate the expansions readline performs on the directory + portion before passing it to our completion function. */ + dh2 = directory_part ? bash_dequote_filename (directory_part, 0) : 0; + bash_directory_expansion (&dh2); + dl2 = strlen (dh2); + + expdir = bash_tilde_expand (directory_part, 0); + xl = strlen (expdir); + free (expdir); + + /* + dh2 = unexpanded but dequoted tilde-prefix + dl2 = length of tilde-prefix + expdir = tilde-expanded tilde-prefix + xl = length of expanded tilde-prefix + l = length of remainder after tilde-prefix + */ + l = (vl - xl) + 1; + + ret = (char *)xmalloc (dl2 + 2 + l); + strcpy (ret, dh2); + strcpy (ret + dl2, val + xl); + + free (dh2); + return (ret); +} + +static char * +maybe_restore_tilde (val, directory_part) + char *val, *directory_part; +{ + rl_icppfunc_t *save; + char *ret; + + save = (dircomplete_expand == 0) ? save_directory_hook () : (rl_icppfunc_t *)0; + ret = restore_tilde (val, directory_part); + if (save) + restore_directory_hook (save); + return ret; +} + +/* Simulate the expansions that will be performed by + rl_filename_completion_function. This must be called with the address of + a pointer to malloc'd memory. */ +static void +bash_directory_expansion (dirname) + char **dirname; +{ + char *d, *nd; + + d = savestring (*dirname); + + if ((rl_directory_rewrite_hook) && (*rl_directory_rewrite_hook) (&d)) + { + free (*dirname); + *dirname = d; + } + else if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) + { + free (*dirname); + *dirname = d; + } + else if (rl_completion_found_quote) + { + nd = bash_dequote_filename (d, rl_completion_quote_character); + free (*dirname); + free (d); + *dirname = nd; + } +} + +/* If necessary, rewrite directory entry */ +static char * +bash_filename_rewrite_hook (fname, fnlen) + char *fname; + int fnlen; +{ + char *conv; + + conv = fnx_fromfs (fname, fnlen); + if (conv != fname) + conv = savestring (conv); + return conv; +} + +/* Functions to save and restore the appropriate directory hook */ +/* This is not static so the shopt code can call it */ +void +set_directory_hook () +{ + if (dircomplete_expand) + { + rl_directory_completion_hook = bash_directory_completion_hook; + rl_directory_rewrite_hook = (rl_icppfunc_t *)0; + } + else + { + rl_directory_rewrite_hook = bash_directory_completion_hook; + rl_directory_completion_hook = (rl_icppfunc_t *)0; + } +} + +static rl_icppfunc_t * +save_directory_hook () +{ + rl_icppfunc_t *ret; + + if (dircomplete_expand) + { + ret = rl_directory_completion_hook; + rl_directory_completion_hook = (rl_icppfunc_t *)NULL; + } + else + { + ret = rl_directory_rewrite_hook; + rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL; + } + + return ret; +} + +static void +restore_directory_hook (hookf) + rl_icppfunc_t *hookf; +{ + if (dircomplete_expand) + rl_directory_completion_hook = hookf; + else + rl_directory_rewrite_hook = hookf; +} + +/* Expand a filename before the readline completion code passes it to stat(2). + The filename will already have had tilde expansion performed. */ +static int +bash_filename_stat_hook (dirname) + char **dirname; +{ + char *local_dirname, *new_dirname, *t; + int should_expand_dirname, return_value; + WORD_LIST *wl; + struct stat sb; + + local_dirname = *dirname; + should_expand_dirname = return_value = 0; + if (t = mbschr (local_dirname, '$')) + should_expand_dirname = '$'; + else if (t = mbschr (local_dirname, '`')) /* XXX */ + should_expand_dirname = '`'; + +#if defined (HAVE_LSTAT) + if (should_expand_dirname && lstat (local_dirname, &sb) == 0) +#else + if (should_expand_dirname && stat (local_dirname, &sb) == 0) +#endif + should_expand_dirname = 0; + + if (should_expand_dirname) + { + new_dirname = savestring (local_dirname); + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + if (wl) + { + free (new_dirname); + new_dirname = string_list (wl); + /* Tell the completer we actually expanded something and change + *dirname only if we expanded to something non-null -- stat + behaves unpredictably when passed null or empty strings */ + if (new_dirname && *new_dirname) + { + free (local_dirname); /* XXX */ + local_dirname = *dirname = new_dirname; + return_value = STREQ (local_dirname, *dirname) == 0; + } + else + free (new_dirname); + dispose_words (wl); + } + else + free (new_dirname); + } + + /* This is very similar to the code in bash_directory_completion_hook below, + but without spelling correction and not worrying about whether or not + we change relative pathnames. */ + if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1])) + { + char *temp1, *temp2; + + t = get_working_directory ("symlink-hook"); + temp1 = make_absolute (local_dirname, t); + free (t); + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + /* If we can't canonicalize, bail. */ + if (temp2 == 0) + { + free (temp1); + return return_value; + } + + free (local_dirname); + *dirname = temp2; + free (temp1); + } + + return (return_value); +} + +/* Handle symbolic link references and other directory name + expansions while hacking completion. This should return 1 if it modifies + the DIRNAME argument, 0 otherwise. It should make sure not to modify + DIRNAME if it returns 0. */ +static int +bash_directory_completion_hook (dirname) + char **dirname; +{ + char *local_dirname, *new_dirname, *t; + int return_value, should_expand_dirname, nextch, closer; + WORD_LIST *wl; + struct stat sb; + + return_value = should_expand_dirname = nextch = closer = 0; + local_dirname = *dirname; + + if (t = mbschr (local_dirname, '$')) + { + should_expand_dirname = '$'; + nextch = t[1]; + /* Deliberately does not handle the deprecated $[...] arithmetic + expansion syntax */ + if (nextch == '(') + closer = ')'; + else if (nextch == '{') + closer = '}'; + else + nextch = 0; + } + else if (local_dirname[0] == '~') + should_expand_dirname = '~'; + else + { + t = mbschr (local_dirname, '`'); + if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0) + should_expand_dirname = '`'; + } + +#if defined (HAVE_LSTAT) + if (should_expand_dirname && lstat (local_dirname, &sb) == 0) +#else + if (should_expand_dirname && stat (local_dirname, &sb) == 0) +#endif + should_expand_dirname = 0; + + if (should_expand_dirname) + { + new_dirname = savestring (local_dirname); + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + if (wl) + { + *dirname = string_list (wl); + /* Tell the completer to replace the directory name only if we + actually expanded something. */ + return_value = STREQ (local_dirname, *dirname) == 0; + free (local_dirname); + free (new_dirname); + dispose_words (wl); + local_dirname = *dirname; + /* XXX - change rl_filename_quote_characters here based on + should_expand_dirname/nextch/closer. This is the only place + custom_filename_quote_characters is modified. */ + if (rl_filename_quote_characters && *rl_filename_quote_characters) + { + int i, j, c; + i = strlen (default_filename_quote_characters); + custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1); + for (i = j = 0; c = default_filename_quote_characters[i]; i++) + { + if (c == should_expand_dirname || c == nextch || c == closer) + continue; + custom_filename_quote_characters[j++] = c; + } + custom_filename_quote_characters[j] = '\0'; + rl_filename_quote_characters = custom_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + } + } + else + { + free (new_dirname); + free (local_dirname); + *dirname = (char *)xmalloc (1); + **dirname = '\0'; + return 1; + } + } + else + { + /* Dequote the filename even if we don't expand it. */ + new_dirname = bash_dequote_filename (local_dirname, rl_completion_quote_character); + return_value = STREQ (local_dirname, new_dirname) == 0; + free (local_dirname); + local_dirname = *dirname = new_dirname; + } + + /* no_symbolic_links == 0 -> use (default) logical view of the file system. + local_dirname[0] == '.' && local_dirname[1] == '/' means files in the + current directory (./). + local_dirname[0] == '.' && local_dirname[1] == 0 means relative pathnames + in the current directory (e.g., lib/sh). + XXX - should we do spelling correction on these? */ + + /* This is test as it was in bash-4.2: skip relative pathnames in current + directory. Change test to + (local_dirname[0] != '.' || (local_dirname[1] && local_dirname[1] != '/')) + if we want to skip paths beginning with ./ also. */ + if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1])) + { + char *temp1, *temp2; + int len1, len2; + + /* If we have a relative path + (local_dirname[0] != '/' && local_dirname[0] != '.') + that is canonical after appending it to the current directory, then + temp1 = temp2+'/' + That is, + strcmp (temp1, temp2) == 0 + after adding a slash to temp2 below. It should be safe to not + change those. + */ + t = get_working_directory ("symlink-hook"); + temp1 = make_absolute (local_dirname, t); + free (t); + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + /* Try spelling correction if initial canonicalization fails. Make + sure we are set to replace the directory name with the results so + subsequent directory checks don't fail. */ + if (temp2 == 0 && dircomplete_spelling && dircomplete_expand) + { + temp2 = dirspell (temp1); + if (temp2) + { + free (temp1); + temp1 = temp2; + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + return_value |= temp2 != 0; + } + } + /* If we can't canonicalize, bail. */ + if (temp2 == 0) + { + free (temp1); + return return_value; + } + len1 = strlen (temp1); + if (temp1[len1 - 1] == '/') + { + len2 = strlen (temp2); + if (len2 > 2) /* don't append `/' to `/' or `//' */ + { + temp2 = (char *)xrealloc (temp2, len2 + 2); + temp2[len2] = '/'; + temp2[len2 + 1] = '\0'; + } + } + + /* dircomplete_expand_relpath == 0 means we want to leave relative + pathnames that are unchanged by canonicalization alone. + *local_dirname != '/' && *local_dirname != '.' == relative pathname + (consistent with general.c:absolute_pathname()) + temp1 == temp2 (after appending a slash to temp2) means the pathname + is not changed by canonicalization as described above. */ + if (dircomplete_expand_relpath || ((local_dirname[0] != '/' && local_dirname[0] != '.') && STREQ (temp1, temp2) == 0)) + return_value |= STREQ (local_dirname, temp2) == 0; + free (local_dirname); + *dirname = temp2; + free (temp1); + } + + return (return_value); +} + +static char **history_completion_array = (char **)NULL; +static int harry_size; +static int harry_len; + +static void +build_history_completion_array () +{ + register int i, j; + HIST_ENTRY **hlist; + char **tokens; + + /* First, clear out the current dynamic history completion list. */ + if (harry_size) + { + strvec_dispose (history_completion_array); + history_completion_array = (char **)NULL; + harry_size = 0; + harry_len = 0; + } + + /* Next, grovel each line of history, making each shell-sized token + a separate entry in the history_completion_array. */ + hlist = history_list (); + + if (hlist) + { + for (i = 0; hlist[i]; i++) + ; + for ( --i; i >= 0; i--) + { + /* Separate each token, and place into an array. */ + tokens = history_tokenize (hlist[i]->line); + + for (j = 0; tokens && tokens[j]; j++) + { + if (harry_len + 2 > harry_size) + history_completion_array = strvec_resize (history_completion_array, harry_size += 10); + + history_completion_array[harry_len++] = tokens[j]; + history_completion_array[harry_len] = (char *)NULL; + } + free (tokens); + } + + /* Sort the complete list of tokens. */ + if (dabbrev_expand_active == 0) + qsort (history_completion_array, harry_len, sizeof (char *), (QSFUNC *)strvec_strcmp); + } +} + +static char * +history_completion_generator (hint_text, state) + const char *hint_text; + int state; +{ + static int local_index, len; + static const char *text; + + /* If this is the first call to the generator, then initialize the + list of strings to complete over. */ + if (state == 0) + { + if (dabbrev_expand_active) /* This is kind of messy */ + rl_completion_suppress_append = 1; + local_index = 0; + build_history_completion_array (); + text = hint_text; + len = strlen (text); + } + + while (history_completion_array && history_completion_array[local_index]) + { + if (strncmp (text, history_completion_array[local_index++], len) == 0) + return (savestring (history_completion_array[local_index - 1])); + } + return ((char *)NULL); +} + +static int +dynamic_complete_history (count, key) + int count, key; +{ + int r; + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + rl_compignore_func_t *orig_ignore_func; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + + rl_completion_entry_function = history_completion_generator; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + + /* XXX - use rl_completion_mode here? */ + if (rl_last_func == dynamic_complete_history) + r = rl_complete_internal ('?'); + else + r = rl_complete_internal (TAB); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_ignore_some_completions_function = orig_ignore_func; + + return r; +} + +static int +bash_dabbrev_expand (count, key) + int count, key; +{ + int r, orig_suppress, orig_sort; + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + rl_compignore_func_t *orig_ignore_func; + + orig_func = rl_menu_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + orig_suppress = rl_completion_suppress_append; + orig_sort = rl_sort_completion_matches; + + rl_menu_completion_entry_function = history_completion_generator; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + rl_filename_completion_desired = 0; + rl_completion_suppress_append = 1; + rl_sort_completion_matches = 0; + + /* XXX - use rl_completion_mode here? */ + dabbrev_expand_active = 1; + if (rl_last_func == bash_dabbrev_expand) + rl_last_func = rl_menu_complete; + r = rl_menu_complete (count, key); + dabbrev_expand_active = 0; + + rl_last_func = bash_dabbrev_expand; + rl_menu_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_ignore_some_completions_function = orig_ignore_func; + rl_completion_suppress_append = orig_suppress; + rl_sort_completion_matches = orig_sort; + + return r; +} + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) +static int +bash_complete_username (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_username_internal (rl_completion_mode (bash_complete_username)); +} + +static int +bash_possible_username_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_username_internal ('?'); +} + +static int +bash_complete_username_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, rl_username_completion_function); +} + +static int +bash_complete_filename (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_filename_internal (rl_completion_mode (bash_complete_filename)); +} + +static int +bash_possible_filename_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_filename_internal ('?'); +} + +static int +bash_complete_filename_internal (what_to_do) + int what_to_do; +{ + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + rl_icppfunc_t *orig_dir_func; + rl_compignore_func_t *orig_ignore_func; + /*const*/ char *orig_rl_completer_word_break_characters; + int r; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + orig_rl_completer_word_break_characters = rl_completer_word_break_characters; + + orig_dir_func = save_directory_hook (); + + rl_completion_entry_function = rl_filename_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + rl_completer_word_break_characters = " \t\n\"\'"; + + r = rl_complete_internal (what_to_do); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_ignore_some_completions_function = orig_ignore_func; + rl_completer_word_break_characters = orig_rl_completer_word_break_characters; + + restore_directory_hook (orig_dir_func); + + return r; +} + +static int +bash_complete_hostname (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_hostname_internal (rl_completion_mode (bash_complete_hostname)); +} + +static int +bash_possible_hostname_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_hostname_internal ('?'); +} + +static int +bash_complete_variable (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_variable_internal (rl_completion_mode (bash_complete_variable)); +} + +static int +bash_possible_variable_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_variable_internal ('?'); +} + +static int +bash_complete_command (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_command_internal (rl_completion_mode (bash_complete_command)); +} + +static int +bash_possible_command_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_command_internal ('?'); +} + +static int +bash_complete_hostname_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, hostname_completion_function); +} + +static int +bash_complete_variable_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, variable_completion_function); +} + +static int +bash_complete_command_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, command_word_completion_function); +} + +static char *globtext; +static char *globorig; + +static char * +glob_complete_word (text, state) + const char *text; + int state; +{ + static char **matches = (char **)NULL; + static int ind; + int glen; + char *ret, *ttext; + + if (state == 0) + { + rl_filename_completion_desired = 1; + FREE (matches); + if (globorig != globtext) + FREE (globorig); + FREE (globtext); + + ttext = bash_tilde_expand (text, 0); + + if (rl_explicit_arg) + { + globorig = savestring (ttext); + glen = strlen (ttext); + globtext = (char *)xmalloc (glen + 2); + strcpy (globtext, ttext); + globtext[glen] = '*'; + globtext[glen+1] = '\0'; + } + else + globtext = globorig = savestring (ttext); + + if (ttext != text) + free (ttext); + + matches = shell_glob_filename (globtext); + if (GLOB_FAILED (matches)) + matches = (char **)NULL; + ind = 0; + } + + ret = matches ? matches[ind] : (char *)NULL; + ind++; + return ret; +} + +static int +bash_glob_completion_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, glob_complete_word); +} + +/* A special quoting function so we don't end up quoting globbing characters + in the word if there are no matches or multiple matches. */ +static char * +bash_glob_quote_filename (s, rtype, qcp) + char *s; + int rtype; + char *qcp; +{ + if (globorig && qcp && *qcp == '\0' && STREQ (s, globorig)) + return (savestring (s)); + else + return (bash_quote_filename (s, rtype, qcp)); +} + +static int +bash_glob_complete_word (count, key) + int count, key; +{ + int r; + rl_quote_func_t *orig_quoting_function; + + if (rl_editing_mode == EMACS_EDITING_MODE) + rl_explicit_arg = 1; /* force `*' append */ + orig_quoting_function = rl_filename_quoting_function; + rl_filename_quoting_function = bash_glob_quote_filename; + + r = bash_glob_completion_internal (rl_completion_mode (bash_glob_complete_word)); + + rl_filename_quoting_function = orig_quoting_function; + return r; +} + +static int +bash_glob_expand_word (count, key) + int count, key; +{ + return bash_glob_completion_internal ('*'); +} + +static int +bash_glob_list_expansions (count, key) + int count, key; +{ + return bash_glob_completion_internal ('?'); +} + +static int +bash_specific_completion (what_to_do, generator) + int what_to_do; + rl_compentry_func_t *generator; +{ + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + rl_compignore_func_t *orig_ignore_func; + int r; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + rl_completion_entry_function = generator; + rl_attempted_completion_function = NULL; + rl_ignore_some_completions_function = orig_ignore_func; + + r = rl_complete_internal (what_to_do); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_ignore_some_completions_function = orig_ignore_func; + + return r; +} + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + +#if defined (VI_MODE) +/* Completion, from vi mode's point of view. This is a modified version of + rl_vi_complete which uses the bash globbing code to implement what POSIX + specifies, which is to append a `*' and attempt filename generation (which + has the side effect of expanding any globbing characters in the word). */ +static int +bash_vi_complete (count, key) + int count, key; +{ +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + int p, r; + char *t; + + if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) + { + if (!whitespace (rl_line_buffer[rl_point + 1])) + rl_vi_end_word (1, 'E'); + rl_point++; + } + + /* Find boundaries of current word, according to vi definition of a + `bigword'. */ + t = 0; + if (rl_point > 0) + { + p = rl_point; + rl_vi_bWord (1, 'B'); + r = rl_point; + rl_point = p; + p = r; + + t = substring (rl_line_buffer, p, rl_point); + } + + if (t && glob_pattern_p (t) == 0) + rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ + FREE (t); + + if (key == '*') /* Expansion and replacement. */ + r = bash_glob_expand_word (count, key); + else if (key == '=') /* List possible completions. */ + r = bash_glob_list_expansions (count, key); + else if (key == '\\') /* Standard completion */ + r = bash_glob_complete_word (count, key); + else + r = rl_complete (0, key); + + if (key == '*' || key == '\\') + rl_vi_start_inserting (key, 1, 1); + + return (r); +#else + return rl_vi_complete (count, key); +#endif /* !SPECIFIC_COMPLETION_FUNCTIONS */ +} +#endif /* VI_MODE */ + +/* Filename quoting for completion. */ +/* A function to strip unquoted quote characters (single quotes, double + quotes, and backslashes). It allows single quotes to appear + within double quotes, and vice versa. It should be smarter. */ +static char * +bash_dequote_filename (text, quote_char) + char *text; + int quote_char; +{ + char *ret, *p, *r; + int l, quoted; + + l = strlen (text); + ret = (char *)xmalloc (l + 1); + for (quoted = quote_char, p = text, r = ret; p && *p; p++) + { + /* Allow backslash-escaped characters to pass through unscathed. */ + if (*p == '\\') + { + /* Backslashes are preserved within single quotes. */ + if (quoted == '\'') + *r++ = *p; + /* Backslashes are preserved within double quotes unless the + character is one that is defined to be escaped */ + else if (quoted == '"' && ((sh_syntaxtab[p[1]] & CBSDQUOTE) == 0)) + *r++ = *p; + + *r++ = *++p; + if (*p == '\0') + return ret; /* XXX - was break; */ + continue; + } + /* Close quote. */ + if (quoted && *p == quoted) + { + quoted = 0; + continue; + } + /* Open quote. */ + if (quoted == 0 && (*p == '\'' || *p == '"')) + { + quoted = *p; + continue; + } + *r++ = *p; + } + *r = '\0'; + return ret; +} + +/* Quote characters that the readline completion code would treat as + word break characters with backslashes. Pass backslash-quoted + characters through without examination. */ +static char * +quote_word_break_chars (text) + char *text; +{ + char *ret, *r, *s; + int l; + + l = strlen (text); + ret = (char *)xmalloc ((2 * l) + 1); + for (s = text, r = ret; *s; s++) + { + /* Pass backslash-quoted characters through, including the backslash. */ + if (*s == '\\') + { + *r++ = '\\'; + *r++ = *++s; + if (*s == '\0') + break; + continue; + } + /* OK, we have an unquoted character. Check its presence in + rl_completer_word_break_characters. */ + if (mbschr (rl_completer_word_break_characters, *s)) + *r++ = '\\'; + /* XXX -- check for standalone tildes here and backslash-quote them */ + if (s == text && *s == '~' && file_exists (text)) + *r++ = '\\'; + *r++ = *s; + } + *r = '\0'; + return ret; +} + +/* Use characters in STRING to populate the table of characters that should + be backslash-quoted. The table will be used for sh_backslash_quote from + this file. */ +static void +set_filename_bstab (string) + const char *string; +{ + const char *s; + + memset (filename_bstab, 0, sizeof (filename_bstab)); + for (s = string; s && *s; s++) + filename_bstab[*s] = 1; +} + +/* Quote a filename using double quotes, single quotes, or backslashes + depending on the value of completion_quoting_style. If we're + completing using backslashes, we need to quote some additional + characters (those that readline treats as word breaks), so we call + quote_word_break_chars on the result. This returns newly-allocated + memory. */ +static char * +bash_quote_filename (s, rtype, qcp) + char *s; + int rtype; + char *qcp; +{ + char *rtext, *mtext, *ret; + int rlen, cs; + + rtext = (char *)NULL; + + /* If RTYPE == MULT_MATCH, it means that there is + more than one match. In this case, we do not add + the closing quote or attempt to perform tilde + expansion. If RTYPE == SINGLE_MATCH, we try + to perform tilde expansion, because single and double + quotes inhibit tilde expansion by the shell. */ + + cs = completion_quoting_style; + /* Might need to modify the default completion style based on *qcp, + since it's set to any user-provided opening quote. We also change + to single-quoting if there is no user-provided opening quote and + the word being completed contains newlines, since those are not + quoted correctly using backslashes (a backslash-newline pair is + special to the shell parser). */ + if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && mbschr (s, '\n')) + cs = COMPLETE_SQUOTE; + else if (*qcp == '"') + cs = COMPLETE_DQUOTE; + else if (*qcp == '\'') + cs = COMPLETE_SQUOTE; +#if defined (BANG_HISTORY) + else if (*qcp == '\0' && history_expansion && cs == COMPLETE_DQUOTE && + history_expansion_inhibited == 0 && mbschr (s, '!')) + cs = COMPLETE_BSQUOTE; + + if (*qcp == '"' && history_expansion && cs == COMPLETE_DQUOTE && + history_expansion_inhibited == 0 && mbschr (s, '!')) + { + cs = COMPLETE_BSQUOTE; + *qcp = '\0'; + } +#endif + + /* Don't tilde-expand backslash-quoted filenames, since only single and + double quotes inhibit tilde expansion. */ + mtext = s; + if (mtext[0] == '~' && rtype == SINGLE_MATCH && cs != COMPLETE_BSQUOTE) + mtext = bash_tilde_expand (s, 0); + + switch (cs) + { + case COMPLETE_DQUOTE: + rtext = sh_double_quote (mtext); + break; + case COMPLETE_SQUOTE: + rtext = sh_single_quote (mtext); + break; + case COMPLETE_BSQUOTE: + rtext = sh_backslash_quote (mtext, complete_fullquote ? 0 : filename_bstab, 0); + break; + } + + if (mtext != s) + free (mtext); + + /* We may need to quote additional characters: those that readline treats + as word breaks that are not quoted by backslash_quote. */ + if (rtext && cs == COMPLETE_BSQUOTE) + { + mtext = quote_word_break_chars (rtext); + free (rtext); + rtext = mtext; + } + + /* Leave the opening quote intact. The readline completion code takes + care of avoiding doubled opening quotes. */ + if (rtext) + { + rlen = strlen (rtext); + ret = (char *)xmalloc (rlen + 1); + strcpy (ret, rtext); + } + else + { + ret = (char *)xmalloc (rlen = 1); + ret[0] = '\0'; + } + + /* If there are multiple matches, cut off the closing quote. */ + if (rtype == MULT_MATCH && cs != COMPLETE_BSQUOTE) + ret[rlen - 1] = '\0'; + free (rtext); + return ret; +} + +/* Support for binding readline key sequences to Unix commands. */ +static Keymap cmd_xmap; + +#ifdef _MINIX +static void +#else +static int +#endif +putx(c) + int c; +{ + int x; + x = putc (c, rl_outstream); +#ifndef _MINIX + return x; +#endif +} + +static int +bash_execute_unix_command (count, key) + int count; /* ignored */ + int key; +{ + Keymap ckmap; /* current keymap */ + Keymap xkmap; /* unix command executing keymap */ + rl_command_func_t *func; + int type; + register int i, r; + intmax_t mi; + sh_parser_state_t ps; + char *cmd, *value, *l, *l1, *ce; + SHELL_VAR *v; + char ibuf[INT_STRLEN_BOUND(int) + 1]; + + /* First, we need to find the right command to execute. This is tricky, + because we might have already indirected into another keymap, so we + have to walk cmd_xmap using the entire key sequence. */ + cmd = (char *)rl_function_of_keyseq (rl_executing_keyseq, cmd_xmap, &type); + + if (cmd == 0 || type != ISMACR) + { + rl_crlf (); + internal_error (_("bash_execute_unix_command: cannot find keymap for command")); + rl_forced_update_display (); + return 1; + } + + ce = rl_get_termcap ("ce"); + if (ce) /* clear current line */ + { + fprintf (rl_outstream, "\r"); + tputs (ce, 1, putx); + fflush (rl_outstream); + } + else + rl_crlf (); /* move to a new line */ + + v = bind_variable ("READLINE_LINE", rl_line_buffer, 0); + if (v) + VSETATTR (v, att_exported); + l = v ? value_cell (v) : 0; + value = inttostr (rl_point, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_POINT", value); + if (v) + VSETATTR (v, att_exported); + array_needs_making = 1; + + save_parser_state (&ps); + r = parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE); + restore_parser_state (&ps); + + v = find_variable ("READLINE_LINE"); + l1 = v ? value_cell (v) : 0; + if (l1 != l) + maybe_make_readline_line (value_cell (v)); + v = find_variable ("READLINE_POINT"); + if (v && legal_number (value_cell (v), &mi)) + { + i = mi; + if (i != rl_point) + { + rl_point = i; + if (rl_point > rl_end) + rl_point = rl_end; + else if (rl_point < 0) + rl_point = 0; + } + } + + unbind_variable ("READLINE_LINE"); + unbind_variable ("READLINE_POINT"); + array_needs_making = 1; + + /* and restore the readline buffer and display after command execution. */ + rl_forced_update_display (); + return 0; +} + +int +print_unix_command_map () +{ + Keymap save; + + save = rl_get_keymap (); + rl_set_keymap (cmd_xmap); + rl_macro_dumper (1); + rl_set_keymap (save); + return 0; +} + +static void +init_unix_command_map () +{ + cmd_xmap = rl_make_bare_keymap (); +} + +static int +isolate_sequence (string, ind, need_dquote, startp) + char *string; + int ind, need_dquote, *startp; +{ + register int i; + int c, passc, delim; + + for (i = ind; string[i] && whitespace (string[i]); i++) + ; + /* NEED_DQUOTE means that the first non-white character *must* be `"'. */ + if (need_dquote && string[i] != '"') + { + builtin_error (_("%s: first non-whitespace character is not `\"'"), string); + return -1; + } + + /* We can have delimited strings even if NEED_DQUOTE == 0, like the command + string to bind the key sequence to. */ + delim = (string[i] == '"' || string[i] == '\'') ? string[i] : 0; + + if (startp) + *startp = delim ? ++i : i; + + for (passc = 0; c = string[i]; i++) + { + if (passc) + { + passc = 0; + continue; + } + if (c == '\\') + { + passc++; + continue; + } + if (c == delim) + break; + } + + if (delim && string[i] != delim) + { + builtin_error (_("no closing `%c' in %s"), delim, string); + return -1; + } + + return i; +} + +int +bind_keyseq_to_unix_command (line) + char *line; +{ + Keymap kmap; + char *kseq, *value; + int i, kstart; + + if (cmd_xmap == 0) + init_unix_command_map (); + + kmap = rl_get_keymap (); + + /* We duplicate some of the work done by rl_parse_and_bind here, but + this code only has to handle `"keyseq": ["]command["]' and can + generate an error for anything else. */ + i = isolate_sequence (line, 0, 1, &kstart); + if (i < 0) + return -1; + + /* Create the key sequence string to pass to rl_generic_bind */ + kseq = substring (line, kstart, i); + + for ( ; line[i] && line[i] != ':'; i++) + ; + if (line[i] != ':') + { + builtin_error (_("%s: missing colon separator"), line); + FREE (kseq); + return -1; + } + + i = isolate_sequence (line, i + 1, 0, &kstart); + if (i < 0) + { + FREE (kseq); + return -1; + } + + /* Create the value string containing the command to execute. */ + value = substring (line, kstart, i); + + /* Save the command to execute and the key sequence in the CMD_XMAP */ + rl_generic_bind (ISMACR, kseq, value, cmd_xmap); + + /* and bind the key sequence in the current keymap to a function that + understands how to execute from CMD_XMAP */ + rl_bind_keyseq_in_map (kseq, bash_execute_unix_command, kmap); + + free (kseq); + return 0; +} + +/* Used by the programmable completion code. Complete TEXT as a filename, + but return only directories as matches. Dequotes the filename before + attempting to find matches. */ +char ** +bash_directory_completion_matches (text) + const char *text; +{ + char **m1; + char *dfn; + int qc; + + qc = rl_dispatching ? rl_completion_quote_character : 0; + dfn = bash_dequote_filename ((char *)text, qc); + m1 = rl_completion_matches (dfn, rl_filename_completion_function); + free (dfn); + + if (m1 == 0 || m1[0] == 0) + return m1; + /* We don't bother recomputing the lcd of the matches, because it will just + get thrown away by the programmable completion code and recomputed + later. */ + (void)bash_ignore_filenames (m1); + return m1; +} + +char * +bash_dequote_text (text) + const char *text; +{ + char *dtxt; + int qc; + + qc = (text[0] == '"' || text[0] == '\'') ? text[0] : 0; + dtxt = bash_dequote_filename ((char *)text, qc); + return (dtxt); +} + +/* This event hook is designed to be called after readline receives a signal + that interrupts read(2). It gives reasonable responsiveness to interrupts + and fatal signals without executing too much code in a signal handler + context. */ +static int +bash_event_hook () +{ + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, + calling run_interrupt_trap along the way. */ + if (interrupt_state) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); + check_signals_and_traps (); /* XXX */ + return 0; +} + +#endif /* READLINE */ diff --git a/cross-build/cygwin32.cache.old b/cross-build/cygwin32.cache.old new file mode 100644 index 00000000..640390fb --- /dev/null +++ b/cross-build/cygwin32.cache.old @@ -0,0 +1,42 @@ +# This file is a shell script that caches the results of configure +# tests for CYGWIN32 so they don't need to be done when cross-compiling. + +# AC_FUNC_GETPGRP should also define GETPGRP_VOID +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +# AC_FUNC_SETVBUF_REVERSED should not define anything else +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +# on CYGWIN32, system calls do not restart +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} +bash_cv_sys_restartable_syscalls=${bash_cv_sys_restartable_syscalls='no'} + +# these may be necessary, but they are currently commented out +#ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} +ac_cv_sizeof_double=${ac_cv_sizeof_double='8'} + +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='long'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='no'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_printf_declared=${bash_cv_printf_declared='yes'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen='no'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='missing'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='missing'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} + +bash_cv_type_int32_t=${bash_cv_type_int32_t='int'} +bash_cv_type_u_int32_t=${bash_cv_type_u_int32_t='int'} + +ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'} + +# end of cross-build/cygwin32.cache diff --git a/doc/FAQ.orig b/doc/FAQ.orig new file mode 100644 index 00000000..1cff3c8e --- /dev/null +++ b/doc/FAQ.orig @@ -0,0 +1,1745 @@ +This is the Bash FAQ, version 3.24, for Bash version 2.05b. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX 1003.2 standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 2.05b? +B2) Are there any user-visible incompatibilities between bash-2.05b and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 2.05b, first made available on Wednesday, 17 +July, 2002. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 2.05b: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of UNIX. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of UNIX you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions as part of their CYGWIN +project. For more information about the project, look at the URLs + +http://www.cygwin.com/ +http://sourceware.cygnus.com/cygwin + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05 to the CYGWIN environment, and it is available as +part of their current release. + +Bash-2.05b should require no local Cygnus changes to build and run under +CYGWIN. + +The Cygnus port works only on Intel machines. There is a port of bash +(I don't know which version) to the alpha/NT environment available from + +ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark has begun to work with bash-2.05, but I don't know the status. + +Ports of bash-1.12 and bash-2.0 are available for OS/2 from + +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip + +I haven't looked at either, but the second appears to be a binary-only +distribution. Beware. + +I have received word that Bash (I'm not sure which version, but I +believe that it's at least bash-2.02.1) is the standard shell on +BeOS. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX 1003.2 standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard has been developed by IEEE +Working Group 1003.2 (POSIX.2). It concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. An initial version of the +standard has been approved and published by the IEEE, and work is +currently underway to update it. + +Bash is concerned with the aspects of the shell's behavior +defined by POSIX.2. The shell command language has of course +been standardized, including the basic flow control and program +execution constructs, I/O redirection and pipelining, argument +handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX.2 not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX.2 also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The Open Group has made an older version of its Single Unix +Specification (version 2), which is very similar to POSIX.2, +available on the web at + +http://www.opengroup.org/onlinepubs/007908799/ + +The Single Unix Specification, version 3, is available on the web at + +http://www.opengroup.org/onlinepubs/007904975/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX.2 shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 2.05b? + +The raison d'etre for bash-2.05b is to make a second intermediate +release containing the first of the new features to be available +in bash-3.0 and get feedback on those features before proceeding. +The major new feature is multibyte character support in both Bash +and Readline. + +Bash-2.05b contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-2.05b +distribution): + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + + +A short feature history dating from Bash-2.0: + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + 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 +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +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_cmd_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 + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, fc -e -, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-2.05b: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + set -o pipefail + `+=' variable assignment operator + FPATH and PATH mixing + getopts -a + -I invocation option + DEBUG trap now executed before each simple command, instead of after + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-2.05b: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest drafts of the updated POSIX standard have changed this: the +word list is no longer required. Bash versions 2.05a and later accept +the new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash-2.05a distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +a better bash debugger (a minimally-tested version is included with bash-2.05b) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +better internationalization using GNU `gettext' +date-stamped command history +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2002. Never make predictions. + + +This document is Copyright 1995-2003 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/doc/bash.0 b/doc/bash.0 index faa88989..8f2c57dd 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -468,7 +468,7 @@ SSHHEELLLL GGRRAAMMMMAARR status is zero if no pattern matches. Otherwise, it is the exit status of the last command executed in _l_i_s_t. - iiff _l_i_s_t; tthheenn _l_i_s_t_; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii + iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in turn, and if its exit status is zero, the corresponding tthheenn @@ -706,13 +706,16 @@ PPAARRAAMMEETTEERRSS The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. ** Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, it expands to a sin- - gle word with the value of each parameter separated by the first - character of the IIFFSS special variable. That is, "$$**" is equiva- - lent to "$$11_c$$22_c......", where _c is the first character of the value - of the IIFFSS variable. If IIFFSS is unset, the parameters are sepa- - rated by spaces. If IIFFSS is null, the parameters are joined - without intervening separators. + the expansion is not within double quotes, each positional + parameter expands to a separate word. In contexts where it is + performed, those words are subject to further word splitting and + pathname expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each + parameter separated by the first character of the IIFFSS special + variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c + is the first character of the value of the IIFFSS variable. If IIFFSS + is unset, the parameters are separated by spaces. If IIFFSS is + null, the parameters are joined without intervening separators. @@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$$@@" is equivalent to "$$11" @@ -5721,4 +5724,4 @@ BBUUGGSS -GNU Bash 4.3 2014 January 6 BASH(1) +GNU Bash 4.3 2014 February 2 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index bdc580f9..ec414627 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -7526,6 +7526,9 @@ command, unless the \fB\-g\fP option is supplied. If a variable name is followed by =\fIvalue\fP, the value of the variable is set to \fIvalue\fP. +When using \fB\-a\fP or \fB\-A\fP and the compound assignment syntax to +create array variables, additional attributes do not take effect until +subsequent assignments. The return value is 0 unless an invalid option is encountered, an attempt is made to define a function using .if n ``\-f foo=bar'', diff --git a/doc/bash.html b/doc/bash.html index 3652bd18..a83f8b31 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2014 January 6BASH(1) +BASH(1)2014 February 2BASH(1)

Index @@ -1130,7 +1130,7 @@ on a successful match. The exit status is zero if no pattern matches. Otherwise, it is the exit status of the last command executed in list. -
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
+
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
The if @@ -1679,8 +1679,12 @@ only be referenced; assignment to them is not allowed.
*
-Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, it expands to a single word +Expands to the positional parameters, starting from one. +When the expansion is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and pathname expansion. +When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS @@ -13157,7 +13161,7 @@ There may be only one active coprocess at a time.
-
GNU Bash 4.32014 January 6BASH(1) +GNU Bash 4.32014 February 2BASH(1)

@@ -13263,6 +13267,6 @@ There may be only one active coprocess at a time.
This document was created by man2html from bash.1.
-Time: 23 January 2014 15:52:11 EST +Time: 04 February 2014 09:39:07 EST diff --git a/doc/bash.pdf b/doc/bash.pdf index afd63b848ba67199843c12fe4befe6bb9cbdebfb..97cc14fe4f2cff9139410ad0623e95dfb2f41b4d 100644 GIT binary patch delta 236860 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

gl_-V#UnuFBWj<5VC@02i> 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 F0(The)144 576 Q F1 -(if)2.978 E F2(list)3.068 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 +(list)2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2 +(list)2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E +F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if) +2.978 E F2(list)3.068 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 (cuted. If).15 F .478(its e)2.978 F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 .478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)2.978 E F1(elif)2.977 E F2(list)2.977 @@ -982,8 +982,8 @@ F .205(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0 (and)2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204 (xit status of the last command)-.15 F -.15(exe)144 700.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e) --.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.3)72 768 Q(2014 January 6) -144.29 E(6)198.45 E 0 Cg EP +-.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(6)195.95 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -1118,7 +1118,7 @@ F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 (There are three quoting mechanisms: the)108 724.8 Q F2(escape c)2.5 E (har)-.15 E(acter)-.15 E F0 2.5(,s).73 G (ingle quotes, and double quotes.)-2.5 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(7)198.45 E 0 Cg EP +(2014 February 2)141.79 E(7)195.95 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1221,8 +1221,8 @@ F(may be unset only by using the)108 686.4 Q F1(unset)2.5 E F0 -.2(bu) 2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) -.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 703.2 Q F2(variable)2.79 E F0 (may be assigned to by a statement of the form)2.68 E F2(name)144 720 Q -F0(=[)A F2(value)A F0(])A(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E -(8)198.45 E 0 Cg EP +F0(=[)A F2(value)A F0(])A(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E +(8)195.95 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1348,373 +1348,379 @@ t is e)108 559.2 R 1.404(xpanded, it must be enclosed in)-.15 F (The shell treats se)108 600 R -.15(ve)-.25 G 1.675 (ral parameters specially).15 F 6.675(.T)-.65 G 1.674 (hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 612 Q(wed.)-.25 E F3(*)108 624 Q F0 .605 -(Expands to the positional parameters, starting from one.)31 F .606 -(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .084 -(ble quotes, it e)144 636 R .084(xpands to a single w)-.15 F .084 -(ord with the v)-.1 F .084 -(alue of each parameter separated by the \214rst char)-.25 F(-)-.2 E -.003(acter of the)144 648 R F2(IFS)2.503 E F0 .003(special v)2.253 F -2.503(ariable. That)-.25 F .003(is, ")2.503 F F3($*)A F0 2.503("i)C -2.503(se)-2.503 G(qui)-2.503 E -.25(va)-.25 G .003(lent to ").25 F F3 -($1)A F1(c)A F3($2)A F1(c)A F3(...)A F0 .003(", where)B F1(c)2.703 E F0 -.004(is the \214rst char)2.813 F(-)-.2 E .769(acter of the v)144 660 R -.769(alue of the)-.25 F F2(IFS)3.269 E F0 -.25(va)3.019 G 3.269 -(riable. If).25 F F2(IFS)3.268 E F0 .768 -(is unset, the parameters are separated by spaces.)3.018 F(If)5.768 E F2 -(IFS)144 672 Q F0(is null, the parameters are joined without interv)2.25 -E(ening separators.)-.15 E F3(@)108 684 Q F0 .605 +(them is not allo)108 612 Q(wed.)-.25 E F3(*)108 624 Q F0 .223 +(Expands to the positional parameters, starting from one.)31 F .224 +(When the e)5.224 F .224(xpansion is not within double)-.15 F .663 +(quotes, each positional parameter e)144 636 R .662 +(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 +(xts where it is performed,)-.15 F 1.081(those w)144 648 R 1.081 +(ords are subject to further w)-.1 F 1.082(ord splitting and pathname e) +-.1 F 3.582(xpansion. When)-.15 F 1.082(the e)3.582 F(xpansion)-.15 E +.915(occurs within double quotes, it e)144 660 R .914 +(xpands to a single w)-.15 F .914(ord with the v)-.1 F .914 +(alue of each parameter sepa-)-.25 F .89 +(rated by the \214rst character of the)144 672 R F2(IFS)3.39 E F0 .89 +(special v)3.14 F 3.39(ariable. That)-.25 F .891(is, ")3.391 F F3($*)A +F0 3.391("i)C 3.391(se)-3.391 G(qui)-3.391 E -.25(va)-.25 G .891 +(lent to ").25 F F3($1)A F1(c)A F3($2)A F1(c)A F3(...)A F0(",)A(where) +144 684 Q F1(c)3.533 E F0 .832(is the \214rst character of the v)3.643 F +.832(alue of the)-.25 F F2(IFS)3.332 E F0 -.25(va)3.082 G 3.332 +(riable. If).25 F F2(IFS)3.332 E F0 .832(is unset, the parameters are) +3.082 F(separated by spaces.)144 696 Q(If)5 E F2(IFS)2.5 E F0 +(is null, the parameters are joined without interv)2.25 E +(ening separators.)-.15 E F3(@)108 708 Q F0 .605 (Expands to the positional parameters, starting from one.)26.7 F .606 (When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 -(ble quotes, each parameter e)144 696 R .114(xpands to a separate w)-.15 +(ble quotes, each parameter e)144 720 R .114(xpands to a separate w)-.15 F 2.614(ord. That)-.1 F .113(is, ")2.613 F F3($@)A F0 2.613("i)C 2.613 (se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F3($1)A F0 -2.613("")C F3($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134 -(If the double-quoted e)144 708 R .134(xpansion occurs within a w)-.15 F -.135(ord, the e)-.1 F .135(xpansion of the \214rst parameter is joined) --.15 F .151(with the be)144 720 R .151(ginning part of the original w) --.15 F .151(ord, and the e)-.1 F .15 -(xpansion of the last parameter is joined with)-.15 F(GNU Bash 4.3)72 -768 Q(2014 January 6)144.29 E(9)198.45 E 0 Cg EP +2.613("")C F3($2)-2.613 E F0 2.613(".)C(..)-2.613 E(GNU Bash 4.3)72 768 +Q(2014 February 2)141.79 E(9)195.95 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .337(the last part of the original w)144 84 R 2.837(ord. When)-.1 -F .338(there are no positional parameters, ")2.837 F/F1 10/Times-Bold@0 -SF($@)A F0 2.838("a)C(nd)-2.838 E F1($@)2.838 E F0 -.15(ex)2.838 G(pand) -.15 E(to nothing \(i.e., the)144 96 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 -(ve)-.15 G(d\).).15 E F1(#)108 108 Q F0 +-.35 E .134(If the double-quoted e)144 84 R .134 +(xpansion occurs within a w)-.15 F .135(ord, the e)-.1 F .135 +(xpansion of the \214rst parameter is joined)-.15 F .151(with the be)144 +96 R .151(ginning part of the original w)-.15 F .151(ord, and the e)-.1 +F .15(xpansion of the last parameter is joined with)-.15 F .337 +(the last part of the original w)144 108 R 2.837(ord. When)-.1 F .338 +(there are no positional parameters, ")2.837 F/F1 10/Times-Bold@0 SF($@) +A F0 2.838("a)C(nd)-2.838 E F1($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E +(to nothing \(i.e., the)144 120 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) +-.15 G(d\).).15 E F1(#)108 132 Q F0 (Expands to the number of positional parameters in decimal.)31 E F1(?) -108 120 Q F0(Expands to the e)31 E(xit status of the most recently e) +108 144 Q F0(Expands to the e)31 E(xit status of the most recently e) -.15 E -.15(xe)-.15 G(cuted fore).15 E(ground pipeline.)-.15 E F1108 -132 Q F0 .882 +156 Q F0 .882 (Expands to the current option \215ags as speci\214ed upon in)30.3 F -.2 (vo)-.4 G .881(cation, by the).2 F F1(set)3.381 E F0 -.2(bu)3.381 G .881 (iltin command, or).2 F(those set by the shell itself \(such as the)144 -144 Q F12.5 E F0(option\).)2.5 E F1($)108 156 Q F0 .214 +168 Q F12.5 E F0(option\).)2.5 E F1($)108 180 Q F0 .214 (Expands to the process ID of the shell.)31 F .214 (In a \(\) subshell, it e)5.214 F .214 (xpands to the process ID of the current)-.15 F -(shell, not the subshell.)144 168 Q F1(!)108 180 Q F0 .499(Expands to t\ +(shell, not the subshell.)144 192 Q F1(!)108 204 Q F0 .499(Expands to t\ he process ID of the job most recently placed into the background, whet\ her e)32.67 F -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 192 Q F1(bg)2.5 E F0 -.2 +(as an asynchronous command or using the)144 216 Q F1(bg)2.5 E F0 -.2 (bu)2.5 G(iltin \(see).2 E/F2 9/Times-Bold@0 SF(JOB CONTR)2.5 E(OL)-.27 -E F0(belo)2.25 E(w\).)-.25 E F1(0)108 204 Q F0 1.691 +E F0(belo)2.25 E(w\).)-.25 E F1(0)108 228 Q F0 1.691 (Expands to the name of the shell or shell script.)31 F 1.692 (This is set at shell initialization.)6.692 F(If)6.692 E F1(bash)4.192 E -F0(is)4.192 E(in)144 216 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 +F0(is)4.192 E(in)144 240 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 (ith a \214le of commands,)-3.078 F F1($0)3.078 E F0 .578 (is set to the name of that \214le.)3.078 F(If)5.577 E F1(bash)3.077 E F0 .577(is started with the)3.077 F F13.077 E F0 .368 -(option, then)144 228 R F1($0)2.869 E F0 .369(is set to the \214rst ar) +(option, then)144 252 R F1($0)2.869 E F0 .369(is set to the \214rst ar) 2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369 (cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E -(wise, it is set to the \214lename used to in)144 240 Q -.2(vo)-.4 G -.1 +(wise, it is set to the \214lename used to in)144 264 Q -.2(vo)-.4 G -.1 (ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H -2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1(_)108 252 +2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1(_)108 276 Q F0 .055(At shell startup, set to the absolute pathname used to in)31 F -.2(vo)-.4 G .255 -.1(ke t).2 H .054(he shell or shell script being e).1 -F -.15(xe)-.15 G(cuted).15 E .691(as passed in the en)144 264 R .691 +F -.15(xe)-.15 G(cuted).15 E .691(as passed in the en)144 288 R .691 (vironment or ar)-.4 F .691(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .692(xpands to the last ar)-3.341 F .692(gument to the) --.18 F(pre)144 276 Q .571(vious command, after e)-.25 F 3.071 +-.18 F(pre)144 300 Q .571(vious command, after e)-.25 F 3.071 (xpansion. Also)-.15 F .571(set to the full pathname used to in)3.071 F --.2(vo)-.4 G .77 -.1(ke e).2 H .57(ach command).1 F -.15(exe)144 288 S +-.2(vo)-.4 G .77 -.1(ke e).2 H .57(ach command).1 F -.15(exe)144 312 S 1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 (xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F (parameter holds the name of the mail \214le currently being check)144 -300 Q(ed.)-.1 E F1(Shell V)87 316.8 Q(ariables)-.92 E F0(The follo)108 -328.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA) -108 345.6 S(SH).3 E F0(Expands to the full \214lename used to in)9.07 E +324 Q(ed.)-.1 E F1(Shell V)87 340.8 Q(ariables)-.92 E F0(The follo)108 +352.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA) +108 369.6 S(SH).3 E F0(Expands to the full \214lename used to in)9.07 E -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A -F1 -.3(BA)108 357.6 S(SHOPTS).3 E F0 2.549(Ac)144 369.6 S .049 +F1 -.3(BA)108 381.6 S(SHOPTS).3 E F0 2.549(Ac)144 393.6 S .049 (olon-separated list of enabled shell options.)-2.549 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F12.548 E F0 1.398(option to the)144 381.6 +(gument for the)-.18 F F12.548 E F0 1.398(option to the)144 405.6 R F1(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F2 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) 3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 -393.6 R F2 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) +417.6 R F2 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) 2.727 F/F3 10/Times-Italic@0 SF(on)3.207 E F0(by)3.217 E F1(shopt)2.977 E F0 5.476(.I)C 2.976(ft)-5.476 G .476(his v)-2.976 F .476 -(ariable is in the en)-.25 F(vironment)-.4 E(when)144 405.6 Q F1(bash) +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 429.6 Q F1(bash) 3.141 E F0 .642(starts up, each shell option in the list will be enable\ d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 -F(This v)144 417.6 Q(ariable is read-only)-.25 E(.)-.65 E F1 -.3(BA)108 -429.6 S(SHPID).3 E F0 .188(Expands to the process ID of the current)144 -441.6 R F1(bash)2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187 +F(This v)144 441.6 Q(ariable is read-only)-.25 E(.)-.65 E F1 -.3(BA)108 +453.6 S(SHPID).3 E F0 .188(Expands to the process ID of the current)144 +465.6 R F1(bash)2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187 (fers from)-.25 F F1($$)2.687 E F0 .187(under certain circum-)2.687 F -(stances, such as subshells that do not require)144 453.6 Q F1(bash)2.5 -E F0(to be re-initialized.)2.5 E F1 -.3(BA)108 465.6 S(SH_ALIASES).3 E -F0 1.195(An associati)144 477.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) +(stances, such as subshells that do not require)144 477.6 Q F1(bash)2.5 +E F0(to be re-initialized.)2.5 E F1 -.3(BA)108 489.6 S(SH_ALIASES).3 E +F0 1.195(An associati)144 501.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) .15 F 1.195(ariable whose members correspond to the internal list of al\ -iases as main-)-.25 F .025(tained by the)144 489.6 R F1(alias)2.524 E F0 +iases as main-)-.25 F .025(tained by the)144 513.6 R F1(alias)2.524 E F0 -.2(bu)2.524 G 2.524(iltin. Elements).2 F .024 (added to this array appear in the alias list; unsetting array ele-) -2.524 F(ments cause aliases to be remo)144 501.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the alias list.)-2.5 E F1 -.3(BA)108 513.6 S(SH_ARGC).3 E -F0 .934(An array v)144 525.6 R .934(ariable whose v)-.25 F .934 +2.524 F(ments cause aliases to be remo)144 525.6 Q -.15(ve)-.15 G 2.5 +(df).15 G(rom the alias list.)-2.5 E F1 -.3(BA)108 537.6 S(SH_ARGC).3 E +F0 .934(An array v)144 549.6 R .934(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.435 E F0 -.15(exe)144 537.6 S .535(cution call stack.).15 F +F1(bash)3.435 E F0 -.15(exe)144 561.6 S .535(cution call stack.).15 F .535(The number of parameters to the current subroutine \(shell functio\ -n or script)5.535 F -.15(exe)144 549.6 S .141(cuted with).15 F F1(.) +n or script)5.535 F -.15(exe)144 573.6 S .141(cuted with).15 F F1(.) 2.641 E F0(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa) -2.641 G 2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 (When a subroutine is e)5.142 F -.15(xe)-.15 G .142 (cuted, the number of).15 F 2.631(parameters passed is pushed onto)144 -561.6 R F2 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 +585.6 R F2 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.13 G(SH_ARGC).27 E F0 2.63 -(only when in)4.88 F -.15(ex)144 573.6 S(tended deb).15 E +(only when in)4.88 F -.15(ex)144 597.6 S(tended deb).15 E (ugging mode \(see the description of the)-.2 E F1(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E -(w\))-.25 E F1 -.3(BA)108 585.6 S(SH_ARGV).3 E F0 .979(An array v)144 -597.6 R .979(ariable containing all of the parameters in the current) +(w\))-.25 E F1 -.3(BA)108 609.6 S(SH_ARGV).3 E F0 .979(An array v)144 +621.6 R .979(ariable containing all of the parameters in the current) -.25 F F1(bash)3.48 E F0 -.15(exe)3.48 G .98(cution call stack.).15 F (The)5.98 E .275(\214nal parameter of the last subroutine call is at th\ -e top of the stack; the \214rst parameter of the initial)144 609.6 R -1.424(call is at the bottom.)144 621.6 R 1.424(When a subroutine is e) +e top of the stack; the \214rst parameter of the initial)144 633.6 R +1.424(call is at the bottom.)144 645.6 R 1.424(When a subroutine is e) 6.424 F -.15(xe)-.15 G 1.424 (cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 -633.6 S(SH_ARGV).27 E F4(.)A F0 2.197(The shell sets)6.697 F F2 -.27(BA) +657.6 S(SH_ARGV).27 E F4(.)A F0 2.197(The shell sets)6.697 F F2 -.27(BA) 4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F 2.197(xtended deb) --.15 F 2.197(ugging mode \(see the)-.2 F(description of the)144 645.6 Q +-.15 F 2.197(ugging mode \(see the)-.2 F(description of the)144 669.6 Q F1(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2 -(bu)2.5 G(iltin belo).2 E(w\))-.25 E F1 -.3(BA)108 657.6 S(SH_CMDS).3 E -F0 .667(An associati)144 669.6 R .967 -.15(ve a)-.25 H .667(rray v).15 F +(bu)2.5 G(iltin belo).2 E(w\))-.25 E F1 -.3(BA)108 681.6 S(SH_CMDS).3 E +F0 .667(An associati)144 693.6 R .967 -.15(ve a)-.25 H .667(rray v).15 F .668(ariable whose members correspond to the internal hash table of com\ -mands)-.25 F .147(as maintained by the)144 681.6 R F1(hash)2.647 E F0 +mands)-.25 F .147(as maintained by the)144 705.6 R F1(hash)2.647 E F0 -.2(bu)2.646 G 2.646(iltin. Elements).2 F .146 (added to this array appear in the hash table; unsetting)2.646 F -(array elements cause commands to be remo)144 693.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the hash table.)-2.5 E F1 -.3(BA)108 705.6 S(SH_COMMAND).3 -E F0 1.242(The command currently being e)144 717.6 R -.15(xe)-.15 G -1.243(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F -(command as the result of a trap, in which case it is the command e)144 -729.6 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(10)193.45 E 0 Cg EP +(array elements cause commands to be remo)144 717.6 Q -.15(ve)-.15 G 2.5 +(df).15 G(rom the hash table.)-2.5 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(10)190.95 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SH_EXECUTION_STRING).3 E F0 -(The command ar)144 96 Q(gument to the)-.18 E F12.5 E F0(in)2.5 E --.2(vo)-.4 G(cation option.).2 E F1 -.3(BA)108 108 S(SH_LINENO).3 E F0 -.693(An array v)144 120 R .692(ariable whose members are the line numbe\ -rs in source \214les where each corresponding)-.25 F .969(member of)144 -132 R/F2 9/Times-Bold@0 SF(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G -3.469(si).1 G -1.9 -.4(nv o)-3.469 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E +-.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 96 R -.15(xe)-.15 G 1.243 +(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F +(command as the result of a trap, in which case it is the command e)144 +108 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 +120 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 132 Q +(gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G +(cation option.).2 E F1 -.3(BA)108 144 S(SH_LINENO).3 E F0 .693 +(An array v)144 156 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .969(member of)144 168 +R/F2 9/Times-Bold@0 SF(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469 +(si).1 G -1.9 -.4(nv o)-3.469 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E (ASH_LINENO[)-.3 E/F3 10/Times-Italic@0 SF($i)A F1(]})A F0 .97 -(is the line number in the source)3.469 F 14.672(\214le \()144 144 R F1 +(is the line number in the source)3.469 F 14.672(\214le \()144 180 R F1 (${B)A(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 17.172(\)w)C(here)-17.172 E F1(${FUNCN)17.172 E(AME[)-.2 E F3($i)A F1(]})A F0 -.1(wa)17.172 G -17.171(sc).1 G 14.671(alled \(or)-17.171 F F1(${B)144 156 Q(ASH_LINENO[) +17.171(sc).1 G 14.671(alled \(or)-17.171 F F1(${B)144 192 Q(ASH_LINENO[) -.3 E F3($i-1)A F1(]})A F0 .115 (if referenced within another shell function\).)2.615 F(Use)5.115 E F2 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -168 Q(.)-.55 E F1 -.3(BA)108 180 S(SH_REMA).3 E(TCH)-.95 E F0 .006 -(An array v)144 192 R .006(ariable whose members are assigned by the) +204 Q(.)-.55 E F1 -.3(BA)108 216 S(SH_REMA).3 E(TCH)-.95 E F0 .006 +(An array v)144 228 R .006(ariable whose members are assigned by the) -.25 F F1(=~)2.506 E F0 .005(binary operator to the)2.506 F F1([[)2.505 -E F0 .005(conditional com-)2.505 F 2.506(mand. The)144 204 R .007 +E F0 .005(conditional com-)2.505 F 2.506(mand. The)144 240 R .007 (element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 (he portion of the string matching the entire re)-2.507 F .007(gular e) --.15 F(xpression.)-.15 E .998(The element with inde)144 216 R(x)-.15 E +-.15 F(xpression.)-.15 E .998(The element with inde)144 252 R(x)-.15 E F3(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F F3(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 228 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 240 S(SH_SOURCE).3 E F0 .125(An array v)144 252 R .125(ar\ +(sion. This)144 264 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 276 S(SH_SOURCE).3 E F0 .125(An array v)144 288 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .781(names in the)144 264 R F2(FUNCN)3.28 E(AME) +shell function)-.25 F .781(names in the)144 300 R F2(FUNCN)3.28 E(AME) -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 (The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F3($i)A F1(]})A -F0(is)3.28 E(de\214ned in the \214le)144 276 Q F1(${B)2.5 E(ASH_SOURCE[) +F0(is)3.28 E(de\214ned in the \214le)144 312 Q F1(${B)2.5 E(ASH_SOURCE[) -.3 E F3($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) --.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 288 S(SH_SUBSHELL).3 E F0 -.296(Incremented by one within each subshell or subshell en)144 300 R +-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 324 S(SH_SUBSHELL).3 E F0 +.296(Incremented by one within each subshell or subshell en)144 336 R .296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G -(cuting).15 E(in that en)144 312 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 324 S(SH_VERSINFO).3 E F0 2.645 -(Ar)144 336 S .145(eadonly array v)-2.645 F .144 +(cuting).15 E(in that en)144 348 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 360 S(SH_VERSINFO).3 E F0 2.645 +(Ar)144 372 S .145(eadonly array v)-2.645 F .144 (ariable whose members hold v)-.25 F .144 (ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 -(.T)C(he)-5.144 E -.25(va)144 348 S +(.T)C(he)-5.144 E -.25(va)144 384 S (lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 366 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E +(BA)144 402 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E (ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 -(BA)144 378 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E +(BA)144 414 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E (ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) -144 390 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)24.74 E -.15 -(ve)-.25 G(l.).15 E F1 -.3(BA)144 402 S(SH_VERSINFO[).3 E F0(3)A F1(])A -F0(The b)24.74 E(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 414 S +144 426 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)24.74 E -.15 +(ve)-.25 G(l.).15 E F1 -.3(BA)144 438 S(SH_VERSINFO[).3 E F0(3)A F1(])A +F0(The b)24.74 E(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 450 S (SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)24.74 E -F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 426 S(SH_VERSINFO[).3 E F0(5)A F1 +F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 462 S(SH_VERSINFO[).3 E F0(5)A F1 (])A F0(The v)24.74 E(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 -/Times-Roman@0 SF(.)A F1 -.3(BA)108 438 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 450 Q +/Times-Roman@0 SF(.)A F1 -.3(BA)108 474 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 486 Q (ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -462 Q(ORD)-.1 E F0 .396(An inde)144 474 R 2.896(xi)-.15 G(nto)-2.896 E +498 Q(ORD)-.1 E F0 .396(An inde)144 510 R 2.896(xi)-.15 G(nto)-2.896 E F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 (ord containing the current cursor position.)-.1 F .397(This v)5.397 F -(ari-)-.25 E 1.181(able is a)144 486 R -.25(va)-.2 G 1.181 +(ari-)-.25 E 1.181(able is a)144 522 R -.25(va)-.2 G 1.181 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 (db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F -1.18(acilities \(see)-.1 F F1(Pr)144 498 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 510 Q F0(The k)144 522 Q .3 +1.18(acilities \(see)-.1 F F1(Pr)144 534 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 546 Q F0(The k)144 558 Q .3 -.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 -.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F1(COMP_LINE)108 534 Q F0 1.207 -(The current command line.)144 546 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F1(COMP_LINE)108 570 Q F0 1.207 +(The current command line.)144 582 R 1.208(This v)6.208 F 1.208 (ariable is a)-.25 F -.25(va)-.2 G 1.208 (ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F -2.849(mands in)144 558 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +2.849(mands in)144 594 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 (yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 (acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F -F0(belo)144 570 Q(w\).)-.25 E F1(COMP_POINT)108 582 Q F0 .666(The inde) -144 594 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 +F0(belo)144 606 Q(w\).)-.25 E F1(COMP_POINT)108 618 Q F0 .666(The inde) +144 630 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 (he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166 (ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 F .667(If the)5.667 F .535 (current cursor position is at the end of the current command, the v)144 -606 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 618 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 +642 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 654 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 (ariable is a)-.25 F -.25(va)-.2 G 2.006 (ilable only in shell functions and e).25 F 2.006(xternal commands)-.15 -F(in)144 630 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +F(in)144 666 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -642 Q F0 .042(Set to an inte)144 654 R .042(ger v)-.15 F .041(alue corr\ +678 Q F0 .042(Set to an inte)144 690 R .042(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .337(function to be called:)144 666 R F3 -.5(TA)2.837 G(B).5 E F0 +-.25 F .337(function to be called:)144 702 R F3 -.5(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f) C .337(or listing completions after successi)-2.837 F .638 -.15(ve t) --.25 H(abs,).15 E F3(!)144 678 Q F0 4.092(,f)C 1.592 +-.25 H(abs,).15 E F3(!)144 714 Q F0 4.092(,f)C 1.592 (or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) -4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F3(@)4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092 -F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 690 R F3(%)4.052 E +F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 726 R F3(%)4.052 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 -(ilable only in shell functions and).25 F -.15(ex)144 702 S 2.929 -(ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 -(yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144 -714 Q F0(belo)2.5 E(w\).)-.25 E(GNU Bash 4.3)72 768 Q(2014 January 6) -144.29 E(11)193.45 E 0 Cg EP +(ilable only in shell functions and).25 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(11)190.95 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(COMP_W)108 84 Q(ORDBREAKS)-.1 E F0 1.335 -(The set of characters that the)144 96 R F1 -.18(re)3.836 G(adline).18 E -F0 1.336(library treats as w)3.836 F 1.336 +-.35 E -.15(ex)144 84 S 2.929(ternal commands in).15 F -.2(vo)-.4 G -.1 +(ke).2 G 5.429(db).1 G 5.429(yt)-5.429 G 2.929 +(he programmable completion f)-5.429 F 2.929(acilities \(see)-.1 F/F1 10 +/Times-Bold@0 SF(Pr)5.428 E(ogrammable)-.18 E(Completion)144 96 Q F0 +(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 108 Q(ORDBREAKS)-.1 E F0 1.335 +(The set of characters that the)144 120 R F1 -.18(re)3.836 G(adline).18 +E F0 1.336(library treats as w)3.836 F 1.336 (ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If) -144 108 R/F2 9/Times-Bold@0 SF(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 +144 132 R/F2 9/Times-Bold@0 SF(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 (is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G 3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G -(ubse-)-3.125 E(quently reset.)144 120 Q F1(COMP_W)108 132 Q(ORDS)-.1 E -F0 .653(An array v)144 144 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E +(ubse-)-3.125 E(quently reset.)144 144 Q F1(COMP_W)108 156 Q(ORDS)-.1 E +F0 .653(An array v)144 168 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w) --.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 156 R +-.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 180 R 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332 G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F2 (COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 -168 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 +192 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 (ariable is a)-.25 F -.25(va)-.2 G .832 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332 (db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f) -144 180 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 192 Q(OC)-.3 E F0 .169(An array v) -144 204 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E +144 204 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 216 Q(OC)-.3 E F0 .169(An array v) +144 228 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 216 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 228 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 240 R 2.26(ariable \(see)-.25 F F1 +-.25 F(to an unnamed coprocess \(see)144 240 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 252 Q -.55(AC) +-.9 G(K).55 E F0 2.26(An array v)144 264 R 2.26(ariable \(see)-.25 F F1 (Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.095(Directories appear in the stack in the order the)144 252 R 3.594 +1.095(Directories appear in the stack in the order the)144 276 R 3.594 (ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu) 3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431 -(members of this array v)144 264 R 1.432 +(members of this array v)144 288 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 276 Q F0(and)2.746 E F1(popd)2.746 E +F 1.432(ut the)-.2 F F1(pushd)144 300 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .35(will not change the current directory)144 288 R +F(ariable)-.25 E .35(will not change the current directory)144 312 R 5.35(.I)-.65 G(f)-5.35 E F2(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 (is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 -(ni).15 G(f)-2.851 E(it is subsequently reset.)144 300 Q F1(EUID)108 312 +(ni).15 G(f)-2.851 E(it is subsequently reset.)144 324 Q F1(EUID)108 336 Q F0 1.104(Expands to the ef)11 F(fecti)-.25 E 1.403 -.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 (nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 -(ariable is)-.25 F(readonly)144 324 Q(.)-.65 E F1(FUNCN)108 336 Q(AME) --.2 E F0 .478(An array v)144 348 R .479 +(ariable is)-.25 F(readonly)144 348 Q(.)-.65 E F1(FUNCN)108 360 Q(AME) +-.2 E F0 .478(An array v)144 372 R .479 (ariable containing the names of all shell functions currently in the e) -.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 -(The element with inde)144 360 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 +(The element with inde)144 384 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 (he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 -(element \(the one with the highest inde)144 372 R .384(x\) is)-.15 F/F3 +(element \(the one with the highest inde)144 396 R .384(x\) is)-.15 F/F3 10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 (ariable e)-.25 F .385(xists only when a shell func-)-.15 F .035 -(tion is e)144 384 R -.15(xe)-.15 G 2.535(cuting. Assignments).15 F(to) +(tion is e)144 408 R -.15(xe)-.15 G 2.535(cuting. Assignments).15 F(to) 2.535 E F2(FUNCN)2.535 E(AME)-.18 E F0(ha)2.285 E .335 -.15(ve n)-.2 H 2.535(oe).15 G -.25(ff)-2.535 G .035(ect and return an error status.).25 -F(If)5.034 E F2(FUNC-)2.534 E -.18(NA)144 396 S(ME).18 E F0 +F(If)5.034 E F2(FUNC-)2.534 E -.18(NA)144 420 S(ME).18 E F0 (is unset, it loses its special properties, e)2.25 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E .11(This v)144 414 R .111(ariable can be used with)-.25 F F1 -.3 +-2.5 E .11(This v)144 438 R .111(ariable can be used with)-.25 F F1 -.3 (BA)2.611 G(SH_LINENO).3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 -426 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA) +450 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA) 3.904 G(SH_LINENO).3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E -F0 1.404(to describe the)3.904 F .012(call stack.)144 438 R -.15(Fo) +F0 1.404(to describe the)3.904 F .012(call stack.)144 462 R -.15(Fo) 5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E /F4 10/Times-Italic@0 SF($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le)-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F4 -($i+1)A F1(]})A F0 1.184(at line number)144 450 R F1(${B)3.684 E +($i+1)A F1(]})A F0 1.184(at line number)144 474 R F1(${B)3.684 E (ASH_LINENO[)-.3 E F4($i)A F1(]})A F0 6.184(.T)C(he)-6.184 E F1(caller) 3.683 E F0 -.2(bu)3.683 G 1.183 (iltin displays the current call stack using).2 F(this information.)144 -462 Q F1(GR)108 474 Q(OUPS)-.3 E F0 1.228(An array v)144 486 R 1.228(ar\ +486 Q F1(GR)108 498 Q(OUPS)-.3 E F0 1.228(An array v)144 510 R 1.228(ar\ iable containing the list of groups of which the current user is a memb\ -er)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E .597(ments to)144 498 R F2(GR) +er)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E .597(ments to)144 522 R F2(GR) 3.097 E(OUPS)-.27 E F0(ha)2.847 E .897 -.15(ve n)-.2 H 3.097(oe).15 G -.25(ff)-3.097 G .597(ect and return an error status.).25 F(If)5.597 E F2(GR)3.097 E(OUPS)-.27 E F0 .597(is unset, it loses its spe-)2.847 F -(cial properties, e)144 510 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G -2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(HISTCMD)108 522 -Q F0 .355(The history number)144 534 R 2.855(,o)-.4 G 2.855(ri)-2.855 G +(cial properties, e)144 534 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G +2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(HISTCMD)108 546 +Q F0 .355(The history number)144 558 R 2.855(,o)-.4 G 2.855(ri)-2.855 G (nde)-2.855 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 (he history list, of the current command.)-2.856 F(If)5.356 E F2 (HISTCMD)2.856 E F0 .356(is unset, it)2.606 F -(loses its special properties, e)144 546 Q -.15(ve)-.25 G 2.5(ni).15 G +(loses its special properties, e)144 570 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -(HOSTN)108 558 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 570 Q F1 -(HOSTTYPE)108 582 Q F0 .223(Automatically set to a string that uniquely\ - describes the type of machine on which)144 594 R F1(bash)2.722 E F0 -.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 606 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 618 Q F0 1.408(Each\ +(HOSTN)108 582 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 594 Q F1 +(HOSTTYPE)108 606 Q F0 .223(Automatically set to a string that uniquely\ + describes the type of machine on which)144 618 R F1(bash)2.722 E F0 +.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 630 R(def) +2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 642 Q F0 1.408(Each\ time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 630 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 642 R .078 -(When not in a script or)5.078 F .306(function, the v)144 654 R .306 +ber representing the)144 654 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 666 R .078 +(When not in a script or)5.078 F .306(function, the v)144 678 R .306 (alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.307 E F2(LINENO)2.807 E F0 .307(is unset, it loses its)2.557 F -(special properties, e)144 666 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 678 Q +(special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 702 Q (CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ -es the system type on which)144 690 R F1(bash)3.398 E F0 .898(is e)3.398 -F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 702 Q F4 +es the system type on which)144 714 R F1(bash)3.398 E F0 .898(is e)3.398 +F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 726 Q F4 (cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E -(ault is system-dependent.)-.1 E(GNU Bash 4.3)72 768 Q(2014 January 6) -144.29 E(12)193.45 E 0 Cg EP +(ault is system-dependent.)-.1 E(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(12)190.95 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP @@ -1820,7 +1826,7 @@ F1 .371(SHELL B)2.871 F(UIL)-.1 E .371(TIN COMMANDS)-.92 F F0 .372 4.028 E .248(set to a v)144 729.6 R .248(alue that is not one of the v) -.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .249 (ls, the shell prints an error message and).15 F(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(13)193.45 E 0 Cg EP +(2014 February 2)141.79 E(13)190.95 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP @@ -1936,7 +1942,7 @@ G .558(alue of)-3.308 F F2(ignor)3.068 E(edups)-.37 E F0 .558 (all pre)144 720 R .698 (vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G 3.198(df).15 G .698(rom the history list before that line is)-3.198 F -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(14)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(14)190.95 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP @@ -2060,7 +2066,7 @@ E F3(LANG)108 708 Q F0 1.239(Used to determine the locale cate)7.11 F 1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 (gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E (starting with)144 720 Q F3(LC_)2.5 E F0(.)A(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(15)193.45 E 0 Cg EP +(2014 February 2)141.79 E(15)190.95 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP @@ -2168,7 +2174,7 @@ F F2(PR)2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 (alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) 2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) 5.118 E(def)144 720 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(16)193.45 E 0 Cg +(.).74 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(16)190.95 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup @@ -2288,7 +2294,7 @@ E F1(histchars)108 668.4 Q F0 2.069(The tw)144 680.4 R 4.57(oo)-.1 G (ing one string for another in the command.)144 728.4 R .575(The def) 5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 (optional third character is the)3.076 F(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(17)193.45 E 0 Cg EP +(2014 February 2)141.79 E(17)190.95 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP @@ -2443,7 +2449,7 @@ F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) (name)108 724.8 Q F0([)A F2(subscript)A F0(], where)A F2(subscript)2.5 E F0(is)2.5 E F1(*)2.5 E F0(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(18)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(18)190.95 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP @@ -2580,7 +2586,7 @@ as shorthand when the common pre\214x of the strings to be generated is) (appears identically in the output.)3.015 F .515(The same w)5.515 F .515 (ord is output as)-.1 F F3 .514(\214le1 \214le2)4.925 F F0 .514(after e) 3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A(GNU Bash 4.3)72 -768 Q(2014 January 6)144.29 E(19)193.45 E 0 Cg EP +768 Q(2014 February 2)141.79 E(19)190.95 E 0 Cg EP %%Page: 20 20 %%BeginPageSetup BP @@ -2706,7 +2712,7 @@ G .278(he v)-5.278 F .278(alue of)-.25 F F3(par)4.028 E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .279 (Positional parameters and special param-)5.278 F (eters may not be assigned to in this w)144 712.8 Q(ay)-.1 E(.)-.65 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(20)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(20)190.95 E 0 Cg EP %%Page: 21 21 %%BeginPageSetup BP @@ -2834,7 +2840,7 @@ A F0([)A F1(@)A F0(]})A(${)108 609.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 -3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 -.15(ve i)-.25 H .972(ndices count back).15 F(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(21)193.45 E 0 Cg EP +(2014 February 2)141.79 E(21)190.95 E 0 Cg EP %%Page: 22 22 %%BeginPageSetup BP @@ -2970,7 +2976,7 @@ F1 1.697(Command substitution)108 660 R F0(allo)4.197 E 1.697 A F2<92>A(Bash)108 729.6 Q F0 1.709(performs the e)4.209 F 1.709 (xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)4.209 E F0 1.708(and replacing the command substitution with the)4.208 F -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(22)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(22)190.95 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP @@ -3099,7 +3105,7 @@ F0 3.177(,a).24 G .677(nd replaced with an alphabeti-)-3.177 F .562 (cally sorted list of \214lenames matching the pattern \(see)108 727.2 R F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) 2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(23)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(23)190.95 E 0 Cg EP %%Page: 24 24 %%BeginPageSetup BP @@ -3233,7 +3239,7 @@ E F3(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F3(symbol) (is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E F0(.)A(Composite patterns may be formed using one or more of the follo) 108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(24)193.45 E 0 Cg EP +(2014 February 2)141.79 E(24)190.95 E 0 Cg EP %%Page: 25 25 %%BeginPageSetup BP @@ -3326,7 +3332,7 @@ F2(host)2.997 E F0 .497(is a v)2.997 F .497 (is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E (vice name,)180 729.6 Q F1(bash)2.5 E F0 (attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(25)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(25)190.95 E 0 Cg EP %%Page: 26 26 %%BeginPageSetup BP @@ -3415,7 +3421,7 @@ e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F 676.8 Q F1(&>>)144 693.6 Q F2(wor)A(d)-.37 E F0 (This is semantically equi)108 710.4 Q -.25(va)-.25 G(lent to).25 E F1 (>>)144 727.2 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(26)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(26)190.95 E 0 Cg EP %%Page: 27 27 %%BeginPageSetup BP @@ -3508,7 +3514,7 @@ F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 696 Q -.15(ve)-.15 G .285(to \214le descriptor)2.785 F F2(n)2.785 E F0 2.785(,o).24 G 2.785 (rt)-2.785 G .286(he standard output \(\214le descriptor 1\) if)-2.785 F F2(n)2.786 E F0 .286(is not speci-)2.786 F(\214ed.)108 708 Q -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(27)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(27)190.95 E 0 Cg EP %%Page: 28 28 %%BeginPageSetup BP @@ -3646,7 +3652,8 @@ F(-)-.2 E(ited unless the)108 660 Q F1(\255o errtrace)2.5 E F0 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 717.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G (cations that e).2 E(xceed the limit cause the entire command to abort.) --.15 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(28)193.45 E 0 Cg EP +-.15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(28)190.95 E 0 Cg +EP %%Page: 29 29 %%BeginPageSetup BP @@ -3752,7 +3759,8 @@ A F3 -.2(ex)C(pr).2 E F1(:)A F3 -.2(ex)C(pr).2 E F0 (xpression.)-.15 E 1.406 (Constants with a leading 0 are interpreted as octal numbers.)108 724.8 R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) --.15 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(29)193.45 E 0 Cg EP +-.15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(29)190.95 E 0 Cg +EP %%Page: 30 30 %%BeginPageSetup BP @@ -3868,7 +3876,7 @@ E F0 -.35(Tr)144 692.4 S(ue if the shell v).35 E(ariable)-.25 E F1 F3108 704.4 Q F1(varname)2.5 E F0 -.35(Tr)144 716.4 S (ue if the shell v).35 E(ariable)-.25 E F1(varname)2.79 E F0 (is set and is a name reference.)2.68 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(30)193.45 E 0 Cg EP +(2014 February 2)141.79 E(30)190.95 E 0 Cg EP %%Page: 31 31 %%BeginPageSetup BP @@ -3962,7 +3970,7 @@ E F5(.)A F0 .246(If the name does not match a func-)4.746 F (tion, the shell searches for it in the list of shell b)108 720 Q 2.5 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E (uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash 4.3)72 768 -Q(2014 January 6)144.29 E(31)193.45 E 0 Cg EP +Q(2014 February 2)141.79 E(31)190.95 E 0 Cg EP %%Page: 32 32 %%BeginPageSetup BP @@ -4074,7 +4082,7 @@ F2(PPID)2.5 E F0 .426(When a simple command other than a b)108 576 R (raps caught by the shell are reset to the v)-32.5 F .307 (alues inherited from the shell')-.25 F 2.807(sp)-.55 G .307 (arent, and traps ignored)-2.807 F(by the shell are ignored)144 720 Q -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(32)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(32)190.95 E 0 Cg EP %%Page: 33 33 %%BeginPageSetup BP @@ -4205,8 +4213,8 @@ Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1 F1(bash)108 720 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0 (If job control is in ef)4.5 E(fect,)-.25 E F1(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 -E F4(SIGTSTP)2.5 E F5(.)A F0(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 -E(33)193.45 E 0 Cg EP +E F4(SIGTSTP)2.5 E F5(.)A F0(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(33)190.95 E 0 Cg EP %%Page: 34 34 %%BeginPageSetup BP @@ -4347,7 +4355,7 @@ F5(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) -2.518 F .494(the last job stopped while it w)108 720 R .495 (as in the fore)-.1 F .495(ground or started in the background.)-.15 F (The)5.495 E F5(pr)4.245 E -.15(ev)-.37 G .495(ious job).15 F F0 .495 -(may be)3.225 F(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(34)193.45 +(may be)3.225 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(34)190.95 E 0 Cg EP %%Page: 35 35 %%BeginPageSetup @@ -4451,7 +4459,7 @@ F0(be)29.89 E 1.257(gin a sequence of non-printing characters, which co\ uld be used to embed a terminal)-.15 F(control sequence into the prompt) 180 703.2 Q F1(\\])144 715.2 Q F0 (end a sequence of non-printing characters)29.89 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(35)193.45 E 0 Cg EP +(2014 February 2)141.79 E(35)190.95 E 0 Cg EP %%Page: 36 36 %%BeginPageSetup BP @@ -4584,8 +4592,8 @@ F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0(,).73 E F4 (ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853 (ame, possibly with).15 F F4(Meta\255)3.353 E F0(or)3.353 E F4(Contr) 3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15 -(ey)-.1 G(sequence.)108 724.8 Q(GNU Bash 4.3)72 768 Q(2014 January 6) -144.29 E(36)193.45 E 0 Cg EP +(ey)-.1 G(sequence.)108 724.8 Q(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(36)190.95 E 0 Cg EP %%Page: 37 37 %%BeginPageSetup BP @@ -4676,7 +4684,7 @@ F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .449(nized v) 2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468 (he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(37)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(37)190.95 E 0 Cg EP %%Page: 38 38 %%BeginPageSetup BP @@ -4780,7 +4788,7 @@ E .483(history entries are deleted and no ne)144 712.8 R 2.983(we)-.25 G (set to a v)2.983 F .482(alue less than zero, the num-)-.25 F (ber of history entries is not limited.)144 724.8 Q(By def)5 E (ault, the number of history entries is not limited.)-.1 E(GNU Bash 4.3) -72 768 Q(2014 January 6)144.29 E(38)193.45 E 0 Cg EP +72 768 Q(2014 February 2)141.79 E(38)190.95 E 0 Cg EP %%Page: 39 39 %%BeginPageSetup BP @@ -4882,8 +4890,8 @@ F0 .698(If set to)144 672 R F1(On)3.198 E F0 3.198(,r)C .699 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 (vidual undo lists across calls to)-.25 F F1 -.18(re)144 696 S(adline) -.18 E F0(.)A(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(39)193.45 E 0 -Cg EP +.18 E F0(.)A(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(39)190.95 E +0 Cg EP %%Page: 40 40 %%BeginPageSetup BP @@ -4983,7 +4991,7 @@ E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G (gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) 144 722.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 -.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(40)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(40)190.95 E 0 Cg EP %%Page: 41 41 %%BeginPageSetup BP @@ -5079,7 +5087,7 @@ F0(Mo)144 645.6 Q .908 -.15(ve b)-.15 H .609 (current line without clearing the screen.)144 693.6 Q F1 -.18(re)108 705.6 S(draw\255curr).18 E(ent\255line)-.18 E F0 (Refresh the current line.)144 717.6 Q(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(41)193.45 E 0 Cg EP +(2014 February 2)141.79 E(41)190.95 E 0 Cg EP %%Page: 42 42 %%BeginPageSetup BP @@ -5181,8 +5189,8 @@ E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G (xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2 (HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 (belo)144 720 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(42) -193.45 E 0 Cg EP +(xpansion.)-.15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(42) +190.95 E 0 Cg EP %%Page: 43 43 %%BeginPageSetup BP @@ -5283,7 +5291,7 @@ E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 616.8 Q 4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F F4 -.37(re) 4.395 G(adline\(\)).37 E F0 1.895(starts in insert)4.395 F(GNU Bash 4.3) -72 768 Q(2014 January 6)144.29 E(43)193.45 E 0 Cg EP +72 768 Q(2014 February 2)141.79 E(43)190.95 E 0 Cg EP %%Page: 44 44 %%BeginPageSetup BP @@ -5372,8 +5380,8 @@ F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 633.6 Q (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) -.2 F(-)-.2 E .898(wise ignored.)144 729.6 R .898 (As a special case, if this command is immediately follo)5.898 F .898 -(wed by a character that is)-.25 F(GNU Bash 4.3)72 768 Q(2014 January 6) -144.29 E(44)193.45 E 0 Cg EP +(wed by a character that is)-.25 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(44)190.95 E 0 Cg EP %%Page: 45 45 %%BeginPageSetup BP @@ -5472,7 +5480,7 @@ F0(List the possible completions of the te)144 556.8 Q (xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 (ainst lines from the history list)-.05 F (for possible completion matches.)144 712.8 Q(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(45)193.45 E 0 Cg EP +(2014 February 2)141.79 E(45)190.95 E 0 Cg EP %%Page: 46 46 %%BeginPageSetup BP @@ -5562,7 +5570,7 @@ F0 1.095(command enough times to)3.595 F ing stray characters into the editing b)144 693.6 R(uf)-.2 E(fer)-.25 E 5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 705.6 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(46)193.45 E 0 Cg EP +(2014 February 2)141.79 E(46)190.95 E 0 Cg EP %%Page: 47 47 %%BeginPageSetup BP @@ -5675,7 +5683,7 @@ E F1(Completing)2.5 E F0(is performed.)2.5 E .464 .321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 F F12.821 E F0 .32(option is considered.)2.821 F .32 (The string is \214rst split using the)5.32 F(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(47)193.45 E 0 Cg EP +(2014 February 2)141.79 E(47)190.95 E 0 Cg EP %%Page: 48 48 %%BeginPageSetup BP @@ -5819,7 +5827,7 @@ ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 .137(ept in a \214le corresponding to the name of)-.1 F (the command, the follo)108 724.8 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(48)193.45 E 0 Cg EP +E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(48)190.95 E 0 Cg EP %%Page: 49 49 %%BeginPageSetup BP @@ -5954,7 +5962,7 @@ tions of that line for inclusion into the current one.)4.368 F 1.867 Q(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 (ilable to manipulate the selected w).25 F 2.727(ords. The)-.1 F .226 (line is brok)2.726 F .226(en into w)-.1 F .226(ords in the same f)-.1 F -(ashion)-.1 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(49)193.45 E +(ashion)-.1 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(49)190.95 E 0 Cg EP %%Page: 50 50 %%BeginPageSetup @@ -6072,7 +6080,7 @@ E(viates `0\255)-.25 E F1(y)A F0('.)A F2(*)108 681.6 Q F0 .315 705.6 Q F0(Abbre)26 E(viates)-.25 E F1(x\255$)2.5 E F0(.)A F2<78ad>108 717.6 Q F0(Abbre)25.3 E(viates)-.25 E F1(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F2(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(50)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(50)190.95 E 0 Cg EP %%Page: 51 51 %%BeginPageSetup BP @@ -6203,7 +6211,7 @@ F 1.314(plied, the name and v)144 702 R 1.314 (returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F -.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E (which no alias has been de\214ned.)144 714 Q(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(51)193.45 E 0 Cg EP +(2014 February 2)141.79 E(51)190.95 E 0 Cg EP %%Page: 52 52 %%BeginPageSetup BP @@ -6322,7 +6330,7 @@ F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 727.2 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E 5.57(.T)-.65 G .57(he return status)-5.57 F(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(52)193.45 E 0 Cg EP +(2014 February 2)141.79 E(52)190.95 E 0 Cg EP %%Page: 53 53 %%BeginPageSetup BP @@ -6462,7 +6470,7 @@ E(dlist)-.37 E F0 3.728(][)C F2-3.728 E F1(func-)3.728 E(tion)108 A F1(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F1(pr)2.5 E (e\214x)-.37 E F0 2.5(][)C F2-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(]) A F1(name)2.5 E F0([)2.5 E F1(name ...)A F0(])A(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(53)193.45 E 0 Cg EP +(2014 February 2)141.79 E(53)190.95 E 0 Cg EP %%Page: 54 54 %%BeginPageSetup BP @@ -6545,7 +6553,7 @@ Q F0(Names of disabled shell b)224 684 Q(uiltins.)-.2 E F1(enabled)184 696 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 708 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A(GNU Bash 4.3)72 -768 Q(2014 January 6)144.29 E(54)193.45 E 0 Cg EP +768 Q(2014 February 2)141.79 E(54)190.95 E 0 Cg EP %%Page: 55 55 %%BeginPageSetup BP @@ -6647,7 +6655,7 @@ F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 717.6 Q F0 -.2(bu) (option indicates that the remaining options should apply to)2.797 F 1.227(the `)144 729.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.727 F(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(55)193.45 E 0 +no)-3.727 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(55)190.95 E 0 Cg EP %%Page: 56 56 %%BeginPageSetup @@ -6790,7 +6798,7 @@ F1(Arrays)144 698.4 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the) (rray status for an array v)-2.557 F(ari-)-.25 E (able, or an attempt is made to display a non-e)144 722.4 Q (xistent function with)-.15 E F12.5 E F0(.)A(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(56)193.45 E 0 Cg EP +(2014 February 2)141.79 E(56)190.95 E 0 Cg EP %%Page: 57 57 %%BeginPageSetup BP @@ -6895,7 +6903,7 @@ F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 (the same name as a shell b)144 727.2 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 (ve)-.25 G 3.334(nt).15 G(hough)-3.334 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(57)193.45 E 0 Cg EP +(2014 February 2)141.79 E(57)190.95 E 0 Cg EP %%Page: 58 58 %%BeginPageSetup BP @@ -7037,8 +7045,8 @@ F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 (is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 696 R .951 (ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 (When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 708 S(cuted.).15 E(GNU Bash 4.3)72 768 Q(2014 January 6) -144.29 E(58)193.45 E 0 Cg EP +-.15(exe)144 708 S(cuted.).15 E(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(58)190.95 E 0 Cg EP %%Page: 59 59 %%BeginPageSetup BP @@ -7166,7 +7174,7 @@ R F32.742 E F0 .243 (of the command.)144 722.4 R(The)6.712 E F34.212 E F0 1.711 (option causes the shell to for)4.212 F 1.711 (get all remembered locations.)-.18 F(The)6.711 E F34.211 E F0 -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(59)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(59)190.95 E 0 Cg EP %%Page: 60 60 %%BeginPageSetup BP @@ -7274,7 +7282,7 @@ E F0(... ])2.5 E(The \214rst form lists the acti)144 696 Q .3 -.15(ve j) -.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo) .15 E(wing meanings:)-.25 E F2144 708 Q F0 (List process IDs in addition to the normal information.)27.52 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(60)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(60)190.95 E 0 Cg EP %%Page: 61 61 %%BeginPageSetup BP @@ -7405,7 +7413,7 @@ F0 .275(is e)2.775 F -.25(va)-.25 G .274 4.406 E(ay)-.15 E F0(is)4.406 E(in)144 708 Q -.25(va)-.4 G (lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(61)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(61)190.95 E 0 Cg EP %%Page: 62 62 %%BeginPageSetup BP @@ -7518,7 +7526,8 @@ adding directories to the stack, so that)24.74 F (Rotates the stack so that the)25.3 F F2(n)3.767 E F0 1.268 (th directory \(counting from the left of the list sho)B 1.268(wn by) -.25 F F1(dirs)180 708 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(62)193.45 E 0 Cg EP +-2.5 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(62)190.95 E 0 Cg +EP %%Page: 63 63 %%BeginPageSetup BP @@ -7640,7 +7649,7 @@ F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 722.4 R .506(fect when reading)-.25 F(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(63)193.45 E 0 Cg EP +(2014 February 2)141.79 E(63)190.95 E 0 Cg EP %%Page: 64 64 %%BeginPageSetup BP @@ -7788,7 +7797,7 @@ F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 -.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 (xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 727.2 -Q(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(64)193.45 E 0 Cg EP +Q(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(64)190.95 E 0 Cg EP %%Page: 65 65 %%BeginPageSetup BP @@ -7869,7 +7878,7 @@ F0(.)A F1(pipefail)184 684 Q F0 1.029(If set, the return v)7.77 F 1.029 (xit with a non-zero status, or zero if all commands in the pipeline) -.15 F -.15(ex)224 708 S(it successfully).15 E 5(.T)-.65 G (his option is disabled by def)-5 E(ault.)-.1 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(65)193.45 E 0 Cg EP +(2014 February 2)141.79 E(65)190.95 E 0 Cg EP %%Page: 66 66 %%BeginPageSetup BP @@ -7989,7 +7998,7 @@ F13.446 E F0(and)3.446 E F13.446 E F0 .945 (to be turned of)144 730.8 R 2.678(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) -.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(66)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(66)190.95 E 0 Cg EP %%Page: 67 67 %%BeginPageSetup BP @@ -8103,7 +8112,7 @@ F .419(vior to that of v)-.2 F .42(ersion 3.1 with respect to quoted ar) -.15 F(guments)-.18 E .462(to the)184 726 R F1([[)2.962 E F0 .462 (conditional command')2.962 F(s)-.55 E F1(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(67)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(67)190.95 E 0 Cg EP %%Page: 68 68 %%BeginPageSetup BP @@ -8212,7 +8221,7 @@ Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 672 Q F0 .84 F3 -.27(BA)28.5 G(SH_ARGC).27 E F0(and)3.153 E F3 -.27(BA)3.403 G (SH_ARGV).27 E F0 .904(are updated as described in their descriptions) 3.154 F(abo)220 720 Q -.15(ve)-.15 G(.).15 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(68)193.45 E 0 Cg EP +(2014 February 2)141.79 E(68)190.95 E 0 Cg EP %%Page: 69 69 %%BeginPageSetup BP @@ -8316,7 +8325,7 @@ F1(cmdhist)3.154 E F0 .654 (The shell sets this option if it is started as a login shell \(see)184 708 R F3(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) -.15 G 2.986(\). The).15 F -.25(va)184 720 S(lue may not be changed.).25 -E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(69)193.45 E 0 Cg EP +E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(69)190.95 E 0 Cg EP %%Page: 70 70 %%BeginPageSetup BP @@ -8412,7 +8421,7 @@ F0 -.35(Tr)12.6 G(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E (ex)144 687.6 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 699.6 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(70)193.45 E 0 Cg EP +(2014 February 2)141.79 E(70)190.95 E 0 Cg EP %%Page: 71 71 %%BeginPageSetup BP @@ -8535,7 +8544,7 @@ turns a non\255zero e)144 710.4 R .184(xit status, subject to)-.15 F 1.92(the follo)144 722.4 R 1.92(wing conditions.)-.25 F(The)6.92 E F3 (ERR)4.42 E F0 1.92(trap is not e)4.17 F -.15(xe)-.15 G 1.92 (cuted if the f).15 F 1.92(ailed command is part of the)-.1 F -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(71)193.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(71)190.95 E 0 Cg EP %%Page: 72 72 %%BeginPageSetup BP @@ -8662,7 +8671,7 @@ F1144 711.6 Q F0(The maximum number of threads)23.63 E(If)144 (n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 F F2 (limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 (alue of the speci\214ed resource.)-3.218 F(If)5.468 E(GNU Bash 4.3)72 -768 Q(2014 January 6)144.29 E(72)193.45 E 0 Cg EP +768 Q(2014 February 2)141.79 E(72)190.95 E 0 Cg EP %%Page: 73 73 %%BeginPageSetup BP @@ -8787,7 +8796,7 @@ ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 108 708 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E F1 2.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 (enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(73)193.45 E 0 Cg EP +(2014 February 2)141.79 E(73)190.95 E 0 Cg EP %%Page: 74 74 %%BeginPageSetup BP @@ -8862,7 +8871,7 @@ G(rcises the b).15 E(ug)-.2 E F4(bashb)108.27 710.4 Q(ug)-.2 E F0 2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 727.2 Q(ug reports concerning this manual page should be directed to)-.2 E F4 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(74)193.45 E 0 Cg EP +.25 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(74)190.95 E 0 Cg EP %%Page: 75 75 %%BeginPageSetup BP @@ -8887,8 +8896,8 @@ ommands between parentheses to force it into a)-.25 F (subshell, which may be stopped as a unit.)108 211.2 Q(Array v)108 228 Q (ariables may not \(yet\) be e)-.25 E(xported.)-.15 E (There may be only one acti)108 244.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E -(75)193.45 E 0 Cg EP +(oprocess at a time.).15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 +E(75)190.95 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.aux b/doc/bashref.aux index 4dadc1b9..3fbebc17 100644 --- a/doc/bashref.aux +++ b/doc/bashref.aux @@ -81,9 +81,9 @@ @xrdef{Positional Parameters-pg}{19} @xrdef{Special Parameters-title}{Special Parameters} @xrdef{Special Parameters-snt}{Section@tie 3.4.2} +@xrdef{Special Parameters-pg}{20} @xrdef{Shell Expansions-title}{Shell Expansions} @xrdef{Shell Expansions-snt}{Section@tie 3.5} -@xrdef{Special Parameters-pg}{20} @xrdef{Brace Expansion-title}{Brace Expansion} @xrdef{Brace Expansion-snt}{Section@tie 3.5.1} @xrdef{Shell Expansions-pg}{21} @@ -99,18 +99,18 @@ @xrdef{Arithmetic Expansion-title}{Arithmetic Expansion} @xrdef{Arithmetic Expansion-snt}{Section@tie 3.5.5} @xrdef{Command Substitution-pg}{28} -@xrdef{Arithmetic Expansion-pg}{28} @xrdef{Process Substitution-title}{Process Substitution} @xrdef{Process Substitution-snt}{Section@tie 3.5.6} @xrdef{Word Splitting-title}{Word Splitting} @xrdef{Word Splitting-snt}{Section@tie 3.5.7} -@xrdef{Filename Expansion-title}{Filename Expansion} -@xrdef{Filename Expansion-snt}{Section@tie 3.5.8} +@xrdef{Arithmetic Expansion-pg}{29} @xrdef{Process Substitution-pg}{29} @xrdef{Word Splitting-pg}{29} -@xrdef{Filename Expansion-pg}{29} +@xrdef{Filename Expansion-title}{Filename Expansion} +@xrdef{Filename Expansion-snt}{Section@tie 3.5.8} @xrdef{Pattern Matching-title}{Pattern Matching} @xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1} +@xrdef{Filename Expansion-pg}{30} @xrdef{Pattern Matching-pg}{30} @xrdef{Quote Removal-title}{Quote Removal} @xrdef{Quote Removal-snt}{Section@tie 3.5.9} diff --git a/doc/bashref.cp b/doc/bashref.cp index a36156e1..e4c1a13a 100644 --- a/doc/bashref.cp +++ b/doc/bashref.cp @@ -52,14 +52,14 @@ \entry{parameter expansion}{23}{parameter expansion} \entry{expansion, parameter}{23}{expansion, parameter} \entry{command substitution}{28}{command substitution} -\entry{expansion, arithmetic}{28}{expansion, arithmetic} -\entry{arithmetic expansion}{28}{arithmetic expansion} +\entry{expansion, arithmetic}{29}{expansion, arithmetic} +\entry{arithmetic expansion}{29}{arithmetic expansion} \entry{process substitution}{29}{process substitution} \entry{word splitting}{29}{word splitting} -\entry{expansion, filename}{29}{expansion, filename} -\entry{expansion, pathname}{29}{expansion, pathname} -\entry{filename expansion}{29}{filename expansion} -\entry{pathname expansion}{29}{pathname expansion} +\entry{expansion, filename}{30}{expansion, filename} +\entry{expansion, pathname}{30}{expansion, pathname} +\entry{filename expansion}{30}{filename expansion} +\entry{pathname expansion}{30}{pathname expansion} \entry{pattern matching}{30}{pattern matching} \entry{matching, pattern}{30}{matching, pattern} \entry{redirection}{31}{redirection} diff --git a/doc/bashref.cps b/doc/bashref.cps index a4fb3bab..97c6c160 100644 --- a/doc/bashref.cps +++ b/doc/bashref.cps @@ -1,7 +1,7 @@ \initial {A} \entry {alias expansion}{88} \entry {arithmetic evaluation}{87} -\entry {arithmetic expansion}{28} +\entry {arithmetic expansion}{29} \entry {arithmetic, shell}{87} \entry {arrays}{89} \initial {B} @@ -42,18 +42,18 @@ \entry {execution environment}{36} \entry {exit status}{3, 38} \entry {expansion}{21} -\entry {expansion, arithmetic}{28} +\entry {expansion, arithmetic}{29} \entry {expansion, brace}{21} -\entry {expansion, filename}{29} +\entry {expansion, filename}{30} \entry {expansion, parameter}{23} -\entry {expansion, pathname}{29} +\entry {expansion, pathname}{30} \entry {expansion, tilde}{22} \entry {expressions, arithmetic}{87} \entry {expressions, conditional}{85} \initial {F} \entry {field}{3} \entry {filename}{3} -\entry {filename expansion}{29} +\entry {filename expansion}{30} \entry {foreground}{97} \entry {functions, shell}{17} \initial {H} @@ -92,7 +92,7 @@ \entry {parameters}{18} \entry {parameters, positional}{19} \entry {parameters, special}{20} -\entry {pathname expansion}{29} +\entry {pathname expansion}{30} \entry {pattern matching}{30} \entry {pipeline}{8} \entry {POSIX}{3} diff --git a/doc/bashref.dvi b/doc/bashref.dvi index ff50b4e2d228c19473f92ff0fa0882113f6f0f93..277804d9eea43a53a992f6141a048438c53d452b 100644 GIT binary patch delta 6650 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 delta 6306 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 diff --git a/doc/bashref.html b/doc/bashref.html index 93eebe1e..5b4eec4c 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,6 +1,6 @@ - +

S_tMpjQ$)Ac{7@g50o3fBCEas& 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�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 z%0A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≫gHk>LtT(h}Vq!aoy9c?;&74s=gQ``5m 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