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 | 2103 +++++----- 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, 14626 insertions(+), 1538 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 c6d064953..4f95e42e1 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 ce0b98a8c..9660b342f 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 71594ddd5..37311daaa 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 000000000..1f249f927 --- /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 000000000..1707ab10c --- /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 000000000..87b78d7cc --- /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 000000000..998fd72b6 --- /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 9865929bc..f6fa6954d 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 79b8bcf8f..1f127644a 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 000000000..fb441f4df --- /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 000000000..640390fbf --- /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 000000000..1cff3c8ef --- /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 faa889890..8f2c57ddc 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 bdc580f9b..ec414627f 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 3652bd18e..a83f8b313 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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 z 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 z%0A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≫gHk>LtT(h}Vq!aoy9c?;&74s=gQ``5m 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

|wjg7(;oIP&A%LBxHYYl|7F z0JH>FO1LLNf2|(bPL|yPdNf`8AbT89wCWtQ_NlJMJ?jfRG9Nzm#qp@5>7Z{b>EtlW z{4}+wJSk!9Gb4;gr}`_;n3+?_sgye(tyUjKJpb7WD*%b9b9aq8)hSTxb z^`pPpf5v$XujAeg7PrMgnvk`I5V7zhVZEJfd;U-Hu(WFw`x&=O>cO~km~lS}!-b37 zdc$+uwHqG$0grR<`JlpV+~ciJ8$nN_#4GxmEaR_4nfco-j*-BeXMPZ*nOE-5M$xeY zrgz>inR^H*m}$Fa%NsJnb#{%qw%Cnv*zSU zln@A1%Pvk$?K)KgZ3vL7^`H$7hG8C{^sYem;SZ|%_5{7 zH$lhM20X!Wju&A5S{*F<7Yd%dv&My(C&dt5Yxg9NmJs*lAyiy*D za#*vXNU))KTlkPlC26U{w>I%m$90DmYiNp5}rt=i1fOggPt$vu(5TOKJIH=q<-HWa64)*L)eb2(Nb}Tfv3xi8(`;5$1c^>$h+(iwZJa@v zDD_2@+X^bofHBUoa68%T9Yuy1zBv?e7V{nMv<5W@!X&nQ42!ge5!Ba zD12QRcvvR>qB3FNXGv<}`_@~!e^ru^ze=8{ro)L+WmS(z8md-bS}B1)i_qd;G()F@F3tTcU*+=Re_o~RAPv2H zS&oBZEQbW1DkN6a0qRaNN6l|h$7^)U1y~__hj5W}&trX%ovP^KAb5**DIMsz`uQl! z`cG+8IiYf{yVl4Nn&Q)$Fo&}y!XDXAav+wHz(td0?$zn(%tPt;R70xL(31j?!$%9M zGEpEEv(&Cif651x^^vEFf5WbRICZCCjkG`l=2H!v=raI0n|c-`${YV5J))m8dn`pj%^b!qs_Z#N7Bptd z-ib74L&xrE10Lq8xHdrRA{-o*Xe)#XBHhNvb+-vK)G<8v`cfgKf2$NUcA1SX>Yj9` z=yrjJN6wUT;vo=!>csXc3aAcsw!w}nH8FE9F*Qikc{#WW+qtc9Lt~RW(oe)ohO?PF z6LY-oHa`1KVH1a{OK>ixm$jY2v8Lv?l=b4=B!XMogH5HUPguui^)#o&U@Epy_tv@x zHQ{&tTKFL22ASj8fB!jrxRaBDW~z|GS!s|5+L@@kS8XvmZ;GKEEl)CP*d5AwpyLDB zyyDGqvfzIayc|$*mKvo{B-=IGII*pc{3*-n+!h;vNBjwEw>#1 z0H+F0Sd3LIs;_ z_1Aw}e>FqqF*5GO#5|m8OXHHm^8xxjI_?AT%1g6_gT6B}=V|=T&@@ih)=1LN_tu0* zm)@#Ybpfh5GamcM08ah)^ zf75luZ1x$MDLRRCx6!~HWl!x0MKm6hgf?rSqVTn(v7e<*(#Z50uf-TBKvxuxF+ew{XCcI|s^Tf0~#N*blNjo$boAA&o z*|=?1+6x7|A$)at+&SYG<^uWt)VvTR+Hy!2RAH}r00lWJxI(r6uM-Sx4Bh93IxlX; z--!U4X6Em(3%UE!Y8k!rnN|a}WT6{M@fYroT_nt$O@)F=may+Y!-i^kf7=g2E}G-M z*x`lJjEiC_3gfA8==w_bvsxM^PG5@AFbslu$$RU~;;iaiqx>}gPJr)P#B4QJO=ylY zHFaCz3k`8E*>tN1$f9^rXZPb7s-27R+{z~f&x^(r)NW2;m*nq-9gm_lgYo?H!!8gR zcP#^zmlp;+wG~=>`~zIpe?CZ6%kCG=h~f2Kj;FpQLZ>=o)gokoGP3bql%+h5=gUr> zzRi-@VZEoX!(5fTrLX5qSLL3ZT?W(FcwASE3M$hjOL?OF%|5F6d4wQ$btw(tsnij4 z;8av+<~ss3lfPc6X|kE?mfDI`E^6YZs@6AwG50>z70pHzY?RFqS?FaCYG82WX0SEs zi>?I^kEaXU*$gCeuKnWtg9aFG&ZjQ~sM5`_S31ua-~QvD>?8FHC<-=Pc#g#StE$yjh9JO0yKZ0 zQg$<*`Rqshe{=TbOvnXH|0(zE{pHz(&%>BqmROz9FPGahWk9erU}+Sw%l(=6{=3cP zudsr3BII$HXIODrorPJ>V=TEl^Zxm_D^FZ)*n3(T1p(Jfyzlfc^!?jUx!&X=^09No zF2aOX`DEj>H}3k4@V&doqHQ0W?PGtjziw`h{c&Vh-p|`DjQsoZC+Dbm_(BBI01y38 z8M)jwBP-ge9!56pYF5?TP0sT?NHVWDwiCOqcZD=0{G10tpbknFB4y#W=?B(t<8_(wsM}Oj;&f+2(u8b z=O%oD2Z?%i+7%t^yP6&Pacr*JMFh&?IMy;O`(i40H3HltoUCoesjgVF-`7=BOm+Lf znhswT6@_tVx*PmQ&(YqrOehtzN@J3~mE> zqnCh-#53Cn+iBu}&K>hJPaF=@;pO6!R_hQ+=OdF zUB}Fyi|xXM3qM_e5Wy4qiy$oAFh=nlMv*BVs45C0!daBy0t$=rb|Y{dSsZzYKu1B) z6mS@%H%(VHWigrPAbRpMIscB;`=V5-dI3o1ew;6FOsTjPgk4ggYJ#LHHSwHs=9id>iap&@}W}|(a)n7qfGHz*QhvuxkgPk%Bd_X zp{YH7uIcu*>gyzpCSLCQX{gxuZdZ3EEC_M|Chcxojb;3xFRg95n(MGfP#|$?BlU55 zqdg%?F3&QaWq^OCKL6M+I59LZ!5K7zcSsBXq*>5a0GT5as}uB6(AAw=X8ri7Ir8UF z58Hm&lS7X4C?+yXo2r6?z+9oMi5$g0(E%qnV$FLMXCJpR7hpc~#k`eTQFjHXr#fc? zlA0m}=0W;*{iHZChr^MRgrSCq3iq5DBijP`>naG&o%DY-I4g@SrP86t%@~KI695)c zI5RmI=GF;Zx(>vJA~C&kS@;#s&)L|+_@H=Hr{$f66It8#ZQE~xSYhbSWNCREM!<=v z6aKU6cxWk!>x!?Gnww;|jU?~KaVn$>m1hAQ^=Ym1P88D8?ub*AL1C;p@YtIge)T zNO4()1I!s|4FswSKx~x!heO>}FsG9hhwF;HlAX9VF47fA%A}|IM9!Qlp=)B4>7Jm& zpnX3Xw14P3;^w|XWya@m8jhtZuJeHd;n1TdENg$Dp$+$Shs!6KXEkEkw9WKjMICTH z9-5(#} zjiK9GbGO7W9(9=e=rVUWXVyqbz3MGvo~OABl5d;slSEdJU#h0W>D@ALePATtlLrBL zH!CA_c~W*6z^VJgBPdMaVqvJjKC)|b5h{Pu`=WvjDc}d|yC)jsTz-RmNBsc46njGA zRp&B@S;F(!Q60$FOjE6V5XmT+kMMY;Vrr{{44Mctp3YE-($w@!wC6^ES49wb_mjae z-91x3_(6mpkm{pJ1bjB@Xoo+8d!1sT5Mg#)FaTj^sJ|S64oMr$*dvFKk<;pG)rEhe zd!*3F=J9u2Xznx;^1;8Xun_Rnq!gMCp&AWBzxHNnFBV(`;S2c4<{s>2ybB=Bc0P?F z@KmT)F6L=w5AA|KK+cI^ecDm;EnN@z6o(#W9ni?uRcckGJmq<4NRiA$PK&>MkQts0sXCr|9jv36wg*tTukR>!t&8!NW$j*X73j&0kv z)4|>E?s3o0dB62tvu2H|Ic9xWQ1_wgSGcj9N$yV&>moIarnq7qEBpr!0B3_Itxkt^ zSdUow!qeQh#$u!k8_9j$j{!r+4mAp2z{E<*^L?B*^I@zq#6lAx#Ff^W50+})skjaa zAaVB}!3L*j$ckC6CIfIgDar_!XeGCY}d_k6KdE zoJ%B;pXP@GwmMZ9bBD8JdXI5LS_S0^p)TadN1cVFrgqLR+8 z)*-Y;B1}&^1Y1>AbSO8-S9&%s-R2cQkIAGc(LtN@BZ2L<<^Zj+t(4h*Es*88G!<5* zmRD*bvsJwGLSfk_*iTA_%&5y{s3wcrI2C`~E#Fp|kz|R6+9b&>Y`FKRA5uqd8Rw?Y zn33YPXobQK?}B>k+iN zn9aB%Y+9FMMXVH_$_)wYIs{?mtim@P3}V!-PqJ9ROhMbJ%>2PI%X;+>$`O`wVng>0 zYauVkoH;)<VwWixFRt!7+706^6Yw)NTPp)p|_^a=j>8kEs?D>aujS1~_us)DR{gV?eGT6qFT; zaB7yR!GKRg5=XtsDm{5r^@fIQhPkm-arUR(L_S|d)QVI1iz-1}>@((X0lCwU)Qfx5 zE>@a3o~^HCD2j`Ne1H#Y z_!&Zx1nxUco{BMSDza|s5XPs+ZcH_Hq1fSb}`@rQ@Du}!Q35!w=-0z0E>(GTQ zBw(IOo)2NxE*3i*4;MtrO^=qLCNk8P$^_m0ilvw6Yj0q$PWxi~Guy*cNMoV9AU>F^ z$KJYX4?Zs*^5!ky=420k@_?I5SPtXB79UMeD5rO&8QGJXM~biJJ0EHst7LDV^M(_T z*6aau_>T1`RmwC-ERIwRNo1A6Yy$hB7Vx-fXpjbI-FN^$owBCzmx>GJp}+T&ksRaH zWz0J4&w9k3iR7n`ob;I(ipZ|SA&k#Y`m8t>onQ~oLaIVE7i~CZr%ki@KYoD`4Y5hM zq{5CF`!2jQ-cWm* zlTTK)57z3FVx88mt+P9uKD4`>1U^vB|Cz-)UezrXUb+TPpBci1p%e?#DAtEVq3_|y zUF@T4$YwN%4lLrybwvqJa{VOfCS^N#2|?|T?}sa_&wor5b8L?Ps{>+X{%;3l1IxzB z%JCl*>c23{e>*WhAjX0#r>%Q^WaM&qBW4XY)`$`beHoV} zT{^2olJ95FFbg(kTvNxZ?tbBR*@Oi-1$X}YogRs6cDH=T-xJNJ z{{H9tLkDphq@y=E{kn)QB(5?w~t ziI$}IlltnrIT?1q_S|$=9ehX}W9JdwTl0o>&6cNl`z9l2#&OPxsb~^`@hc3)a^Sg2T%eamlVvwC zRb|w$^?VbJAEaCct8HGW^y$vnAJutwrJ8#{pa$c;usVY5psqk`l(U_(FoKdnkVo>{1M&V!0Hkp2m#8H+@$3}}dL6&xS7&9$j7_FlpDBk7 zNK6y1RShywCmy~-2R4LUk;BB%XhDmWBJi))B!t+8Oa8~JdYn*DkJ_`-h1unG^vpjM z&27ZBmjo$&wuSDSIm*5w=rfB3c}u`3bsiJ1BBqwkO>`@@Z>C+VnW(Srj&tdhR>@BG z+G|z(OL~r_fi0b%s{5$_{ThvrXQ*bcNjnMU5n7ez zTWsG%Z0rnZ+-p^B(zE&*WT5n>edwj*n=uYt6c_`QNR2B}KwS((SDfEuo_7gb580@3 z@M->ClhjbxS>IqRLKii{0*+1`I-j7gjc@%E_X>-?#`*7fR?O3Vr(@%`{;fmJC{e1f zzgWpNSm^OPA}4f_-lYWpWW>E|+19>Ki_0EJ0CtSCu%Sz6y#YHFd|T;^!FDQwdh!h% z&8rzTQ_1qv#u{iIU4hH7te03sKPUX$EO7Iu4>GtI=3<{Ao!cc#aZSbh|w0&ZKZq+ z*~tqE#ypxF%mqIZPPkTSO4WQr9sDpbE&JTD$N=lO{4qGp=L73H`~|e~Hx|z_ei@8F z&bt)YDsyFa%A70>UOPXADs3L?Dfl%_P$NAes}yXyNLtS&e6%04K=C2*gnq(GLY-6w z`Jxv8g3wfZx$3>O2_*QCSL(WSs5UK8&-_|MLUDH6N&jFYV`-a%LW|9}3APYWgKj$8 z9vsS_&a$px1yz=@Zye?FF38;qn5NXnPZP5T*QCqL5@9{sP5=gU47Wn2fMck-?jMxl z%@>-Q`d!C_e8g6tX}iWPO^{c-P>PmnDQZM1QSkYfxmo4tvI5 z1e`S{C!Jx?B(-;eIotx}D54*bfrI$QWTw1^)j=_g(MCW6*6evTDVH*wuO><_ZBb&? z@UTb3hq7XuS;ej1ol1=@OG1e>1htuCt~)ytl5qVr9G$mTUtKD%I$$+7(zOMf84`yQ zMqaBJvdS6fXr7tUw&W0$=E=O4Y5;XY`8*Yd7<}I<-R=mB>`%*3;|C59{^o^00hb0g zx$tSEf}bq_4-7`N*0IN7)W9-n*{L@u@6D_Z%9{8xz=&sVW+a$P;mOI@((Ebhq?A*m za>#Y8AjZ3poEf)xnPPbjVkkNOBYb0kN20?dygHu{Ysib5(0IcPZTW_rGxp#er3+`E zcmzl9a%(rG@_F#>YD@|^I#Ot4n1$%2iT{Liu`z(+N^j}ome{swk>Hw@hG!Y#TIe&# ztCG?)AnRH}pIfoD5IZgkYV5l4T3|xf?yxm3_WzwjEoP$9zg&r%Te+S!$g7 zw#vowA1`d9-uZHF@k={hrHNi@Qp#a1yPq`GFF5d>Bb|7X6O!ek83W zsDpVXWlX?rTv;r2q-y%?^$X*(Pu$qwt$8p1`hAmlO21tEiB{ehbyd&VlTi~E!9>EG zsvFB;Ecy6P%8pv#7OjIl<#7BgVy&}XXEY}nWCuSdn1U|-ccGP#{yHPRJ=bo1=Iw#| zuv%CFA(?N*Gm+dl3@baHc-yx{Pb7Hp=SM=%gl`26k&P!e(==nM^wdxTS{JhO*P=Nw zsR|TYjzKX}EbX1fhK*<&lSfhq`T6r2;$q~`rp}9{wRjtFBHl)SBVI>;VBx}5VZI{; zYrCcNpLP~i|H+xp~8pxvb-J=Sr+phK2!SQZ_^<+;`Q z*UNxGEJDpmJ%s`udrN-yb&AO#-_NqDas5NCiOd$BV~+Jqp}#%`nHR(hSf(#OC4-N+kwn@!!^KKJ<=Fx?{If5d2 zFVw_$MEfWTJR;hGFCo6%YJ>l02f59Z)m*_UGryo18E%=T0()qNH2%vdfGs9?>Oh(J z!j8k)`>T)2Ou#FrK)`|^mZ020C1dpOn-9VldC(kideN~6XuC&*7>+>P@wi*XKUJ60 zM~6~kR$oerqOea2#olV-*#o&=w%e(m#WHB5=6nKhRJK6g-SByP z`yd&(as}5W23m>Q>{ZWn_Z^}>E*Bmn1uw$PqteIcNFIL5x`0 z*Zh#eCFmA(mIt|U+XrX+N4#8#5{)YPX#o(caa-Z$RZ-WoX+@9bMhMC!vJ8FolE>|I z(H4S%_5KTD+8M+pM34(l5zfa=lO!Ah_bCpzr5RDRDh2;Ru>V+D*oV%)Bk~d^=}mpc zjb}tW)Q9jOf%2oR_sHC((xap|h??xUtKKi3uwN6cDxSrcZnSaKoG6BTYd0$dUB!3` z9dYi2jSefO~oqW-%_o`16q40pyUqBX;otyjiK>xF651I~m zBwASlcf61B0bAx6kNNAX3XlFGKE6CRb64$sbp8tf$I7Km!tQy2Y!=WwMf&qCUheQQ zY_U1vz%?d=s33E?+J!cIRr#y%zyT-DwJf)BeGYGVOFF?qwLO8cF-);RC!6Fl010dSN>+6R8_s%3BMgo~3T@E_`AHI~xttGSJyr56ihRl%0 z7qp~CfZp~e*v~f{(VLTc2EQGE5R^4T*AAcz&orW!R3r{d4NET4nbB?s-~|=Rc(el; zf(Epy+5_@Hfk;(!=^Hx;YSba98M)y|UMfnN7O}If?KSTwLQViM89NL+c3}j zZ+_>rHbLmV-zci!6_J&LZ-G27;8j+=7b^Ds^u32N28m!&^_Ne#Ug|$6#B$5%)9Gb= z1qDOnNW`;8lCFZi0n9k7E;JGb^8Wq`1cGJHM7c`gI-MVio5P~G1t{VeV@j&s?V;f) zO7bYn1FK(ZCxYnAwCJTEcJLb@mGl-4p(ymQaYI)N*BY`sywm~2o1-wli%uA8426>< zU3GSNEQGn@X4kM=!Kh8kz`i@S`6H-ue0=-xIph#i3t(PEgBRIBU)HMM zqDmmXex?9)xXk?Umu3G$>Sgu@GjVLTf+=~p>ImU?_52a2HMUfqe1b=32M6}+SXVZA zASlsYrU+H3Un;)p9WP(-#Z@ls(QvH2?pGA1(CEP5CtVIRCvf<8(4k*^-aBN;{7=oc zcVix1>ovdT0G?a?OXQ{VGN3b8<*o8^#Z7n<2deNQ=8G~(9s*FubPKK8kfC-c< zqrwZofUUR&kw1uD+B~)&b$k(i0`Y4<=}`Xjem3LU3m^c-^Bt4H;0+)H^MAk2Q1u2x zg2rcTc>}QV6?}L^a4m94^0nAccD?OzOyY~-VjE-WoD_c|+mL+#MW7IloNQZ(LOi4CtB`3p-MgI=T~_M2nrlU17>r_(TO!GGrfMT)xggaV}WF% zH5DK_RTbwkE{bjn_pf~61K{7dDz_iuFW@w9NPHSxM%$?+AxOY050bI+S}MZ7<^DK< zhQWJM^QSJCo37U?m}>ZO2PTBu4oRzi@UjpNnKB5}G}+gOaWC7Jyu%x3G|wr18x$Oc z$)h0m0_V#JNyr=}uU-{JZ6%7h2&j(B?6&ImLQ>6F8k8Q~+#y8jHN;f&vr!!0)-fJrnGi>0BT%X#QLAXXB6jrLlJ?!Cm!h5kz&MO&j{#AvkXKD~u zjR7`~Z{CJ24k5Hm0&<3vm(}NCI!3~GntNJ>ertBd)ExaI2Zk>}#zEQ4Asrr|n)qYTl z1ALl6K)zU=eEZnC{%MB?J zSmH^o6I@Ug84P#2)i8~ZH`qg{n(Y6Vu?;i`a}wwe_OZV38Wr2Qke99#x;1Z%8w) zF2eduBkQip@6ZzdK=O2*LO)wD?E`iLBzPU&Pu){sq9)V2CRvamg}zOL5!;Hn-XPKv zU1m>kI7P{q>dTRW{?EQo)!{%Cktn2lBIs;9f3>d<>Cw#SuDVP$ikn*1@8C&suYd@v z4BzXM;*tkZ{?B^h%RAnCvnyEvKL-E(uNn`q9z4Q4tB2UGWIt7`UrnV<9KJOT1fgcp z`A0t4&=4mP9o2|Z6+`x9u_2~}V}ZrQ{b|#9962nl=A3GSj6ysc(!o*P+LOv=M z7D_1{J5x?g!jqi~I1l1)%~B~` z_wbYZp&K^rtfmg;&A_*5%1u0tuiI=GTxWY>1gJHe=>{QsVSTh6J%P6!Dm6sX{Dhq@ zIoASi-AY*6LUAE=W^g=pZacJe3il-1{9r}U4ZqJeu95_K)Bt}H9@Pn2WNG~^| zi?U6Y^DPaMnZ;Y+52pqK_1ckt>Wi?8%AL?A$ElHBdUE6p2qAp_$zA(m8-p{{r0a#d ztcD6KUl$@#DcHD4e8K-an^cyY(M@-NI9F`3e#nD)>aE7ay%&+3q-G{gI?6~jzx5=# zjK-KzBBhqdRUkK6<^>So4OTFRQxvyqVq^4iMNwntfhGD(A(*d-xhJEnL)>kt{z?m& z!$V2tRmnyTSgaGJ4<=?+YrF&Onh4n4rrm$&Dl7%&XTI~?cUs27Y+38z2S!q3e z+q&QBK0ooK64g8YccRG3`u`F|78dr5lu&>+(B4C}t5UAHrN#UdG@UrALEJ`$7WWwM zMe`})d?buZdu57Tl`+E{&F<-V@5%bj6IDf0^wUKsJ|J)FacGBOk}UzJI_MKVrM6VPJSFIOdFg9J40Mt zf|kv){Il&Q7df>>ftfZp?LzH1j?&6bGF?}_(!97jyE}E%L?Rn?_vgm+)K+guI+6mW72-iOyeR z6h>S2qxZ?3C9@0UmM0AQ`+Ley|UT8*1TeZ%Q`-%qna(G@ourHWEy@SDXEk< zx5-QhL39I=JHj4Ppx@7A^X{Xve9^eTw|xe8VvEfK$Af@oI2zDx?_jTt1BM(0Ijdl{sdckI&L5eX8)p+(1a z#h4*l=QM#cL;e$h08V@I$r1KGZL-IKsdxXqJ)xNCHXNX%@9Gzo&ksS$(1aUj)ax(N zwPx^W>1VB}cDW69#+d)3+rdc$oIguT$m?NT6~hutN|1`I@3@Te24>IGW6;C)C%*0v z1DN6@{*1=}Qtq-C31U7|?vENLE-A9b6XFf`C)_P=yv;BA0u5ORe3mJ2XbtFm)%aoV z-LmSRQGqkF%Ph zRlYF=m9Gk0YtIEy%6|IAOAeSa(_Kl2by#j4{dFC~gxfhXk)HVh3^8S$_@nIG=3xFP zi}vpE?PKgcDk(CSNXf-YUf}J9|AoG!i;(sH>#W=m!GD17%<@*4C@R77ittGrGofI% z$+M7Yy)EdwHhP`Cz8v2iE@N+5zocAxh@?+>6dGHor|R%0_%$-z%SO=<)-PXl;lMH6 zj}SJyq}I-EFjtoWNREo!qK~_w3Yr<&)b<9J?`9C!luh|^uB4N-Bfw3NF=4j&bhp?Q z0gnEru7I+nVxbw8Cj$A$`*$mKb)47W5p{y?7&Y4WmM|0t2t(IY_SEppxC?5Cjd@X= z+dPvTrD?)c5`7?Y(^EKSq7e)1=mxR8LnYXl#ng}z35aYs(Eg)s0}};{5{$)3j2-@X ziHJ`hBv6mVAqvvYt&xmY7l5B#AS+?di_?stDE1l?Y(uo)rTW~uNQybW;c2I|ehl*R zvM1i&P)|0&nh}x+%ObgB3Ehf4=cb?f(`6K5xBO=MnmP(e%M_QZB8WqhA^F+xMGi$xC4;$gq;8GCb8dtWHbf-Ab z$e%mvYp7;F_ELs45b-cq4I@@z*~^ocbE5{J-B8IiJulNk{ubzq>l;zuMKGMsWIm41 zi`P%l9_+^+9Z;8p!Qb#gUlEXTCP;Mp1hNrFwj)FW7sp6DDTMJYue2|xYX=jj?hwej zWBoKF2lfFnC|~VFFNF#?FK>vacg(f~1IM*={^PD)B5|x^sK{ECSMo1)crpswnE}-v zN57sWXb);ThxfN9?q5hFRhLeSLnRi-?euRvO7AJtter%&yR}ETA*y6{7|78N3`o#U zm`vJ%`hxvx)JLc254G>$Te3RSR#52O)hU`{zm%qRBLZ9YTO6wdgPUj#;%2zJ_yjn+ z1+OsPxRxzb$nOvCX+Y4z!6!qoX3E&5pM>eZag8Tfb(4+VH{e?7NI~z-J?;?;>NCLX zg7fx170BMSIIHHxq%6vCGM(}oZyU-$+%INIo!Afu za-;fd)m||av0NkdHtMs+wC{>s)7ENO7Nt)fez&W}RdUDrx);-W#XfUhL>{Ek{7MmD zxOsUh@e@(?BtfVh#wy%+x&Q*Cc*K~RYH;Ky+e-FH`}VHC6Z2tmmC{g zH99;akZcrhB@V}id_Bc^uHtRpMqI)M;=Jbtp4d(Pl) z=xUu6u6unlR1Z;MYw?u8SDC!qiJtBdMQ1MXpwP&6j%it$6#xRp!4NbVAHZf2f8?6r?n zi7Sv*tZed_-!PScAx+ztArn_flpl-HfPw0mw7d#fDd%|21!?Xswt7Ef zD}n6yG2$f?WXY;2*U(9a5te4egG>^zdsRg9@MthU4KGtfBiSr?LYqfN^uV@_q|&Nq z_}lUk{sTQ4EA~7# z5-&_AX2}4xVU%#c@N_YN0Xt&5WVot>Pe)7W|MiWcC-ebR^BC5^}np`KwG9B8l23^$ccB+p@ zib>QdRPes%ChWz~^EM&LQreB4swDAE6V2v|s`&=$E=Z2yIz3{qa5Diap7=xdD35LB zG=>c|f=_=W+vi7>X_?@#Nb4tUAwEL$4he~n`0YXlLd39*qGvYx+l%);4WSto?mVDP z26lPo=#D`*?nid{l7Fw}N(ld;b$EJcw&DQwTk0V@mbZx}popIYi70tvODa_En+QSlKA`Fi%XB>o%mS zJ*{wnRYZZdU^Cc(v93yx&%as zzXpwKD0VZ#XDP7^M<&L?|aY10O}o14ODQ>r(Fvc4W{{0+5fZY*u7 zg*bzWe1dwljqI^(fg6j==1V?cE8~zVm(B|M!DF3?mmwo%?MS^Pm}G}B&Vk6%j_FVT zSY$7Y?B>vps@?zcW%a`*^H2eM@%S=*E_SA|Ds0vCCk~IE1l?C(fE@}?PD|KI$tB#T z@$U2WhlAJ_^oZ{@id&lUe7y5ztQ6cc|4BvjSTAg`(0emT6tFkV=|cREM&UA{oI;F5v~?o|-D zOB-vn9M@dvy>!&_i=z;wNcip-6Fx(HasXE$%K0pjIcF06fUQ15N&dahjPUSFyt<)w(y2F{LhtyXEX zo(;Bp)ZL2%^x~Y2y^kb;TTY>Ky)=JCT5_1jLoxCBA%wboZ18T zzOuSwOMX4rCWw6AKq3@E$)?D4^d>E>L%f~7K#$FBja#4Lh%#n(DE{WLGEwm zp6x^+?wykIQKG-7S&)C{br4%MZuXiAVYfx%P&4!f=rXXm08f`}$4J;sHQ#y)|9r=f zxS>r0dXZiiZo)a%m6;2!4!_!2Ri;qo0}|os1TdRR916xm844Hh-A{p5G7G*#C2EX; zR&r0%?2r0TM=f>Ffv!AFMDje5h}poQi7b$`X6or;#DJ%@iAhEzav*)>ixhoWP`ki1 znb#ZL8w0HMG=9{(MMLU|vLlXv(1wF_qnG3>n?ns=d^)ZKbDk)qLJcBxc|5mPFhPiV z&NfF^<)obR@ZFNpWCATx(B3Pl08!-mos9j_K-8`<~3APuti7< zKR0n7mp8=h*%Zx;^3Q zCpLeCHO7JM9<1?kFOS6QSU0Wzt#LTj&DFawSNy68uMf)Cc5n9Sd}I{s&i-(wh+2Qw(xYugMtYgFajQYJ>L0Fs6_+FD2^j26}jD0rX8Y zJQfjtZ=mvM_wxaM-28yLH?1BH9s+aAzOPn;zO8&Y9!GGx>o>oz@4soeeD8 z`y`11$hN-wHD$sL{UCR%TLXN(3{5>iTKejJfgjr~lcnrbhjhpFDBElrA0fW7IPf?! zJG&nn`yaKsmI?uoe_#3%S_cc@mY(ss`3O6TF|8zwDZtZ@^P5{I5?bN@p zS1u+o@&wg;!XnZ;_fZ#tfAY~be@W;&gK*)wzB}IL4-Ea*WBVv&htQh_?s7rRb%wIs zUvN=K+UN-|XJEXvB3=O` zoI9R$L-l4Ebb3l6+uvz_^gxaid8G|Ga3b}~r`$9W+v{VXS_mfEujgAb?I+N1& zKt-I2EtP5CQ&j1hG}LJ78=UO}CCeA2_+Jh!<0=E74#Xct@jumM|3sbzY`w_M5duR$O4Xh|mJHvi zQlfu+e0qMbG!~xEVUxY1yInE6jQl-;>xSz=Jw3fzU0X=&?%~TY{w_UT%y?e(nDmGM z5C3+c(@w9p{!g_2pP5JRvvL>>Jx8Wb@?(;8egkezp)KB>>*$`+v>@ayM(3S1#j|(M z-zv6d1nqzD|FjUzSK(RGana2l*Wvw}Dbx9K`67EivECIQOBpCDCWN$9VN7O+xq`~` z;hiwCg?}!0_D1dMJ#A{CvPzpIQ{?+BvtHTLdn)?2iZ8D5C~}A48Ws zkb-Tk&t1^t=Voz1%GPiEn6h4|5;h#^YSIAXftf83UMf ze%*9u>lC6%VW~8pmHxX&$gxk=fUV;rU6`018X!#T5;pxDk{j5c6G*%(+qj*&QT}0Y z{mN}qyTs2A;&6q~)kER9<{PYt;CaddjH2-!ROy&!L|S_S#0~5)xI^Z&(K#5RwQhxr zN3oaT>iMGBgs*(tZw)jGmKG6=RUZZL+@QQhG!Mp=ry_326S+(sj9)u9qp*n?@WtBnQK1}mfKF+$h@ayx>0 z@yh~cJH%XUJ04UXcO!Z!8-1gQxvHwPU3qCmnMrc zW?ZyENZq`7xz8(1{;9~3YT=N6b{T8;;9_P(n99{xW zTDPm1Boxfw=tV`w23bV2wr;zCJvD|y3IIgH>OH$$x6GwvjTMwJw*JkYN=2L66Z6zN zudSnVIUJHgX^eUC70wf8Ctw;cj=HNP|WK+w9Plu+cmwe&CS3 zv69j?i4zKo$sTHU;zCOU6@tS3QcS8?LYf#qE`^Yyd>Wdl$LwGLlLE|Sz__t<%Mii5aVzmeQX2IhvN?&{(2=%RXnBf1mrzv{sn=L_ zEjvS8)RCd%>i|z|Z^{Vz`$NknSGN{1jEEwp;xciu7i|?dI47RFdDa_viFenokcvkY z|M9S-43e1hs(G8AH2PGVpw-G}jReQ$;${4cY}9C*I(FWzYVfoelRM8FGqVpv{urC9q#J9v~%C8k+R$zNR|=PzM@5UxPL|-EH~eBvn822 zMaF?Hi32LYrr|!uERw?)etT}B=o*zFRhQYbX<0RfaNfIv@1e7lLCCA-WrSbjR|d1r zek=3_Q#U$J#ucDGcDed2(on79@DL{P7gna!bbC8nHP#T0e4@p-#oQSf1FG zh%UCHM55guC=YP1omhOUPjW(>sAvKl91n1?lyV=yXmvPy%66uY*%=u&6|;2dQ|*C2 z$gzKu0A1W#kp>I5JDP>G6E8RU9Pgl1tjyXm;M=?~r~bt%^12uv-}FxdkKsqSUWDF5 z)JxqfO4)vW>MuLOqhE@rpe}4ve?J&FE4lf&UOb`v+r075T5DSCmxM+ZAvbD2Y6dn}->v5OZk0c(XB{BB1?D0}+5ohfAn0&$QQv+Vl#rQKtL92)L4zcY1?urEc1H7;&kUt3) zh5w2wh;BEESR!NgCwXKWS03j2V(uo#PoU3mt{7;eNY!rHrb?xeATr#}0-h$9 zowe~1ei-zZ+-^Ig<-(EZYzt1da8HD{ZydV7|KPN;@^!H*l|3$;Pe-~M9Z4^UWbz4* z$e&VXgxrX*ZI|p*X`wRc;&m99u7j(!E3a}Iy>$&1qdc@#XCmw0RfSh*b~{m2IU&$> zf%Fc#C_{;t3v1^8yzk*YzR?-R&d(D0c{76EHtD~M7s0Siat*myd787ind8Wa^4qbT zLb6GnA1(oe&6_FIa)F5@1g0MAS-r!aZ6WIUGd6*T{HjMUwYeH@O~nX!6q65#*=hbW z{u;`qxBr4c;d4)Wus^u%a7Ra~&5K&&=viLa!|+lyVpse~bUy|c9wT#BYG-ea>BiDX z@5#XU2nkAbK+WN5ZEe$XP2q33pu`X;Jhe*2ODIpF_=qP(r~APN=l{3|R^-6Wtlh%&>j+LH!l{tEN{dvpkNqZIu>A>(mrcjYGl6@(r*U`??D%pkoYtRLb z^8Wh$aq#=?9f_8$egA*QlWhOi>m2kIz|p$A&&r_n7Kv?%Ecc|S;j^;bxM#7}$qX*j6(`gmDxs<{jE;^O}oS%wE7 z9YjK~e6avE|Ha$}jE8LQlOh@%{A|YTGG*!@XZBV3-+g|VU`WZ}>S<~*oabET!1aK_ zxey+Sg0KDq#@xL(Oe4x`1O9yKF?ysVkzg# zDYBVsbnvZ+cowfbyLYT}*bDT)3*c%x)b}e=U5X)q3=78YluFnlD{l_!ccM?rqgKecoRZx5Nc4O*Ot+|P8 z#tro1SJ%QYDHd~|{DoBAwuL30ZHlx!s00B3r*mh)GRLLOFs=8O&j8e9m`$WDGr!J6 zIwMz4H(eh0{Lww(b9j=|CzL((L|J+5iI(9Q5I}JZ3moOrRKSMlrRk>J+NGHW`K0Fg>-4!D{+|tmD0rgIV51DX{xJ$ zg4AkDPyDt*WCkDN(S95^N-&tm6J zx!*MdUQ>`Z6Yv z{%!)sk;BT_n5u5DP$WXO`*p^;w;n;jC^qv3xuRh6)24RecxPFaHYr!d@uW>e-wB_z zl^fWWZQx&mZF70E_FMQqmSIP^lceXP(~U#+grvW5P(i9-j}58v~tT8ipld5>? zQlc{-3ijpvC=AhZfFDZ6@PdB*wz3Bo;!vSnbR{p!!MfcF8`l_{;`#gbsi6X(6zBex zTNLrI^T^WRc;96PiY#NK3~ zT|}8}{a%4HUMd6UU(D${8Y?3|RgS|Og^no)qu3+mD%q8Nr8c}HStkVOg$eqYD;AqD z4%iXW8Q8owcimTJJj&Z_;}UY9Cj2iLU|;q4m55;xUU>LLvNHueL3*9kCu!@QpZx0v z|HHqS2&Ms{-V5(^%idEsiK6kJYwvKKe({qI?c;L5@u6>hEIV|a;b3YijjHH1LOrt~ z2?1hPV^O)J`N=LxI=KR?4vf&bl(7eTcjvrZfnW_ID&}zRx{FFH8io@PIxGrq>Yhkc zar~&DO+1%jlg92+V!$ za^NYcTy($0n&kfd{E$>42rj@oJ8avzO(bp(%Y{9Z6#H~x1*+~9k__T_)pU z`%$clof9ci_oQNm#vlv`bH<~Dr^Z+i>q2ob#L9H=#~M=jSV79F*gNwS#WIQt;4%#n z&~bGsUteNE*>9UAreU&@zX79l!3IJX&ze8h)Sn#7cfm5s5TrgP6jE&jn(wXE57V*0 ziAn#QL6x};YCq3bVw2_@;JQUb=n!vTihXA7WUdFd0(=%nrT7JmpJ%$!mIaX~^2^p_ zPm=Jy84$l!+np{X*SZ-}8;t3iL1|uG&zYpAp`aaA~!2Rbw_T zeO--yiMY$f_Ke_&?sy%Fz*EA+6v4^hO(OS+{L{TyxvX^TSV?(1i6GIaSqZ&oCD*jZ z%N>+EW=G4;pl}XkN{P+Pi&##c!l8&S`{3v__sQ7cxJMV^!-5)%#JE64)>Va8CTi+{FI^+mhn zy_U$?I3YL5a?)Xq3OnDL;ndlUXNdXn)6!gl#)|I4-Jl1q!ksj1XJBybzror|yt)}F zKg3e|plhD~NKA-&mvkI*JhHQTWU^vz8_bjy*{psB)NI0n8hA?4tyTBB?iD~^#;zc6 zSBWH9ZRbeJ*fc%WJ(g2655WeCV&PzLDgw^r3oyiU^D{uK|1yNx4q4#}qfK-i1}POo z2hZL9s4@b7Xrr5TJ|5wdf=SA3-VyNkIXiGW);4p4lA+-IsZ^zjQa_*!spa#jNOVl+ zI#CFj2nB%>`T@{=t2xB?X?9<{<_9f|5!c=9 z&Mpjc}@j3w+9iQaKstPa|-{ssCzp`k@<}x|@^hA=rLt){0B z_eiH23C^1*dV!J@u?G{DH#*WJEoFj$?yV2+zjoh$sQ1Gh!XO2N)|OrwZd~wVg$<|V z4@iL%CHBMiF;)?tu5jQpB-?fezE9$@Uw_u)5Vk!kwt2!>3{Dnse=Ze;x&vyd%HBxh z5Uj)cdVJ)67s?xVq&TeB??5u`^mspBUBC7*TJR)i&T6UNqW=RC2*XoMVk^OnBx0)H zdQ%FdF4V%JaX%AC^mgu6J}$BGm|j!r37rDk>d@V_TP*u!TljgT1a(*nzHjrh53yq^ zMFp0TFEVrm0b~Ee|F4E~D7LzmOjQC{4r9FjhK_R3d0GsJ5`U57RYRWzbAl(dN9&>L zh+^2UI6@EPlUw*jvfzBEvQTQNZNHppz0P}a?&-RS2I|i(`Ecu?I*=WFgs9Sl5*482 zKF#zPi=vyo$P5eCZkG+DCtnSs{ESv=b;AHoV!6_vbT7hy%)!V#PIsDZk!|m*6Ws#o z@k;4;?}K9~bdhYi?s_VCbe#CsA!ss)+BAYdSZb^Kqs{TI&IOO8fg!dkzPJAaGeFG0B=_hNf7Y8Nehbf{Eb)eQX2l$O)Uu_K;Mp{C z)pKEsyb`?#l#Okiu8f1!jjTPh6{?QcWnXQzOLX!iBFbYqO@m~n`Tri7;|xaDr_K&k zU9CjBnG0`}0y=xL?*4Qx&{CxW;O%>w_&>J#(DkZF=_XelZJGY2+Znc!@ZmH>eO{i?<4C6>RY5tI zXFRbj;2%viSSVeheLv5Sm0*RMPt1m{PbXaBT=P`I#ok*lmvA%!8_h)A>LQwmn}K~^ zP_>jk(@LhX@QzfC7fP3b3KdtR0Kb)Ge{O)LMF&T}nx-y`%sIgR;0-M3Q^?>nN|}3? zR?hhjHO(cE-DCnSVr^#kgzKeNG{&EE$wI&7NyMj?=8S;j{(Rc65P)1gRDH81_pcYj zaWn(M$#OT6n&bllkxLiqc2oCrC_p#z>6Me!f9>t!g#^uj;|W*r%c1T`$kwLBex%Y3|(%X*`oSz zv#5kXniDeJA_@%J-hKJ7Sv)Dwe+N$U{ItmY+_p(W)My6k0e;*xeO--Rf2ZZlgr`ZW z(Wv&(z(>FQ(X$MsvYlnPt188rg4L|GKfZeT_T4XwvM-=eQhzvU^ZI_L-t=s18$ct_ z;+S;81fTGkB2p2>QkXoACz$#~nxGj?+*mf1X1p=g;ThV>(R@Zk>0AfH&$x0nG^t$mH#C>QumVVbMt1!_Pk~fz#b9cP zMK^$MApRwJ<&8FuthFZbx};PJBr!8slK>5X8qGV*tLPo~-2Mj0kz89Tmu-mv`s03_ zbMEc_ElLv>rSy;a|Mqb8$Dd?$H(sUDpYiYA)o)i!y%3rIZ4c4Qo2zx2WJPqd#oHx4 zxw*a41F%T)NalHebaS|hU%pt~{2imCXA-u~lHRaDW6M3rzM z%y_TAf2SY1^@>E;r|;wO*lgQ+AAMZ$JgF)v;(BQ7&Ay3$>M`0i`}WY%G|6gR*(Iz0z4^-(&sb71GdwLgqXoZ@U)9_D=wVf1j)L*H zA9nO9R^CO8`mjtBE?H$({pnbDyJn}10P`i-_nP)jW2P0?W1dD@!3LISFbKo?%OY2w zj&0vvM^n3h-`OV>m%)=G%y($8u?W-9-istTl2t;lA1i3Lv_3PtA6VIb+z#!g!C0GKEeEm3RO~T$ zLLk&qJ)Y3x#UGpK0f@K3fYFxUCQO!giJ!llf4k0Em85uo zY#f#)nbg_TAC=7sGuzIDHK(l=h)0*1A6>dAGdoWCwQ;6EtO8FBb`o>2g z?KDK$@2_W{O0~n_!?!=aeseSXQUDEqT=vetUgyXkd~fkcjqsnZewokA&cAoikcdL2 z*?BamFPQ|Vh}phwetG-K8grpDKqGlt*wFb{2liv7vmfP{)OoJCOrvj&{Jra%8Q1Mk z^zh3}BMWSfJ2o%m1;iCem5WPEIbzn_tp>1rez@+OOHtIWn9SEmkpsm?}*tcCn^_M{Kl_GxAM^Af5Ec(`jj*~=2^_e-{ znk6grtbu&9a#Ch|CMWfx1%THnVaasOdTGtb&|@>)_QRpseH%TO$M>Ka`%QE^G>tBe z>^z}9jd%TlidwTLYfYmh6}rSPI>}5oxUEfUR%{i;$ zi5HS*3NMGgafEjcQG$5r_pyT8!-5%}!WtrX8o|6yRmnId(T!#g=&d}+C%aAOheQ2{ zx~nm2*-crZ)+%k?_C9{>SG>xAT`ay0Qkc_QxzFHHGozYUVy@gzt9iZNwy2icX1s=7 zw)@l0)J^NGkf30Hmr3!tt_IsnTfR}W+%+@92C@o{^(Nk&0=)NTFj}SEBZdNvvuXC$ zB|@>DlmQ$u$URL-4?s<0uR@sOuuNS=-QR`PMO74)pV*Z5CMoCPyDmsyvn+l+MTZlz z?s%G>EwOBK$0D2-rA#tvLK!=1UjOOU+aFel+B7YT_?Lx$NGK{Gvo(xmi2+ez#9&cb z(RB?BYAB&2{X(;E2xWDtw>IOfb<1^zqb(ohc2q8Maw6 zr+`5vg<_)EHLjBAwF>wg%W=_yKr^r1_oqEkT#E^6a1ufn>=Oj5j~ybcYg&bp9TV13 zgE{)sgjiPq&dZXJ+0UUv=4HM8b==qEy@ISwL#SncT7bZsvMd&j49tMEu8)AW2)3pM zW|_12LC@db;>T?>j`i@k5=E?oICUkp?o-r2GsB`6GmzxeyyHO3Q%b495!QFL$m1Nf zoqnb%H5L(Ve=W2tyza}G&wo3MZRtx!AJX;lxNkA0HoCDHA1je!uP%)3VA5ps0yl5c1hIeNXe3vYeI)N zMdteR`_RiNcgR6~@_N6heY2$S*mAzr%qzoxf-4yuo6y&RZFX5l8=D$hW4XU-iyY={ zQqEDh*z`iNu1n#RXBsbffET;Xd^fg~Y~W@cMmeMIOYZGh>V6P;z2939G8aJb3M6cVi*t)E%JBMoZEm^GGQWH*dU{k&ulP% zQ;Y&DvE?n4C{3m^W;Ot!aVjrHM3$E}RGQj~A0H9a>u@msFU$5Hbt!~9Dj)*UdrFJ* zW#5GykOdteT~W^s^{ti?h?Z>~NI`8XlvILU@Cu}#JGu&-(e;z>8UIda01u0qFVYKs zNQ_QQlS&3EzC#zt=lr*?=m4@yDGy zG_)B*GhaS8ARi=LcR_Cc?S1^(@b6$ayvXB^ZGRf~k88_o^;U0l*Q@Zej7)*7PU=vR zX+}-Q_eqU()3EKqsok;YW(m;8aKTdY?Md zG1yeIo%-QXx1a(y66tGbw?w$M^SG3RpcR_rwd)q7M}?BFx`mb$u;g)n8Zq(0a0Tb)Dm9tVG44Yl2>~PcYT<_Aw`FoaqDCi|G@8+D;z>&u|v8 zX;Enrn%o~p8j_pkvrk5MV%Xz9gG~z!oD2ol%t^Koeffxe-69O)8bc^$T>JfF(YO7n z!=@j=vd!WEK)^Ul7EQ$&c++XaDoX_wpz(AU^bZu@`6F9XPMG{1FM-Q5m~wjpyNu1G z_gc*kHlfd$>8m{lI_pAzWOUr34yMT*s?mkql=dWDS!V&nsOd6C*Bc0~Mbc+MpJ-V& z5Ky^r2vOBwCoO`aBgIyv!v~S+e4)jVv!C{+S(ZUs@hTLwh3O?;Na0;OQa!(;eM78N z@QO**MYl9Zkx=Cx?P!l!m^XzxX+T)HRGa5%#YOqmJgt~JrhGPkPc!Myi3(E`o+WHp zpF=EA_rNQrhgydylgvn%LO3-#?q*E~S5Bv@FQvj#Xa5CoA$ zUFFVYgm|!MZ|9(N=MtprXT48ev4o|*V3YiL90snq#uj{Q+S!0Zh2`8X_T1N5mdMnf zm#5}HafZ!QJAK)I=aMMwD?aD`l>d3|N@W&evrV9HOqoVYRf-N}XjxqJb>YR9c8*lO z;eLz4C!P0_&O1@UV)>%?V70DmexJGU1L-;qwjKl~13oTm$o6x)aX~fo^RdQ*Zd-^s zA68x#ErMpvOGN058+fkEI69k~u|cxgwAD!_EDqeKR^)0DheO!O()t z5ISC=(pJ{6pCuP0Pvv{cWKS2Q%}(#Rd~UlX;5c`Z&)hzk@0mos*|SlV_M;#unYm#H ziiUF$VIy5YB8cgSNp+rfj|c$-DC)uJ(C^yY$Dnh6!0^8?;C?}qmsc)~olP2XtZE7i9J(Vn}aG#KtZ z?Z|D{CWAU_3krcJ1^b;lY034mTY-eIeE1Nwr*e>3?ggoF5XG_$A@T}EKw6@t&ouyl z06Kb&!Uc;TsKX7+^j+hO+JGo8&)gXzt&4p|d_9IARr0T;kkEh&a46(a-Of9yMb=|R(~xzl2< zB2?-=+Tz^C=Zw}4x4m+TzK#HCg~2ScD($yGRu}Ok4`YQ6WX74i4m|SjdMO#Iggi?O z!TtHoe@8D#U*t))TC+UoRm@YCM}Mii6Ins1ukyl1US5)kU)@~&761GLoL>e3E0<@& z0&yp4RkMoUe*$5uul+Fx9~$=HYCB4pp=zYiBbUkLR8Gk;Zk_U-0k9r7q)n+i|o^v&k>LN6d#CRrB8 zY_q=zzJ0dZ{1vO!4o|4a1p$H@jejmSL|DQGM18?M}lYO8~Xg} zjTB~=bsS>rn60B!J@%KX+aGp+_1JXnUv^!&t^4m)S2=)?C$Nb#+q?ciysmd-ZFXc2+cEjOZv^}18`jt3v2U4> zF|D}9q3j-irw;QVV8c4fm|jd&dTZY2^PiZ~7Kn{7R?va0G~u(oNh zh|q3ZL@>`V zLbJFLuo7#%91$ad6o-%w#+g$qV|VqI4*V+{UFX@0_I)hbml7nEj9wDq_m( zby?lnWMqx1dzu(R(BUXgDr@>0syDSPGTT_gahgpe72^Xn*gmUxx`&X~uEV45N za7UrA3$@$X8c2`~$Fa`Pyz%?juQqR1KrwZg*Dqa6)KAisgTU>Ae7@V-e!CW_rlOFC zxkBjRb<2ja?8oEba+YUsQqwkLQ|_9-0atGOZm+(7|BS3^k#k#i^JpAKV31@yP2;&^ zW@m!oS>Z^C4)opi%hQ_8W0!`yLPe;Gb4dmfq)Bd9`~NGh`2Rc?P<=U9zh7}f2Pxv@ z6Rj}WvpIiAi7d)vVWE8qNGVT~3 zwkVld(I!roYsc-ByrG!k=8H!lqfv8t0%? z72*th1y8m92|hG!+q56pLo?pZRww$Y+mTgwpqPpf^|ssX6w=Eu;c+&tq&3e2vZcX) zZ?+8#hiF3Plx*94Xhv2d5t|lkKv#`Mq%`~5=n|YS^9nI6a!ZEg{xD$MUKxhpR#+Ui zPE^>|8a=O* zJmFcE7q%8D2{+e2Jpb{k38`hI!e@1oN2KYW>N5|8HdZK#1^Wykk;^DKcTh? zkI!gxU3VHx5C|3NsL0R-dJ0sS$Exno_#89SI%7BE5vUuryl0M&wOVFpP(kT`d7Mdk zF~gbDE=W?nrS=K3r94o=oSxXJUOI{nn-&YE$C}z6t-93V(C1WrqaWxNFt?UaVqrGP zpy3Wn%{NA>7E=##Y|)R-iI$+)>0V3oZ(lrr`BFFRQO;%RROye`FID56_^sdO`W5^A z>mPo2_UaFB7XX_O(b?T^YK;hgkQGH**iRqcuS_!8@H6c}_`#?w55oYM_@sYmhT6tr zEhtl>*vph6RmWIh-&}Zt=|%c=nVy=p`iH(5$GYWgVjG=4s4yYLm)V>;cj=lV7<@`J z&Fwk7KDM+kWyOi$BIsWpO)Na-w*MOP7P*xcOdu75a3+}a^vY5|aP9*Hv3X->2b z=YtwY(BZKe?tB7Oc&v(ZM!7I*okr06c^W)Zy%us-P+yYK90#=OnWOBF&@Sq69y-Uw zN(WN2UfLu{p4t;enJM>W^_Vb6=WmVeGf6CecouzKQ=)kaBgfC^ zbS7#$feyGOoHFEJTa)ZRgC1vOsy@94k*b9|y^g1+Hw~wkXT@mpOLeHuL+T!1B0#cG zxU%^V-7np!_~%I+9QDA@3@@CLFe+Z+hpq>_t>!)v)WSR8=`qDDUc|Vu(-_i>TYP3i zbDjzD3z;qFo-lZSlGy-Es)E(D4e`;l!=6E!j%o=D3Tq z8%a&a-*?;Q_VL6_qwvx9MVUYE(o<4+3t7?}jyvSoG6&6n2}ADW27Z_o(=_}z5Z0JX zTT?x%AmGDG6i?YtGc=DX42rU^GFY?I4A!cloGw6Qitq-hx&Y1Aa6!=Qkz?;tW4LrSzkv78A72=_ca<);2&%0C+A zTmRDjR%R`KowtxBsAM;(`Qm2pf^D~oiX3fX8nix_qMNcZH8_{tfJmAMoF=yggURrd z0hx&W0hy`q5XbvhM{bM3-5CXx(nQ?J@TX@3vFUNltk9N_LHDXWYT0XIeL97Qq6MYM zB~{$lTKwuLW*jo9n6}ipgk)Sq)385FPTCg2=x=q1$P{xF{Lf&>nPP9B)q#XZfpJ(X2>NNV<{ zLApW)9KU4yBT!5u#WY=amm|W{NnvJ`Bbit3Yp-`6HHZSZGp+j|$fmj8r8k}ibcxKS z_*M;n9EN(|RNW5Bjy*tE)zjEdP4kT^^p_Voq=K~5y?WN~qm#9A6I!PlLGe}B_jNTw zn+z(nxtd`;O%cdeX|oHOW;_k-8dV4k_OB$P(^mIfIG33m#XJx5iR)q;#nH#3!i}+M ztJn@PT*Q>@ulG0gmio!Ic9Y2m-EKDRFxKUNmLfiRTV3AKh*1V_bsw(5Q=p9}81lxz znqlT$`st8Bak?$JsZBqnR+=+U{qp(CQemc)ies(vpc!zkMY9@NSP3#MLCr&Chn>Oc zAb`3h_w{@L5KjY+e^(~qJkrS|8qPH>U8R)TRV^W#B0__(O0UwwK3xV%=Bmg1EE@QK z-QHT9UZATx8MQoJSfW)HiJklW^xVhCBFUvI5tq-S;0bX=H* z%Vzg*Jdij8H+mOMFMdxs$Ga_ z8BbdU)o{0%bJ3X0-GAy|{NZXW413+3iep#6-e-)OL>OI)3i;5Nd; z`FIF*Bnqc>gd@_yCy^vstV;17E~j)R=@UA~QOX(3UQ+FnCf3$!d3pjIg6@6=EtLho zeV6~w0vCVkSN9hbzD3#7_KV(ha2t7O64Ufc{=#wMI!e^lq<2|yrtgwmvpL!?&R(Gr zJ|Ex=L3IH}ah!>7g0yiWVVaK*Y}=`Z*W3&Hg_uk=XcACe!KS&&H*R<&jJO)x8l)0D z3RAuQi}^*gcNI@u1tq^dRyBKA0rJ8yE`qM#4o`oK!tuDqiKaaqQJZ65mwOtOeWX-F z|5=xV5)yrVK>6sVLcLLiga`}UT38KuNnBa?qgt};6|Uw*5_~w)07*3}rFs=c_x@4^ z%64M9O4S=Oo|rQBRY$0hb~JVpFRMw!=TEHe`>v;htA*8k59-3nXj)EBGT{z?0=#&8 z4&`Njz)$j!aS5+j{+mz>c8C4Z$G4#Yf4wHl(n zWo*WydY#W&k^#e0*9YYG(HcGR))+I?J9?eN%udW(9OY<~%h zhZNI3nd5(2#@%Lxxi{5FQ)#Rr1J2!NHG{k1u$bk)-$rk!ImWKGccBlbgQ#=qRB!sj5kWUYArPVcrZ={i(jP z7W8J8oGyp&tlW#~O;NxONq-Mdzkl^3`xcKel-&x=P%Mi;lIZwj*&eAWP1UloyKjvP zS`6;_=Hfr`=bx&S=%AM&(*hm=HJ3os0$YEZIM@S;Cz~HLS(u`FMqEpz%wxv0&yZJ{ zcigJJ*^-<|fWR=Ei0ta>s;|B}n(s*zQWD`G^>4ku`25G5+zl5I`4;}(UA(`b;sv7q zsrTgTtBX|>#wod~;q3yST-{zs0hHv7=7x*EvCmbawm)uw6h zNYfssaY=@bjN57?0~f2|aH-URg_LG$gL`h2D??V4MWP<`)efJ0{v(a_(c&-i9E%j0+oM2Euml2 zj(xY8YN`0R<)k_sI2^LAIq7c2FI%}Q;l^kmlnhdXDXj%j+XT0c!TPaA#qz--3J#wn zTGwq;ZzWW~F?n8UqXf+$ompyMMqw1idf5y4P&+FNvkVTZjwx&fC)w~@Vazn7nf4?L zr75dvH-_Y2?M@gnNoPx|`rUu9tA;JP3Fb;9Dd0a=I^5g{>7f@-ahOq~OK`KO?8&2$ z8AYyxc0&dL|Bh>{)Kx40^Z6D}(;$?ff)_wK1N&tVi@5chc@&jlp8iG%fr(>@4~QkZ z%K!-3HtS~mm`=?txkdDoX20i~1_EUF2*2!h-2%{D7HJYZV5oaXOGJMJodZ(>CQEeS zFV%6FIL<0zKt>uaD<)0}&g1t)oDOi9#frfa6B}UlW)Xvl;wTAj8;w}78@$Otwx*fu zV3aRHum-~OmihL$auHw*7G2X6BM9(sKyYCZ zX1U=(X~>5L{rqmHAIRQ zSZP^s7@_o93Rx<=QYv7B<%>9=Fi;F9%L-JJCr_BP0O>a2 zKij4;NQzVK3b4b7W)qwgXJJ}qTH++KJd|ri6lpx%@*a{8{GEDGtS9?!)BIXjqmBv6 z;3y`FU*CV8Q617xX2|4sYOc5xO_pktxvmFOAH#nY$B@*qYBDV_~1wb$0yi*7yf`ixmgp1FFO$_$TSoR0vreM_bu^aEuK|t0q z_)~FiiU1Sq!R@WtG7F(>(0LrlPKBL9MBVj0uMK|?a$xDyl$BRUY!7LJ8a{YB%+<%Z zVN@?xmbS5A#iW^2H*RMIyhm#>l#iL&@D#1#i6ou`yVc!(k5KZG2lDL$_EHtuo@f|W z4EU3kw%k77GeoI`uddJpHZ~n>2Ij;KMFTggumU2?&lc;3%_VSrQf{o0TpB2RC@_(hmL=g+w=jE9!Bo zcDqO7wYO;*n%?chx$d@}MpZuVZKJHzQ9THx`NY<6k51!3!_qYI5S^r&MG?R_rDolI zj63l$SxnT%EKbS_TI;9s=O z8XjB|FuF}o)w-MeG!f3z5u2z@?*UoXD>-<@NPxuKd!-Ppb7)M7cq8oiZ;=Km=&64> z7Yv5(@w5awDU2RKElSAEA|xt2K?rrS2TgMEhIAL$e3%&=V*$Nx`~pECU7s>h>CXaU zU-j?I(y`g|VXXECHT!w!o6&Cwf8FuWONfkGKwSsl+%Lo+ATI+{diV6G;41>4lT9?BflTQM95vC>tG#<>H z7uws{*8Z(`GzJxw0ql<$Wf-b%pnBp;aAj;VvL`MLS!{#p2)c3VOf-TQPrm3dI007yg$==-wmQ@ajkj4|KI3j z^c>0}0}>9dz~atRRO@!>`ZfmIGyAT8xnbM%*<$l~nTEmOfOCb+I&{^FG@N`P(T z<*4^hF%DLBRnrnWMXE@7O)83byS*^4E>xHstL^D#IkmZMp)1AQh*4vdiFyeJnN|K|w)Wr>|( z>ZnDH0fY!vNDQpfXG>tukzfY4VqOcy;wqOBmKUlp`eAD7ce8)2izEQ79Tz1)?7(HS zVmPD7i#ca30d|L7Rimw?U5wgTTITs2`_v13oIdC*eIgo9< z2}IhqL{|594z%O7>{@zpWsOssJO_rOR!X98mx0LoZm*`oZfB6;h`_YO=XwihHkGV) z49P1mLBXc1&?3I@*_kE@O?;K~UHfoKC8$}7y!;K7uw@$#yw=lSAp+y9NS)DqD(z?v zFU*uAPPu;y@32yv$+5O15%COSAcr2n8@|V3Bp*VpZ@c|*@A@}1|gPD&rVf=T1l z+Z|pNtqooa-8JnX@2rlR7`#)_@bf5rUQ~IvcX%+PTJVWiQa)$RXMbSL)68tAZakMx zL_}h(j;*=e432F(;!kJ3at4o)cG%BWEPhd7G{S$#5Wo>1DHPOJQR=!}T-Z$eHGbn^ zLr6FW{eqQ{9&yRuPTwt(Uwa%7${V~i3z-dph#I)bYl97M@rD_zi3r-j|M9+4osuRH zD#ksUY0vRSfN@^Q8T~4Wpy;r*zpStTNxUDOvA-$%1Toq#U_cf134^%x9zrJ}I1I1v zX(NBg3YW%jMQm^7;V|NkgQhfqQ~ARj^#zA!L}Y9{KG;x1YKnEgP7nGE5Am_g--JS$ z=zeCTuP#RYl5qzxu{q$TDekBru9D_=U`)aJWb~^5Mac^Jx$fX&z#mLF-X4Xl* zyo7kK`g$9B5MD8gw|7S04_-4CCeFmcpMzK~f1FW<6Y-H{?pM9bWRZ!Gs=X5*sL2oU zSXKz8{*t_X@(-OyX2f)Q!@0VbXFq@1TCaOpnP-egw6!5Vpokj=X*qp`UGXHo=lbQj|Q6mOKnrXG^lNaSQ zGvD1Xr~@UzT!!SeoE~HRIGa*rS>UNA%nG=6M23`^8&v+T!G?=T=(rie3Nn|`%>fga1LFcIf9rDG#p)(&QR`ttSH-IGs29I+s#fApWr z+q0MN^5AATi-T|Qznim9XG|^#^dHOH;LYXPMI7-oxLjg&LBCwC&(sDif5?*{7b3X4 zJqzEwUR?eIyI>vTQOe5#D=t@OyeOj-OYY9XpT2z`viFPN4XqSO66q!3YyAuT{e_5e zo(L{@M!&`MHg2hoB=REBCRj{gu=BBOoT^}?hRA^cNl_YcY9m4D?0ly;M{7E3%xTFRzzj;#F;oUqF-LVE46+v1kWOomca$fpe0)K zeYa}9)cv3q8bc%uOA@K5h!sL9>-BnH_fnc}M^~t}T6HW*Jk?2Qf0HPqPswlvY-Ln* zzPI9%;zX=}pp&>dX;b%ga9ceD)oxc;J!~}8pAL1q#L?@ZYw<@P+;+YEPZDU|ZMWSb z5m8yDEWB&l8~m&;cCIwXL>8s)R?>0mYPlg3EbA3CeU0OSUtYcNbfz@*-C4LuQn2@DTjmwc7`I=S^L$B6+!yfeRKTskvpipIY@_kl6)a79~7p6N$H5l5BNU=s`)% zN|+?cmFOh(9=DuHou_bwvb1vdzgzBS>Uub=mDfPTFZa%yfBIW3B8!b1#4KW5%Msn* z-_!m{Tsr=B!+qltDO4ZZq#cjTp?Hpz>`Mv z^;M(-`g+oiyAz`Rt#4Yjb6bz}D4@N}SSq|*Iypte>^f7sVSGlNNnZ)(isey~TV)L|)s8k~ zvnYcz8h7fpD-YNcib?JKq5p9*4OmEn*p69RhIhU~;qajFiZNwmwwm>-Ew*8dz~-6a~RM>*vPP2DO|csa%QyB zw3>ZPe{coHc-%wp!l%0<0gVnnI8&22*jWC;p( zT`P73`F7iCspLzFILcG*m`lcTg=xU`m(k)P%~+H(5nhs>h`y}srl4Dv)HG{A0{snL zeOp1F%T3i+OIoKhgipsn0aN3?&s2#Z-c%Yhe`W|bG9!uRqyhz!H{%JSqbNo<%hYn{ z;S)gtX~MH}N|;$ZV&>dNIKs_$5@KeV?~EdwJ7XCMo|a}M;SI4hpxu@-+VbN71#YD7 z!N1Cc824A2)(s@IpJuZnit}06*^@agm3cWA9&7#QDm-r%oT;<+`d^DA926y0gaF3E zf8QCuk`6@l&ksltzuY>l)?lhsKRF*|i7|cTs+9{~kXeN@T9T*IXufuU(nz|WETn%W z9fXM_GBUpPgBTI$i1ShF@`T&WpX91gf=joD?e<)|_fR7Tch<{iI3Xfl%+T}b5#cBc zor9a}_|7H!PhkNe*vLKAXMHc!>l zrWsIuJWMkzF4=ulIB|aRwiLm+xy>H@@CcvG_%O=Q0j`{uJYj6J|;@qZ_ z$pK~qur+SkT6p#Khnc=Jcm9CzS#EsV!U65f5yh`gv4?jx!f)>iP@%}4DnQ4oe|wCZ z+#KH>JhPOj8~&*RL=$wjH#OOSK)ce_^pvQgevC3Pg-=xRw2u#={eFb4ARIAw#}@Kf zLg#kh^nTVtII%KgPhj+w1L=#DgYU2$n2caC^*AiQ?Am`E+9fGS60G1CpAlsEFf}5- z8q9r)DR3x{F(!TSJ{*aZrg>pAe_wPHovS>MIqzfA4VCqDM-W=4qEEbISAxzJ=A zMwgccd+~lj<-B(pgnXXn_A;I?Gd79_lsRUrC{R!dhZ2cVpgT%hP@8OWn#6jm@K+u; zofwLCQ=azXJg8*WB>|*uLCp%-=m?cjOP;}Gh+({>jaQ1!fsjbkLjbBje{C{}3w5R6 zL18AGE{4lyCX;|GSY&$LdY&Z^L-yCoS8O^CJ?i)veV}*&k9cUi7S0wv z+)`0KD~xl2(!M+eNj53_O)%RA3coo4V!Gi4w0iLROH}#F{*oW`1pvBq0DZKu;$U$O z%U;}${Uc+e0#~-Kf{qA0e}Gf=sqPk3lczkDtu{-{r>#gL+WZM4PK>AIN6_kus(_!m z?%-AU)3<;A?z`ZPEbp=;34eb3-J(Q(&UkqF_J`n4KYsuH>mUC6Cyy1nG(n%K#>3C; zwjSW3Q~}>L$P8^K*@C>BEHN4M%S@Qb^Hk6_+r30xRrRmB<>3|xe_v}QNFt-an0#ir ztPup%C)=syKkD!KRlYvYIK!_~XDFabiy@)fc<>OHG+{`5_^Y=8j9Ov`dmpY?7z|2n z(q^q(tHzylNNSN4{X>CJrUo)l7I-$gwkmS z(;HIOvp%5<9uTHHVxv|!RUQ&l)mQr-G|5X8@QT9N^r*#i%Oa`UUv0M!s&0sLNoUBc z2A3`;@sDCd|1dK)DrA=1g5|#P`nt%vwgQ=34CXXHZo8ZAf8c$bs5Z$nKEDdD`vo~3 z)D+g$M=$6TG3k9iCI=W4tmC^Lf3_syw%%*UQ(7JAA|B~t>~<-0#oRHsb9UP_>l1#L zut;Rq5Xby3R(8I#4yZkkkZad>OM<{k)<+D!S6G5`bGVR43g|b>M=r?~bwP5ZraIE2 z;$ArmZ<@9xf1o?kSaz0VBRkTRKxF*DZc>raPfUX@;vy+?Lm-(@DX|)K+lD+% zC2*`vxh+!0{>w%geA}$XSf;J#p+=e0smUp*!j*&(7b$7idxQ{BCZ0njC<80kjkAc2 z`mt82l`18@{3T~6K6zth0t}Cw!nWQyXv0v~USX3}$DG!eXvmNE|gW}L+#yD}o zB~qqbf8qy_EIkP-if|1+@kg1F9qB*`3pd-4^{*A{Vi~qet(S^a(Upe|>s4Ar-QWyx zzr#j0z+9IJc;$$nxl~r1x)kA{#W9I0bx-pu60FjV)iRa11$LadEcr0Fz=UR;U^;MA zLd*oTY+DGDz~WAQy@Go!6*~!Jj|&ThKRWtnf89fm#MhCcpu1H~B?vs=(6{w`RtX0! zX$v=uj%IBxHfnn48RINza96qhpZm;MTxw!$ol|foV7F#t+qP}nww;dCvHiui?R;_4 zv2EM7I%bFSpP4x|7iaGGYtzFL7{ySKTXWAozs)O1kD}Ck+^llrHxZn@wN&23*#DYuiN(_enE-G< zd%){;@0a2I_&L1SmBIh6A@{`76qaQmPPQ(>l=iS1cPw#xrXddWU=&L{qg*G(!J6|5qF)5 z_9v9{lxwUzL{Byr5!3blv!5y z?~sSnSTZ1l{><5wS4_9U^jaSPE8G-bEEx-2OaUH36wHs`uVvfLmn?qiqg{S3=`eQl^u93K zka6Xuu^uT9#sJ$MQ_7P@#S#Oaccn`)5XsxuI6CvMn>3Gm9NTE8a?<)Cnh?dN77Bu^QHR8R3X31ViqNJIvv4_-#9x-HXH-rLjI*++6aiJu z6atQc2#r4J*aE0UvK2%wLns`Dx`HC^NhHga$LiN&q*3(r*h`E*fRZtHpNFM+GZGTg z2?p9+-#s42F?kh|4*|zxSn{^%1D6}f>y-2dL`bnwLg&`->?h>0IZRB`J~)2d*Xydw zgO!M{n?Ka4%9V(^p~LnXbE9-Fa1)xNwI$29B z-pgTYx9`{N5LuunHmm6^wnbP@xFsp`CuHW z^J21nsm{Jt{%WU@sy}rz2<)DJ*Zu7x2-Kf`VOzPP&@dTq+=VAIW2`Mul$EK7>^kL-ut|By$dID0>#C`R)DF%-ByPH)NYE0u~DY@V0y%6ux%dAWmo~mgn!_n zMNafGrXIlv!MIp5E+4_90P+9TkXKM|{dXuFT!zr&adRRi4@VbTlxdcttAAZb1TIU0CLpiJbYoPX$pVnqHgJK;K!PhS8?^I=#dU@5Bql^qL?0v>}$8Ns=I~n=f zm#$22@ZOr0<7}p1;5qRXqqmQ9D}qgGVhpE1-Vrypwv{c26q`~bfQJfut7-ot5f44;$i#Nt{ zne6;YR_YS+=N;PuAnYKohINI%n82dfM9U2Um9IFhBPE$E#O6%(3rIA8i^eOyl6U~5 zsQ&f!-uZjXvWY}exr$y5@ff(CsHw|UN*wJF7S{#9t;OQW_;fzfq1RYRM0P0 zz+b|eZ4MPzy^+7qh;`PmwWRh7(<1nEPy~~}A(ed+-Qgt*5ZpEH|59oL-FP+GYZo52 z?FLX^eWrf%kiZpc6GF$08=7Wlaokqp#mWEu7VJ^68Q!eTGi|p4J3XNeKH>A1&o8iy zgBw5WUmk3&H%@yVD{`I3-zmhrV8XIHg;HYH{0l#lBInWd5FwN$7PzpXa9O)f7o09& zM8X)5=_B6_U{>-coV7&2H2}BCpx4u$8`a`9JaF1SY*)d?qY6#BLSOU3c|H;`52od9)qqSNM6W@NZa0(lMUQg7g6er`1>SY_#of_)g+Ijnlxxu?YHB$N&|6%G}; zR<>iMbhO>mw}-_aHWv$Pf>^0PR4xC}s~=U!fS6U(_~Em*7w~g5_mg=;iM2l-ejTFC zj%0-js1dM8C;w*9>CTcCQ0c@!u(ey2k(Z{9;hAyiTKCMd`y{8nQZi-WB?Dj__4=_- zE#cN^MWQ1O2HBgv2%nNr3!3qHi@5?GyjLZtTvEREz<)bTZM=vQN(xMWBWwYDZ66{Z z5}vc?Ea&CwTOH-^o%$TwwgwB&U?L+pj(?N^-|psbw2OV{(c#iJ3GKA-q*;WbsJ}z( zTGwgw^Yrb)3-pU=x!hM$)vL2C$~mSbE*IHOlGG@SwZ7_@ULaZsthvFpg)EvmfP=JS zvk~+;(*XuXcLWf{nSqEhl4^z^x~GG52mS~0G^fY#pbQKDca{J1A91M1t#ttiM-i}zb zJH0-sXm-s3yBPO1CKcZ26DJo%T9jbd$+4NCvkg3qh{&0bwpl3jqd=17>PtF}>QsS{ zMa6WAx4AO>6e8`$3_`p#c8&gJKOtX?>;P;tkYg|@c^ zDal4lkpGUEnT-RSf3SYezccv%f#HLTO?YPL{sR-k+%WjlL;%Co`1!JhE~ujz=(>p; zaM||fKQo}9j~UbNV1l6B8E_w9uAs^p0UuxqU`MwZ$e&=epyC<4pI{77kHiwOedHOx zKf#niBQm-^!L&guGtj@l$U)mOxWB;oaqVY8h8H@{cCKuGe~;q^ZVa-m_&YRBGe>8{ ze1RoEPC4cSJ~D{E!IU6=ZvM5kIe&wNf`ejaynuq|Yp=8kCzVSA!~+LsGZ^AKV7y>3 zKHV2$CEKVgL#bQEXb*U{n_`-X_tyZR3OfbO|Fh1A>%TvFV&`V(`hOg|;S3Z#;|B~} z2w=W8K;^+D#}#Ntl8YNZ>=m9%$(sy$jGn7}FMO)8=Zz~X8!Oou6|rNOp|1I#UC`%c z+TWe{t@^V|z!dPMe!BC5UGysW?dp3!1&L1Vb!nUv^7{NdLWkgWXy|z7uGD96%XADi zJw?VGV|M%QbO89ee0VQdhumW&qUavK2aG(w1fNMJ?x#e+|1b-8KW=o%-~N7Qi!T=O zKkQTMn=h#M!h;rgxpRDHEKTDM*zxU>$9g~Mt?%~n{P+Eij1mzhM`Q%iuzfXpdt3GO z{rJuX7m_$q38;D%->JaV3xcpZhg|Qnfv$fVmUHx1ynF< zG0+81>o;KdBx2>b^wsk%4&M zkRQ6o(++F8DpSDY@hckyrNtd|im{qqM}oU4XQ9Lq|Ckc_$> zC&PuJf@8nkTnB~t^B=Q8OdqA=ESK|)%m6=1CmP+Pg-wpW77 zLxi}J*;@SEpb%tQ70e+GJLqh-MVJm<_luZwO(ZkT&>-V4%Z7~%{S%dafJ%s12AC%x zi{msJwOs!qKR}`8lLD1Cqj>Y~LgBWa1SX4Und%ufSB9uTQ$G32j2WNw3e~HAF z8!uF2BKGExKr+$p>X);zketNL#L~>gpSt}O%d4aruC!MhW6qNzG7h-y{LVVtQU``0 zIusi?w{_pxynUB6iA2_8!1wP!yoTKxyrVD`GAPp_c>B+-MOGnCi~G+v>0kC_qHm_m%3UcEWwI5~CTeijY7l}$YwMI99jKvW5w>)mY2?&@?E zUk^qDX}96}cM@ab7$Jlr8k97W^5PpLY)C5_Y$fsJOoT`@yxU2XWU<7-GohcZAz4?L z>1dK#7n<1L%^Q_yL!^_Ewz_V0WBYo6&jxDJiA9QeS*&vjD(o(Q2IMip)NrG*ItPgs zGFSn-u1c6g(q1MWKzxhb4PP`NUEY&0#o@}goEA}N5{o^K*BTqN3l@d9DTNFftqApG zgeL%(l4g*)!Tvli+kZuVZ|ZN2Z6z#oTB16Ub$09FuZG+;6}Hkm|!9kprFv>kHE3TruQ9 zrh{Q^;V|mV2ZSpCMODUT;loW-jVJ6`NI0sPSx~2>pEd-kv_*p7)(- zGs#bNkcw~l+{7)zF<&S^!6&IuO+Cs;g#OGJZft9nWR8ZfSXy^Uw_CcfskW#*qWHUz zac|{fk~%E{yl_g3WD~k3UMeJD%{FvL4oR30CJt52c^C&2&pzmjVj(n=Sa2;G?{NQO z=w&f1$zDWo13n%62*}pYtIq%Ia>af&R!=?WA8L=%ob6+7PqdPvI_hMWZfJ?E!2IKv zOM8*HIl(@$5r){M7e!wwAj_coqfxBL1B{Xcau=Ba&}_o5wL%p-UgacHy#DUxBRSEs zX?N|lv9X3HnI?aOKMV~+qsp4REp0`{4tO^+P@TbWc_5l&|zM7nl5gjBIe1~F&(X$?-QeXNX?lgRqs3B7q zSq1q>Q)R5>S_dgh`amu%KkufEX-Nz@90&~C@`(;rJTK)6EL!nR0}xN)Eco0PtSEBs z^>t*;wN!M=$Us=dt%zP)MGp4uP5VX?CA3F?VpT7$Zhb*Evp6ZI`whGMABBXZ)&sWx8uCCOe~8HgOs30Rl@IdMv1D*e55GrSfr5xk^BCj7I`W< z^`!Wc^B8iVNv9R1v^<^$J(GApzf z>i0ntsx$dxB@&cjrCr6q&Wi;Adj9i$r>w%xth_Gqv>#XP=!rSpVk!QfXGy4xOV_~WJ1_TeKQw+`)fSSM8^9l=609!U2a zWT)V_duKqyAdt(QSxaY$=WRK!mj2k-dZPv34OZeJD51#i?nlH9xI!a^U6ueqrb5p! z$hBkhV>g^qi1LxD@eD8~ZGQFdVtK^%=N$p-RFm*G;?ZbM#MK8i)7fN0B9ljZw`EIr zc1q7w`@{2bFI_V3nbDV55C-IBg|J!05#eTk?N}fi59A_!L+5 zc`V7L-m}xPmF*24OD3m{k)KD@Zd<1CP{Hv<5hor}OLi9(qhadknR5Whrk1jGURLIH z)oq*0>exE+R)(ExPN|O}t|vmQli4z7j{AHupXiak@p%oksXW_J-I@SG1XcEkK7RnA zX7n4NR=iqmFq+*+ugTe=Zdpgc-YhB(tQdJ>{8T?kq82p`@rWZ({ zmD%y!65q3GT?hI$?Y{s)y?kdzX>|v1z7&XT1nG|?Fp>wQIs`mgLU4BAao;9;efXG3Qr)3~n`0 zz#tlcmuNKA>&WeHbHgLYN(EWXIA)Muw(Q2V&ws20rs6uT9e2Lyif4OTCErGRl2|nz zK7D4x$ozLXcO8I>x9t2l44L4cUYuy@vshwnVeXjoY25SgeydFwz%L{qRmU~pdPE=2 zW|Mhh4Vyf$xN^V~i7T4S>I*1@BQbo^!EaCr4o(+P+A>K3AG244Ft@ho#rZmkL|#&F zoL4d7wUW}S@kEanBOm(At@g?cyOE^Ty;NUAhJuXBUjd8p6^Y~u5L&Mn;73e2(QF`!3Ta;YdKyMT&N!6fo%w1cK9RF1x^^77ZY|Y2 zjP4qN+5w2~XwOZ@Q4;5x2uQVOzj^y4`hISGd9emFw_>l}Qe#jRf!68v`0?fJcolSA z09m&w=K{%ePCZ=2kqO1CB~c(Q1NdWu=i?m%_-4FF^hBnj(j_JM2`qss=U~4(V2fF1 ziYZAyqEg>DPP1Ht@-O(u$t~`UTo1x;{9l&n{{sBC0(c0)Zxz95#yz2V!E8To3d?^Z zXE}x`WBg1s2VALnIf=uPZ=9l^BmwQjmv$bxFKa5tnb#H>C zXbDKq#yT>vFN!1H1VKdX~$-NtL$pV8-%?3*|@kLqPms8u5Z!H2G^5tmNYuSYpB zr#)*cZt2{n;`LcYJJ~|A!qQTPs)vbjzZHrzh;$NNi<|?b*q<2CDi%lcl~|^M6(8xA~ulNn^RDKlZ!4 z$QT|oyu`D1+geXI%ADnsq8_u0lK`;q(8m6`5pjU^*b6x*KXFu1K1n!8&is32X66t)Tg~tyQx%W~FSF(v9fz=< zM2QSY^q8vY3_vb>JGS&+wxeXC=Xir{*5VcE*`(VPfx5H7Jb120N432kU)1i@i@fdlkN=8> zq3nz*d_c$UlLnqG`y!0D~%YoAeK2Sv*Pd(OSY1{^xClyE6rD z_Td$YaNV2*Urlw|We(2S@>_i=WcN|=f%Q7+!;)_uBq@&4nk8*iI-SgRa24RNl;GT_b!N~bGP5}zBh=jP zU{_4z`mFf!f$GnDrCg5gyty#D|FJeI(JNgH3-aGCH_%#806gs)JgcZLKvzvtKRHb5 zFQgbYlm#GpU4w{^2ZQu#M#*v)KHwQXj8=%WJ;*Fca}orxVk5TNv|*-hE;=l3njaI> zB2GAINt+~uWdAAj1YTr&RhYb7B&-0xo0A+F6>;FAz72Q9`s$gA!Hkv#udis$NW1t` zqOBgwqUefI0EbSjPQRB$a?!!%q!UHuB|qokcH~o-x|fUg6O3r&Z0Vz3VoiH(>%vxK zC?~6#v#cvU^DT}RyT~c&H*Zm-I+9^FoTfgXYE!kHG4io-4p%5a)a> z-!<#F&+8n2{uK%DOvPrALP+DX6ZTXPXuc0pX>v4C0bXZ!iAH5=JBEJ8)9VvpD=CQi z3jZWO_I@cjrYa}e6+P1^|1L5JRrv7v6ReUaStxVeNDdV`|nH5HIY7;*inYQDdZiwe$1a$W8e#DxOD zKfw_9W`|~k%zBHc_k6tc{ogC<=F07Md!76yq5xU><9YD9cwaZeD=_kz^-2V+UxPxJ zUOwG*#N)ix7dsnIQ7>6Hk_e{37wV9v#xW!ldZ&#Hg?)KJtva@MUj^Tn{)%nqEGH+? zBhDIcsO>?o5skcQJ0%%#wTBV~X-=ExT~{%}M+HA1jf^tZ|C2Ux|95#b2Nx$-h6^V6 z|5Xrc+D|#OCd-z_UQ!vEz%Qp*T<#1*16TW&j=Zt#k$FEuBC-mPs^8E8zdji*us|CIN1@%ic%#VE_ ztL6P%d$O_+acFsHODWbqbRXVVJ^}B5KkzkX!Is5zrX$ZjRFlz`e~tsvKfmW*VSRz&Jvb2lj`=s%ze`uwyv#Ie}IQYdvJ3AD?65;WU{|1PU0MTk45^XD{118b`OrgI*SacXJt@?6ug~%K9UjuyQE};GT zXy_*I?}MGM5oW>=Cq-+sXR_@04X9~`&Z@I8GzRyknO<9V!O^rY-{kZ(k~cEGYPp+A z8Jd)peOHK}UH(Q^Y3rL6zmjHXXygi?iM#dxxmN1p)TKKN?gO^>9;RYWLlF?7Z59!8 zAGd2B-95&#WpyDEBOM*#WCO_mPTe@!b*6KG<0?fA)u~?5FFu!UBx*@p4@?C=kijRJ z7Y~Lw{w)Wu^u_eAIsF6B#Poi!VkgLXS?vfKL%{iBuIBUeI?urppiq>zbrJq?`dW(B z#yu%}Op$ff^M?|?BCqu9azH`?+GtX}g7fu_wKJ!EdztpVoWcQzmI2jEAY;qmxo$j! z?h=p5lOP9IHW<3Hl7Xv35I?a?bokH>+8?u|(&C2c&EsF7o|77)6L*9l7=La_xR zUB}H2LdeXE6rEO<>hO8w5TS}eWQWCenqdI?RKQG_piMK~>k$jeo3A0Yp()Jle)Ito%bUXbX-4ugy~8;WI$BHrkDkh59gT- zQMb%Z_6>&!M7msyd2Mg=cyKo10|HB`V9F@RjKFhGRw-)lNlFzV^&AOO4F6#w2e-Em zTf=e3-;3#c3;;~;pYnj=$b94V@XV`Zbd+)xg`*nSwe)#}rJ>&Zo-omzX`9Ki*P%BS zMTWZ@7wxu!@j9EdI*hmDcPo(&45$+n^Kr#CwIPwtIAFCAwg)t!$csNVWR-?Zehs(m(=#p2EjCj_8F{n*#BBitgCRba?87LR)|S&Kx9+?A0sA{e^O{xd9(+y58_^bEL&YZ!8=sQ=QLyn4p1yzdg z^sdng48V+J46>%Q5rc2R{qBXU0xuP3bY`Bgx+0xuR|yWWqFBKY*C;L|x5!46@Ow-} zK3nm`RLXF{U}bj#?oCw7NTHVcr2h5(E^aD|)4t236%xkAG z{t*w;un$J_-Srh+Xm2TQvp9B~bm?$WwX@@jBOpPB7IU`fJxO}xd~1)`hFAAJ7TaL> zCh!IM*TZAw&|t8E7%lP2rFH5O@b+c6A{2wq^8jL^Afl6#feg;cI9A@NKiH6t#PwOn z|1?%>@N73qC&p4}wgG|$`cyx^n1kPsgI^_S97z%XmK5Y~QtN{R%lBJKv~uSWu3uEj)02vpb@0wQov?vdbZ5a5DProU3PYpwT(;VC3YsbmaA8$jw)Nk8Nt z_YSH@@M+iUo9c-B{AR9;te>bsQ$C76$uSSftjHFiE+_(U4BK^bW0h14H}@Un zN>`P|CQbKxfRLghEO}peT8>qhw)-p6xo#Ra0j4K%(6hNVhRJb3yBeZAL0Ry803dmR zU$XkfnP2jW!xJT^DgiUT$k+FlB3K1wLF23RbvO)G(Bi!u?Wuhadz{F~8?-T@fayK8 z2VIgF{poDtp6I-o@q&XxPr#?@;g@@%S-2xyR$42VXv2~1B?`EDG5Ot@*=S~x(%w8Z ztvsexJaBikh;Erk9qV#tm{deQ14yd5Oed&GasORGg1w1=^q8z*2rUGNy3NtaOwC=# zptX)v7=4A1sy*~Z*23k(je0-wZ~QIPfj)B#dnm|E;9ku~RS@faYEXawn2o?+L11Tn z^f%CP{mKb3*EZG+%ts&75L%W#P79Ic$X5TAWM5PGybC#(*7x^uLw!!(2A~RRXm3uH zQI@eJnRu%N46=i(4OwE3d7FETk;AZM%f|e`S$N3H&sIBq$;bdiZ0iEb9~Jt-m4;@A zQWhbkmA}}+M;{s5KM$gqKvQFs$JR-j-ZCfm-{oTi6b90ELU5OHjQr<4%PJMMrh{&TH^iDuPaU3D2+|#!Ow0kpI60u?= zFfm)he)i=*hpkhCTbPB+1k#GRH<2skZWT{22(3UJBjI~&4t~B<6hJllt?_Mvr5xJa zHz+Y3xXjBz=UKqUhDr4#FkVo@LGjC8>gckimUqjal-p?8jYnle3C1dHg0)h+q2exy zS^SvTND)#R%NRKuk;rh{vI3Bw=4TWy&>=2LD26B?oh|ucF5NaQqMG2a-z|??=&^2e;}vZA6wd8#U z-xL?b)lm~(R&*UuM}ZOGxaz#UddvgT<&U@S=mc!c=SE=$PMftF=yR&$@GqsM9$4X8%o)(dgXc)@A{t=+Nx4#H9#0zr z)D=MQ=i_>E0gh0^U+kjKkxuf`^ZlEw^ImnfXy=E@`D~JThMu7QbHw*&MOVzzl=rZ% zmRYLxuU0#_Uuk6GT|qLyKfb!RL6@5-(!jb z_Zg`?il5_VnsjR<@q6)I8-#$3!)CQMezDKQMRkDuOxbK02 z1g|S9ZHjKjFAELTS_+AwK;6$G2j#DCbvJ!Y#pc?8-&KsdJw4wC!E&&Unf7(J^xFqh z+F`r^D0vvO4*$=8VF8y&umwQfqJm-qwY*|MI@HVm!Yf6WB?r9(`vA>l&4@;a%TuPs z+owx`SYYT0nVxz$Jmovfm%s0(W66UTL_-9ZPg`;>hIjVpZPk$Tn_K0ul>}{XBE{4W zD-*ZTl2c#}3)$%Zmbc?q7xaw!JI0WGfY?dXe#R>MP+^I-k4A6e>nk9coKd!nT3|cF zh$QVn$1<65H91mwU6c^b47DUt#)mp2zJxe5pdj0S1>iKvKfW-}m57Hg;IT`?NauO`+MdU3|h%5-<%ySpu|h+owrtd;Z5?F9Q- zq^Ek6jqENQ`0cz#Wve`N&mp0?HZXT>>3ZpNUA{}bhA|kSiXs&9CKAPE&%QikLxu@G zn<_(C&3#{8B}_+F!7aSJu7Q_5At*tTM(k`McdVoN-Nv(82e^R(18mx36GCz692Vq9V|}XOsBa-VAu~`Bg)e|1oPvu2c(b#VQP5-IIkOW1 zRhJ0(&+ULq;>=9PansZe3uN_jO}%5RTV#TVDM_8jpeL$r#nRY=e*95V zG^U*mjV}~(xmZ1v5exLi^`G7AwPBBA=fP7TbN28xc1UWfuUSuzv+b)qSs^t?lROdj z8tAs^#si;H(@_`}01XfF%PS7cD5^hU) zY=rVyRXr69ENbd0lK4;k*IxM-CuSj-68O`cLh+B3q$s9KXC0Fxsd-R?U0j=0$-D^pD|%#pZjy|WE+VZAW02+Jxhf-FHl2&`V>T4 zE9F{39Ya|5F{*fm?@V*W_dzx&6^pB@D0PrRLcj&4rI{pZ?{dhigms%M2uXyS$$Pi| zpopvT2a8qd8e$IOdL_z0E2`8&={4sPfUnxh1HvSrlbV*qL~&1 z$64A2JuDxbx8d28<_;Nw6lfRW%e@KkM8X%o*V*uk<1gkO_iFsJup}U1%W@K9!l6DO zV~MYYY6%*Sw4ntTP2;4T2O*DlVBUbKNCotoP(TG*-7V@?5)nnk>Z*v$qBFc!XQ8;N zst(El0%2%z)JutiZ>KOBpKgUn6eXhTRDwmPF?3InZcH%=8l6^)K`@pFs_0>h^~rCi zmr_S66aqiY17HaUnLTwLZIzp!Ie=^&5h1ezZ*HLs>u{NEXXBsD~ zY@?ony+X-ycXpX86<)zl4CDlxJ6zVU!gTR-;yca=z_tjaB#{|lo1ws%V?dn8K2nX# z9x<)^`|Bh7(~w@yz!hdYPY%7;7q@Qw2461+{*V-o7VkQ!_}dJb=F$x@;30h8tgp-f z0!f;%B;iofiX%2*V3A;+m{YRcOD|2=wc6-v;HZw4c7{_5?}~eQmf@azDyl^F9Z4lK ze=)B^H=>{1@V`kthGHOdO#TvBeoM1L=#SC8Ne5AUzOLNTfV%jThKrL|zG)V)B~EIq z8RjpbpB@m(Q!52G27dlhu~@*0^Svw$AU?>QG~_8ROL15*gv(&a*d7ULSuEh(7yiI4bIVm;y1*67@>^n23ycty?)fK^B znjx^K>2X;gn{?_~@xJs_*fRg!{OU#2d-u3aXgwLUI3<<9va#+XO1GO=8o!!1N77Lg z#|p4;aU|=uXU(A{@2s&2gc$(=49Lt9Or=4#>0-#}=D|8#^R1uM{J7}@8YU4!@@F*L&n645PBa^mm&ALoe9<#9tHPcV5IGw< z)l-<`zRF<3K+7rb4FN0uki1wZ$0~@=qvU;A5wfC-!|&rAgF?FnPog3O+M3-W3mWEi&v$>v)~XTK)sr9IHuPe^WI`Sl%Tup10Po(1 z5n#~hBYh@^WjKAH^lKn>Rnbu&C7XtMX_Vx1HGDEn&^2U#)B(TvC@QIJf_h2ONPZU% z4*9^seE21&msY`^O!o>~d5GHr?(xkw=t!aLHsEg0dHZKd8Zlti8x1Pmpe$5ZY>H{E zyGOgR>~E&(wh=VTY5xN4sd7PDEm~7vz`OJs?P}v@xP;L) z!-LUFWa{id4*~RJZvp66Nzx zgh_JMBaEk#xetZ#4i7%oj1vdxzzAQQ!asIklUN-#w$w>e6$aQT8*4qn+R$Y-IlcB|X zLc6jMSX82M^)0|3dSC~Py(EBa#g)3pY+r53J9p}v!1G8vfi9D6PDoN&##15OY&m3@*9S#d7U+GuK$6d5V zypgD*N|P0zpjS-khzW(<4(@_19Kx!$>E4U+6MRsWhNhrR^Kw9y6i6+V6payM%(O~& zF915Xvcu51rt*;qiid{+`&JanMD~L*+oVrmyYOO$LLE^NN_$>GsoD;}5q32(;T$3K z8y;FuYviCpBa~=~Om*NX?;lW>*sFC@`C71D9%xby1<^d;fXBmsa*&YN_gA+-T-d=b zr@E%)*Rx*opUaWwD{b_fw$r*byv;L5XGM*@;&W!)6%+w53E0^8dXAZv2t6kK@#(eP2!j5R(%09{D_QR*gMG{57+ zNx4B_W)Q_Buz2B7Ju5k+1?rc9h>cZclfqqhKJ zS27fNc0cscx-O}xDVk%1?$^%Q0Jv#Jq^ep*uumB7T|678g+$0WVONpGf~+4DpqA1! z*0YANx@k0+p={1jfK*r#-ar3Lhy9V`tjLP&Z;P1MgX=7yA= z{sSgMX+6UN`pjblhgK&`08p@9Z(-rLJ7;iQi3nGgiP2@*`&QgBP%Rs?zz*I&btqT6 z%>$SYQwUD_m`=uXF`OXvgPs}NgvGJSw{7t;l(%pDV#}NriF$gMFd}Ah5-CQ`w+Lz~ zOakVLRagSHoYU2vu^+6V*y`uE#I$taRMTH0nC$nut~42vSO^%3fVtT{6$JU6{qV!X z5%+9xSHEIqXnhK|gI&I5qw7jgG^g*&PP!q*^^YVPE$m(iSgE)~ct1xb=N7v`&Wz7) zaAcdl-W6_~W#OSr!%+ASJng`#U~*!-Beu8VKWldP@FfEsZ`qvQ87)6#AjIC02vtbe zsOa|VgWwO|XbR4702?t28*aPLhQZs_SbC9*m+0v<6v2j-?iN9U0T$Ca(o11Z@qd5T z5!$|Pr(iMkC_Z1a_cE2!7Iyy=Bw8C#Ibl%;1~+=>Zm4L|q1ys6t4tc{hXkUPY?xUU zm@;Whc+Ya^3>4@iMO&LGt-6<-wLl6XVo6Z5I=;-Ncj60_gs8+F8A%C<-bCqSfVDq6bM+->769V1 z(E3#o5fU*RK_qzqO^*78e>7W*#U+ZOdHa0KRgCaZ0RUv0YNP0XG9RA*WhwcBPDYw*g6eD(K9FlX&d06eBW8%1z8j#ig6ow1pZL%MS9-k*Wj@O?Px4qA9 z#WL&Qgxe+6)Lm7oOMVCaQc$V+UN5-%8u9D{p7(Y|F5tiU0`A8k7r042%zC8j>zK7z zEeQt-3$oNBHyS6=8?9_%O>2$L>V2i+anc%&uvWs3rYsXYuz_VgcuDP18y;=0iY-_S}Pq0Mm z=Hy$cwK0@mzvCvSHJNagsvOLUBXTbFE$1BXIMu~9>qy`%RBFU|txH{Hr3ffBa&o&S zY+PfVZkoii0t=juKCgNYC~vL=Q2Nxo*9yPmu8bIYRHQ@{Gy14p-r%}N{HoQ^gPnBB zK3h;0Rn=%l!?b|)d{Jakg%A6&5ezO*Bm3!&L>hC@H~O~UH-n3A%+%3u!C#vRFkU`+ z)tlxq;#Cs!AjlTCsq;03rOHA-J*JW7=IWOyPcF=aWJPvKwBQBm=2N}^)TqVBHGlam zxYry0vB~M-CR9!?IEGb+eV&`Y5p#W6Il5w1i@b)oi!!K3rwPZPf6 zvWYJsf&xc zRV|LhDqEU|-Qc+HJr_*}VC`sksa1W_SnND)=Fn4*T;k;nYmC|DeDyA7hkH*cNljs{Fopt|nn#|#F-~F6is+%uL0|?S4O#JF;(SDxM z+$*YLveyFAs$W2(grp1u|0+Id7%p;z8Jr|WZwm6s(hg8yVeyaw)CK8B&89nEJxibY z%&sw#t0b-Z`OKThdX&!sq*~7CKPWUjKLM#>=l&I zKxBxXSn@6#!Vht`Dwf@emJO|g30al0=s(A5Ye-?RI4j~o!1o%rgTkdTLhzJssCmz2 z;mmV~7e~Qd_^3(%+X))W(sAHq%eGhULZ7r-rv@$o^6elwLilwMF+4M~P=8MihBq$* z_>pl%-15hkp{xzoF**?rCOS}9lM>lki$ib%d?R}q1*mA|+Zj3TMAsZF0CvBh_Gg$q zq$~A2V&k8cJOa};v39ywn!>|a&*PBhiK0oja5*XsHT8A?sr@%zJb&q|Cl&c&t@97i z7ZjW)m!|)%m?k)8P>eJ<*-`tr^q2n4;hgTePl3>hD+xK8_{)=bWH>CG`l zp%Mj3ju=b@*mmn;fab}*tBO4i1&N37x4Y>K$xVg}H-iS^9HG`5iVp2loEnQ*!&1tJ zdPtQnB77fs(;+~-S3<*BBr+khhjYdbzWCw zx)9b2rT--P5Qq2#x^(at{4%`-6=d;g%c6n*Hz?Q*@C&O`N$(HP7`p{ws4rY)T&{qn zn}5O?>zGGgMoWau9E=5_PIOQbIzE1L%G@l}5sY#t(1sX6m z!&>)gC}O9(47rtbv1t@eiL>AaHCfI?diCwmAcLAQm@e)+$3sq(c;jh%d6pI)sn~MgUoi>S-mM~;us*-8&Q;~-i zA_Lv(G&*p#7!rDZq(+>=ZkUQRN1Z3hXpDJ0jhhQF5G-@=VSL2Pp<0VycV}8Y&~Qf7 zpqcx6d>>ziKB5e1F_NzS7a8XiTnPh2=_EI{t%+?;Y}>YN=O&rh6Wg|(Ol&*3;l!NS z*nf9xcOUktt4{S}SM~Y2x*KDXg^NS}sEq(>fDu@++2J1S!m%>4harG7O1-T)*aEK2 zOw9^$ft%Ywfrh|z77eccQ;x@7S!rc7?T|~D|0y%XY8&-tZUk`G;7Fw-96S-8Ba{je zi|#e(iqu&X&MO7$QdI#y3`u!VvNKh5ol#srX>=N>!0;nkEL}iFiWyrzICa4Q zN&zQ7SL`xiQI)wCSAT5jIOLhUwYevk33CTi(4ks(zK+?+aQ)LVYYA)5;qLMX{v zo37bv$;C9&x7c{{W%zV}A4s`13b)$WE3aqp1j@T8UR_qLp`C78S1M zCv5X1&ztFOXdozn;|$io9;oG8#fu-&2} z%FDJG!PelixMMdP>)7u?Sp(%~E`r|d;$Yy73eR{ly~7ObPW<}^no<6YmY(zp? z8bmtN^ZDRe=S&Kp`($ZB`MX1JyM+}rd>yBgV>F@ z2E>X8zg1o}yd(PjICZyUy)kzXBT|#k9Ve*Gri2uTs1FLV`-!<_O#WsPi zxNFiF%YO&Zc0(Z0nfNh<^^FSf^I~hL+|ZKeMl##XE=je0%dO~v_vZc)?$@~vTW)e2 zZ()Wnb1;``+6i%i)W~``4tiM6d6sz# z?Lt3HK`kr!3fnk*oM?H;H_i~qgPXVNa`t{u;s|$zrHhTF?d>P33Xh#YH@eX!TCj2* z<17yWIQ$l?bJ{GQdWsb)Uk|OvA7Nk|1VOaM<6HksS88W;d9Os&xE`-%44PYUMujqZ z-2%`3GitV4LDGy7GxA%q)IBxV)qUA3RAH7nz=Q~mryRSQjTk+uqgVf?fsNbJ zcKdi8J|S%2n{w{N|IkN(7)(u3=5O#PPp+;tzc%5tf)1;sq#X{>Ap#EW@UV=x&6-b~ zOQ=LBHKw5L)CIlVJEM)Hj9|yRU@znk%o3c^;tku2oqw&L6vAuGHQMxJ#AD3J}~0LvG9AjIdxnYlHK59z$6` zor^af!&Zh~42r;iEKZ&2F-CV)#Wg6~ci3Q52^e}o7)52(-mPDV`DP!j$>(-qBh9!& zIt_1fJ2gBi)FHS}h>+)U4L7#%01y}4hi8bYB8@#2L!o!smo$bhQ zWr%l~;p8C3TXw=e)f&Hscip(mL&azS&t5VH086E|-5RL3?gD2O>+^8l&-9s!LbvR8 z{K02zU>iTnCX{3~E${s#F1^gho4L=U?EEJ`;HL!IsuZV8r$gSh9A3AiQRX!DFo(a@ zUn}v^q_BY=6f6j1DSx|Q@_!0mGV1NB{uEJH-8vY>+~03OhTzY_aF*%x5bZ~3Vc3y@ zOy_0`g5+3*0U6F(nEV=dhDJso1YaL0-COt&>GbjdVsO@WS$RMTxVwykox1<`4NP*hC=aFfA!;a|H*c!sYlwe-Mg#I$?;$PGz5R8 zxT;L%7IEDo$&SJ97g6;dZ=RJzoh>WBOLzCAT`HFM;Thd$z0haQU4DHs$*ByjxFw0q z?uOIpy@KH+Lpt17**|T~mDa%bbS7hfDR8GTGyUm?%}mZO{@pUBRY*{;`EIgfhgrKx zzG*Pm6_H9alMau0TXQN7{@tbR2`@LMGyThf$6g+_iZEV@OaF9kjtEYu5q;l^O1iVg zJ<&O|E+2HTp7hJTCrd1wV`-B<)=E~V_>`^(`GFG{#iboTIVY4?I3- zfW=Aw$@BzL+QbWMv?OX~fS}PIDRtYovHhp?Ub5jelQJz90;E>j{(!wd<5_jzo7@EK zY08Hsr@tK@{0a2>qtK_gyKoT16+l=nFH*tO$#*;B&S;yNDqr@Cx3N*)!sG16hxK05 z#DxUM@rl`*&^$NRyuI2Ih}zkHA2=xBI8=y5{4~GAG*sDyzN@3<(o9EmzO3{!`rR@M zBU@!c>dJCq* zJ!Kl$Icsm92vgCMwK>HOiUqT#YaNHpm4n!NBIyTD4mBwYxJnDq3^+rxX!bT-BHCw3QiWvl*x`fuU1TN+y57a2kCYJ6Q0adj+u_u}#DQ$_g z;<0wBxQ8-M&y(m$7kb4(>Z`MkKzx%kfgcq_Qv5>p?d2}6?yFR8KtCR2Gk_Ct!|tM1 z2cxsAs=2AoRLhAchi1>jkLu9JG2;i_5YB#_D^EVvL91n3;GH55b2k>hQQtoF=5|Bu z(^%Y0Iu>aR8@+&pJ<3IwgtG_16*O2K3ByDh;lMM)R2r#+{h>}O`JHq#ZY%fr+TmH_ zFVuCeC0<#2Q>W%5;AhrT;(n;|!JK{TmSn+cBZOxfs4%PomAoNi1{$V1PxY#ur-r^lV%< zANe&{`4j$_TC4Ke5bTp^3LHzsvDQ^MVHn?S)N7hRENE0Wv?5=rS-WSDbG4D@Z=OuP2{heSmfJ$YMCIQ+L*J z01Z^fI;)x$wZ(vk7 zcjF=pGR9_1z(K(@H~VXh08*f_sjr{rfjE}RDKDP(2*Ngx_;B*jJ=z`z+xRS*TNB!5 zb<2&5@&aOIMGdxvctj$r^jurHnh7Y7I6^?D`J(LjU`JhQQzP+(?FjqS)uh`ey4PS? zJbq)Vgyq!iLd}?m@$lz^7fmBIzeM@7bpQ;2isF18c(5LO$`e1dtg^`E_Xai=>X^N{ zot4N|9cCBaqo=7!Ll-1CfEHWU%(fFrT5VNXpCnT2Tq*AmF#M#qnH&2qJ<&r%{C559 z`7Bk-i2eMKdyyAgjqf`}4b%SjY=V#w+^HSL5|9E81b#g}eHwjjcPa`cCKI2` z&f4Fy(a9UWn5^Gf)N9^v*@@-ibA^Y8b!1+iZQZ^s)}caqz^lmVf$&fdrOaG-9LBCs z*=EgC6?w8=Lw}5Xa~&wpGJIY&9RdsZ9w=7QsE%VnM==LP60h$ozC1YaxqWUx+Z$K+}U+ z5$7(Ky~IzL)d}Ky|GX!mT|p_AN#-rNi4tsqU8+L@Dxy#J)GG`e+^Zoh`0!kvTt`ag zr4_sO7MUr_P3*#(Fa?~UYc?cixYfuW=p7_bCTaxFjxsw2O{dZ9aE0f~uxnegX2E`9 zhqfeKFJT%H(WLRQ*?ZKZ9wvgLK-8;uo-WY_Ab~P0#hpemC}pE<)*1`X>@Hhhp=IPS~4s%(2d08}TMtBja%I(*GozHvWdbl}0o=NL&0U zeLH;iBuv9>7b%?nTlN8!1~A~&IQEwyZQ3|KhlVhPQEereDz+|A($PeWPfL021I6*a z7w&4eiCi!F8ypQ*({%}Gx0Bsu`IgeicI++z%^P0c?cr|YDk}F1y~=nmV`!M!&XkdD zj8%3}4uaWcVV#RbnW}EG#h(WWv6O$dN>0I&PtQMs{e|JEc)OJLkB?u=A@xwl%MVEc1j~0 zv&O$7&1n|k`=nbU=Vl&)y?b2OvRiTrwfw}2@o?GHTu&}>LZPjEO2mL4H~S30e*Lub z*xGd@eLL#g*|@U4p_(4LG|tOPvELGKAP(2lkSM`w}Q7?BM=KT&#U5RPMw3jn#oJw(UZjV4-dV;m6Zj@KvO-#59~&}BlC0A zuMSSvTEYw~Nif#Z=x+nvgM}urH?TfC<#9O0mJHbX%d9Td{0)2Q)Jfol-R)=Y5I0po znX`bIh{>lpQy2LqeY>*jIe4WFxSWnTS^byM12av#C&cmR=VEd+RrvX19`SMv7TF8v zK(aXxtjQ05MRomS%Zs)aD>vqk2SdJhCuZO=Mem=t0WN$G&AO7mysb7sGsH%lHDxax zqhqeRUz@x;CSmRhbzvX9f2y^2ztkI`$Qf8_@LVtHDr*Yj$u(t z{PfyIwKPl>oF+>TtdsSTHwh=52`loz-oOuAIvLz8i@9JeRyG$ zOBf{l@qJC#KogmPi2^ZiClo$#B<6GSjp2ll{ZQ%U|5H=_3#9g4oxW`kNCN)(@$RcX zfNUi2KNi6>TZG?{lXf~qng9A7A=2GREVOW>!Y;IkrnOdaA&ph~WwS}2 z6*ku7AeDPvcyYz40g44l(F336&5E@WoZ~|o0wP+(47O&6)?3xoCu^Hf-3k5*-zWiF z%Qeg3$`I5OM!niyiV3u7K9?3971!oXm@0sBuGT0dafju>vUs1Omj+Jf1q`xYI>c@M zf}>{Cc*iQoWgC$WyQN-3Hk(3DgN{E?kEwh>v3zzzk~eIQMVT0w*ShVT2+U~I@AO*v zZfIY42&HqgEli(Tl_V`PT;5#|t>mA=<*kF}QK%w9R}KK%;i_Rm?-JWn-dwAc)>7$MS9)UpP7VuT~KY#$kwH44NL#h1)TmvGOl!e zCx8SH%QKIp&3+~x0Ga~yGxH2_z?zIlJ+87#L!eBgN>z9m4iPdm;OZE2J z{fy@KhqT_=Vv?6rt|}*)V>suUh|P?c@~ixAH!1 zmQfJCS#JIC5tadXiesg1nyQOMsOA$LTw26-W+d6Vj!vnRp41JCjrh+Mcv%-NMov$g z=;s_(uxTS4SR>P@!C$nDO(|z5K<_k{nX(H%Uczoqz5@5LK1Zp}(wNe5v&kunF3|6x zO1uj*@{>_3+7|+d%MJEgxa(qBzpNvj2j`#To`lQcQ{pA+H~q+^%AOUzQLC!QqzR85 z`MN?%)_J8P!yj;w{0J{eqcVgbi}sy%D6Gy5pVeyUIt56eVyh~w+3Yw0FusOTyhVK$ zq=k9}szjl69D;{#G?_EZ4bu>b;b{GRUzs_A^{W75sbMjyw3yC_rU_aV$Fi%faM7!mNSW-N5oJ*MF(=2hINL^q!hvI!6<;$a@m#S%~s_$u;_|TI9-znc8qoj zCkWOU#_o-dMF2s5cljm|R%uey-S&o(UR9b~nG68uG08EO=^y!`*!O-09oZ^~B;6#D;|t_r}A9QCa1f&RW9-S=qID$g*<5m zO38Uxzc#bB%#>;a@Khau+Q!6R0q-%Z!c7q4)y^t@pHHA5`;IdJ|J_U<6_K8LU^563x@w!M_Fy6d-I zay6x7DYrek-K`2!2p8mo+bg8!_T|NsiDPkSX9tQrBnSB{(CQX^_L=q5TSqOYHXHfIa-?-mnf5!Vc+F>*$uteDddobzksWZG;n7_ zEVekso&k#oq0>9!Y}5lw zq0=&hBBkdK92np)rUY`uf_ntaRyIK>3TdLaZY%>KH{wrc39*v9=Og&(i7W;ga?Zlt zndy5ShpgO(CiiRn@P)D2_*=JKz!FRt^i?s9)hOm@yAHuZ8ivjGM<7r!0C&m^3J|9+ z=|h*&#DFWN{E=pv^|?m8Db-mq`?`q6i~RA=o*q<0!n0LP~ytZB?$e@+vK#>t+4B ziX4=iXt^hPp|?lKM+&##m{`0YuV~qQWB*-sMN&R#m6J9dHj=5BJb2gm`y`BArU3t? zh;0t1Vvd0q=a7fbx(xp&p91Dft>JWl=Hx{Ry5lYkVu(wSJt%3=kBgnyIuUR6(Y-3G zqevZS0&y%~?Q;nphQnm{&DcfBu6kt~#i{T0EZ3$b7^$qZc|YJ`Xi5U^Q*UC)niB!& zI%`AaN{=!ZT5Rg7{sG48g+N5)j!ItC|4!rcr+=0a(b%70YGxny1SNMhH3kvWxrvV~HaIF%?|C!Z zCw7SjbXaA>hBR>5TqPp{Lf72t(J=`a+ryx*EX=9qc$hI(cHC}V&k%pgx=6+aT)KX-?M5_Ex;4}B> zcQQ@?{YnM2v^ovK4B;lK|D0~28lmP>iGHC!}b&qpxlM@a2yLUr)Z+yj}=81K8Q^2d{apuVZUxQxqiD zFa3WS#{7%DfOvP>Fr)QcL@a+~Sv`OOBb>y57KjL3)lR}ObGm&%Fx(RGO^0arFN$ja4~=?pU5B`Ye-xM zN7$g1+s8#j4cB83L9T{2n9+@srH8V<7Y6+i{g|N?zyO3=@wBsymupeLM?5ugs1kd1 zJW1eGN4LgzBfJ*0&y;skZa?=m}6i2fP&dQsXIKS5i9A95X>tp*sSA^Q>$ zVr8o4x)ypJLiG~DlQG)j3EtZyu+PJj}q)f`7`g(BeZs6ekh4%m^^!Rhji& zMTX4eCY!zVH{rs-OwnW2REGpVp)%~bw`J7U^!SyY1S-}X3T{xmKX;^$=tgpUT}zF3 z4HG$Jc+GvE!ip3@n5=ect}J&)$Ye--umHywk$4JNfh#qyRzuqEs)gUV_;K4cstp|v zYA(QS>D=vYlUuRKpdFTJ9ak(bNg6R%Up;=o$sg268^19R;eh_>ng@?!5{W{4VRaLPClrtQ(i61n{ZV&67+PuP|M5uXlEeC-C4a)aF+f=mhR8&pL;8F`gZNXUG9<0 z@fjyr$jrKCyI^{m>3BS=QBkM2jU))7fj%jPJweJ1 z#5AlVlVG;VUBBfBNk@b&G4wD08T|cBaKp$0Iyw$Q1{O@Iv~8Ra69NKarjOUX2!^Gm zyVs)IAvBbK!Re7ADIrca?4#{fT3Gr&UL|}}))!om(<)%gg_DFwdrzz01+3)Jjf3Q) zPKCTvMmi?4S7v~F7fxTZ?Ct6E{{Jx*cltknfHY9r^?zPKvY(RLsf7KZb9y12v9{`5 zy*s|DG@^4xOhN z5PGxf{qr&u!RCw0oOBBF^6q?l0hNj({wCF%u(M;RPfamX48qSlewn#?5=ARenJ8kL zDguH&B|e^Jj;?lt;rXT1lFCDdFxsxc_WlnQ@sV?9@RBn*UF*V6MHzg=AvpeS>0PqWx$6p5el#vkX(yMh1xr=$T@V(n0l2@1f4|i> zHerSa({T3vy{3cUAO=emHnkqLu?Aki@#MYXIb&H;>Ic)8qz-N1Et<(lCQZ+ixAz^v zp_JUY7-O{vaxA%=BFgXYQT+7eQ?Bd*Z-DWlIq|OfxhG|mScw2nN_z=K|1V^@d#?_P zl;n_dub`~@-He+PFz6SlSy5(;_<$uYHe<0GoTI9zOCc`=krO*MWU|IZ00l&VKBtp~ zK|)O*KN@i=DVz=-XH&&|IycHYkt!U+z-x6~Lmq}3APnFv*G;2nCHzZyY_1d1&z??* zFU+g`BU1V2d~D=&4&EQgL9`O-S`I&Y0?bbQvnB1QMX+6@Smg@pYHd)dLNY<~E9$Tdh1VBPm$}ui}{4uERW# z&{FaI_?yk{pB3fBN^yBdrNZVhyzAY zlqdM=h`hZlwEbpT?kR~*Ao#a2Kzo3Ma!}+U-|Y^Mwdey~6g{@q-4m&#`yfzcW2BBf z1u)1_W+$h*OyPNUNB-0=hmmhMaV83aMk4U8-ABw|Xm-3$Dm77Jj zKbon>L4S%G!oZ`c;1YfM-wy$|dVnMy&Mb6!>{1zWgCrU(A(v3Vs+O9}g=1QEq*&g~ z;5;4~SptIaW8gh|ibw{cjWJ!LNc;flFzx{)>^AohNjf-h`3K>=YSLk8AOxWam3)`3 z4trwCZL4U2kx>ei`0XG~(iV@7m^wY9~u1u0k{U^2f>IdNMw zDYL#5*6cJCA? zqin%ee`5fpt?No+tVRNc2%^GXrH_`W)uFf3v?MH?Xa(V5W_UEPi%BW{f=J@Fa#nJK zZBmy_(@%?Z2$?KfRBpQh*%^?lI-6Finbhf$x@ak|xdS)Mew6@XazgM1>W(u+OWGDl zTVbhD#;9zA)8Rl!O{FGra3DHmTPvt1&HfegYS004HSkP*uTL*k-U`)2O|R>uiwRId zyJ@hD_zOO}sjYzjbmGAyfN=D&ixY;At?c=#)j1<`0kSD;T5i-!L7Pwc;nL)&-{u2# zSw)!41!(cM0eMYuiYlt!7FGu<#H9_?T1lAFr7b)vn$!^@my;v7uB1sd5)Se*J_b7t zU~lEruj^^T=cxj}h`wcAj0yMjzC;C(MKy{Qnb^7cx3`NU0_;V-jFv?vLm z%|_vF2Y%gdU(I+ebbqI{#qnA>{t5i%jzh|$2Qu+Y)G+?J{mGGn$<(v`@vzp94Jj#f zZ|Jc*m+M5;d#TmKOdi&^IVOi*8NSB(LM&}{$J@0)Yi!3R4*N)#gLS2&GPgXgKe_9z z3N!D!5{mg087&v02@CCEtEPew*f-qgf%cGa6MR{?|J~Rdy7RA+C_BvMsGsCMuDZUu z0eETBM#^h+Pvd4-kK|V01=Mhe{K2*dK>cgI_377-5K*EJ3-fQgQOC+c@>o9X#Rj_3 zE>Em4y#xJLsh7$~+JVaWJ?(rC71pTZ6mGUt*;3yGzizO-KvYT)cH_6Y@B@hQuqWgM zFQ}&W+KbL&-I`>dkc2`(Jts}uG8;1}9O!FJmyKgga1366<~b&-J}4U5dB~SY=GBqs zrP~`=Pzl}hGzP&ytP&4Z<2B_fyZ-?K%WAPa&YeWaH%h1d3wK>mS(4RCtGIt{##}0tqhl(=F0fv&k zyHGB$A>{`2S|)hA95W5d6jRrM(#1LAjE858-RgV*Bf|Xl9`m2Jxs(Xh!pu*5_p8kjSV6Oku~F z)Vzyf#KIm5_v`DL621pKnstK^feKO_09*Nf$Pjg-zv-(eqFZN(bf7vIZw`Pm0iYex z2910x=IJ7fE;_c`?|AYhpVZf^Ti5bDL+eeFS=%NykRwXaykNTwpUYPe;z%|46@2b5 z0WSmVE50B~H1b;}?Z{3QPYli8(o)1EbffrSk-7*uGhDc~Rz(TCH$uM*P{nLx8Xf^E zjn1w6b8~p48PH;qy;eU~%4T8sm-!Y29Ur8?&K{Jy0RMEyaO;#=TXOnyc28(X^HUZ? zT`J0P2BR1X-g=mKcp|z1>s-A z%RuA<*c%Z^wt;s4G8k3WD~^HMKqDo?Mh;wcowSAy zU$`-!AP6f=u9-u(*?|rk+DyA#ZyCyVKqma)pmJ|0_T?O2V0+i@f0bOV*V=`7?nT%0 zs-0EMe-8*%8=w6tJT8X%MCL~;m(=Nb%Y{2F!Zr-&W*CQ_R(b5y-KL*}F}r2GkJ}>XoMbfHjiS;qJLrOX z;_6&hF4$g%ZrZ_WUe3b)dhUsX?b>Gcc#!@5u{87UnT*z zC-REfp+qL)5i0H$Wi`kjW_z6orWs?3MC+rouWu;k12uOl(l%L;%PHr5qA zTxTF6z%MbZy$33^TzPfxV6!T%d+%~%T^q)JW0w^nj;Yk;@pKO30@q0R*T6Q)_+F7C zL>Q#JQpc8dsvqM(z*8Ine&cO|=}lvnYGa2#$|8nu;7cqIGfZCD&~~A0%yCNczw?B7 zn?N?ZAxro)7NFER?hKXvD}=8WrrhqA+Vk(b*wKu#>c03aw6JY5Qkhx{U*(|?w|z$T ziYNYbHd^ios))jU-jdwepAAeI%wj$RO097fd`bj~{lwZ?K)G%eL~k_OG2I!1lTN6^ z0R%E)3>3I!Cn?4@K}gDt3v61uhY#!Z{0OMB=s~Awe)e?%aV0EElC003 z?>Lb`X!SW$`Z-Gx^v=|Vwv9qtugKK8fvQ_LJhj`pfv=K}dQ)~5L&YfW1eDLFu@nC2 zyf^~PDP1!~pvihc)F0es&x6pCnOJx1jP$e=VPV(lK(EQ9owG7}ZBx+vMdRiI&X$CZV;23&16GpXMaADGOaXB#tgT^sPMZ!^Cat-l(rot-4l%1WgE+#Z zD;t%C>Y-u8U3hwo2)4B#;_Zc_%dX7-V#Y(Ap4CXX5#u_N<4g0UFbQVG`z`&Jzox44KX$riA(^Wf*6MAXLu z9@CNG+c6)quHph&zEwrhI@csbnBal!R-JcF60n9D8&G5QSoa->HV8wHkCQwdnOi#w zeXI9M?vuVtLKR$~R4cB{<>Xw+{j-QJ5Zp~~QbV6d)PeOTbr$$B{m=F9Om*Pc`# z`}jGLbU1Y{toT9{_&H?sjon*2ItClEf5bV%Mr8_pjQ&}A9=~#fj&;||!2OqwChy_; z>F=Mtxo-$&;a0WusJQ<%aHxm_=tJnhq(jF8B7h{^jU74?PRBn4KABW(ca*t>*v_VGZcMuQ_3+2`%j8}q4eZpY|M0x5Ae#J zCKI;rCEOEx>yrThm3-13XtN|_xbraW_;UO6w>%tEackn+lGkJ5l2MRTE3RteRwwC~ zx^Z$S6x2>jFa!u|2iJTgoFo=%kmAcp7ozuUs;Xxn50nJT{rLZH37MVk|NL`h z=jCMie`>nP82}@lwFW=~+;%+}ZR}f9+fy$^uOK7Cod)|QLx-bFlG@AUmrLUsD0_hr z2}wCjAq?2F&735E(Rd!f32YkyKOb+(X%w_m{t6xMPF;=s zbF_Hi(Jxs@zxgv3lh2e9NXquD>sZX~g%iWE@8jMcS}yl-=olaZL}-w<{EbQ01u`6V zs$>551y|kg7E8^mMal2d-nCaM>*{^@O7=CS_0R0-i_Q0!QZ$3yH2H1oE97_JKr`Du zneGjQkX*9%P83i=-3F+IG8McwC*uywr_m z*^&Tg%|<^)44bbepzgjAG}m1Ti&2n5iZ9OXy8XqE^QVKA%y!tkh8puf4-!Q!eYkYp zu8Kxx{0dhQBoDs)GA?{_EVT3*w2HvwMsb#r8mQ970s(P8pemcnmXKL(&0Aw7m&(%h z6M09E?f}Uc6Mp`=_4>-x@rkd6Vd|L{BO8x=>hVH|Ma$eIuvauV=7adX%y)g+Tu3es z(8M2^-cj537R*0!$Z^h=hAEMid6Lw=gP5kBP;X_2bB)3Olc%HdpHJGjDD4H9Kl%DD zqKfZz5Z*AFTlUKq;F$lBmG%1FGcxO{&5(0N+X?xF$6h>}9*a2DV|1mNn@ukCy8ti0 zKg0SGMd2M6IIw?eR<-F&o4Oyh=|rfxuex*IfnOcUrgSJXkt!hJY%5vm1p|W;MUBoQ zjSaLPwZ^S>LE#E2F0ynWgZipod_9Hu<&x(7p4Tk0V9!ERRF^A`d+gOx6=AV^Ia*iV z&&<|qpGQ^Hz+_A9(w}2s(EXyd?WF=!eO`Y;Hu1RtWE?;4k%qTXfQ~o=^L7mX8P$I& zBPrsTUdlK2W@fCI7(x4L|F=YnC%5r>psy+pjAY)*x;je6A2OIxCX?oG!c>>x3VjF{ zi8lh6YIwP2^5s$>_64fd;>nmVc35Ij=3JBBq%A)eQq9;bGEO)m<6JF0hK_G&k#tA^ z6_kAo5G-;nDoi*uKA<~((=qQ0b=`3-<8#RVfRZ>nW|dgf{13<>%h#hcx5H+0vj7uv zkA)+FQ9NOw8l?l99z69I76hv5@5O)0K}MD+&$m}I`F)-03@WnNw?fmrDc2LCck{Y` zmdI4d%#al_7GH~(BANtsJ*)BCqk?5%0jKe&z?0;7gsQZ6>~n%)iEdr@3#dF4Nty1; zC&o~8Tp)6RIJ}MO2U!rhGX$5C3yi<+WznF+t7;G@HW4 z4*2^!H4piRKusULl%M-5cu)z^%{x8|0k^u_!wF-tXqy{fZMeDINO|NQM?9+kYuD9PfPttL53&J zmeB}4_`7ODa!&dr>bORXm*@kS4YE9w-S3s0aaj5GhT|!3DvJHV;DG!&0A^u%4peI0 zFx$L<=Uk=|4PXSbo-^`o6!op14jRq$PY53#;PHw5xG!=I&yD7mIWgr)qpO1I%eB7rOP8WhT0 z{^AGbivOEd`9Rc`{Si?Pyy*oY&t!6BP5TTNBE1<5ynocdh&foNZ3^F&_CMF1^25BD zkhw6+QZ-L%jW8`O69&g%9f+G)I`$b-6ecH(aTY^i483A5Z^7mf{!0|2`VNa?I4n}O ztt$)TcU~A8WHc(5c;%$LD;d4oNxB-WGI%+mWN5!_^R2#^6_;S=MInh~c;C3&O_QX@ zIa|xso~Qjv&sF9mpaqXiTtayGQ<#5cv;oy-b83Ny7oR468c0$OS_q32b1vP2 zm`9Uj!BmgN`S^YO%2A8R0}ekB{1Qux#KBCz{)TFg6|2KJM4Pz zX_DeFryh8057tA?2$anu10*h_S>%=hw9JHIAWbWPZZb^wSei#&gPUrU>l&HvT&6Uu z;Jk=$eBd?5VR6R~efIGO_W|o8lBhXtXtd?kpVyyIiCVChi zwH~u7z-;p7fJPPf&sTve9%%u(gBNvIXaDBt@N)d7&6I9^pu8yptHmrmSca;U&Phv% zNTja{73t?35~&|&v+=-wX{TJJ+B{t%^2T^67oyuZo>}IE&X+an{Cf7KdG-MkO-x`k8p?@9k>yyzqcN$Xm}$?LajHf6n%)w9G|-4 z)>Vj%y?Qehh-5Mbsh)Ksye+42G=FwtUKTMlEgB>c`Hvl2HbpxnfE%5n!cvX~L(;S; z-MUu#R!x<1z9EN~@kqLMI>YF5L`zKA9b`#Zi`wsI-7XQdD$PUduXxxNPy0(a8{T%i z3FNpC){HS9H6?fe3;Qf~PAK4B4R{rIf^v|0kH%0021lwXf(uda;k^Bz@9jZfv+<;> zvp5eC!7N?z_0S11wWNy%t4fWT|6O*8G*g9K^hD>|5h`0RYkgXXSob6_x}U?yZeCo^ zgSsn%1^)|AKVq7kj1e4R6>Z3bR-8Rs8r&qOVvu$9CE!Dp9)-)}l=TIk1Ln4gYo?y= zc#%&Xs7{?Y@{c*)L|D$TG(Dr}6uya!jY5PSC$7WH>Zf4*C97~)lHy-T2y^}kiPx&< z#YI1qYz{=ngI+M~^HKPLt;TzzvfoAmj?0C{?zb76N3i`&eh0BDn7ikp7b< zgds>l;^i|_&XayU8@AD&d{mq*R&^DqHQ@ zJgrY@+9h57szMsD4mP!Ap|=Rw|;B}#>p3#aMV3u#WD&x zMloUp8f0mNU);<0(fn>;n~=%EU!0fw_V1&wP{{eogAiJ{a380yTDY^)wLukVMnu-p zg|r3p3U?bH@caDHa2__sk2Tk-t~S5=>Z4>Qs#8keSHm)z&1 zc33L=h1{T6^haQ2vqm2Zd<^|ESnO5lqNnV$r>PVQ$4q^(IkX$@-UOD@{Wq)Er|~f9 zdb{_Qxi@Egz`gO?&K7Zs4vx$~WJKV$;?5{S&#YT#TG7xz;FxQyxRR+j*6 zcR+6~KH+i}%U)EzQ$q=GTpsm&&;-`th)vNj|-dPd;BkTb-d%Ufv8_Urwl(Dl!0+HL*8W}0VtUNOXW^e1hLW~RA zbcg&X*svZiuGGE!lxyQ|?YsAufeHXF#-BsVq8Bl02#;L%{+)Rda10_GCO2+G8MwD{ z|BmcUQR?i>hk-X}c4ypBwJf}{X}-WSe1{kBtE-92Ja~2dq~GvkTIDUAeICn)soQJ1TOD|M0{b%AlZTG!dMwA_12p^+b;s=0E-MCuVxy)}v49 z=g?HfkJW@;gu+_T=_HPX#4M|HRRs*^g!A-9exXb2VNFoutY8CGDc6}9w%%ZL{5zCf z`z6}2sH_mnuhQU`A|^9DgJD0^cW>|GXgWr~<6W<>+uan`9JqC5+uz5JPgi;`73R(8 zVOIX_XFea}1bEujVD^h4O3u|<-VIqh=2mjUA84_}*S_kn9WQMG(NH(B8cf+G zWg^#y4GNO5|E^;^m+Quv-dm2m+mlWOg(f$=iJU?~1aKJZP<;BgYI|Wd)daMy$!d8v z@wDBAJHH0~%FWI28M^U4L{n>3B=jMwHRp#t#s3>OG;e8N+0U2HR>a2iVBL;HLmO_^ zrg2GkF_suC{5T;9I$%L0_WRmOIyU_BK0;3&z1so}z1_yaf4yzH&}pS;k9Xtze9LbP zNMgi7xVpUjBa@+|b%F_0(dK=8zMy6M?n}>*fn&3L&7QEPZH~DbTEV_-76EmLcqD^! zX-WheY>~&bf!tTQRttYEMLJJWw|1R}V@6ml787aLusn7E3~_62Q)k5yU> z>%kAIk^-5uGTR-3AL(WJJxhYd%W~x`13l-Dg0}0EUd|Vf`Sdfsh9rmm%UBaPg*QeW z*iv|>4ffBg^SJpm5B;q%zT!*%T~Ff~$UhL{=ZI7-nBaES2v=9`NXr_Hq;m~LWhFPr zcxXoS%oTsr7rQ{kqD6B=V!q8wHTe-5VZi}HcrT<8s!Ngs#724Lu9ov!lYAa*J%0xzy!r4>j@5lE1!u00$b{FBtPTWa!uDi-sD7^!Uct)85U|q(}UP8RiA* zf3B#HPhBjj(9@}kS`kBwG4tdJm64srpTCe!3S-N>)hq?7%KYt&|1C6BCFjt{C+6r_ zuy7I!UliA#aWy6lOeL;BvUi8eQjkH98{jv{;IfI2BH!(=fF_&poAo~(FT~;}xVo0l z`o0TI^tGx~n3ea!$11&^GZznl5Mu)!7k%#mUOr!f3Nw4Re@|4;vSX5?wlGX0M_gTP z`9Cptcs;GOzJ?$!G86gwK3%S7dU!N`Li(0pBz|tw()Mg2p>Wj0!k!3GP{=g}d;dypp-zqb5|4(L2(d@Yt4e zsMw{$fbWGe#Ym50CvBfwQSThVZkYAKYIl<%b4<_dj20Rc`T{u3M34S|PHg|j=g-ac ze|`SR2?Chl{9YhGl)OuNPU~(juo(#29w)cytMqFJ$jJqSQBS_9)yP+?nJEN(>wwd0 z(uTssN1dWMVS@$AjR%j(zE|Qxnj4#;(9x zLbdik3q)%%^OLDpK)L8v(#0f?@)r8jrr~s9GUozJ7$X4`v+vaNBk_I&;QT*65eJ5|P9Dg)Yp@tmBlIq$fZTbD>Q#yC1 zQ~cD1opg~Y6BbACUH)@T(yI)_riwy2gCKCUJoz|999FzOK~>`Kix000lV08Om=f`C zkE}P^<%OtS(zS5O+-US6$m3#;(^NHsH}eKRm~-H;Hl+YP0&aNg8FxrcvarN#skJObRgz{9O^a+0bZs><*Z%(I1~4eCN5HiB~=|6S@B6-KCT$O zD!RRz4Tdmpbl2t@@jVePxqqNO7iTESQ@>A2=Ug9)u49K9A;N?>doTz>%0&M7!-2*S z(0(O6Y;Rn?4Le3BWlO^(CrBEO%pdADk24aI^MSVNJTM&uvug!vHf-5%FS7_Imy*r4 zg&I1x4W&-eS$tN;LK!C~p9M7wSNnI&UXBF|1 zBhJKI@aB$2ub?GdA|p@BOb8})qI^6mc*5V1(fd{jBl+|72W(unBChXF$T!}^I;m|W z;T`p|{=VD<5sOh!Mvdw5%X5s%Z$+Lu#rRn(I?|ii4*0e?BN0J;p$i86sJ6I72y3MW(IH9b`w*J{w1^$G^5i7q7 z5pANGX{5+*TyKlA^3vWpT}WKU7No%W+|K@M6{Zl>;yqZ9K{so;T@peSBFsPi|GteY{_|XG+UC=fgvyZmq*scjss8@Ca}bKn~w_&+W+ZQWT}3E`^c)6!bZfL@Um>dwHEfsg|#0>R&R#>2V$oY5%?E*G$BI`HVqr-`v8>OrDD(omk{jxF&w1*F zW-C?obOB2$`V(Tij+Z7ElTF$_MKO|UKO)7l+uCN_Ot7%kQ0V8UoFhoL`L#}>IqQZt zrl1XOe6xbYVyeY@qQ{=oR{6VyXALbmI%8#v$wZ6xf>(GA5R6FQ$~P`#uUFK70XB#wbaoz2Znv86Z{NRUGSk6G ze}P1hT-;!Wzd&_R(x64*RNJ4l1=*bn(?;$P#gncJ(lX5xWW=Wz3Mb9O3Q20i(%^>4Luy)rXE zDrvK(j<=Ae6;;z4*gv08>@;cbp&6}dsK5OgqhF^Wt|!Uj6^7M%UP(LAK9n@LwD;Bv z(uzP`xxlK98BEBeimsjf_WB{8GQ=N+=Re;V04q}fW?l!9gK~9wiVxW8M&4g21X8_6 zB6$IdQ~3UT8Wb|gv;3GRr&vDREZ-KHg~>P ztJ;v-YS$VSf_iKxIC6C&fBI2iv<0JFa4w0};%L2v1P#V&6!3j0K^<8Q71BCN)|A%D z-ks;3tiYqP>sU$bJN;(3vH!K{x1e4mUT^kRz~oLP{%=)m{lfe>60ReBY~uJsf@PYA zLC0A)c5}JPp~TvP4i!je>sW@<=61rkGl;}vWO9&e0s@=Pzfz#E7sn)bGdn2}Bs^DA(t zZI?E7vfA$Bf97uNIFLCAx`M7u9uCKs89yc{qQ9B$$-QO7Oh?Y&oP9`HfUeAZEn$vT zggi{91ntY@Xx)&E)I|8YGrn5y$wa2Wi5pLSGfQNfVdvjlz{E?C+zRp@s|&XIExY6& zY-*>YA&3k&->wfm&+lke`H%jAv(g3TsPTU30$qZi3;(;p%nY=>1qkPk*KH>@_^iYtUNu;XtX0sPSxOK= zO0WW4b%qt^zM03Kvca5U>!rYq_|@hZZ>KHnbJ$%zVyZC8F$Gn$B;&+_nAW`jgpEo1 zRY>t;9K(B!M|6lcXc|cH5_G|N14}t>3?3qnBjU|j%&FJ8SZT1+;%H4wNMYEOATXJe4I5ydSBNWWpa5R&pLxHh&f*U!w697W6engzK2*7I zrKU*0WbMzp42~9>(y1C z>>4-sgu(<#g*)ZjH_73-5HuxF{)Hmn9amU!l$Fbq#Sz|Ru)0JkcMxX%N0?~`0CWZ# zm`G?Hr>>U}yKT78=<)Nb37HD1GtTR{->Ak(>Pg3bULv4zbidb`y6fAr2*iJ|fqtbm z3lsm_V2nkUK-3cydKRDY6pZSU=LvpC`*bY6H(_Te&g<_XmwGN8M>4Y>-^piKk+TD8 z{KO@tb-Ap+!T{>2t?v=n2=)Cw_$s&E!O?iJ%?z?gk9#lhPbx1tIpsLpE4is*md zY0tB@>;ea_bFw%l--%8yxmkljtAO zfP`H8-n$rKQ)#E&`TpBl{}}vv3b3H7SoS7%JIO$q*KcMND9z4>GI)g^C7Kw7$Whfx z`QGQ%sb4Fr2bnrNcR-0B_#hRw&nov4OE3PGY}gxIq^;oRsuBRsvvksK5GAORmm-RM z>Ns>PA@sB8OA1$}|FYPN_q%)^Lc8@+xWEH5CM!n)WNJUubolUsQa*5-^_7dSE0FQiOv(phkZWNDe@SdJxIzAugpt+VdA0g`43RY>9~sD>xk234qOw|%NKd!31opdSOW@G36J+jvO&J))n?R$7-Tu8^oiDWOF0 zc_3XeU;}M-L8zJwedW=Q9q-jJ2#}mJi#eoZCC>G)VXCfzx;_;5&iz;A-2>k{^?cgX zYXU`LPdGm<5J;RQ78>xnVKyi9l7C34wFy2Tm8Ew_L&SWDgKXmh(fDu6Q$p(h>8jiD zoUjR9g;Hhg9++uK#&x{>Av$ELFe5Fh)9%PpkL9L1vnu9a@einYj)ccP+0sT9zi2|u zS9ge~X0e6mx20Ee3+Wi6m^FqSAVZ~yZ8o{kA;;?UYtM-N&SsgwC+b(9zeUU;8LC{> zsm6L1^NhML1CqLY$2dDg6Gx@=%Y`v0z&nGljlx>h(#0SMqMFi8AC)n9=GGQ-wv3Vh~8v9Q>b3ebg=uACmC}2+UTSf8j&cXqw+?_SWf}^q=Q28iwSKEK&Dol%r&(ZjX5!_8moM zVYum)#z5nf%q4FFJw1*V?h=ghJoDfVc*!)Qs2+_D`Z7bbMk)Rl>6Q|K`9kL;7qWou zsRRG^1dy{<*71>d0awg(V2Mt6!;*aa5%Ny4$R+846N@}rK@{)G*hvV>nXLeX!dehp zYhZ1kwVueHN7?A>rox?z=oTI!sKl z&9N++JiHjio23kulkJ%mp2RmwF#|W4EUB#rAScJfV^*|{JLJ`}t7;5vAMl8JnNL+_ z7y0zH#3ePwltsSG&O$w8ZD;=F2Ykh;?E*IzePZ(g_;DY|2ohItw$fbs@npYVLKRet zqE0|Nn?a3X+u&e*3&oMT00%d>Wd1Tt8`pOK*xDkXW=&p9hLx?vkB@(#ZC%h^yf24! zWla|$dd55_EOtN889Mi?nNIU-?vQF4Cu|74;>k|g<1I`D5LWbqc0I1oRMU;f>fFDw zN{+lNT^}wl3S_J+mR2~?8*u!~Jhftl`i82DF9W?u2X%Fd1OkWCvhCktUXIUP)AlZP z2JgpKBD-5=0I8xpGcSV>Cd2oioE;Pm7W4~vq)IDg9q-(k4cjeeFtIsTx}xD6#an-& zoe6Ve5M;slZ!OxXhaK$fkU9>o$bThnLJXW_4jU?2@f|=0 zrIJ5L->hkg>zWusvKmNEO?=?#DvMXpR#fVM{#?-pDCP&pw-i{m{r^ zZ9lf?C+Jq^U8966m;Kluo?l-Lc-@=0;|Ao=)SZ$mxu<`oaJ>nn`u;8>vc{KYo&WO+ z`-e^GL#}u=dWEb!^qc3PAVhc!1y%n>VT@SLxr=3iEsE~lIj}}|Ovg)3k_lkCW z_o~8)s8wf(kI^X#>fl`AMaNakCL&3KZZ_tjXU1$y9=ZjLBG@3g8QP%}>bF}P;p&GE z{y0=7ek*kTHm&x9gS22OhI%TISUewe{^s0zB`>v#)ZMtxUV#3bZ4s@4xBZ7f{=xTS zMjgZmg$Ita^MAU;dVAemUw=B|45r>FmtXR5FsFh~OD!+_cv>(m^g;R3A1ZE%DXGVA z7S!u}#RODr-fR0T;0ATf`Tnr0r^$#zA)MxYou{FuZj2}LQ=L;~y{uXgrv3RtgC3CL zagPj!gYwXgAEeBy<Vhb%1=n9ZeEE7s!HFL~WB?UAGMiG|!?p|81C6Y~-?#I@Hq_BSy2^5?8DEk+|< z%@~Y!MtP>$W-Hd&pMTo%-e_fBCl!)a0+7548?2C|73lft;JI@}u|jXhB_|MKo#Zc` zy7YIekWe+zh{UMKtrxu+VbBJVR*G}m==by75$r?Xb9!t_?=K%XBmL`dRdESv0OPJa^R~m+Ijk9}5Zz)WL)#zF+cz;`}d|DhhhkF+D6ZItVRp^f*$MqsO zDVB#$%suQ83qwY3EXz0>7=)0`y6I-L(u(-iF6$5{>aORTLM&7}pZT9x)vg&mGEG7U z>rc#njEE3+;6TL>>g8U4#JQP$dG~S6r?7 zy=YYxpoJaCT$|p^3SkS_xL?TVQke$*sAnCPK_Zq#CWrBCIIaMh+N}{y$SdY%K3APy zEq&+3w8>|yX@IZVlg5vKVmhpL7uI#tx_POuS_`$sW;?dRHJm&Wm&kWDf(-_pFx3<_ z=Xp$*xQ$~OyRtSfNP9MA%h^TZFjGC<>*g+ApzJUtCLR7Y%@=L?b4r*KF(dqo0kt#& zzu$NcGyDr=8Rhj%FpGJ^qSgy7?-VBL3iwHilK9uP6uIGCOO#h?&5M?f`EF6l7eIx6 zOWPGgnG(c3HA7+bcnT>EBi0Vu6CGncZCDKP({;~m;k8C_aKB?p&YECxDYA`}!L5ls zd9%un@2@GZt?{Td9`D?7N5ydDVfAd+&G$a0SM84*KvYxXpzR@Y#0@EPR4{w1IBy3a z1!WHjRvs* zK8P(hQkJTAqWF)dZB^|l5){2voP+IzI-pc2<+F*%x<8OsjBr39wUH1Sw8Xz~k2yDU zH6TGaPG`2k@n_BMQ@lYbDq~qxf-sJUN*Vm*1ZVTL*YiHGn$4}?^*y&xxgjiOF)a z+hgvhi)~aBgf4X<_h@D59R=s#U>D}Y68|}t7N{I07AZUxP={^wMys;*>u`eVCY6Tz zEl#3(tY)?oqZ&P(-}og~Ux4*$z;iT&(giV8Y|w8_v`P0;X9A5xGFjH43Wi>$pNFAb z?S970N|;;7WiAcsrsi)N)4Tn~jOIDzSn&D?Li^fjt#3WNi&+$M+fQ~F_s@RFK;@Jh z?{y?paok$_SqD&zZ{R+ikDy^t$d;T_YUygNscv0bo?QVqZJ1vz)mi%H`mK_hw4!nR zUmCXJY&lb2y%f?814;5Nd*sY{HU-HSqLYv>=ki{1!bbk?j2vqTM)pj!$H>&=rSGd00iBKgA0R(UYu?&IE41jyLPJ&tsW+1jHxM z4V}EBvZk5e^h7 zfuC4slNn4_s&bw(=B+a;s2S1UO~s_IKqTB^LfQmcsF$|jb=J!FdVTaD36^+{+OKDn zj#)hs^umH5)6GKyEb(2FWvCLJTZmCpq7^EuilZD!lSZERkRj|Mgb(Eo1{zCzl9r+yckTC>$Hxl7 z+!%nexB=H)IaJqw1)44Nr10q$x%po*usipPHYmmWm=}O8wc4!T{XD;WOyyp88-JwR zN&TcFwjlSof?ID;`1mzoF5`go7MWhF4bNlV@STGJaO5=JNXe(W$&S~KU?WEyz_yZi z657a^T{%1J&2YGuj)aRclE0K!{mZh`Oszzlfp?mv7O zY$dn{QUCzmV4(*f52#Y~saD~8wRJ4HXmODJ#g!~&k#@7wwXtL)uvz3!avO>I zj}FL!pT`YREe4-DKqaELeI;zQ@W7h6=|?W-3kT!NCgr2J<$QheNa-Ha9d?~^3txsp*>1()8O{>znyaz;tW%YYF5Hl(;K~CztcUI8pbxQ zE#P^MPFK@lizJS~EckwP@Sytz4jCp)ct9nU|mc^XvpaJ_2z89AMO^|4H5(MfcmB*ZgVM zLcfz1F^pvHIHpQjyS$vHxg~wyvr4yuMi`})41pYwmZJ9AN0NQnzAHLrL*pgeuBVb1 zoSt*JP^!pvA1F>nh5p$n6umiyx|q%bo8Hs27SN;xWvcEM&npRqi`O z>ea4NoP zQWA&dx`;Q#YHek-r#@q*e|aAN4wb=R^~sOt$l#Sy9Q0`KJ@E<6ZB+UlZ*q;%YFK^g z{dL1q>}B6e+c~xReP^po=*-Tjr#SILCq$c2;!@ma226+wa!dgQyU0}3BYj3Z)}{)gechlizAYC&gs zagXgV)g~qUsFX=ol{#uKNG9dq5-@Q%@~T|%pI^bm$=?lO@^|)Ly}PiY2SdD7Sx**zgV+HmlU=Gyejc6G;BP15%n=(2 zLx&kn6?_sd5gCD3OSjBSeaGTm*Dx_)8O&@O@Xw<7{-$9f0VCe=c90Jn}Y- z#$@e6|7;&b@OH!XO;`o>tHp+txWhe!hgdbH9^(n~c52iqreVX!KMC2qaz^L=-w-*m zWU%Q6LS@ef%g=e~A(WRL6*&=~rK)ptSlrHF&?Hl3WHV;t7S)i)R~BxX74~6V;!{Jq zGN5i(27(2krmI0r*$~m?_T?OrwdlQ?$_8sM9MCISvLabgS7RK;HcJ>eO$7>-A$$^QI4Ok%?XZsUSo#1av8ca?RR1ESnf^+8 zSkK((YDFOvCNg5(($=8BnfVv&=PYokb1u-DJJ7)Kjk7MFf}Hx#Pqt(8L6{c-$ z1o>@r?`wG1V2K3pr_+|8L0ZPRc}AsVPy@=fxhtA^pCQ|%zkL0_U$H)jv~tsO{iQyt zCSqH6e9x_$l?CsnqJp&8JUOYNL*{rrqSM>M#39YNk2$gq}6x z!il29Iue)n`pzt56UI`NUbbzW_8LroK;_br#7YbkHPV-#EeVmlY#s#a?UNF|pbalF zs5i8-{I}})JdOPd5wEDIVQfF$4R&{^04@>rX{|p&Zlzo-NRSQQq`jP5D%`{nRSp4@ zab#tc|A1>NcDiS8D}04k$3Nr;xUa_ej*niKw>T-etO=nLAu)^%Puu)8f^T8gvN~y0Yy`3Ec`Nn;9@gm=-=H~S#X=lCC8Nc3l_^+YeTm> zZ^}>f7JyOa-I;+8yN8^<_MdKu3<<%{DMb5W7`HY)Yk(Q5JRNW8Fk}+oEnOmX#CpK8 zhHbVsdZy8=2-Xw1W6eK>Rr(7dCC(2^4~a5=@DnA?KVEGb!}Qum%wi{43#3J}dzs!X zX|be2{p>i=DpJW`SGZB1;BN6}a8ffOFeC6i!Z%_Y$})P3cgjmCz1tW9<8YvJAIIiY zd}&Z2vi34pB58`Hh|yoKXKOl5Y>d>qLYaVP3sbEe+*>x@7FTK1jCxf92(Nnw`DENB@ZoWmZ@iQ#ZKn2}ItHZTfe2aHXobk@_3<-` z1A037imA!zWrQo(r64W7c_F>>$>-Rssd{ocjdF8c?)B|b45wHkUvcsfSt^&|dF`#S z$IQP@5cwhG2y1A1t@ge{=kK1+^e(RJt;_&hO%WcX6A9NdW(XqzzpF zLu5{59EEH43t`c!8w9haxlP{}G>19*6Eq}iN0V9V%_t{H0c|v9eld=z1#`^#=lQBP zcL>m-_806drR!YQ?Rtz|Z(xPxwuDCwX$Iwq(XCv7 z6?q}BXjci@H6gF%BCjV&eXXpZGIL%K-tTjVBBfz=S%rQU8Wg;4Vq8Ur)J&z#(jx`Q zr2+|AIT4c8B>#fuCWM=vFk(Az1A+U>&r=;D-kAeH!rY0-6M{YrR4I!@9e1p>t zJ$$tc>HEJCDIRoTS&>_D5e6*fVa z_gXO0mCBR{+2zQ48wbo4oy%-!(1tf#bO=c{(Oy~>KiDAy%TY-uzd!=~8#+qeAZDYl zPt`;bI~YqHK-l}e6FU`>T97e;G?jW!O_)qtviL5s22|VcN%p1NONeYq9=0^#g52Rg zt4LdBlbmCWOOzOeo~|YMC@^W6l;Sgo@uR!FClmg_T2~`^3>p~zXpAM=t>%eWM8J&< z;)DxWcdmjUC;h0mhwYFZuJ@_1{~em{n1NGk9vFV>+gqD?sg$}26s=Nrxkt=$7%I5j zmQzdE0SQ!YXosMo@24!~5h+mTDxiFejPDS4!H2D&TS3i@go@w$9uM_2`JtW|aP)a2 zOxp4jXVcie{hn}3%?0)>&KcHATeNyz&=SawfDl+O@`q;ep1Z;BErs(G09nCNtp3{# zm-7Tp1!v~knKsz-axk4Ttgo^~)!CHI09YH%4f?z6T#T5`^8k-(tQppI|3Dl*RV=ifvM+kV0Md z3>tbt@ot~G@#K5*gPKBOZWb09t6TSoP++)$H!wiV_0KUf^@m(mncEhchEavL3PV@& zV&jV`cpYBy(KL*^RnPYlxsAUv$+k6GHhVTm!0gA$-fEL9@Eq}656kkpalmhdf(I1ehm>gI!a)=LR<+9P zRhWy1U0{i+eCy@{5t~RKXcSqbzfN`fCVyg0-zShSNK}?-Dmt#j0zsrnu?C_&@KItG zePOUnW;dTL<@s=JiW_<3N#Y#)%Y!5nB{eLm@f(a6bXzOWlGOs#x-`2NhUG~5e)oTL zc1RkZHM&--<2+(ip%QhS??JrhDHlpu)6FYY-{sHO6^>%?4t#l$$*@N3{$v_0O&OnD zcw)mo7!{1tUZ4$sAcqpr=^)!dAS+Va@-|C)lUui{F{D)G1^)g=cr|?yl>ljm5c+w34})rD%GccqRmn;y z+rYN4R7bzv90@5@uBIm{x6Qfp#w;VunyruBg0>L&Fq{KmDo^>W@~mKAQvMhV zmvNp6VA$P7u9;iHEcP#|*9N^d0!p4smwN6Og7-JBM9Cd(@GKM*@qZHS3JOXal)A5G z?89Wgq#;8G3l&a|ftClDZTKYX-2-hbxb(|Y9@@H3xX+P?vkUm~9J`8OthrhEMu!Hl*($D+l_P>(`e^2 zYAK=ZR6rj;lc2CH^P%GTG3p&UPH(c@hSb+g!J-agZnK;Fn9f&=J?fR%XGGCD9lXkB zcY=b+*1Ao5_5TP8?$zI|Cv8#tAfAg~uGPIpW`-Pb>i|pTKX#MNUhh6TVkeikW2#V0 zR`!?AbdNLlRG{h@;IrMU71T7*a@I;MpUfU4+3*?oTH>DJ+%Ck5#eJM=~{n$)X`JUq0j81W7)9=X@Xb44N zEIvF}1~IDC5fnaShw-Y2o+n{W##f?r-L>m2TBpz7eNk(!_qW=|d&uCJd{)WP!$4fP zUB9X%@pg`@jOo2&Hn`*O(Ky6;W^}v^mn#OCo`V_dnB~AdCj`gx((63y&#E4p< zP}IY8MC2jpM?=0#ER9z%bqr9)){G`}=B$KA`HGhKCfTxk^124Iw8%j=LZu~`q!d0j z1V($LFuhf+&(9^RVh8O7E;iUF=7QcfRW&KCFk)o4*DP2teYSb3Q%qd(%<>#143noj zZCTRdqn74c>dt4(C(5rdZ0GkolB>_kZ6M9kU+$Cn?dx4Ucu;$HBG2C%F_jW|Qh{0H zr$14K>_cn?VbAK1OB)GSRR=hiG!KN)It9n47fPVYL6orM&$>nK$XqrGl%PO1z?bp} z9CuQmv5F1qI^;XY6h>m4*wahO;GLL7OOEI00JpyD5%CO`vh}7a*FvpA*+_eLwm+Af z*TK!`rM~8Q&^0LoJfVBQjytg*v3Ly*@|;l0;mfV!fJ=V-#t((*JFi6wCyg}v@ZB5k z3m(D6t{WCv_%@QV$^j^GYMeI98Fd0!=n{ixu1e$(qR&vB!Ks03Eif%S6a&b{>?IN^ zQ+%iSFRqcHgAM9XT7o;gZN#_I9vU_tirWJ2Wp^!an&w7_vo~t7oWRyUwoUB^Imw3- zk){_ET+NaJyFo+V_t~=EMIGBXkVNHP7OsDuXk6jSd3U3Gqf;_`0ypPUydAQu0QhRA zK-UHGdwz>{=;LLdiJl{|7H^QLP5Y_aFL&C`(!lGu5r~l3Rj>Qx_;2gUyAW_NH{!Nr z7)4sH8ci2U)y3{~o11dp7f2X>xo`NxFs-tS1V(YBEU^?L8h=tlQJ0A|>@;1&6}mGy zBwB~TQF?2fl#K$%Yo_jAlOvQB>!I=C9m!}dd<5M23=B?%;`f22<>`Cc|DY z4#aPfGdm7REjDcEv73zOU)Fz#61Po0Jk)$uu@BLbNd8uX>k*)60Gi-61SmqtFMjY7 z0u%)(=KxRYHXVT;b#YmsBJ3CRJrH7>!7-v>HCEM73ISvVU}ofF5`*JPWkB(nvI$7j zW|hb%xM9J^T0o;Zdq~!%K^PYKC^gnZS31VYOBX2+;z4|`Xa3ujLp++;;PhimW4Q)zC5%*#`5o0m=CWu`iA_xK`-GST4RDK3~v+&UA0l$v&xJxYP6C$5@T5l2u@V> zQn$iua@R0{%+NgVhG!S%!wz-Ba+J>0u+vcKlcP_ykY$21gzCKWo7c!9f;$;ql0I5c zf|v{%PkWL3aSXx!GY=QS%9F2szr*S#YTcWy#f~wC)A>E0MF-Y>(v>#-Jlt_7`B9_i zz39uOGsm)1;D`^B;K}d2yOp^2qIp4N9!%=-hOO229FKFW5QX9^@tz*ta8vAVqb1o< z5vC8BB&6foXvrh}O@8uEbud;co!|nzOK@4!=(%C?0;OvLacMfd zO^qYg|CTW`sV#$8C1#m)&0a|CA}@^rY15C_+3%hS>T%CP9&$h8S(mV)luhva^Ec%L zGVslqStYhofNsDoLMp_D)yzy`e%gqS~mACsC-{7ofQSLoJ$q5PFU z;xkS)Ws`dVCH(p8Uf=lIKQFDYB{yQbbNY^z3&!j%ohFwN6sXQh0OYLuYURa2P=MUF z%ilQ5We=g;hijYknD|Sd@XN z4O`y3@(nyulkk7iEBV++k19F*`ExmC+w+9Xj*)Z6-h)q#BH6E1*Fl~WUh>v$Kv!pT zHXoJMBb0$msDh6kM_(7r_?vu)1x*SoCePH8ybK+;!d56VkW1t2XmrAu>u;wmZ(rnAfGNZ$vN?EEhpk; z5>>%-8xG1=&1e6?Maf}H64%(LXJPzoafBZap^@cFK83p&5fhD7Plpp#27W6IP$4+1 z>h)etn;41gdv;ZGc5QjEikJ^WC%xh`#ggeoy#1-;>FUa4ui?v=ZRP)F*&`RFCn`pV zVg%IPGT;AvOcZeFgKl+>VkZ|R-5N_!5I-QC-bJI48Vz$}0W0Jt@&hMU;RK>6r60-o zJfet648d8hs*UlX$jGAAp`@G539Kc5gD@uvkhif5y={8MoMg@UoRbd5f8)+?3kC*< zuxxuduB~s;lj;3R9j>c}hCGCGQ!U}BS3wSfRn4w$+kCW4VG(+MIxckzkG^QyQ!VgA zQHMSI(fJ>k3Ts)elu;6Tle$clHYC%iJz-OP-SqAhQh*21plCsgdVxQX-+x`$z7Blh z@T?nJbN`tppVul}Yj+?T^jhKOVg!6gRz%M^_hH@&$gO}HKrka?Y3K@$YcbH$6^nc=t2#=iHT zT@3XP1~;;gM12Dt*5`#=6iN}(FboAir^4$lZ9ayu_8(|(fX>5raVT;|w=Flwggkb~ zKKm2$LY#_zF!=-`LhFi05}a83JscTcPMpS|N#jUn{pG`x-<>b{G zegd2b^W(e8pAtTwRXlL0L%bolS#92bzN8ebzqCOsyMCGO5LY!Cu*l}1LLeE)WpeQR zenac7{TvoY1;U|DPWPLmwsTVZ(pMlNu=&tL3G$X)sR!>7*F9SYM08xyBY9wb=M496 z)Mm>>SQv7YoA;N~bqJuTO|r8beb#fqUe#@;kl(7+O%vH}g{HEEgcQAEefa{s>$IbV zWC_aE$rz6qmy>rS`Bk3~%adQ>s@K@go)vDuG-rZD{4Mlul}qU3`QMA^NJe8;9)mz> z&ewgRJFjQ<&A>l8ss*2(kA$p`*Sq1hL#hpr(`QMC#AD%-c9Uu@6K2R&S)JEaBx-JH zRJ?VP{2d0A-6qOWUItPHcilSNO-nDfs%OneE8H5qe2w@i|05?V@Obp z{iOk%N)~TZUSFIG<`E_8{bc}m@jxF1-oB4#NT5j6Yuj}%2L~SZ7tI9y(?9E_95$9Z zBeU0#_Y1|XV4FbcmUVStpDmJDD^cG>5EgJCAe_zvkY0pg(a1l0EUqdTKo^>VuMK)W zv2)RLerGR&A&on@9L4lc@o^D@S0`*^WEbk?AB2^hQSvd9l z^|unELF*am77emM$?=B+H8cWeiW2C7S~|1Szy=dOLQp zHLv@=a$fgx3_t2co}4toW_DvSWigrSa!i$@_p^?8$G_Q!zjCOkDmLEl^?bUT1nM*r zV}F7pR732o_aVS5m?irtfj2(c^{ggJ-wJl-N^Hb0wa9{BN@BoTs{BI{Eh~P))<5_C zu|8xi%VjSe#a>^+@B2x+i$V_9V6Nb|X3b5VAqy=T+#3QOW(^Oz--JDs#%QDyDXUpPCncY7It8wtDQ?XclyD{)vH>rq?vkiG^>~1HCH@Yb?cYr*p!P9RKu|8&vOL^ z%)7NapMoBs)RR31SduA<{4sxIGi@VjnawiqMoksg+8n2`iq?mw1&Tj(vTW_#k)?gz z;y6Vnm_}B-yKjY0KGEf5IDa@l>t9oz9T z{Ax&cn#;a#4ZM#f9`I~UcvHy_(@7%KTZ(?e&8=ri07g~%t4sN*tKewaJNe}j!1S&9Tlf=s-BWC zXgL|#-O6l8*c>#cwXuyqWPHD|#HEQ-Uyk)*l_Ptj{n@lo=?%~6Tiz}rZD>hk7XJAQ z<&*2@F%I{~%B+olEe|xfGYzIv_egeVgr<24r8FHozXlT|Y{6*GFg7^7q9aPuFUHbJ zj`ZH?oI)<&@6Pb%GM4)^skkrHY`fA{W(SRO(ev9+du6<0FEN|qUW4KVDtHnYYc^jj z23P)eWZVAn1J(0LXSPL6Dv!?maMmkRNua>Kxt9H2EPb1N_y?~c)iENLYi+oEkfgkY zTien1Ljn(nUA9+w_SH&~)dSYMFw2`wMqIFmRk zV5*(@`i*GA!)5eqPZi2Jb0u-Cp^f(>E-vqb;Z?=U@Dts!w6K0OZEesY_K7FC)W-0pnNqARUswi$lC~PBQ(8p@+$5*Dhp$8OS({@@+rG#MD zRR)9hOnXGkYSq>1ppK*7*2m!RS$3h&qm43a+P3Hq<=ls&pUE)zFR~~V{=_^8j;Pbi zoc2AFhltWzP&2e`si~Iu3i}9UiseUsv`m{YTPzmx|AM%EOO3?0C#?Ik6;ISD&zl$H z%>vDDL%L40n7(ah_f{~|7cVxKe4n){P~zXp3=FZPX>=+!DZ{zhXf`EMK%#^Ec0{OY zrY*jmmuDXT{&l+q#%`?fRwW%y{pOLkCqI9_zk6|aops?d<+a-p9u}Efsyq~*p07uU z7t8d9z7bPqWHWGEUFc*@ipxNHSTV587F?6ki1^{G-jhmx&nn7zq|{7*Sc7`6XeL$c zTA3*C0|-m=gTs;;;^=3zxztB7xJPl$o`o!JRyFrR=pd>}9vCf?LPBNr5#|)!%3OHZS_-@ar$nA6!4Fvvziwxh-&`H`%2~=J2}yBb9kd(x*-8U!|Q%&|^p3 z4&bF`s=H^$=k|#%xl+(~uboGC)?mV{w1)2C+&cwf>akgv_eFPk0~&7jJrt03tM6dd z$ePmeHZMl*CcPSdNKw^gnMWs8$REufBljWUq_NcU-Q9y=zPA;E9sEnPRX+YNyX4X? z557Lm^-QB$E2v^%Q(Se9mCk$MHgG$fC@A8^~4PjvCl5Jv|5L5TU ziG0w)ZHymA?L(QP}^PrN9JAo2$TKuPlh0|A3;pTQz z=*()712J(}inIc2l{t^R!}Mn|X4$Y0pIgI2xa$x6b4@1t%wGCDIh|s|QCW6!So<`F zCze&J>)`Z@oQ^oNwLHQaO&E`p_xnj*#iZ=oiiJmYAq>O#qr>pA+j9{@1uy*1DYHFn zQOZ_CU(iS0>U}FW%}KW}oU6up85%$MD|fXkDErqx3iA26bnoEu+wOJA=9biGTY_Gt zsfQOe`ivWQ9O#eed*uRMJ~MU?rm5VsGfZe|eB?cVNT-YIysvKx-e)J9$a&gy`ZFng zYGKnkeID--X0g{6$|RWhA@jN5#;Z3ePd6PkpD!NXD8qzxFRyXP6hCjRRC4i2coe{A z8S#0*KG^l!&PF*~iS@*?Tjf&e_X|FPU-8#|Iu!P1Mv)FVz0@M>wNfs5nHxeKK(YR* zl^XxXrYLpnySbLu%t?*RjaEdlnaKxbGO6N;NW-&lJ6o8PDE9e|r-#QIf2dZg`rE#L zl)fHw8$*r9K&sqWM77v`{gU^f4=Nb1yEG9&^Gyo(nmNw#vEs*Xcwz#?{I$n8)L!$b z`!SPaxjD|-IEM_s!E>hY3-X5Cc&Lb=2Bfs)$?rP+sx(Nv-(c4AskaT^xzVdWP)1IF zDyQ09o6iC!0uy@nb&61IK_NZpD{L{hc#6~3h;4~joTiINy-7Cb=yyuZ;~U(AlaD6R zn4@ZYgvijlVR1zIM^^M6B5{ryzBC<;Tg= zs%)?2$kYvIy)qtxi5_9>%-yDxXYF=b3?&KNH3d=QLC9hu^gOte^#$ z7e`IA3klDSTXF^Z7-Wzo-s~#Q= zcRs}2TGBC-ZG9Dx`=Dz`Cf7f z#&z;+%*CtcC8T8N{WW17k<-I}(Ht+#Nt^=8Ccn5GM~;fA>y@;si#Sa|iwfhB`p?D>AXT&{v_Ey%*gZ<# zH7itAk&s*L-uPmy9k?}KY#(Hb%OI4C>Ceenp2+!=@cwL1z*KT^;jHw!u8eqlKYIrE z+2v1r)*m42Iu^045s|tk!IogtVoN)^%2~|v#MasOa+g0b+CMUh{cf%?W!KM}gzFDl zh#mOWoE~@k2=4Et2db*dYq%fwY~4L1ySNZl=3VRZH_dU#3_L z@uAe%)}#5^Cw+4lqT_*HYK0m+d~PACe#{1SUsHs6&JzYIc~p``*bL#qQj0{E!H)wxnvq1{vI-(o0lUw(PA(_$NNDapj{)>MMdzUlTpqH2^##4o+DPeIZtpz(pQoPZOtW%>pcF@BC_NDyD>?L{-S>~T_Ro8U zRYW%?g(7u3&G_{vDw`6&8BW-%UoXjw$n)A*qA4_ZGCph;!c^FUVmOgh;bt*k<*3ka zH}>RS$slZt9o=o+QPin^eb6cxONV*lZ+NV&=~LE#|1?r>)b*I)?q2prC7~37`(S6T z(>u8?eCjCe-<4Yf9fOd(H|=^qo#9^g_P;!esX;c62tY?lMo2bN+@X){)}zk?hFkkU zxX=&B(LvN=Jr*jx6XG}v;Pa7cx^+!W=&&4_BnxXopdYG2MSV&o&cia$Fcb68mnPDV zx*?k-dze>-OBdqsWtWlf!-m2!Y1Wsf1%?(;oSoblLQqoW(^rX~cxpltDw9prZ!v0? z(#vcAxbEN4nBL^sczSo2!qMlCvAx>UkQEZeho*Jo%_nL#Dk|r_Y`?4q($g2q zMl4N0Iwki$l4aBqEIXs|%QqS@jOaauuTtd`b~1Bfo=I#?4#_V#dCA)&m1Xy$e2*Od{))SWual&Uf66MyN zV_kV-e~lfLB~r+1DYF6 zSq<8ksmh4Z;?jpSdAhxM?##)mk)wdsQ$P+Eqa_90hE z)|Z@p)Qb@Dd{qxC5rr>JDW$(T-)dvNae5(=xzkX7H!S5%mZr(HZir5@Xz~^_*IYLM zt$ZP+!thu}w3FAg){V4aLMRLHpU|&EZobVD_(Un7teEUnx+fm0iL6FVx4yg8XhbmG z_aG#SdF#h3`-HEi_#;AHTN^RzOsDr{@A|mA*KFVSRXX@|<5yrq@ZIZqVUO}Z^*m4@ z7}9xcS(Z3eJ{KylMdv-B#%(Qr!$hoEx2DZPfFz+iS`VKux0V_V$HNF86K>uV<=GH1 zv>BP-DPPJIWj40CTPR4k1qWXTySQij$gxbGUm3s#B$e}Xj{6J;u2%TIr8h(ZUDoI7Oma2PmW7JGh;{$HTTgj6ur}wJpfq}epzlz5P)(5K zZXk1v(rmdMlByxx4gG+|Npa9!bJ-{?=(n?Ssk;3$C$F>Rn~`a+Qq1`YpcrwP7dB}Q zPm@yDTL%-6@_K=65Yp{$e>%u(hV&)6qlYQ8hz2sAjmh>U9KL0&`9r0gM^^82dbd_Y zEotrOg^auJ-8HeN&^TY_wF2r--q+OQU$9RIaXcrb{jINTYpo<&OooQX%6$F_3wi1IV=*_pG^Dr zuG1DJ?7W{apPX%P5K?M>c;{uYBhfXy1D?m>55wz8KL&jAfPN(OIiax(7dUQg6wRb0 zR1bSTS6F-|qe5?^DUqO|C4}>+grsv`S~q7`?1CF+Om-u_y*D7?vVas~jp<2!jQZ|W zm!9xpetXK##6j#-V7IQBBCr|q0|bVI9lqb zQsyDyt=@j(RWadT^-SIW)+k2S(Or0BZj{qNZ)#I~sJlP0$PM*EY~EESYH9>+EA6QI zgf)Hb!u5&uSodwYYuxv_v(*H&Tl~Yi^s_Z0x0q**;L_V|gzGq}?83qb zj^AbN;)RRYFIPU5NmZ@NpRmPoeZ_Jse3ZZbEJXf6R=N?B*JJOag8T0w@0<5){`zTJX}h!=8;o@LGt zhFH3fwYcxAd)=q8`^o)UYn$HNznQxErkA*qqpZpEiKsI;UDNbMz_puP9^nOBM%Vp2 z_Lz-rJ+&Og6K)UGb&IQ}ZU_6a!vjk*;=GizFl@y#ZIJ`!zU<$IF&#f3HR|_Qo|DI> z4Kj9%-u&*GJ?vn)r#2?rQ9F9AD%OSgi;5E{I+I-dcA~(@MFtvP6WJ)hIe;^E@M%aO z;=Q3(56s5`_PneAXK;6cv-2q=W-;t6fvX&SU%pC*tg$DCrx3q=yt11dm&EfO@lBBl zfpPI=04_uTM}ncdlVr)+0N78cmvp-rRfw zJ`Ug3h_<82zf*=jqcAY~AjqzA(L)s2)h$2I%Wzujx|3kTZfIkvkOXc>nB1RwA^s#% z(bxPY?e+MN<>0yr0WZRIm5hd;^og;-RXKOQ$Ok7hk&yLI;TFn_jxP75<$ElQ<(~hs z3c?Sa#3Ma3w{dX6sOc_@ysixCibTvFj8_MuOMh&;jteeiJyM?^FK`Vki|wGUpJ~?Z zFv7d}{MUR9`O%$=3JXwO;6AQ(iqrG~Rc-u35yl^5TgX znc!OMh|I^;*0V+PyMy0`10{ZVYahMYKBXmm{z?3pAxa5KhpA~F^33j=O0AWC_q;r} zm2VF2G$C2(Q~GYpUNh)*+gRh`uRXGJoxA|YXUg`6R-FpVG?s|7tqP~U({PGXT}N9* z{#vo*bzfnnWsy8Z45JbC&OR@KKw#)taB-!WwBWI!nyTO78Mx{Fy0JCHMDJ_1y9X~`V95BDo+KhN z-e#WnZJNA>=0?U?ds0oLyzXe7p$MVr38c|gl3) zJZtMtKz$O%RK2lBggrc>WS8iT-vHdhL$mSRx21uWYmzqn>0<8T(bG}I;yIzG)0wv> z1oh9B8Cdc6pMEZ7&}qKNzi}q6)(Wp$-RIdEFk&1-GG98(9vT~FziypZsU|m4RKc~& z4)|HpI+^uBW>Y~|%3z9TvT4pP zBo*I14O2K{jhh2et7T*<Jx|1*NWe;D9TE$sCV7k-wKDYL#iujQ_HWpR}4pAyi z=Qe-11TrS{uBAVzl(o02&(=$%M!lS03OFwgqaFQduJAyX`em~NlE>Tx1E zz6a$DvVU%k96P#y` z0K2w3XPDTm7(O1K4WwOa z45T<}N@2AE0rEFK1c3@Q%-+NOqV{_0|(129fbGx5nRE$Ux6W*QxABN-njoud9pO>amnK z6YZbgJadn12Q(lij zp!mtR!W}70{GZR90x78&wZ+iR4*r;HMe8)NHrLyl#S_%bqDVAkPF5e@7AW4<>h-92 zLRNWlp*2f*n{nW_w?6SRR zGR>Q{gyKD_OENUq%Ns#Oj|1Y-ACwQFxv5J^A~{(GIsIHc5Gyx@V+9`fG!Uc|hK{?|s8SH}0U8p!Ig{{wydW zEa!EBrCWh)+};O;cm_-A6km7Z_pOh0u7?AO55EI}~5V3#iS#+nx&lJME2O;6Bg~DeKyzxX1 zgtpe)cDT{E7xQ8w4s3N2FdR9s)t|SuKZQ|cX%N)2Upg9ZzMrY(wzbH#qFQ?r@`xXE%qlkU3agqe*LvVvx>F=xAj zUVfvN52Bp=)}AQj)4ymZ@@Rq8>oDNcIG#<8+B-XN!a=TyxD1pDED$!u!v! z5pQNKm+IKWXId3j-)ObodqVYulsw5pGz^l+tLf2brRr9DC_HS!yz-{F@8bbm76+cb zbxH=3fEkmFQzAzhY?wm!<{D1x)S2}&H(Be$BxvFY`A2Qu2yo^o7iW0Q^76cNkD~QH zn_N$FD&H&%7rs}~&?hc$WXZjldv`>@dzrW6mUWh1f%WO}eT==tM;RgqXGtq$9m1@~ z?PZG?lO4PQ*3+iwGw+!_FR8rwMvYSHmr;>?{3l#YpOtp`np0J!mNrA=dyX`pMNLAk zZ275d#aAX^yfET>J*d-yLwD&4mM8B76*xxdBJ(O#R(c;&N0dC(AdA*Qy&wHvVs&vB z?|}Nul4&|8hf*uo%}=9VAtU|MX+e$bYS4bFOOt53a{Kr9e{SsiIja;L<5#Btu14Mb zA#b`jig|i&;gMV2Pssg)E?b3b={BBzu;A~@DYtl!s8Wr*YUzP64^8dd-#Ff-_(Oe0 zCN1iHKG1A)p-M*LhM@U&Fv6rH`a+e+y6NU1-xs6!3-AMam#weic-FoAly! zSX4z-yX~S{BjL93mI7*&ClvpAQQ611?t+iLQd`Zgy9jG#i=)er{Dqp+#QxCK+bvLG zHds35Ti3=xqg42)u2s2M=#EWokY3y=<4+sn%La8qkmA~NLB)zjd2Rjy<|5?XJQVW* z9fMpRO$rC@!{gh+QiffflpiD%V!A_e3U4Z&gPU>8zkM5%ttE}^su;1(>Y}lm|41~L z^PApmzJ_8_=JW>*+5N}fVb8|LzgWe+=3p#az=)h~O^NHM_IWoEdWI;ZuH%HzKqTsu z)FpCpf}-c}h{NIM_gD^|3Ar&1SVe!V{c5$;nCv1EbT&UE*^fg<+Wz)rd3AOwh2h<$ z_iBYKCMn^`Eut9vWAe=xo@ECI6A^XnZ8el7CRB6>;d~EO0|LDE*OnvdbeG@Zeq|MB z!C=JJaq6U1PcnY73rhst3>*kayH!rZgvsU->E9jw{`HY@+wY&dzAmxE2j|_$ecc6& z@1a>&#W$5@-362A2|gxou2=`t_rp^u(5GFwVwWcuKD1C*9K1n3JblLYaCZjJAdu#C zc1wZJ{_L+5-Kkpx&t=xX(24a@n3%LM)x=?F?SGxm5^&ufTvDdLW>Av<1-4(hH0RAv z@Z9>T`GdWihi2oiu6b6>)&+*=OlGa!E~Fr-W;97Z`s8EWRN9zVzSH~}s`bj4a_;*_ zli&QcoN<%TGO?&97TYB7a;wjrrdhvTRE4P|lQ{Qolq*QJG7}uH;er%6XN+z=+uGKG zVg$VSR*(w8tu4@!dqw)`(jV{g>pdLLd2a40rF+9rg`%1rX5iZux^>uER@BKyi4(Ao zw$^-s+rCe_ueW^Z>88*uL#s;_E9WlGV&S>^$fN67e<;^}L^}+{tZ1|@3=Y?OTbL^F zT~z1h9hdC^0lWo+E&buo-ixk3kXrM#&X^;9sSM@1?~ryo=Qvll)NZ%N%-6BTF>&}( z8xb`8S}_D7wXQr+j+H$1M02m)EQ6ui6=n#dIW%Q~Hs(x63N`qdTlH zS$nA_v>PI-s^lsMc8z2ax466-9P+&tI7vthio(X`CKdFORK^Kby-xMDMeKWzE;x6T zI5-Quf@vX~nIeVOV|U;Dx+umOzLVnWj@w2dHb(xV=9^x+Djm_KyvJJ(5?i^-X;Ln2)f~RJRH@OX6gF+?DPYhR-#ogD%6R$P>d?{;sh|s#o0El@i4k@8>X` zDzp8^;nz)%oa4(%SOS*{_J}MC=_94=sE*dV#h=QQ=s2vVhBZ7=viAzCzVnB6;kqc2 zG@K~pGYn&sn&t;i^GWraDcmWN*~01NO_2^(Kr4n4$l=!wd{jSK?VLDXJwr}0xD=H7 zFf0T>CnZ#`TStTsc|Y?^H%_|Pm5#;G$L4A}UN&^~t9kS1JK@Sod^r1hSL@t)YvRiU z=iGC+?i_;8!kP?)$68RfGpf^#9ff(1pLe4s1fFrooov&Q z`W?j6EY#rgd|~(68)eJCs}x1LmH&B;=pz}Yothf%=Zw3o7sC@unXl!y@KVF@Fk-1= z^fEKn`GF%salA!$I&<^qzK_pGTX&I(^STlmS3BKx96;Qgaz;#iMk3k+21<7NpU-?a z8sJ4f81dz;=tw*3n#ymy)6ImAP&|TeILu8INVI0)*#@y$?USL zhng>Z_YM0#I*z=8+~%jPeJ8F~5$5{Q$Y5$%-Tre@TRZJvuTKXE4qLL(=I(^wVnavl zk8R%ac{HQLfAn@#E?@$5=+r7tgvACyZUx%&+I@Mux#VgIPzl=*lkXguVt?=R;Jm^8 zLYCyE+Lqau+?0G`NMs zRCalpjN=Zd1~at6BYmwn(EQR?i^hTf0%bGZmcfShOv(_2V~-#agUAQNk*ZC)6yht%4q4W}tD(y!eQcy(brH>;N@jwJ=50@ z)B&UN?e_*i7tWDq8v$f%rrke(ts zd78&PccT#8C9Tgb6Lxkof4t(I_{lJHt~|iVw_j+8OcnZYHKjWr8-l zf-g>WCJHrDFwz7Umtzyk z!TjU~82^6Ur2*pX{o_cD*PNWYiA>#I!sSDkl$c90246RA;NOQw{?ES<41>V`^_Sw2 zi2p{##6*-+oHp@^QXnz}f*2G{>zS^pYM!@H!nasi z_mhe;@qVj!zXi|O>sUB&;`Id9V_nK2)3shRU- zh4p+s^TNOD)3wpSSC8ErP#H7h$Gu$P^VH=+lQtSS+&-W6u;uX0q>V^$ z7Owwr)Vxjg;D#M37h$3{MrV2b`M6>0Y{F_-CoDE#$iDNL|3O{n^%<@%G3E%%&v@}d zjwKUT&W>A#2QWkS9C$wwlmBv?QbP&e@+hbx%ejU>qpU}LK@%)obKEufew}s24`%6h zPC-O*0gcSZ?-Gr*^C)nNwS6PLpo3;MDsyYOyLSyX+*K~PY)?Op5!&c5L~6f8P(=h* zep`u$&*s%o7nEbSYl`3H%%X!NNnkm+Sid84!^IMjUn9pvnA~`6hr)tz{#&_g)LwY2 zNP*1lu;{LS*KYGZhleE(ugR9)deDjcXggo=L$2lgkLNrMOLS{zunlgXaVm4$SMEA5 zv{VceMeYjo>WJw-z_993Y0M6Xs7n&d3S88$q94Ep>mJ;DpI#QFlONP;rY+O*u(XV> zG|&K?m$`fz|FFedbuKa$|FfU?qCxbejcegYE1`9l)kGnqnBA-CckW4*hVr(nOu(CkkiZ{gB2`dWUzS&1nyxOM!K;7+9recrWU z!?+3u%|{l_S>(x86pm6^v@!?WBg8gTmR?3i2c~KKApxPU_6pQ*(FzGy(i%i$_R;Vz z+ScFW_)h4S;4T+X>`lQO{nbr|g$_z3*4D_yfIKv8Nd6M2uT2?HA^ag^CH9>k+>QFN z8i!xD`vGU~tR)}jXeYDK_~x1Q1iB4o#>PJ-uBZKSW#w%J8=1?#ELEdRZTxGW-t5wF zi;(4Av8+azafWIgo<=ra5c^A|wl6(;YH0R*7_}9t?37|@ zWMjG0ue>HaV%4JeQbc;YHQjY8nyuLbpS|_R@>hNr3d|(RLpd7ypw><%GjsA9T5Y$=x}Y4%1+ab!%h z-i!Bds`y6Mx=cSfIOjGv@x3D_l6|7{#ymo3J0PhzzBi;0uPxevRgF})rY%K5;Sq-! zk11&jgw$!(C+ho)YPN|v+T#65j^WoNgLOEI9TvPZ9{`OPm{fF_dj<$}9 zv{gY`Py5yN?cE9_Int(_$WQMLy;AX!qdt}y8qv$yzm=6d@o8Jl1m`-_NP*_SgFA}t zocNR}tML=P7~wM;uK4TSL-&E*lk&&K3-z=qN; z@}ajL>IM`sO|B6T_e2^@zd8I){nqZjHViCY`7t7LW(X5zrmJkugOs*(dS3gRT?Kqo zVU(3vi(?!)viQF_x!#M-?-Fs0efmIroOIMqq+4BuV8uN4?N zF*k;c1d32#%%9BF`ikmi8<2TW$0`4SG?R z?{a^`*4pV)i5Bfl;hN~X;aVvU+>(@cdNkX5r~8@BBew`SRQ7#)NAq%Cu=C|-VEPIRd6?O3XP)Keur5nRvsX|=Rh2Q#7Xu~XQR>Yw0!JCWRgL}T5s z`}^acc^bi4U0U&}64@!g+`CBT-$WI&c8e!{owpNomGz9PjC32}leWFH#+?ME zVi3qC8zz-m+TMnv>F@l;lNI4qO4_{-^UMztdJ>Z`J?+e~8j&^R_Mt6gHdE75{G{Fos!*k`Uujhp-w{0d6IK-!#FB8Fwl4YMQfAA@UekUSmqO_v0Ae z9XmEybl;MW-C861!lra2u`FtxI@fufyA`7ssQwk-FFQy}{UF;?r!S(e+P2h^ zdqM5zgWBy(gBSR)Uy{!PB3IOTJ72h^)@4v|7)yK$8IVkwb<`av40zSMr_Jzk+Pium zZZtwM5xZ?J``9AfTuE4q>N7dJjhAcgw>P5)$?Mw#bfJ?zQqu4z?acQnndKbmZs%r# z91)`!YCWAjhwOVV2uc=DCiCcDxbn%Uuu#bj#Q%_JP7T5r4tldrn+6v?FkenS|Ik?9 zu&KyRY-d;jXA?Rk-tw|7Iovis0haZ9PkU8g9D<+ z_Yp$#ga*^Az3L|a;cyUbCsLN9DI8t9GAgCJf5*FJ&x|4ek4NWN*~+`%W$R6Eu@;;- zf7}P6)GLq6=?`u@O{fdR+TCBcH9x-C<`<&v%vVA6)0r^20BvN!`lpxpX164B?IsckWXjfm znUaVndDfuL1kZn8mk&~!{s*D^KmSf21PO+xP^%E=Vv^|O(mV5K5hgo$4?;#Etfj-9 z)Wt@ZW|EB&Nh^*Tj0Z7Lo54(I2azIU(Wkbxp^_MhbM4`l7@Ee99_-?>Vg$qI>NTDX z&n8Kfpfg&L!WX^P>?$~!q|)I@)pi9Z2j(@u8TccYZ}(|vbD38~jcQbqbE>Kb9L^f| zf7kKc#Bjf+a-@7FvPSzyvcye7Tk}nq)*4y4ReF`ysOZ4GuGN$&dnTo%&o*yLSuj67 zYvFJ{i0_d@wRzh}NL380_kPw$b|0+SBPd}UN~Rf;rkVaF?zH`QbUyZG>uh1p<{ECv zqO$vI>o5-62HPHv{2RH4ddOd)-ek4^5)oQ z0v1rcbF1QoHjz%=0OPQ1Qrvm&OBBlnBEw>ERyT#G&#Hm(tKn30Zh>OlWG+oZXqvB} z#)t11Eqdjiqm^0q9GCL876+9|JdfHR==73H6T1afDojgej%Q9lv#q^TUJ*mfR?~&; z_FnduvpY_Jqe4!igj`0B^KwS09rH|iy?H7?)FD^r~Lo z0^U--7T%tc8=rT&uN_FRg6`NPF#OOAV-*fPZp~R9#ve1E%QaZvEo2VQg6@u_u^PUu zs{Zu#&50mLVJtED&2aLUEFw_^v1Z-dFB3CNbnraMwohh)8fpFuHgVYl*U4^~Ag`~i zVJgeyBdo@0T{KW@U_TBZ5sXO>K-<0o@DD|vnl4|zKJMU&Qp$WIn2afCeBfV|g zCw6%xUdBPI+XiJnKOwE#pZNZ0g9dqH>8IY?h9sFzyoY1==VSbR^Tgtlzd(?3Yk5JW z^Rk$4$Ly3}rV>(i)CgE{!F8nS1U+gz78WqHH3(*X$J_#CaR&^xvbqDp{&&X;1u?U* zvaqs-LCjKq<`Fpk-#!_UPasVJz5{`3f#ITXh$tAHGLcUpd!)a(JO)vxPo8^6by$$!00<5I3Eba zcbim1#l=$A%+rcrRulpP!$AN0i4=uG0v$;N6w2|J48-BgLHhUqP!J3X1^p)mLBr5! z)D;W`K|mlW^MwR_7}(X1!x3ooRayuf3Bi4FmGQuYMQnTQK;)-DL7_7eb=I03&D+&@dWsaTF8` zLI90G(J3KsfOo{2f?oCKUs^Q4JOb-^fGG$9b=4Fc35Q?7AXxanQwH}rs>UXSl2=r>cqY*F=B*hJTEewDc2125M z9DqEAfuUd&;G8ft6oCD&{eQCo`JcMP{5v5OebopI1pyj?BY{Q`AfOTK9f5qX|FnU@ zf+!dY0VIU~gAo+a2pj?M47L$mNfrfFKeEFoJ|2fQ0a?VS-~j0Wfv2 zX$`~>|AS%vWdw!#2g0jf03rUiFaRMM0`wrZn_s;M9CWouO8h0f8e-FZ90@24EFt`=5fm6}8o&oAQV3cL2}J@X5F7;< z3s^!p_$r1SrNBeOAm9|v@_*`12w>C4Qoyb@4it9G0~!Ys4gv-S4h57O0s;bbClq#6 zU7bK^C<-VIkXRi6zz|?SDIlN-1b`2HWxQfD3ym#I2$1j}@)!Y>TG%FbHPUEo5nj15 z7_0AKK+j->4+aRL0Fg!j4F4rWz^`IZpiV&}u}TGq{qMZ~S9ij;EEtgR>Quz49ux@Z zt$!*=fHH%ikN^dV`AZ17Y8VWL{zG>{qXBWpo&^whBp8hV@?GtKU@#1YmA$k8LL@Rp zx)LZQu)I(N1i*m?fv;jnGy-sT6c~;MVrW35u~Gtcr7->yUhObgr3nI#ZLA-`Kny6C zuz3sv@?Du57%T{bqkyM|0>lOug9Ag2Z6sHXz_7yeDu&G*fI!14BzVfmdu$K@!375V zFU8e4_*duvXAZW`ffyX1u~4Z0Rj&UE0u;NSp|2XjstXX15Cy~l_r@B5UR4)=`L1Lb zHV7~X1PnYi0s#SH0A+~6j_s?F#`0aAFJKrP2JG9Yf6`7UBoYoVg1DN;e+jS3WNf*i zK*01w0Yw|?UvuqW-3faY1d#A*DuUq<2v8rR&|qL1qk+358gz9pz+efnOZinJa0D2T zv)Hu}48#Cx5qlOuF=P3zY7#JZ#$j78Er1XOP1&yjE|^$eKn?!oxGJc?2rwL&v)DZc z4#d!a;zR%MVvYHCLO@$Yz>sjD5eN(k!~hxs^;bIs`H+CZKw$ekkP!M0w}T=9)rT!p zz@d>4K!qc)vJ%kC(J(MLC8X{jwA0@lKmjSBS23)N1a>0yKWuhrK>cEEfKjlkLBMV= zpsQy`B0xZ~iWP0ZNF#u=76iQ-z`uORtD7Ad1^S0C|J@&f7(gYXu`AZqNMrc`gZl5@ z1mwfYZVV6vPT9Zm0zilccnjNL{=xky2(YIAl{uJy8Nr?rK!^r34(##>103*gmjGhG zq4-zwUF}X-!mGKBEea6uRqOAuuRclrO-_Ij@YU&sTmT*#{4ZI7`4WZBWFdzo-0(M>ibTk+O|C^YY{{*r7AOb)Lg8)MU16Bz(09X4a zmJd*}5NtJ}uWZH8zfUC~fDt%Qi(-Wg0zilaNFxXgb@jW@zpo;IFkwIlV3|OmfHy-d zA>wN6{yyLW-H$*6J%|Ku&k#81uV*k<2(J!t2owUpI->p({zH|ZfK>uP0G_F!5X8Ta zD9rx@5l|@52ta-R#eh}v_c8LS5d;*FA6R*a0#*qI@OB0LuWkCO5h(Ck2?oMS{Hquo z3J16!+k41qRAb z?D0Urx%-z@I&@N)8=9-unaq diff --git a/doc/bash.ps b/doc/bash.ps index 7abc39fd4..6963486d1 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.2 -%%CreationDate: Thu Jan 23 15:52:06 2014 +%%CreationDate: Tue Feb 4 09:39:00 2014 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -329,7 +329,7 @@ F .474(xtended deb)-.15 F(ug-)-.2 E (~/.bashr)3.599 E(c)-.37 E F0 1.599(if the)4.409 F(shell is interacti) 144 698.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E (TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(1)198.45 E 0 Cg EP +(2014 February 2)141.79 E(1)195.95 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -448,8 +448,8 @@ G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 F(ariable)-.25 E F3 -.27(BA)108 720 S(SH_ENV).27 E F0 1.01(in the en) 3.26 F 1.01(vironment, e)-.4 F 1.01(xpands its v)-.15 F 1.01 (alue if it appears there, and uses the e)-.25 F 1.011(xpanded v)-.15 F -1.011(alue as the)-.25 F(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E -(2)198.45 E 0 Cg EP +1.011(alue as the)-.25 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E +(2)195.95 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -584,7 +584,7 @@ F .389(wed by)-.25 F F1(blank)2.889 E F0 .389(-separated w)B .389 (simple command)2.675 F F0 .175(is its e)2.675 F .175 (xit status, or 128+)-.15 F F4(n)A F0 .176 (if the command is terminated by signal)3.508 F F4(n)2.676 E F0(.).24 E -(GNU Bash 4.3)72 768 Q(2014 January 6)144.29 E(3)198.45 E 0 Cg EP +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(3)195.95 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -695,7 +695,7 @@ Q F2 1.053(compound command)3.553 F F0 1.053(is one of the follo)3.553 F -3.554 F 1.027(separated from the rest of the command by one or more ne) 108 698.4 R 1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 F 1.026(wline in)-.25 F(place of a semicolon.)108 710.4 Q(GNU Bash 4.3) -72 768 Q(2014 January 6)144.29 E(4)198.45 E 0 Cg EP +72 768 Q(2014 February 2)141.79 E(4)195.95 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -827,7 +827,7 @@ F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 (ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 716.4 S(ue if either).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr) .2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.3)72 768 Q -(2014 January 6)144.29 E(5)198.45 E 0 Cg EP +(2014 February 2)141.79 E(5)195.95 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -950,10 +950,10 @@ E F2(list)2.727 E F0 .227(on a successful match.)2.727 F .227(The e) 5.227 F .227(xit status is zero)-.15 F(if no pattern matches.)144 547.2 Q(Otherwise, it is the e)5 E(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 564 Q F2 -(list)2.5 E F0(;)A F1(then)2.5 E F2(list;)2.5 E F0([)2.5 E F1(elif)2.5 E -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 +(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 4dadc1b93..3fbebc17f 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 a36156e1e..e4c1a13a5 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 a4fb3bab3..97c6c160b 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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 L+IF>Yo&Wt8iut|h delta 6306 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 diff --git a/doc/bashref.html b/doc/bashref.html index 93eebe1e9..5b4eec4ce 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,6 +1,6 @@ - +