summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2014-03-07 16:11:28 -0500
committerChet Ramey <chet.ramey@case.edu>2014-03-07 16:11:28 -0500
commit15baad6212e659432176d7b69ee9eae30473a914 (patch)
tree951b99ecaa5657eb83ed2de4532f9b593a502649
parentdf8375c37c241d6bad23d5c3af5c4233e363b7d5 (diff)
downloadbash-15baad6212e659432176d7b69ee9eae30473a914.tar.gz
commit bash-20140228 snapshot
-rw-r--r--CWRU/CWRU.chlog26
-rw-r--r--CWRU/CWRU.chlog~5870
-rw-r--r--MANIFEST22
-rw-r--r--POSIX2
-rw-r--r--aclocal.m42
-rw-r--r--autom4te.cache/output.02
-rw-r--r--autom4te.cache/output.1482
-rw-r--r--autom4te.cache/requests71
-rw-r--r--autom4te.cache/traces.14463
-rwxr-xr-xconfigure22
-rw-r--r--configure.ac2
-rw-r--r--configure.ac~1212
-rw-r--r--doc/FAQ2
-rw-r--r--doc/bash.022
-rw-r--r--doc/bash.html5
-rw-r--r--doc/bashref.dvibin721984 -> 721984 bytes
-rw-r--r--doc/bashref.html15
-rw-r--r--doc/bashref.info220
-rw-r--r--doc/bashref.log2
-rw-r--r--doc/bashref.pdfbin463878 -> 463824 bytes
-rw-r--r--doc/bashref.ps1425
-rw-r--r--doc/builtins.022
-rw-r--r--doc/builtins.ps73
-rw-r--r--doc/rbash.ps2
-rw-r--r--execute_cmd.c~5447
-rw-r--r--jobs.c2
-rw-r--r--jobs.c~4476
-rw-r--r--po/pl.po921
-rw-r--r--shell.c10
-rw-r--r--shell.c~1888
-rw-r--r--support/bashbug.sh2
-rw-r--r--test.c5
-rw-r--r--test.c~880
-rw-r--r--trap.c6
34 files changed, 23701 insertions, 3900 deletions
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
index 354720a7..ba482f91 100644
--- a/CWRU/CWRU.chlog
+++ b/CWRU/CWRU.chlog
@@ -5848,3 +5848,29 @@ variables.c
simple variable assignment would set a variable in the global
context instead of a local context. Bug report from
Geir Hauge <geir.hauge@gmail.com>
+
+ 2/26
+ ----
+[bash-4.3 released]
+
+ 2/27
+ ----
+aclocal.m4
+ - broken wcwidth check: fix typo reported by David Michael
+ <fedora.dm0@gmail.com>
+
+ 2/28
+ ----
+support/bashbug.sh
+ - add ${BUGADDR} to error message printed if sending mail fails
+
+trap.c
+ - _run_trap_internal: don't call {save,restore}_pipeline if running
+ DEBUG trap; run_debug_trap calls them itself. Fixes bug reported
+ by Moe Tunes <moetunes42@gmail.com>
+
+test.c
+ - unary_test: fix 'R' case by using find_variable_noref instead of
+ find_variable
+ - test_unop: add back missing 'R' case. Fixes bug reported by
+ NBaH <nbah@sfr.fr>
diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~
new file mode 100644
index 00000000..904be6d0
--- /dev/null
+++ b/CWRU/CWRU.chlog~
@@ -0,0 +1,5870 @@
+ 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 <dearvoid@gmail.com>
+
+ 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 <jue@jue.li>
+
+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
+ <dearvoid@gmail.com>
+
+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 <dearvoid@gmail.com>
+
+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
+ <vapier@gentoo.org>
+
+ 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 <dennistwilliamson@gmail.com>
+
+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 <jojo@schmitz-digital.de>
+
+support/shobj-conf
+ - add a stanza for nsk on the Tandem from Joachim Schmitz
+ <jojo@schmitz-digital.de>
+
+{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
+ <jojo@schmitz-digital.de>
+
+ 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 <foutrelis@gmail.com>
+
+ 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 <mfwitten@gmail.com>
+
+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
+ <nathanael@gnat.ca> and Matthias Klose <doko@debian.org>
+
+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 <mfwitten@gmail.com>
+ - 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 <mfwitten@gmail.com>
+ - 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 <mfwitten@gmail.com>
+ - 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 <mfwitten@gmail.com>
+
+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 <andres.p@zoho.com>
+
+ 3/4
+ ---
+lib/readline/bind.c
+ - add a missing free of `names' in rl_function_dumper. Bug report
+ and fix from Michael Snyder <msnyder@vmware.com>
+
+ 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 <micah@cowan.name>
+
+ 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 <torvalds@linux-foundation.org>, bug report originally
+ from Oleg Nesterov <oleg@redhat.com>
+
+ 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 <cfajohnson@gmail.com>
+
+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 <rrakus@redhat.com>
+
+ 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 <werner@suse.de>
+ - 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 <sam@liddicott.com>
+
+ 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 <blue3waters@gmail.com>
+
+ 3/26
+ ----
+lib/readline/rltypedefs.h
+ - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
+ suggested by Tom Tromey <tromey@redhat.com>
+
+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
+ <tromey@redhat.com>
+
+ 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 <dennistwilliamson@gmail.com>
+
+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 <h.bekel@googlemail.com>
+
+ 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 <mfwitten@gmail.com>
+
+lib/readline/display.c
+ - include <pc.h> 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 <pc.h> 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 <eliz@gnu.org>
+
+ 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 <arbogast.cedric@gmail.com>
+
+ 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 <mdinger.bugzilla@gmail.com>
+
+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 <dearvoid@gmail.com>
+
+ 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 <rrakus@redhat.com>
+
+ 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
+ <piuma@piumalab.org>
+
+ 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." <skunk@iSKUNK.ORG>
+
+ 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
+ <johan.hattne@utsouthwestern.edu>
+
+ 5/2
+ ---
+doc/{bash.1,bashref.texi}
+ - add forward reference to `Pattern Matching' from `Pathname
+ Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
+
+ 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 \<CTLESC> 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 <sbohrer@rgmadvisors.com>
+
+ 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 <rrakus@redhat.com>
+
+ 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 <rbyshko@gmail.com>
+
+ 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 <marten.wikstrom@keystream.se>
+
+ 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 <arbogast.cedric@gmail.com>
+
+ 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 <mlichvar@redhat.com>
+
+builtins/help.def
+ - help_builtin: change strncmp to strcmp so that `help read' no longer
+ matches `readonly'. Suggested by Clark Wang <dearvoid@gmail.com>
+
+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 <samuel.thibault@gnu.org>
+
+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
+ <d.l.tDecontes@free.fr>
+
+ 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
+ <keithw@mit.edu>
+
+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
+ <cubranic@stat.ubc.ca>
+
+ 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 <eblake@redhat.com>
+
+ 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
+ <kulkarniniraj14@gmail.com>
+
+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
+ <mark.herbert@gmail.com>
+
+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
+ <qiaomuf@gentoo.org>
+
+ 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 <jrnieder@gmail.com>
+
+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
+ <curtis@greenkey.net>
+
+ 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 <lrhorer@satx.rr.com>
+
+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 <ville.skytta@iki.fi>
+
+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 <rsantos@grupopie.com>
+
+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
+ <arnold@skeeve.com>
+
+ 6/30
+ ----
+execute_cmd.c
+ - execute_pipeline: make sure the lastpipe code is protected by
+ #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort
+ <tcort@minix3.org>
+
+ 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 <jan.ktratochvil@redhat.com> 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 <arnold@skeeve.com>
+
+ 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 <dearvoid@gmail.com>
+ - _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
+ <jan.kratochvil@redhat.com>
+
+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 <ralph@inputplus.co.uk>
+
+ 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
+ <mlichvar@redhat.com>
+
+builtins/printf.def
+ - getint: if garglist == 0, return whatever getintmax returns (0).
+ Fixes bug reported by Ralph Coredroy <ralph@inputplus.co.uk>
+
+ 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 <gmargo@pacbell.net>
+
+ 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
+ <lhunath@lyndir.com>
+
+ 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 <bash@tlinx.org>.
+ 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
+ <ohnobinki@ohnopublishing.net> -- 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 <vince.sheffer@apisphere.com>
+
+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 <rrakus@redhat.com>
+
+ 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
+ <rrakus@redhat.com>
+
+ 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 <diegoaugustomolina@gmail.com>
+
+ 9/19
+ ----
+expr.c
+ - exppower: replace the simple exponentiation algorithm with an
+ implementation of exponentiation by squaring. Inspired by report
+ from Nicolas ARGYROU <nargy@yahoo.com>
+
+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 <backuppc-users@whitleymott.net>
+
+doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi
+ - minor editorial changes inspired by suggestions from
+ Roger Zauner <rogerx.oss@gmail.com>
+
+ 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
+ <bensberg@justemail.net>
+ - 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 <daysleeper@centrum.cz>
+
+ 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
+ <bugs@kayari.org>
+ - 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 <pto@linuxbog.dk> and Patrick Pfeifer
+ <patrick@pfeifer.de>
+ - 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 <patrick@pfeifer.de>
+
+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 <dearvoid@gmail.com>
+
+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 <davidparks21@yahoo.com>
+
+ 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 <jreiser@bitwagon.com>
+ 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 <vapier@gentoo.org> 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 <vapier@gentoo.org> 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 <Len.Giambrone@intersystems.com>
+
+ 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
+ <wooledg@eeg.ccf.org>
+
+ 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 <lolilolicon@gmail.com>
+
+ 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 <michael@kalisz.homelinux.net>
+
+ 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 <jaak.ristioja@cyber.ee>
+ - 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 <ormaaj@gmail.com>
+
+ 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 <vapier@gentoo.org>
+
+ 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
+ <jens.schmidt35@arcor.de>
+
+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 <jan.ktratochvil@redhat.com> 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
+ <stephane_chazelas@yahoo.fr>
+
+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 <eggert@cs.ucla.edu>
+
+ 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 <schwab@linux-m68k.org>
+
+builtins/read.def
+ - skip over NUL bytes in input, as most modern shells seem to. Bug
+ report by Matthew Story <matt@tablethotels.com>
+
+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
+ <pierre.gaston@gmail.com>
+
+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
+ <g.clare@opengroup.org> 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 <yanegomi@gmail.com>
+ - 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
+ <yanegomi@gmail.com>
+ - 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 <yanegomi@gmail.com>
+ - 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
+ <panyongzhi@gmail.com>
+
+ 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 <panyongzhi@gmail.com>
+ - 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
+ <dearvoid@gmail.com>
+
+ 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 <hanzl@noel.feld.cvut.cz>
+
+ 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
+ <kazikcz@gmail.com>
+
+ 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 <dethrophes@motd005>
+
+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 <raphael.droz+floss@gmail.com>
+ - 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
+ <ormaaj@gmail.com>
+
+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 <pengyu.ut@gmail.com>
+
+ 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
+ <bill@ycc.com>
+
+ 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 <p@draigbrady.com>
+ - 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
+ <raphael.droz+floss@gmail.com>
+
+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 <sungpae@gmail.com>
+
+ 1/18
+ ----
+
+{configure,config.h}.in
+ - new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
+ 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 <mlichvar@redhat.com>
+
+ 1/21
+ ----
+
+lib/readline/readline.c:
+ - _rl_dispatch_subseq: add an inter-character timeout for multi-char
+ key sequences. Suggested by <rogerx.oss@gmail.com>. 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 <ormaaj@gmail.com>
+
+
+ 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
+ <pierre.muller@ics-cnrs.unistra.fr>
+
+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 <bash@tlinx.org>
+
+ 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 <james_avera@yahoo.com>
+
+ 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 <rogerx.oss@gmail.com>
+ - _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
+ <rogerx.oss@gmail.com>
+
+ 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 <schwab@linux-m68k.org>
+
+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
+ <Ewan.Mellor@eu.citrix.com>
+
+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
+ <ormaaj@gmail.com>
+
+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 <ormaaj@gmail.com>
+
+ 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 <dethrophes@web.de>
+
+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 <dethrophes@web.de>
+ - 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 <dethrophes@web.de>
+
+ 2/21
+ ----
+doc/{bash,builtins}.1
+ - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+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 <derflob@derflob.de>
+
+ 2/22
+ ----
+lib/sh/shquote.c
+ - sh_backslash_quote: quote tilde in places where it would be
+ expanded. From a report from John Kearney <dethrophes@web.de>
+
+ 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 <rdkehn@yahoo.com>
+
+ 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 <dethrophes@web.de>
+ - u32toutf16: function to convert unsigned 32-bit value (unicode) to
+ UTF-16. From John Kearney <dethrophes@web.de>
+ - 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 <dethrophes@web.de>
+ - 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 <sar@nec-labs.com>
+
+ 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 <ormaaj@gmail.com>
+
+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 <sami.pietila@gmail.com>
+
+ 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
+ <werner@suse.de> 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
+ <fabrizio.ge@tiscali.it>
+ - 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 <fabrizio.ge@tiscali.it>
+
+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
+ <siddhesh@redhat.com>
+
+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 <medgar123@gmail.com>
+
+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 <jurij.mihelic@fri.uni-lj.si>
+
+ 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 <bill@ycc.com>
+
+ 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
+ <rogerx.oss@gmail.com>; this prompted by report from Barry Downes
+ <barry.downes@gmail.com>
+
+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
+ <wooledg@eeg.ccf.org>
+
+ 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 <stdbool.h> 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 <petr.sumbera@sun.com>
+
+ 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 <petr.sumbera@sun.com>
+ - 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 <arnold@skeeve.com>
+
+ 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 <vapier@gentoo.org>,
+ fix from Andreas Schwab <schwab@linux-m68k.org>
+
+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 <wooledg@eeg.ccf.org>
+
+ 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 <RKuhlmann@orga-systems.com>
+ - 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 <ormaaj@gmail.com>
+
+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 <ormaaj@gmail.com>
+
+ 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 <ormaaj@gmail.com>
+
+ 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 <backuppc-users@whitleymott.net> and
+ supplemented by Dan Douglas <ormaaj@gmail.com>
+
+doc/{bash.1,bashref.texi}
+ - changes to the description of substring expansion inspired by
+ suggestions from Bill Gradwohl <bill@ycc.com>
+
+doc/bashref.texi
+ - added substring expansion examples inspired by suggestions from
+ Bill Gradwohl <bill@ycc.com>
+
+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 <stddef.h>. Fix from
+ John E. Malmberg <wb8tyw@qsl.net>
+
+ 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
+ <levertond@googlemail.com>
+
+ 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
+ <scotty.mcmillan@gmail.com>
+ - 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" <dave_br@gmx.com>
+
+ 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 <bash@tlinx.org>
+
+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 <schweikh@schweikhardt.net>
+
+ 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
+ <nshyrokovskiy@gmail.com>
+
+ 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 <ormaaj@gmail.com>
+
+ 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 <wb8tyw@qsl.net>
+
+ 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
+ <svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
+ - 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 <max@quendi.de>
+
+ 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 <dennistwilliamson@gmail.com>
+
+ 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 <dennistwilliamson@gmail.com>, fix from
+ Andreas Schwab <schwab@linux-m68k.org>
+ - 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 <rainer.blome@gmx.de>
+
+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 <pengyu.ut@gmail.com>
+
+ 7/24
+ ----
+configure.in
+ - interix: define RECYCLES_PIDS. Based on a report from Michael
+ Haubenwallner <michael.haubenwallner@salomon.at>
+
+ 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
+ <michael.haubenwallner@salomon.at>
+
+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 <michael.haubenwallner@salomon.at>
+
+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
+ <michael.haubenwallner@salomon.at>
+
+ 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 <lhunath@lyndir.com>
+
+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
+ <lhunath@lyndir.com>
+
+{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 <sys/param.h> 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 <clark.wang@oracle.com>
+
+ 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
+ <dearvoid@gmail.com>
+
+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 <techlivezheng@gmail.com>
+
+ 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 <ormaaj@gmail.com>
+
+ 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 <armandsl@gmail.com>
+
+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 <vapier@gentoo.org>
+
+ 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 <soltys@ziu.info>
+
+doc/bashref.texi
+ - some small formatting changes from Karl Berry <karl@freefriends.org>
+
+ 8/27
+ ----
+lib/readline/doc/{history,rlman,rluserman}.texi
+ - some small formatting changes from Karl Berry <karl@freefriends.org>
+
+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 <dennistwilliamson@gmail.com>
+ and Chris F. A. Johnson <chris@cfajohnson.com>
+
+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 <stefano.lattarini@gmail.com>
+
+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}<file
+
+redir.c
+ - redir_varassign: bind_var_to_int already handles array assignments,
+ so don't need to do anything more for things like {a[i]}<file
+ - redir_varvalue: changes to allow references to {a[i]} when
+ performing redirections using valid_array_reference and
+ get_array_value. Adds functionality requested most recently by
+ <unknown@vmw-les.eng.vmware.com>
+
+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 <mkoskar@gmail.com> and most recently by Jordan Michael
+ Ziegler <jziegler@bnl.gov>
+
+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
+ <pierre.gaston@gmail.com>
+
+ 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 <ormaaj@gmail.com>
+
+ 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 <gerd.hofmann.nbg@googlemail.com>
+
+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 <vermaelen.wouter@gmail.com>
+
+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 <ormaaj@gmail.com>
+
+ 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 <benoit.vaugon@gmail.com>
+
+ 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 <rrakus@redhat.com>
+
+configure.ac
+ - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
+ Joachim Schmitz <jojo@schmitz-digital.de>
+
+ 9/16
+ ----
+subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
+ - minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
+
+lib/readline/colors.h
+ - workaround for HP NonStop compiler issue with <stdbool.h> from
+ Joachim Schmitz <jojo@schmitz-digital.de>
+
+ 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 <dualbus@gmail.com>
+
+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 <info@skeena.net>
+
+ 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 <pclouds@gmail.com>
+
+ 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 <hans1worst@gmail.com>
+
+ 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 <baldiniebaldini@gmail.com>
+ - 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 <kaasen@nvg.ntnu.no>
+
+ 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
+ <zls.sogou@gmail.com>
+
+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 <zls.sogou@gmail.com>
+ - 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 <zls.sogou@gmail.com>
+
+ 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 <nikolai.kondrashov@redhat.com>
+
+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 <zev@bewilderbeest.net>
+ - 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 <sgf.dma@gmail.com>
+
+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 <idfah@cs.colostate.edu>
+
+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 <idfah@cs.colostate.edu>
+
+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 <vmkari@cc.helsinki.fi>
+
+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 <sam@liddicott.com>
+
+ 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
+ <idfah@cs.colostate.edu>
+
+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
+ <wb8tyw@qsl.net>
+
+ 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 <me@timfriske.com>
+
+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 <me@timfriske.com>
+
+ 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 <me@timfriske.com>
+
+ 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
+ <arvidjaar@gmail.com>
+
+ 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 <ulfalizer@gmail.com>
+
+ 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 <arvidjaar@gmail.com>
+
+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 <vapier@gentoo.org>
+
+ 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 <raphael.droz@gmail.com>
+
+ 12/13
+ -----
+execute_cmd.c
+ - execute_coproc: handle the command's exit status being inverted
+ (an oversight). Fixes bug reported by DJ Mills
+ <danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
+
+ 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
+ <pierre.muller@ics-cnrs.unistra.fr>
+
+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 <dearvoid@gmail.com>
+
+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 <vapier@gentoo.org>
+
+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 <Roman.Fiedler@ait.ac.at>
+
+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 <rschiele@gmail.com>
+
+ 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
+ <eggert@cs.ucla.edu>
+ - 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 <vituko@gmail.com>, 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 <wb8tyw@qsl.net> 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
+ <raphael.droz@gmail.com>
+ - 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 <nagler@bivio.biz>
+
+ 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<dualbus@gmail.com> and Dan Douglas <ormaaj@gmail.com>
+
+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
+ <dualbus@gmail.com>
+
+ 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
+ <ormaaj@gmail.com>
+
+ 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
+ <ormaaj@gmail.com>
+
+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 <ormaaj@gmail.com>
+
+ 1/15
+ ----
+builtins/cd.def
+ - cd_builtin: make sure call to internal_getopt handles -e option.
+ Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
+
+ 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 <wq-doux@cn.fujitsu.com>
+
+ 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 <ormaaj@gmail.com> [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
+ <ormaaj@gmail.com>
+
+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 <rrakus@redhat.com>
+
+ 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
+ <konsolebox@gmail.com>; 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
+ <ormaaj@gmail.com>
+
+ 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 <egmont@gmail.com>
+
+ 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 <vapier@gentoo.org>
+
+ 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 <ormaaj@gmail.com>
+
+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 <vapier@gentoo.org>
+
+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 <ttrnka@mail.muni.cz>
+
+ 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 <vapier@gentoo.org>
+
+ 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" <dashing@hushmail.com>
+
+
+ 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 <bruce.korb@gmail.com>
+
+ 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 <rich.tollerton@ni.com>
+
+ 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 <p@draigbrady.com> 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 <egmont@gmail.com>
+ - 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 <stephane.chazelas@gmail.com>
+
+ 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 <signal.h> 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 <gotmynick@gmail.com>
+
+ 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 <info@skeena.net>
+
+[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 <mattdr@google.com>
+
+ 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
+ <jonathan.leffler@gmail.com>
+
+ 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 <dualbus@gmail.com>
+
+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
+ <ormaaj@gmail.com>
+
+ 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 <watson_ian_a@lilly.com>
+
+ 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 <schwab@linux-m68k.org>
+
+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 <ormaaj@gmail.com>
+
+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 <ormaaj@gmail.com>
+
+ 4/13
+ ----
+subst.c
+ - process_substitute: run the EXIT trap before exiting, as other
+ shells seem to. Fixes problem pointed out by Dan Douglas
+ <ormaaj@gmail.com>
+
+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 <watson_ian_a@lilly.com>
+
+ 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 <schwab@linux-m68k.org>
+
+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 <rrakus@redhat.com>
+ - 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 <pengyu.ut@gmail.com>
+
+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 <jthomas@exosec.fr>
+
+ 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 <flaviomotamedeiros@gmail.com>
+
+ 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 <dan.mick@inktank.com>
+
+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 <ormaaj@gmail.com>
+
+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 <ormaaj@gmail.com>
+
+ 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 <scx.mail@gmail.com>
+
+ 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
+ <gsliu.tju@gmail.com>
+
+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 <bash@tlinx.org>
+
+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 <jstcdr@gmail.com>
+
+ 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 <mjackson220.list@gmail.com>
+
+ 7/13
+ ----
+doc/{bash.1,bashref.texi}
+ - slight change to add a description of `shopt -o' suggested by Bruce
+ Korb <bruce.korb@gmail.com>
+
+ 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 <chris@chrisdown.name>
+
+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 <geir.hauge@gmail.com>
+
+ 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 <geir.hauge@gmail.com>
+
+ 8/3
+ ---
+Makefile.in
+ - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
+ Curtis Doty <curtis@greenkey.net>
+
+ 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
+ <geir.hauge@gmail.com>
+
+ 8/6
+ ---
+doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi
+ - minor typo changes from Geir Hauge <geir.hauge@gmail.com>
+
+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 <geir.hauge@gmail.com>
+
+ 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 <geir.hauge@gmail.com>
+
+ 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 <micfied@gmail.com>
+
+ 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
+ <jdthood@gmail.com>
+
+ 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 <schwab@linux-m68k.org>
+
+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 <stephane.chazelas@gmail.com>
+
+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
+ <danielmills1@gmail.com>
+
+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 <mtmiller@ieee.org>
+
+ 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
+ <pierre.muller@ics-cnrs.unistra.fr>
+
+ 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 <schwab@linux-m68k.org>
+
+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
+ <cedric.blancher@gmail.com>
+
+ 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 <bertsutherland@gmail.com>
+
+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 <yong.zhang@windriver.com>
+
+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
+ <michael.haubenwallner@salomon.at>
+
+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 <qwertologe@googlemail.com>
+
+ 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
+ <joshhurst@gmail.com>
+
+ 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 <admn.ombres@gmail.com>
+
+ 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 <john.dawson@gmail.com>
+
+support/shobj-conf
+ - add support for Darwin 13 (Mac OS X 10.9, Mavericks). Based on a
+ report by Ludwig Schwardt <ludwig.schwardt@gmail.com>
+
+ 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
+ <nbah@sfr.fr>
+
+ 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 <peter@cordes.ca>
+
+ 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 <pankaj.s01@samsung.com>
+
+
+ 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 <mwesdorp@casema.nl>
+
+ 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 <pierre.gaston@gmail.com>
+ - 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
+ <pierre.gaston@gmail.com>
+
+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 <martin@kurahaupo.gen.nz>
+
+ 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 <andrew.martin@gmail.com>
+ - 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 <ben@okopnik.com>
+
+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
+ <jinesh@onelittlehope.com>
+
+Makefile.in
+ - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
+ Report and fix from Matthias Klose <doko@debian.org>
+
+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 <backuppc-users@whitleymott.net>
+
+ 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 <parke.nexus@gmail.com>
+
+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 <prusselltechgroup@gmail.com>
+
+ 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 <thkala@gmail.com>
+
+ 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 <dualbus@gmail.com>
+
+ 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 <bash@tlinx.org>
+
+Makefile.in
+ - variables.o: add dependency on builtins/builtext.h; helps with
+ parallel builds. Report from Linda Walsh <bash@tlinx.org>
+
+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
+ <max@quendi.de>
+
+ 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 <max@quendi.de>
+
+ 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 <hiroo.hayashi@computer.org>
+
+general.c
+ - include trap.h for any_signals_trapped() prototype
+
+lib/sh/unicode.c
+ - include <stdio.h> 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
+ <vapier@gentoo.org>
+ - 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 <chris@chrisdown.name>
+
+ 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 <schwab@linux-m68k.org>
+
+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 <alexandru.damian@intel.com>
+
+ 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 <jidanni@jidanni.org>
+
+ 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
+ <ilyushkeane@gmail.com>
+
+ 2/11
+ ----
+parse.y
+ - xparse_dolparen: save and restore shell_eof_token around call to
+ parse_string, intead of just leaving it set to ')'
+ - shell_getc: when -v is set, only print the command line when
+ shell_eof_token is 0, so we don't print it multiple times when
+ recursively entering the parser to parse $(...) commands. Fixes
+ bug reported by Greg Wooledge <wooledg@eeg.ccf.org>
+
+[changed release status to 4.3-release]
+
+ 2/13
+ ----
+lib/sh/strtrans.c
+ - ansic_quote: handle case where mbrtowc reports that the multibyte
+ sequence is incomplete or invalid. Fixes bug reported by
+ Eduardo A. Bustamante López <dualbus@gmail.com>
+
+ 2/14
+ ----
+variables.c
+ - find_variable_nameref_context: fix a problem that caused the loop
+ to go one context too close to the global context. In some cases,
+ simple variable assignment would set a variable in the global
+ context instead of a local context. Bug report from
+ Geir Hauge <geir.hauge@gmail.com>
+
+ 2/26
+ ----
+[bash-4.3 released]
+
+ 2/27
+ ----
+aclocal.m4
+ - broken wcwidth check: fix typo reported by David Michael
+ <fedora.dm0@gmail.com>
+
+ 2/28
+ ----
+support/bashbug.sh
+ - add ${BUGADDR} to error message printed if sending mail fails
+
+trap.c
+ - _run_trap_internal: don't call {save,restore}_pipeline if running
+ DEBUG trap; run_debug_trap calls them itself. Fixes bug reported
+ by Moe Tunes <moetunes42@gmail.com>
diff --git a/MANIFEST b/MANIFEST
index 1f1d2d38..55c8d1ca 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -586,6 +586,28 @@ doc/htmlpost.sh f 755
doc/infopost.sh f 755
doc/fdl.texi f
doc/fdl.txt f
+#
+doc/article.ps f
+doc/rose94.ps f
+doc/bash.ps f
+doc/bashbug.ps f
+doc/builtins.ps f
+doc/rbash.ps f
+doc/bashref.ps f
+doc/bashref.dvi f
+doc/bash.0 f
+doc/bashbug.0 f
+doc/builtins.0 f
+doc/rbash.0 f
+doc/article.txt f
+doc/bash.html f
+doc/bashref.html f
+doc/article.pdf f
+doc/bash.pdf f
+doc/bashref.pdf f
+doc/rose94.pdf f
+doc/aosa-bash.pdf f
+#
support/Makefile.in f
support/bashversion.c f
support/checkbashisms f 755
diff --git a/POSIX b/POSIX
index 93b1a29f..fe830f0e 100644
--- a/POSIX
+++ b/POSIX
@@ -107,7 +107,7 @@ The following list is what's changed when `POSIX mode' is in effect:
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 26. A non-interactive shell exists with an error status if a variable
+ 26. A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a
special builtin, but not with any other simple command.
diff --git a/aclocal.m4 b/aclocal.m4
index a947272e..ff16dffa 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1784,7 +1784,7 @@ char **v;
exit (w == 0); /* exit 0 if wcwidth broken */
}
],
-bash_cv_wcwidth_broken=yes, bash_cv_wcwdith_broken=no, bash_cv_wcwidth_broken=no)])
+bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)])
if test "$bash_cv_wcwidth_broken" = yes; then
AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken])
fi
diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0
index 2d0aa031..8176b67d 100644
--- a/autom4te.cache/output.0
+++ b/autom4te.cache/output.0
@@ -11279,7 +11279,7 @@ _ACEOF
if ac_fn_c_try_run "$LINENO"; then :
bash_cv_wcwidth_broken=yes
else
- bash_cv_wcwdith_broken=no
+ bash_cv_wcwidth_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1
index 41b9b5a0..f4677fa3 100644
--- a/autom4te.cache/output.1
+++ b/autom4te.cache/output.1
@@ -1,14 +1,12 @@
@%:@! /bin/sh
-@%:@ From configure.in for Bash 4.2, version 4.049.
+@%:@ From configure.ac for Bash 4.3, version 4.063.
@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.68 for bash 4.2-maint.
+@%:@ Generated by GNU Autoconf 2.69 for bash 4.3-maint.
@%:@
@%:@ Report bugs to <bug-bash@gnu.org>.
@%:@
@%:@
-@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-@%:@ Foundation, Inc.
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@%:@
@%:@
@%:@ This configure script is free software; the Free Software Foundation
@@ -137,6 +135,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in @%:@ ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -170,7 +193,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -215,21 +239,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in @%:@ ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in @%:@ ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -332,6 +360,14 @@ $as_echo X"$as_dir" |
} @%:@ as_fn_mkdir_p
+
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} @%:@ as_fn_executable_p
@%:@ as_fn_append VAR VALUE
@%:@ ----------------------
@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -453,6 +489,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -487,16 +527,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -508,28 +548,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in @%:@(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -561,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='4.2-maint'
-PACKAGE_STRING='bash 4.2-maint'
+PACKAGE_VERSION='4.3-maint'
+PACKAGE_STRING='bash 4.3-maint'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
PACKAGE_URL=''
@@ -783,11 +803,13 @@ enable_cond_command
enable_cond_regexp
enable_coprocesses
enable_debugger
+enable_direxpand_default
enable_directory_stack
enable_disabled_builtins
enable_dparen_arithmetic
enable_extended_glob
enable_extended_glob_default
+enable_glob_asciiranges_default
enable_help_builtin
enable_history
enable_job_control
@@ -1286,8 +1308,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1373,7 +1393,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures bash 4.2-maint to adapt to many kinds of systems.
+\`configure' configures bash 4.3-maint to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1438,7 +1458,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of bash 4.2-maint:";;
+ short | recursive ) echo "Configuration of bash 4.3-maint:";;
esac
cat <<\_ACEOF
@@ -1466,6 +1486,8 @@ Optional Features:
--enable-coprocesses enable coprocess support and the coproc reserved
word
--enable-debugger enable support for bash debugger
+ --enable-direxpand-default
+ enable the direxpand shell option by default
--enable-directory-stack
enable builtins pushd/popd/dirs
--enable-disabled-builtins
@@ -1476,6 +1498,9 @@ Optional Features:
--enable-extended-glob-default
force extended pattern matching to be enabled by
default
+ --enable-glob-asciiranges-default
+ force bracket range expressions in pattern matching
+ to use the C locale by default
--enable-help-builtin include the help builtin
--enable-history turn on command history
--enable-job-control enable job control features
@@ -1625,10 +1650,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-bash configure 4.2-maint
-generated by GNU Autoconf 2.68
+bash configure 4.3-maint
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1704,7 +1729,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2108,7 +2133,8 @@ int
main ()
{
static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -2124,7 +2150,8 @@ int
main ()
{
static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -2150,7 +2177,8 @@ int
main ()
{
static int test_array @<:@1 - 2 * !(($2) < 0)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -2166,7 +2194,8 @@ int
main ()
{
static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -2200,7 +2229,8 @@ int
main ()
{
static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -2329,8 +2359,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by bash $as_me 4.2-maint, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+It was created by bash $as_me 4.3-maint, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2722,7 +2752,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
ac_config_headers="$ac_config_headers config.h"
-BASHVERS=4.2
+BASHVERS=4.3
RELSTATUS=maint
case "$RELSTATUS" in
@@ -2827,6 +2857,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
*-aix*) opt_bash_malloc=no ;; # AIX machines
*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
+*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
*-macos*) opt_bash_malloc=no ;; # Apple MacOS X
*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
@@ -2837,6 +2868,8 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
*-beos*) opt_bash_malloc=no ;; # they say it's suitable
*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
+*-nsk*) opt_bash_malloc=no ;; # HP NonStop
+*-haiku*) opt_bash_malloc=no ;; # Haiku OS
esac
# memory scrambling on free()
@@ -2967,6 +3000,8 @@ opt_single_longdoc_strings=yes
opt_casemod_attrs=yes
opt_casemod_expansions=yes
opt_extglob_default=no
+opt_dircomplete_expand_default=no
+opt_globascii_default=no
opt_static_link=no
opt_profiling=no
@@ -2987,6 +3022,7 @@ if test $opt_minimal_config = yes; then
opt_net_redirs=no opt_progcomp=no opt_separate_help=no
opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
+ opt_globascii_default=no
fi
@%:@ Check whether --enable-alias was given.
@@ -3049,6 +3085,11 @@ if test "${enable_debugger+set}" = set; then :
enableval=$enable_debugger; opt_debugger=$enableval
fi
+@%:@ Check whether --enable-direxpand-default was given.
+if test "${enable_direxpand_default+set}" = set; then :
+ enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval
+fi
+
@%:@ Check whether --enable-directory-stack was given.
if test "${enable_directory_stack+set}" = set; then :
enableval=$enable_directory_stack; opt_dirstack=$enableval
@@ -3074,6 +3115,11 @@ if test "${enable_extended_glob_default+set}" = set; then :
enableval=$enable_extended_glob_default; opt_extglob_default=$enableval
fi
+@%:@ Check whether --enable-glob-asciiranges-default was given.
+if test "${enable_glob_asciiranges_default+set}" = set; then :
+ enableval=$enable_glob_asciiranges_default; opt_globascii_default=$enableval
+fi
+
@%:@ Check whether --enable-help-builtin was given.
if test "${enable_help_builtin+set}" = set; then :
enableval=$enable_help_builtin; opt_help=$enableval
@@ -3285,6 +3331,17 @@ if test $opt_casemod_expansions = yes; then
$as_echo "@%:@define CASEMOD_EXPANSIONS 1" >>confdefs.h
fi
+if test $opt_dircomplete_expand_default = yes; then
+$as_echo "@%:@define DIRCOMPLETE_EXPAND_DEFAULT 1" >>confdefs.h
+
+fi
+if test $opt_globascii_default = yes; then
+$as_echo "@%:@define GLOBASCII_DEFAULT 1" >>confdefs.h
+
+else
+$as_echo "@%:@define GLOBASCII_DEFAULT 0" >>confdefs.h
+
+fi
if test $opt_memscramble = yes; then
$as_echo "@%:@define MEMSCRAMBLE 1" >>confdefs.h
@@ -3357,7 +3414,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3397,7 +3454,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3450,7 +3507,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3491,7 +3548,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -3549,7 +3606,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3593,7 +3650,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4039,8 +4096,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4324,7 +4380,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4390,7 +4446,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -4597,8 +4653,8 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# define __EXTENSIONS__ 1
- $ac_includes_default
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
main ()
{
@@ -4826,6 +4882,8 @@ _ACEOF
esac
rm -rf conftest*
fi
+
+
fi
@@ -5465,7 +5523,7 @@ case $as_dir/ in @%:@((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -5521,8 +5579,9 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-# Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
@@ -5537,8 +5596,8 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AR=""
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -5546,7 +5605,6 @@ done
done
IFS=$as_save_IFS
- test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
fi
fi
AR=$ac_cv_prog_AR
@@ -5559,6 +5617,60 @@ $as_echo "no" >&6; }
fi
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
test -n "$ARFLAGS" || ARFLAGS="cr"
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
@@ -5577,7 +5689,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5617,7 +5729,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5670,7 +5782,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5727,6 +5839,12 @@ $as_echo "no" >&6; }
fi
+case "$ac_cv_prog_YACC" in
+*bison*) ;;
+*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bison not available; needed to process parse.y" >&5
+$as_echo "$as_me: WARNING: bison not available; needed to process parse.y" >&2;} ;;
+esac
+
case "$host_os" in
opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
*) MAKE_SHELL=/bin/sh ;;
@@ -5803,11 +5921,11 @@ else
int
main ()
{
-/* FIXME: Include the comments suggested by Paul. */
+
#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
+ /* Ultrix mips cc rejects this sort of thing. */
typedef int charset[2];
- const charset cs;
+ const charset cs = { 0, 0 };
/* SunOS 4.1.1 cc rejects this. */
char const *const *pcpcc;
char **ppc;
@@ -5824,8 +5942,9 @@ main ()
++pcpcc;
ppc = (char**) pcpcc;
pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
char const *s = 0 ? (char *) 0 : (char const *) 0;
*t++ = 0;
@@ -5841,10 +5960,10 @@ main ()
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this saying
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
}
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
const int foo = 10;
@@ -6197,7 +6316,8 @@ static int test_array @<:@1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP)
- (LDBL_MANT_DIG < DBL_MANT_DIG)))
&& (int) LDBL_EPSILON == 0
)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -6253,7 +6373,8 @@ int
main ()
{
static int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@;
-test_array @<:@0@:>@ = 0
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
;
return 0;
@@ -6471,7 +6592,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6835,23 +6956,20 @@ else
/* end confdefs.h. */
$ac_includes_default
int
-find_stack_direction ()
+find_stack_direction (int *addr, int depth)
{
- static char *addr = 0;
- auto char dummy;
- if (addr == 0)
- {
- addr = &dummy;
- return find_stack_direction ();
- }
- else
- return (&dummy > addr) ? 1 : -1;
+ int dir, dummy = 0;
+ if (! addr)
+ addr = &dummy;
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+ return dir + dummy;
}
int
-main ()
+main (int argc, char **argv)
{
- return find_stack_direction () < 0;
+ return find_stack_direction (0, argc + !argv + 20) < 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
@@ -8209,7 +8327,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_INTLBISON="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9353,23 +9471,20 @@ else
/* end confdefs.h. */
$ac_includes_default
int
-find_stack_direction ()
+find_stack_direction (int *addr, int depth)
{
- static char *addr = 0;
- auto char dummy;
- if (addr == 0)
- {
- addr = &dummy;
- return find_stack_direction ();
- }
- else
- return (&dummy > addr) ? 1 : -1;
+ int dir, dummy = 0;
+ if (! addr)
+ addr = &dummy;
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+ return dir + dummy;
}
int
-main ()
+main (int argc, char **argv)
{
- return find_stack_direction () < 0;
+ return find_stack_direction (0, argc + !argv + 20) < 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
@@ -9911,6 +10026,20 @@ esac
fi
+ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes; then :
+ $as_echo "@%:@define HAVE_STRDUP 1" >>confdefs.h
+
+else
+ case " $LIB@&t@OBJS " in
+ *" strdup.$ac_objext "* ) ;;
+ *) LIB@&t@OBJS="$LIB@&t@OBJS strdup.$ac_objext"
+ ;;
+esac
+
+fi
+
+
ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include <linux/audit.h>
"
@@ -10774,7 +10903,7 @@ fi
rm -f conftest.mmap conftest.txt
for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \
- munmap stpcpy strcspn strdup
+ munmap stpcpy strcspn
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -11123,10 +11252,7 @@ if ${bash_cv_wcwidth_broken+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
+ bash_cv_wcwidth_broken=no
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11153,7 +11279,7 @@ _ACEOF
if ac_fn_c_try_run "$LINENO"; then :
bash_cv_wcwidth_broken=yes
else
- bash_cv_wcwdith_broken=no
+ bash_cv_wcwidth_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -11162,7 +11288,7 @@ fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5
$as_echo "$bash_cv_wcwidth_broken" >&6; }
-if test $bash_cv_wcwidth_broken = yes; then
+if test "$bash_cv_wcwidth_broken" = yes; then
$as_echo "@%:@define WCWIDTH_BROKEN 1" >>confdefs.h
@@ -13096,6 +13222,49 @@ fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5
+$as_echo_n "checking for sig_atomic_t... " >&6; }
+if ${bash_cv_type_sig_atomic_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <signal.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "sig_atomic_t" >/dev/null 2>&1; then :
+ bash_cv_type_sig_atomic_t=yes
+else
+ bash_cv_type_sig_atomic_t=no
+fi
+rm -f conftest*
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5
+$as_echo "$bash_cv_type_sig_atomic_t" >&6; }
+
+if test $bash_cv_type_sig_atomic_t = no; then
+ cat >>confdefs.h <<_ACEOF
+@%:@define sig_atomic_t int
+_ACEOF
+
+fi
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for quad_t" >&5
$as_echo_n "checking for quad_t... " >&6; }
if ${bash_cv_type_quad_t+:} false; then :
@@ -13268,7 +13437,7 @@ if test $bash_cv_type_socklen_t = yes; then
fi
if test $bash_cv_type_socklen_t = no; then
cat >>confdefs.h <<_ACEOF
-@%:@define socklen_t int
+@%:@define socklen_t unsigned int
_ACEOF
fi
@@ -15762,6 +15931,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
powerux*) LOCAL_LIBS="-lgen" ;;
cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
+*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
esac
case "${host_os}-${CC}" in
@@ -16282,16 +16452,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -16351,28 +16521,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in @%:@(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} @%:@ as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -16393,8 +16551,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by bash $as_me 4.2-maint, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+This file was extended by bash $as_me 4.3-maint, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -16459,11 +16617,11 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-bash config.status 4.2-maint
-configured by $0, generated by GNU Autoconf 2.68,
+bash config.status 4.3-maint
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -16552,7 +16710,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
index 683cbb60..83b1d8c1 100644
--- a/autom4te.cache/requests
+++ b/autom4te.cache/requests
@@ -73,6 +73,77 @@
'_AM_COND_ELSE' => 1,
'AC_SUBST_TRACE' => 1
}
+ ], 'Autom4te::Request' ),
+ bless( [
+ '1',
+ 1,
+ [
+ '/opt/local/share/autoconf'
+ ],
+ [
+ '/opt/local/share/autoconf/autoconf/autoconf.m4f',
+ 'aclocal.m4',
+ 'configure.ac'
+ ],
+ {
+ '_LT_AC_TAGCONFIG' => 1,
+ 'AM_PROG_F77_C_O' => 1,
+ 'AC_INIT' => 1,
+ 'm4_pattern_forbid' => 1,
+ '_AM_COND_IF' => 1,
+ 'AC_CANONICAL_TARGET' => 1,
+ 'AC_SUBST' => 1,
+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
+ 'AC_FC_SRCEXT' => 1,
+ 'AC_CANONICAL_HOST' => 1,
+ 'AC_PROG_LIBTOOL' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AM_PATH_GUILE' => 1,
+ 'AC_CONFIG_SUBDIRS' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
+ 'LT_CONFIG_LTDL_DIR' => 1,
+ 'AC_REQUIRE_AUX_FILE' => 1,
+ 'AC_CONFIG_LINKS' => 1,
+ 'm4_sinclude' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
+ 'AM_MAINTAINER_MODE' => 1,
+ 'AM_NLS' => 1,
+ 'AC_FC_PP_DEFINE' => 1,
+ 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+ 'AM_MAKEFILE_INCLUDE' => 1,
+ '_m4_warn' => 1,
+ 'AM_PROG_CXX_C_O' => 1,
+ '_AM_COND_ENDIF' => 1,
+ '_AM_MAKEFILE_INCLUDE' => 1,
+ 'AM_ENABLE_MULTILIB' => 1,
+ 'AM_SILENT_RULES' => 1,
+ 'AM_PROG_MOC' => 1,
+ 'AC_CONFIG_FILES' => 1,
+ 'include' => 1,
+ 'LT_INIT' => 1,
+ 'AM_PROG_AR' => 1,
+ 'AM_GNU_GETTEXT' => 1,
+ 'AC_LIBSOURCE' => 1,
+ 'AM_PROG_FC_C_O' => 1,
+ 'AC_CANONICAL_BUILD' => 1,
+ 'AC_FC_FREEFORM' => 1,
+ 'AH_OUTPUT' => 1,
+ 'AC_FC_PP_SRCEXT' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'AC_CONFIG_AUX_DIR' => 1,
+ 'sinclude' => 1,
+ 'AM_PROG_CC_C_O' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AM_XGETTEXT_OPTION' => 1,
+ 'AC_CANONICAL_SYSTEM' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'AC_CONFIG_HEADERS' => 1,
+ 'AC_DEFINE_TRACE_LITERAL' => 1,
+ 'AM_POT_TOOLS' => 1,
+ 'm4_include' => 1,
+ '_AM_COND_ELSE' => 1,
+ 'AC_SUBST_TRACE' => 1
+ }
], 'Autom4te::Request' )
);
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
index 95791603..ff2ea4be 100644
--- a/autom4te.cache/traces.1
+++ b/autom4te.cache/traces.1
@@ -1,523 +1,535 @@
-m4trace:configure.in:29: -1- AC_INIT([bash], [4.2-maint], [bug-bash@gnu.org])
-m4trace:configure.in:29: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.in:29: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.in:29: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.in:29: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.in:29: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.in:29: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.in:29: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.in:29: -1- AC_SUBST([SHELL])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([SHELL])
-m4trace:configure.in:29: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.in:29: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PACKAGE_NAME])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PACKAGE_STRING])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.in:29: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([PACKAGE_URL])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.in:29: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([exec_prefix])
-m4trace:configure.in:29: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.in:29: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([prefix])
-m4trace:configure.in:29: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.in:29: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([program_transform_name])
-m4trace:configure.in:29: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.in:29: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([bindir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.in:29: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([sbindir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.in:29: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([libexecdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.in:29: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.in:29: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([datadir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.in:29: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([sysconfdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.in:29: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([sharedstatedir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.in:29: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([localstatedir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.in:29: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([includedir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.in:29: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([oldincludedir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.in:29: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+m4trace:configure.ac:29: -1- AC_INIT([bash], [4.3-maint], [bug-bash@gnu.org])
+m4trace:configure.ac:29: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:29: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:29: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:29: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:29: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:29: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:29: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:29: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:29: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:29: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:29: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:29: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:29: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:29: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:29: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:29: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:29: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:29: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:29: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([docdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.in:29: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([infodir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.in:29: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.in:29: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([dvidir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.in:29: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([pdfdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.in:29: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([psdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.in:29: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([libdir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.in:29: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.in:29: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([mandir])
-m4trace:configure.in:29: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:29: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:29: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:29: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:29: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:29: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
@%:@undef PACKAGE_NAME])
-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
@%:@undef PACKAGE_TARNAME])
-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
@%:@undef PACKAGE_VERSION])
-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
@%:@undef PACKAGE_STRING])
-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
-m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.in:29: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
@%:@undef PACKAGE_URL])
-m4trace:configure.in:29: -1- AC_SUBST([DEFS])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([DEFS])
-m4trace:configure.in:29: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.in:29: -1- AC_SUBST([ECHO_C])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([ECHO_C])
-m4trace:configure.in:29: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.in:29: -1- AC_SUBST([ECHO_N])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([ECHO_N])
-m4trace:configure.in:29: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.in:29: -1- AC_SUBST([ECHO_T])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([ECHO_T])
-m4trace:configure.in:29: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.in:29: -1- AC_SUBST([LIBS])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.in:29: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.in:29: -1- AC_SUBST([build_alias])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([build_alias])
-m4trace:configure.in:29: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.in:29: -1- AC_SUBST([host_alias])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([host_alias])
-m4trace:configure.in:29: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.in:29: -1- AC_SUBST([target_alias])
-m4trace:configure.in:29: -1- AC_SUBST_TRACE([target_alias])
-m4trace:configure.in:29: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.in:36: -1- AC_CONFIG_AUX_DIR([./support])
-m4trace:configure.in:37: -1- AC_CONFIG_HEADERS([config.h])
-m4trace:configure.in:51: -1- AC_CANONICAL_HOST
-m4trace:configure.in:51: -1- AC_CANONICAL_BUILD
-m4trace:configure.in:51: -1- AC_REQUIRE_AUX_FILE([config.sub])
-m4trace:configure.in:51: -1- AC_REQUIRE_AUX_FILE([config.guess])
-m4trace:configure.in:51: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([build])
-m4trace:configure.in:51: -1- m4_pattern_allow([^build$])
-m4trace:configure.in:51: -1- AC_SUBST([build_cpu], [$[1]])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([build_cpu])
-m4trace:configure.in:51: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.in:51: -1- AC_SUBST([build_vendor], [$[2]])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([build_vendor])
-m4trace:configure.in:51: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.in:51: -1- AC_SUBST([build_os])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([build_os])
-m4trace:configure.in:51: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.in:51: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([host])
-m4trace:configure.in:51: -1- m4_pattern_allow([^host$])
-m4trace:configure.in:51: -1- AC_SUBST([host_cpu], [$[1]])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.in:51: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.in:51: -1- AC_SUBST([host_vendor], [$[2]])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.in:51: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.in:51: -1- AC_SUBST([host_os])
-m4trace:configure.in:51: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.in:51: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.in:52: -1- AC_CANONICAL_BUILD
-m4trace:configure.in:104: -1- AC_SUBST([DEBUGGER_START_FILE])
-m4trace:configure.in:104: -1- AC_SUBST_TRACE([DEBUGGER_START_FILE])
-m4trace:configure.in:104: -1- m4_pattern_allow([^DEBUGGER_START_FILE$])
-m4trace:configure.in:108: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:108: the top level])
-m4trace:configure.in:109: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:109: the top level])
-m4trace:configure.in:110: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:110: the top level])
-m4trace:configure.in:111: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:111: the top level])
-m4trace:configure.in:112: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:112: the top level])
-m4trace:configure.in:113: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:113: the top level])
-m4trace:configure.in:114: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:114: the top level])
-m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC])
-m4trace:configure.in:125: -1- m4_pattern_allow([^USING_BASH_MALLOC$])
-m4trace:configure.in:135: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS])
-m4trace:configure.in:135: -1- m4_pattern_allow([^DISABLE_MALLOC_WRAPPERS$])
-m4trace:configure.in:145: -1- AC_DEFINE_TRACE_LITERAL([AFS])
-m4trace:configure.in:145: -1- m4_pattern_allow([^AFS$])
-m4trace:configure.in:197: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:197: the top level])
-m4trace:configure.in:213: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:213: the top level])
-m4trace:configure.in:214: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:214: the top level])
-m4trace:configure.in:215: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:215: the top level])
-m4trace:configure.in:216: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:216: the top level])
-m4trace:configure.in:217: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:217: the top level])
-m4trace:configure.in:218: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:218: the top level])
-m4trace:configure.in:219: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:219: the top level])
-m4trace:configure.in:220: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:220: the top level])
-m4trace:configure.in:221: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:221: the top level])
-m4trace:configure.in:222: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:222: the top level])
-m4trace:configure.in:223: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:223: the top level])
-m4trace:configure.in:224: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:224: the top level])
-m4trace:configure.in:225: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:225: the top level])
-m4trace:configure.in:226: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:226: the top level])
-m4trace:configure.in:227: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:227: the top level])
-m4trace:configure.in:228: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:228: the top level])
-m4trace:configure.in:229: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:229: the top level])
-m4trace:configure.in:230: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:230: the top level])
-m4trace:configure.in:231: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:231: the top level])
-m4trace:configure.in:232: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:232: the top level])
-m4trace:configure.in:233: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:233: the top level])
-m4trace:configure.in:234: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:234: the top level])
-m4trace:configure.in:235: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:235: the top level])
-m4trace:configure.in:236: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:236: the top level])
-m4trace:configure.in:237: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:237: the top level])
-m4trace:configure.in:238: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:238: the top level])
-m4trace:configure.in:239: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:239: the top level])
-m4trace:configure.in:240: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:240: the top level])
-m4trace:configure.in:241: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:241: the top level])
-m4trace:configure.in:242: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:242: the top level])
-m4trace:configure.in:243: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:243: the top level])
-m4trace:configure.in:244: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:244: the top level])
-m4trace:configure.in:245: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:245: the top level])
-m4trace:configure.in:248: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:248: the top level])
-m4trace:configure.in:249: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:249: the top level])
-m4trace:configure.in:250: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from...
-configure.in:250: the top level])
-m4trace:configure.in:253: -1- AC_SUBST([CC_FOR_BUILD])
-m4trace:configure.in:253: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
-m4trace:configure.in:253: -1- m4_pattern_allow([^CC_FOR_BUILD$])
-m4trace:configure.in:254: -1- AC_SUBST([CFLAGS_FOR_BUILD])
-m4trace:configure.in:254: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
-m4trace:configure.in:254: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
-m4trace:configure.in:255: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:255: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:255: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
-m4trace:configure.in:256: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:256: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:256: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
-m4trace:configure.in:265: -1- AC_DEFINE_TRACE_LITERAL([ALIAS])
-m4trace:configure.in:265: -1- m4_pattern_allow([^ALIAS$])
-m4trace:configure.in:268: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD])
-m4trace:configure.in:268: -1- m4_pattern_allow([^PUSHD_AND_POPD$])
-m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL])
-m4trace:configure.in:271: -1- m4_pattern_allow([^RESTRICTED_SHELL$])
-m4trace:configure.in:274: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION])
-m4trace:configure.in:274: -1- m4_pattern_allow([^PROCESS_SUBSTITUTION$])
-m4trace:configure.in:277: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE])
-m4trace:configure.in:277: -1- m4_pattern_allow([^PROMPT_STRING_DECODE$])
-m4trace:configure.in:280: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND])
-m4trace:configure.in:280: -1- m4_pattern_allow([^SELECT_COMMAND$])
-m4trace:configure.in:283: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN])
-m4trace:configure.in:283: -1- m4_pattern_allow([^HELP_BUILTIN$])
-m4trace:configure.in:286: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS])
-m4trace:configure.in:286: -1- m4_pattern_allow([^ARRAY_VARS$])
-m4trace:configure.in:289: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC])
-m4trace:configure.in:289: -1- m4_pattern_allow([^DPAREN_ARITHMETIC$])
-m4trace:configure.in:292: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION])
-m4trace:configure.in:292: -1- m4_pattern_allow([^BRACE_EXPANSION$])
-m4trace:configure.in:295: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS])
-m4trace:configure.in:295: -1- m4_pattern_allow([^DISABLED_BUILTINS$])
-m4trace:configure.in:298: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING])
-m4trace:configure.in:298: -1- m4_pattern_allow([^COMMAND_TIMING$])
-m4trace:configure.in:301: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG])
-m4trace:configure.in:301: -1- m4_pattern_allow([^DEFAULT_ECHO_TO_XPG$])
-m4trace:configure.in:304: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX])
-m4trace:configure.in:304: -1- m4_pattern_allow([^STRICT_POSIX$])
-m4trace:configure.in:307: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB])
-m4trace:configure.in:307: -1- m4_pattern_allow([^EXTENDED_GLOB$])
-m4trace:configure.in:310: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
-m4trace:configure.in:310: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
-m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
-m4trace:configure.in:312: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
-m4trace:configure.in:315: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND])
-m4trace:configure.in:315: -1- m4_pattern_allow([^COND_COMMAND$])
-m4trace:configure.in:318: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP])
-m4trace:configure.in:318: -1- m4_pattern_allow([^COND_REGEXP$])
-m4trace:configure.in:321: -1- AC_DEFINE_TRACE_LITERAL([COPROCESS_SUPPORT])
-m4trace:configure.in:321: -1- m4_pattern_allow([^COPROCESS_SUPPORT$])
-m4trace:configure.in:324: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND])
-m4trace:configure.in:324: -1- m4_pattern_allow([^ARITH_FOR_COMMAND$])
-m4trace:configure.in:327: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS])
-m4trace:configure.in:327: -1- m4_pattern_allow([^NETWORK_REDIRECTIONS$])
-m4trace:configure.in:330: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION])
-m4trace:configure.in:330: -1- m4_pattern_allow([^PROGRAMMABLE_COMPLETION$])
-m4trace:configure.in:333: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT])
-m4trace:configure.in:333: -1- m4_pattern_allow([^NO_MULTIBYTE_SUPPORT$])
-m4trace:configure.in:336: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER])
-m4trace:configure.in:336: -1- m4_pattern_allow([^DEBUGGER$])
-m4trace:configure.in:339: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_ATTRS])
-m4trace:configure.in:339: -1- m4_pattern_allow([^CASEMOD_ATTRS$])
-m4trace:configure.in:342: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_EXPANSIONS])
-m4trace:configure.in:342: -1- m4_pattern_allow([^CASEMOD_EXPANSIONS$])
-m4trace:configure.in:346: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE])
-m4trace:configure.in:346: -1- m4_pattern_allow([^MEMSCRAMBLE$])
-m4trace:configure.in:372: -1- AC_SUBST([TESTSCRIPT])
-m4trace:configure.in:372: -1- AC_SUBST_TRACE([TESTSCRIPT])
-m4trace:configure.in:372: -1- m4_pattern_allow([^TESTSCRIPT$])
-m4trace:configure.in:373: -1- AC_SUBST([PURIFY])
-m4trace:configure.in:373: -1- AC_SUBST_TRACE([PURIFY])
-m4trace:configure.in:373: -1- m4_pattern_allow([^PURIFY$])
-m4trace:configure.in:374: -1- AC_SUBST([MALLOC_TARGET])
-m4trace:configure.in:374: -1- AC_SUBST_TRACE([MALLOC_TARGET])
-m4trace:configure.in:374: -1- m4_pattern_allow([^MALLOC_TARGET$])
-m4trace:configure.in:375: -1- AC_SUBST([MALLOC_SRC])
-m4trace:configure.in:375: -1- AC_SUBST_TRACE([MALLOC_SRC])
-m4trace:configure.in:375: -1- m4_pattern_allow([^MALLOC_SRC$])
-m4trace:configure.in:377: -1- AC_SUBST([MALLOC_LIB])
-m4trace:configure.in:377: -1- AC_SUBST_TRACE([MALLOC_LIB])
-m4trace:configure.in:377: -1- m4_pattern_allow([^MALLOC_LIB$])
-m4trace:configure.in:378: -1- AC_SUBST([MALLOC_LIBRARY])
-m4trace:configure.in:378: -1- AC_SUBST_TRACE([MALLOC_LIBRARY])
-m4trace:configure.in:378: -1- m4_pattern_allow([^MALLOC_LIBRARY$])
-m4trace:configure.in:379: -1- AC_SUBST([MALLOC_LDFLAGS])
-m4trace:configure.in:379: -1- AC_SUBST_TRACE([MALLOC_LDFLAGS])
-m4trace:configure.in:379: -1- m4_pattern_allow([^MALLOC_LDFLAGS$])
-m4trace:configure.in:380: -1- AC_SUBST([MALLOC_DEP])
-m4trace:configure.in:380: -1- AC_SUBST_TRACE([MALLOC_DEP])
-m4trace:configure.in:380: -1- m4_pattern_allow([^MALLOC_DEP$])
-m4trace:configure.in:382: -1- AC_SUBST([htmldir])
-m4trace:configure.in:382: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.in:382: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.in:384: -1- AC_SUBST([HELPDIR])
-m4trace:configure.in:384: -1- AC_SUBST_TRACE([HELPDIR])
-m4trace:configure.in:384: -1- m4_pattern_allow([^HELPDIR$])
-m4trace:configure.in:385: -1- AC_SUBST([HELPDIRDEFINE])
-m4trace:configure.in:385: -1- AC_SUBST_TRACE([HELPDIRDEFINE])
-m4trace:configure.in:385: -1- m4_pattern_allow([^HELPDIRDEFINE$])
-m4trace:configure.in:386: -1- AC_SUBST([HELPINSTALL])
-m4trace:configure.in:386: -1- AC_SUBST_TRACE([HELPINSTALL])
-m4trace:configure.in:386: -1- m4_pattern_allow([^HELPINSTALL$])
-m4trace:configure.in:387: -1- AC_SUBST([HELPFILES_TARGET])
-m4trace:configure.in:387: -1- AC_SUBST_TRACE([HELPFILES_TARGET])
-m4trace:configure.in:387: -1- m4_pattern_allow([^HELPFILES_TARGET$])
-m4trace:configure.in:388: -1- AC_SUBST([HELPSTRINGS])
-m4trace:configure.in:388: -1- AC_SUBST_TRACE([HELPSTRINGS])
-m4trace:configure.in:388: -1- m4_pattern_allow([^HELPSTRINGS$])
-m4trace:configure.in:397: -1- AC_SUBST([CC])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:397: -1- AC_SUBST([CFLAGS])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.in:397: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.in:397: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.in:397: -1- AC_SUBST([LIBS])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.in:397: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.in:397: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.in:397: -1- AC_SUBST([CC])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:397: -1- AC_SUBST([CC])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:397: -1- AC_SUBST([CC])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:397: -1- AC_SUBST([CC])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.in:397: -1- m4_pattern_allow([^CC$])
-m4trace:configure.in:397: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.in:397: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.in:397: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.in:397: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.in:397: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.in:397: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.in:397: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.in:401: -1- _m4_warn([obsolete], [The macro `AC_MINIX' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/specific.m4:437: AC_MINIX is expanded from...
-configure.in:401: the top level])
-m4trace:configure.in:401: -1- AC_SUBST([CPP])
-m4trace:configure.in:401: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.in:401: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.in:401: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:401: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.in:401: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.in:401: -1- AC_SUBST([CPP])
-m4trace:configure.in:401: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.in:401: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.in:401: -1- AC_SUBST([GREP])
-m4trace:configure.in:401: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.in:401: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.in:401: -1- AC_SUBST([EGREP])
-m4trace:configure.in:401: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.in:401: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.in:401: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.in:401: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+m4trace:configure.ac:29: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:29: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:29: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:29: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:29: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:29: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:29: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:29: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:29: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:29: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:36: -1- AC_CONFIG_AUX_DIR([./support])
+m4trace:configure.ac:37: -1- AC_CONFIG_HEADERS([config.h])
+m4trace:configure.ac:51: -1- AC_CANONICAL_HOST
+m4trace:configure.ac:51: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:51: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.ac:51: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.ac:51: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([build])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:51: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:51: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:51: -1- AC_SUBST([build_os])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:51: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([host])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:51: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:51: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:51: -1- AC_SUBST([host_os])
+m4trace:configure.ac:51: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:51: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:52: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:107: -1- AC_SUBST([DEBUGGER_START_FILE])
+m4trace:configure.ac:107: -1- AC_SUBST_TRACE([DEBUGGER_START_FILE])
+m4trace:configure.ac:107: -1- m4_pattern_allow([^DEBUGGER_START_FILE$])
+m4trace:configure.ac:111: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:111: the top level])
+m4trace:configure.ac:112: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:112: the top level])
+m4trace:configure.ac:113: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:113: the top level])
+m4trace:configure.ac:114: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:114: the top level])
+m4trace:configure.ac:115: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:115: the top level])
+m4trace:configure.ac:116: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:116: the top level])
+m4trace:configure.ac:117: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:117: the top level])
+m4trace:configure.ac:128: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^USING_BASH_MALLOC$])
+m4trace:configure.ac:138: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS])
+m4trace:configure.ac:138: -1- m4_pattern_allow([^DISABLE_MALLOC_WRAPPERS$])
+m4trace:configure.ac:148: -1- AC_DEFINE_TRACE_LITERAL([AFS])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^AFS$])
+m4trace:configure.ac:202: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:202: the top level])
+m4trace:configure.ac:219: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:219: the top level])
+m4trace:configure.ac:220: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:220: the top level])
+m4trace:configure.ac:221: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:221: the top level])
+m4trace:configure.ac:222: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:222: the top level])
+m4trace:configure.ac:223: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:223: the top level])
+m4trace:configure.ac:224: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:224: the top level])
+m4trace:configure.ac:225: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:225: the top level])
+m4trace:configure.ac:226: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:226: the top level])
+m4trace:configure.ac:227: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:227: the top level])
+m4trace:configure.ac:228: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:228: the top level])
+m4trace:configure.ac:229: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:229: the top level])
+m4trace:configure.ac:230: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:230: the top level])
+m4trace:configure.ac:231: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:231: the top level])
+m4trace:configure.ac:232: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:232: the top level])
+m4trace:configure.ac:233: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:233: the top level])
+m4trace:configure.ac:234: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:234: the top level])
+m4trace:configure.ac:235: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:235: the top level])
+m4trace:configure.ac:236: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:236: the top level])
+m4trace:configure.ac:237: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:237: the top level])
+m4trace:configure.ac:238: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:238: the top level])
+m4trace:configure.ac:239: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:239: the top level])
+m4trace:configure.ac:240: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:240: the top level])
+m4trace:configure.ac:241: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:241: the top level])
+m4trace:configure.ac:242: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:242: the top level])
+m4trace:configure.ac:243: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:243: the top level])
+m4trace:configure.ac:244: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:244: the top level])
+m4trace:configure.ac:245: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:245: the top level])
+m4trace:configure.ac:246: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:246: the top level])
+m4trace:configure.ac:247: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:247: the top level])
+m4trace:configure.ac:248: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:248: the top level])
+m4trace:configure.ac:249: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:249: the top level])
+m4trace:configure.ac:250: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:250: the top level])
+m4trace:configure.ac:251: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:251: the top level])
+m4trace:configure.ac:252: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:252: the top level])
+m4trace:configure.ac:253: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:253: the top level])
+m4trace:configure.ac:256: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:256: the top level])
+m4trace:configure.ac:257: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:257: the top level])
+m4trace:configure.ac:258: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from...
+configure.ac:258: the top level])
+m4trace:configure.ac:261: -1- AC_SUBST([CC_FOR_BUILD])
+m4trace:configure.ac:261: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
+m4trace:configure.ac:261: -1- m4_pattern_allow([^CC_FOR_BUILD$])
+m4trace:configure.ac:262: -1- AC_SUBST([CFLAGS_FOR_BUILD])
+m4trace:configure.ac:262: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
+m4trace:configure.ac:262: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
+m4trace:configure.ac:263: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
+m4trace:configure.ac:263: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
+m4trace:configure.ac:263: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
+m4trace:configure.ac:264: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
+m4trace:configure.ac:264: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
+m4trace:configure.ac:264: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
+m4trace:configure.ac:273: -1- AC_DEFINE_TRACE_LITERAL([ALIAS])
+m4trace:configure.ac:273: -1- m4_pattern_allow([^ALIAS$])
+m4trace:configure.ac:276: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD])
+m4trace:configure.ac:276: -1- m4_pattern_allow([^PUSHD_AND_POPD$])
+m4trace:configure.ac:279: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL])
+m4trace:configure.ac:279: -1- m4_pattern_allow([^RESTRICTED_SHELL$])
+m4trace:configure.ac:282: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^PROCESS_SUBSTITUTION$])
+m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE])
+m4trace:configure.ac:285: -1- m4_pattern_allow([^PROMPT_STRING_DECODE$])
+m4trace:configure.ac:288: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND])
+m4trace:configure.ac:288: -1- m4_pattern_allow([^SELECT_COMMAND$])
+m4trace:configure.ac:291: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN])
+m4trace:configure.ac:291: -1- m4_pattern_allow([^HELP_BUILTIN$])
+m4trace:configure.ac:294: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS])
+m4trace:configure.ac:294: -1- m4_pattern_allow([^ARRAY_VARS$])
+m4trace:configure.ac:297: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC])
+m4trace:configure.ac:297: -1- m4_pattern_allow([^DPAREN_ARITHMETIC$])
+m4trace:configure.ac:300: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^BRACE_EXPANSION$])
+m4trace:configure.ac:303: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS])
+m4trace:configure.ac:303: -1- m4_pattern_allow([^DISABLED_BUILTINS$])
+m4trace:configure.ac:306: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING])
+m4trace:configure.ac:306: -1- m4_pattern_allow([^COMMAND_TIMING$])
+m4trace:configure.ac:309: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG])
+m4trace:configure.ac:309: -1- m4_pattern_allow([^DEFAULT_ECHO_TO_XPG$])
+m4trace:configure.ac:312: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX])
+m4trace:configure.ac:312: -1- m4_pattern_allow([^STRICT_POSIX$])
+m4trace:configure.ac:315: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB])
+m4trace:configure.ac:315: -1- m4_pattern_allow([^EXTENDED_GLOB$])
+m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
+m4trace:configure.ac:318: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
+m4trace:configure.ac:320: -1- AC_DEFINE_TRACE_LITERAL([EXTGLOB_DEFAULT])
+m4trace:configure.ac:320: -1- m4_pattern_allow([^EXTGLOB_DEFAULT$])
+m4trace:configure.ac:323: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND])
+m4trace:configure.ac:323: -1- m4_pattern_allow([^COND_COMMAND$])
+m4trace:configure.ac:326: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^COND_REGEXP$])
+m4trace:configure.ac:329: -1- AC_DEFINE_TRACE_LITERAL([COPROCESS_SUPPORT])
+m4trace:configure.ac:329: -1- m4_pattern_allow([^COPROCESS_SUPPORT$])
+m4trace:configure.ac:332: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND])
+m4trace:configure.ac:332: -1- m4_pattern_allow([^ARITH_FOR_COMMAND$])
+m4trace:configure.ac:335: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS])
+m4trace:configure.ac:335: -1- m4_pattern_allow([^NETWORK_REDIRECTIONS$])
+m4trace:configure.ac:338: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION])
+m4trace:configure.ac:338: -1- m4_pattern_allow([^PROGRAMMABLE_COMPLETION$])
+m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT])
+m4trace:configure.ac:341: -1- m4_pattern_allow([^NO_MULTIBYTE_SUPPORT$])
+m4trace:configure.ac:344: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER])
+m4trace:configure.ac:344: -1- m4_pattern_allow([^DEBUGGER$])
+m4trace:configure.ac:347: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_ATTRS])
+m4trace:configure.ac:347: -1- m4_pattern_allow([^CASEMOD_ATTRS$])
+m4trace:configure.ac:350: -1- AC_DEFINE_TRACE_LITERAL([CASEMOD_EXPANSIONS])
+m4trace:configure.ac:350: -1- m4_pattern_allow([^CASEMOD_EXPANSIONS$])
+m4trace:configure.ac:353: -1- AC_DEFINE_TRACE_LITERAL([DIRCOMPLETE_EXPAND_DEFAULT])
+m4trace:configure.ac:353: -1- m4_pattern_allow([^DIRCOMPLETE_EXPAND_DEFAULT$])
+m4trace:configure.ac:356: -1- AC_DEFINE_TRACE_LITERAL([GLOBASCII_DEFAULT])
+m4trace:configure.ac:356: -1- m4_pattern_allow([^GLOBASCII_DEFAULT$])
+m4trace:configure.ac:358: -1- AC_DEFINE_TRACE_LITERAL([GLOBASCII_DEFAULT])
+m4trace:configure.ac:358: -1- m4_pattern_allow([^GLOBASCII_DEFAULT$])
+m4trace:configure.ac:362: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE])
+m4trace:configure.ac:362: -1- m4_pattern_allow([^MEMSCRAMBLE$])
+m4trace:configure.ac:388: -1- AC_SUBST([TESTSCRIPT])
+m4trace:configure.ac:388: -1- AC_SUBST_TRACE([TESTSCRIPT])
+m4trace:configure.ac:388: -1- m4_pattern_allow([^TESTSCRIPT$])
+m4trace:configure.ac:389: -1- AC_SUBST([PURIFY])
+m4trace:configure.ac:389: -1- AC_SUBST_TRACE([PURIFY])
+m4trace:configure.ac:389: -1- m4_pattern_allow([^PURIFY$])
+m4trace:configure.ac:390: -1- AC_SUBST([MALLOC_TARGET])
+m4trace:configure.ac:390: -1- AC_SUBST_TRACE([MALLOC_TARGET])
+m4trace:configure.ac:390: -1- m4_pattern_allow([^MALLOC_TARGET$])
+m4trace:configure.ac:391: -1- AC_SUBST([MALLOC_SRC])
+m4trace:configure.ac:391: -1- AC_SUBST_TRACE([MALLOC_SRC])
+m4trace:configure.ac:391: -1- m4_pattern_allow([^MALLOC_SRC$])
+m4trace:configure.ac:393: -1- AC_SUBST([MALLOC_LIB])
+m4trace:configure.ac:393: -1- AC_SUBST_TRACE([MALLOC_LIB])
+m4trace:configure.ac:393: -1- m4_pattern_allow([^MALLOC_LIB$])
+m4trace:configure.ac:394: -1- AC_SUBST([MALLOC_LIBRARY])
+m4trace:configure.ac:394: -1- AC_SUBST_TRACE([MALLOC_LIBRARY])
+m4trace:configure.ac:394: -1- m4_pattern_allow([^MALLOC_LIBRARY$])
+m4trace:configure.ac:395: -1- AC_SUBST([MALLOC_LDFLAGS])
+m4trace:configure.ac:395: -1- AC_SUBST_TRACE([MALLOC_LDFLAGS])
+m4trace:configure.ac:395: -1- m4_pattern_allow([^MALLOC_LDFLAGS$])
+m4trace:configure.ac:396: -1- AC_SUBST([MALLOC_DEP])
+m4trace:configure.ac:396: -1- AC_SUBST_TRACE([MALLOC_DEP])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^MALLOC_DEP$])
+m4trace:configure.ac:398: -1- AC_SUBST([htmldir])
+m4trace:configure.ac:398: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:398: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:400: -1- AC_SUBST([HELPDIR])
+m4trace:configure.ac:400: -1- AC_SUBST_TRACE([HELPDIR])
+m4trace:configure.ac:400: -1- m4_pattern_allow([^HELPDIR$])
+m4trace:configure.ac:401: -1- AC_SUBST([HELPDIRDEFINE])
+m4trace:configure.ac:401: -1- AC_SUBST_TRACE([HELPDIRDEFINE])
+m4trace:configure.ac:401: -1- m4_pattern_allow([^HELPDIRDEFINE$])
+m4trace:configure.ac:402: -1- AC_SUBST([HELPINSTALL])
+m4trace:configure.ac:402: -1- AC_SUBST_TRACE([HELPINSTALL])
+m4trace:configure.ac:402: -1- m4_pattern_allow([^HELPINSTALL$])
+m4trace:configure.ac:403: -1- AC_SUBST([HELPFILES_TARGET])
+m4trace:configure.ac:403: -1- AC_SUBST_TRACE([HELPFILES_TARGET])
+m4trace:configure.ac:403: -1- m4_pattern_allow([^HELPFILES_TARGET$])
+m4trace:configure.ac:404: -1- AC_SUBST([HELPSTRINGS])
+m4trace:configure.ac:404: -1- AC_SUBST_TRACE([HELPSTRINGS])
+m4trace:configure.ac:404: -1- m4_pattern_allow([^HELPSTRINGS$])
+m4trace:configure.ac:413: -1- AC_SUBST([CC])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:413: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:413: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:413: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:413: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:413: -1- AC_SUBST([CC])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:413: -1- AC_SUBST([CC])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:413: -1- AC_SUBST([CC])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:413: -1- AC_SUBST([CC])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:413: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:413: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:413: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:413: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:413: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:417: -1- _m4_warn([obsolete], [The macro `AC_MINIX' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/specific.m4:441: AC_MINIX is expanded from...
+configure.ac:417: the top level])
+m4trace:configure.ac:417: -1- AC_SUBST([CPP])
+m4trace:configure.ac:417: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:417: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:417: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:417: -1- AC_SUBST([CPP])
+m4trace:configure.ac:417: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:417: -1- AC_SUBST([GREP])
+m4trace:configure.ac:417: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:417: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:417: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:417: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
@%:@undef STDC_HEADERS])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
@%:@undef HAVE_MEMORY_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
-m4trace:configure.in:401: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_POSIX_SOURCE$])
-m4trace:configure.in:401: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_POSIX_SOURCE$])
+m4trace:configure.ac:417: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */
@%:@undef _POSIX_SOURCE])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
-m4trace:configure.in:401: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_POSIX_1_SOURCE$])
+m4trace:configure.ac:417: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
@%:@undef _POSIX_1_SOURCE])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_MINIX$])
-m4trace:configure.in:401: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_MINIX])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_MINIX$])
+m4trace:configure.ac:417: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */
@%:@undef _MINIX])
-m4trace:configure.in:401: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */
+m4trace:configure.ac:417: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
@@ -538,171 +550,175 @@ m4trace:configure.in:401: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable exte
# undef __EXTENSIONS__
#endif
])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__])
-m4trace:configure.in:401: -1- m4_pattern_allow([^__EXTENSIONS__$])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_ALL_SOURCE$])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_GNU_SOURCE$])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
-m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE])
-m4trace:configure.in:401: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
-m4trace:configure.in:403: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.in:403: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.in:403: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^__EXTENSIONS__$])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_ALL_SOURCE$])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_GNU_SOURCE$])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^_TANDEM_SOURCE$])
+m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
+m4trace:configure.ac:419: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:419: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
@%:@undef _FILE_OFFSET_BITS])
-m4trace:configure.in:403: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.in:403: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.in:403: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
+m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
+m4trace:configure.ac:419: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:419: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
@%:@undef _LARGE_FILES])
-m4trace:configure.in:440: -1- AC_SUBST([CROSS_COMPILE])
-m4trace:configure.in:440: -1- AC_SUBST_TRACE([CROSS_COMPILE])
-m4trace:configure.in:440: -1- m4_pattern_allow([^CROSS_COMPILE$])
-m4trace:configure.in:442: -1- AC_SUBST([SIGNAMES_H])
-m4trace:configure.in:442: -1- AC_SUBST_TRACE([SIGNAMES_H])
-m4trace:configure.in:442: -1- m4_pattern_allow([^SIGNAMES_H$])
-m4trace:configure.in:443: -1- AC_SUBST([SIGNAMES_O])
-m4trace:configure.in:443: -1- AC_SUBST_TRACE([SIGNAMES_O])
-m4trace:configure.in:443: -1- m4_pattern_allow([^SIGNAMES_O$])
-m4trace:configure.in:477: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete.
+m4trace:configure.ac:419: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif])
+m4trace:configure.ac:456: -1- AC_SUBST([CROSS_COMPILE])
+m4trace:configure.ac:456: -1- AC_SUBST_TRACE([CROSS_COMPILE])
+m4trace:configure.ac:456: -1- m4_pattern_allow([^CROSS_COMPILE$])
+m4trace:configure.ac:458: -1- AC_SUBST([SIGNAMES_H])
+m4trace:configure.ac:458: -1- AC_SUBST_TRACE([SIGNAMES_H])
+m4trace:configure.ac:458: -1- m4_pattern_allow([^SIGNAMES_H$])
+m4trace:configure.ac:459: -1- AC_SUBST([SIGNAMES_O])
+m4trace:configure.ac:459: -1- AC_SUBST_TRACE([SIGNAMES_O])
+m4trace:configure.ac:459: -1- m4_pattern_allow([^SIGNAMES_O$])
+m4trace:configure.ac:493: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete.
You should run autoupdate.], [../../lib/autoconf/c.m4:436: ac_cv_prog_gcc is expanded from...
-configure.in:477: the top level])
-m4trace:configure.in:504: -1- AC_SUBST([CFLAGS])
-m4trace:configure.in:504: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.in:504: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.in:505: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.in:505: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.in:505: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.in:506: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.in:506: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.in:506: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.in:507: -1- AC_SUBST([STATIC_LD])
-m4trace:configure.in:507: -1- AC_SUBST_TRACE([STATIC_LD])
-m4trace:configure.in:507: -1- m4_pattern_allow([^STATIC_LD$])
-m4trace:configure.in:509: -1- AC_SUBST([CC_FOR_BUILD])
-m4trace:configure.in:509: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
-m4trace:configure.in:509: -1- m4_pattern_allow([^CC_FOR_BUILD$])
-m4trace:configure.in:510: -1- AC_SUBST([CFLAGS_FOR_BUILD])
-m4trace:configure.in:510: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
-m4trace:configure.in:510: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
-m4trace:configure.in:511: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:511: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
-m4trace:configure.in:511: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
-m4trace:configure.in:512: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:512: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
-m4trace:configure.in:512: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
-m4trace:configure.in:513: -1- AC_SUBST([LIBS_FOR_BUILD])
-m4trace:configure.in:513: -1- AC_SUBST_TRACE([LIBS_FOR_BUILD])
-m4trace:configure.in:513: -1- m4_pattern_allow([^LIBS_FOR_BUILD$])
-m4trace:configure.in:527: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:493: the top level])
+m4trace:configure.ac:520: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:520: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:520: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:521: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:521: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:521: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:522: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:522: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:522: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:523: -1- AC_SUBST([STATIC_LD])
+m4trace:configure.ac:523: -1- AC_SUBST_TRACE([STATIC_LD])
+m4trace:configure.ac:523: -1- m4_pattern_allow([^STATIC_LD$])
+m4trace:configure.ac:525: -1- AC_SUBST([CC_FOR_BUILD])
+m4trace:configure.ac:525: -1- AC_SUBST_TRACE([CC_FOR_BUILD])
+m4trace:configure.ac:525: -1- m4_pattern_allow([^CC_FOR_BUILD$])
+m4trace:configure.ac:526: -1- AC_SUBST([CFLAGS_FOR_BUILD])
+m4trace:configure.ac:526: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD])
+m4trace:configure.ac:526: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$])
+m4trace:configure.ac:527: -1- AC_SUBST([CPPFLAGS_FOR_BUILD])
+m4trace:configure.ac:527: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD])
+m4trace:configure.ac:527: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$])
+m4trace:configure.ac:528: -1- AC_SUBST([LDFLAGS_FOR_BUILD])
+m4trace:configure.ac:528: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD])
+m4trace:configure.ac:528: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$])
+m4trace:configure.ac:529: -1- AC_SUBST([LIBS_FOR_BUILD])
+m4trace:configure.ac:529: -1- AC_SUBST_TRACE([LIBS_FOR_BUILD])
+m4trace:configure.ac:529: -1- m4_pattern_allow([^LIBS_FOR_BUILD$])
+m4trace:configure.ac:543: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1806: RL_LIB_READLINE_VERSION is expanded from...
-configure.in:527: the top level])
-m4trace:configure.in:527: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
-m4trace:configure.in:527: -1- m4_pattern_allow([^RL_READLINE_VERSION$])
-m4trace:configure.in:527: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */
+configure.ac:543: the top level])
+m4trace:configure.ac:543: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION])
+m4trace:configure.ac:543: -1- m4_pattern_allow([^RL_READLINE_VERSION$])
+m4trace:configure.ac:543: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */
@%:@undef RL_READLINE_VERSION])
-m4trace:configure.in:527: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR])
-m4trace:configure.in:527: -1- m4_pattern_allow([^RL_VERSION_MAJOR$])
-m4trace:configure.in:527: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */
+m4trace:configure.ac:543: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR])
+m4trace:configure.ac:543: -1- m4_pattern_allow([^RL_VERSION_MAJOR$])
+m4trace:configure.ac:543: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */
@%:@undef RL_VERSION_MAJOR])
-m4trace:configure.in:527: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR])
-m4trace:configure.in:527: -1- m4_pattern_allow([^RL_VERSION_MINOR$])
-m4trace:configure.in:527: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */
+m4trace:configure.ac:543: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR])
+m4trace:configure.ac:543: -1- m4_pattern_allow([^RL_VERSION_MINOR$])
+m4trace:configure.ac:543: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */
@%:@undef RL_VERSION_MINOR])
-m4trace:configure.in:527: -1- AC_SUBST([RL_VERSION])
-m4trace:configure.in:527: -1- AC_SUBST_TRACE([RL_VERSION])
-m4trace:configure.in:527: -1- m4_pattern_allow([^RL_VERSION$])
-m4trace:configure.in:527: -1- AC_SUBST([RL_MAJOR])
-m4trace:configure.in:527: -1- AC_SUBST_TRACE([RL_MAJOR])
-m4trace:configure.in:527: -1- m4_pattern_allow([^RL_MAJOR$])
-m4trace:configure.in:527: -1- AC_SUBST([RL_MINOR])
-m4trace:configure.in:527: -1- AC_SUBST_TRACE([RL_MINOR])
-m4trace:configure.in:527: -1- m4_pattern_allow([^RL_MINOR$])
-m4trace:configure.in:540: -1- AC_DEFINE_TRACE_LITERAL([READLINE])
-m4trace:configure.in:540: -1- m4_pattern_allow([^READLINE$])
-m4trace:configure.in:575: -1- AC_DEFINE_TRACE_LITERAL([HISTORY])
-m4trace:configure.in:575: -1- m4_pattern_allow([^HISTORY$])
-m4trace:configure.in:578: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY])
-m4trace:configure.in:578: -1- m4_pattern_allow([^BANG_HISTORY$])
-m4trace:configure.in:608: -1- AC_SUBST([READLINE_LIB])
-m4trace:configure.in:608: -1- AC_SUBST_TRACE([READLINE_LIB])
-m4trace:configure.in:608: -1- m4_pattern_allow([^READLINE_LIB$])
-m4trace:configure.in:609: -1- AC_SUBST([READLINE_DEP])
-m4trace:configure.in:609: -1- AC_SUBST_TRACE([READLINE_DEP])
-m4trace:configure.in:609: -1- m4_pattern_allow([^READLINE_DEP$])
-m4trace:configure.in:610: -1- AC_SUBST([RL_LIBDIR])
-m4trace:configure.in:610: -1- AC_SUBST_TRACE([RL_LIBDIR])
-m4trace:configure.in:610: -1- m4_pattern_allow([^RL_LIBDIR$])
-m4trace:configure.in:611: -1- AC_SUBST([RL_INCLUDEDIR])
-m4trace:configure.in:611: -1- AC_SUBST_TRACE([RL_INCLUDEDIR])
-m4trace:configure.in:611: -1- m4_pattern_allow([^RL_INCLUDEDIR$])
-m4trace:configure.in:612: -1- AC_SUBST([RL_INCLUDE])
-m4trace:configure.in:612: -1- AC_SUBST_TRACE([RL_INCLUDE])
-m4trace:configure.in:612: -1- m4_pattern_allow([^RL_INCLUDE$])
-m4trace:configure.in:613: -1- AC_SUBST([HISTORY_LIB])
-m4trace:configure.in:613: -1- AC_SUBST_TRACE([HISTORY_LIB])
-m4trace:configure.in:613: -1- m4_pattern_allow([^HISTORY_LIB$])
-m4trace:configure.in:614: -1- AC_SUBST([HISTORY_DEP])
-m4trace:configure.in:614: -1- AC_SUBST_TRACE([HISTORY_DEP])
-m4trace:configure.in:614: -1- m4_pattern_allow([^HISTORY_DEP$])
-m4trace:configure.in:615: -1- AC_SUBST([HIST_LIBDIR])
-m4trace:configure.in:615: -1- AC_SUBST_TRACE([HIST_LIBDIR])
-m4trace:configure.in:615: -1- m4_pattern_allow([^HIST_LIBDIR$])
-m4trace:configure.in:616: -1- AC_SUBST([TILDE_LIB])
-m4trace:configure.in:616: -1- AC_SUBST_TRACE([TILDE_LIB])
-m4trace:configure.in:616: -1- m4_pattern_allow([^TILDE_LIB$])
-m4trace:configure.in:621: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.in:621: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.in:621: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.in:621: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.in:621: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.in:621: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.in:621: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.in:621: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.in:621: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.in:621: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.in:622: -1- AC_SUBST([AR])
-m4trace:configure.in:622: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.in:622: -1- m4_pattern_allow([^AR$])
-m4trace:configure.in:626: -1- AC_SUBST([RANLIB])
-m4trace:configure.in:626: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.in:626: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.in:627: -1- AC_SUBST([YACC])
-m4trace:configure.in:627: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.in:627: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.in:627: -1- AC_SUBST([YACC])
-m4trace:configure.in:627: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.in:627: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.in:627: -1- AC_SUBST([YFLAGS])
-m4trace:configure.in:627: -1- AC_SUBST_TRACE([YFLAGS])
-m4trace:configure.in:627: -1- m4_pattern_allow([^YFLAGS$])
-m4trace:configure.in:628: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.in:628: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.in:628: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.in:634: -1- AC_SUBST([MAKE_SHELL])
-m4trace:configure.in:634: -1- AC_SUBST_TRACE([MAKE_SHELL])
-m4trace:configure.in:634: -1- m4_pattern_allow([^MAKE_SHELL$])
-m4trace:configure.in:656: -1- AC_SUBST([SIZE])
-m4trace:configure.in:656: -1- AC_SUBST_TRACE([SIZE])
-m4trace:configure.in:656: -1- m4_pattern_allow([^SIZE$])
-m4trace:configure.in:658: -1- m4_include([m4/stat-time.m4])
-m4trace:configure.in:659: -1- m4_include([m4/timespec.m4])
-m4trace:configure.in:662: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
-m4trace:configure.in:662: -1- m4_pattern_allow([^_GNU_SOURCE$])
-m4trace:configure.in:665: -1- AC_DEFINE_TRACE_LITERAL([const])
-m4trace:configure.in:665: -1- m4_pattern_allow([^const$])
-m4trace:configure.in:665: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
+m4trace:configure.ac:543: -1- AC_SUBST([RL_VERSION])
+m4trace:configure.ac:543: -1- AC_SUBST_TRACE([RL_VERSION])
+m4trace:configure.ac:543: -1- m4_pattern_allow([^RL_VERSION$])
+m4trace:configure.ac:543: -1- AC_SUBST([RL_MAJOR])
+m4trace:configure.ac:543: -1- AC_SUBST_TRACE([RL_MAJOR])
+m4trace:configure.ac:543: -1- m4_pattern_allow([^RL_MAJOR$])
+m4trace:configure.ac:543: -1- AC_SUBST([RL_MINOR])
+m4trace:configure.ac:543: -1- AC_SUBST_TRACE([RL_MINOR])
+m4trace:configure.ac:543: -1- m4_pattern_allow([^RL_MINOR$])
+m4trace:configure.ac:556: -1- AC_DEFINE_TRACE_LITERAL([READLINE])
+m4trace:configure.ac:556: -1- m4_pattern_allow([^READLINE$])
+m4trace:configure.ac:591: -1- AC_DEFINE_TRACE_LITERAL([HISTORY])
+m4trace:configure.ac:591: -1- m4_pattern_allow([^HISTORY$])
+m4trace:configure.ac:594: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY])
+m4trace:configure.ac:594: -1- m4_pattern_allow([^BANG_HISTORY$])
+m4trace:configure.ac:624: -1- AC_SUBST([READLINE_LIB])
+m4trace:configure.ac:624: -1- AC_SUBST_TRACE([READLINE_LIB])
+m4trace:configure.ac:624: -1- m4_pattern_allow([^READLINE_LIB$])
+m4trace:configure.ac:625: -1- AC_SUBST([READLINE_DEP])
+m4trace:configure.ac:625: -1- AC_SUBST_TRACE([READLINE_DEP])
+m4trace:configure.ac:625: -1- m4_pattern_allow([^READLINE_DEP$])
+m4trace:configure.ac:626: -1- AC_SUBST([RL_LIBDIR])
+m4trace:configure.ac:626: -1- AC_SUBST_TRACE([RL_LIBDIR])
+m4trace:configure.ac:626: -1- m4_pattern_allow([^RL_LIBDIR$])
+m4trace:configure.ac:627: -1- AC_SUBST([RL_INCLUDEDIR])
+m4trace:configure.ac:627: -1- AC_SUBST_TRACE([RL_INCLUDEDIR])
+m4trace:configure.ac:627: -1- m4_pattern_allow([^RL_INCLUDEDIR$])
+m4trace:configure.ac:628: -1- AC_SUBST([RL_INCLUDE])
+m4trace:configure.ac:628: -1- AC_SUBST_TRACE([RL_INCLUDE])
+m4trace:configure.ac:628: -1- m4_pattern_allow([^RL_INCLUDE$])
+m4trace:configure.ac:629: -1- AC_SUBST([HISTORY_LIB])
+m4trace:configure.ac:629: -1- AC_SUBST_TRACE([HISTORY_LIB])
+m4trace:configure.ac:629: -1- m4_pattern_allow([^HISTORY_LIB$])
+m4trace:configure.ac:630: -1- AC_SUBST([HISTORY_DEP])
+m4trace:configure.ac:630: -1- AC_SUBST_TRACE([HISTORY_DEP])
+m4trace:configure.ac:630: -1- m4_pattern_allow([^HISTORY_DEP$])
+m4trace:configure.ac:631: -1- AC_SUBST([HIST_LIBDIR])
+m4trace:configure.ac:631: -1- AC_SUBST_TRACE([HIST_LIBDIR])
+m4trace:configure.ac:631: -1- m4_pattern_allow([^HIST_LIBDIR$])
+m4trace:configure.ac:632: -1- AC_SUBST([TILDE_LIB])
+m4trace:configure.ac:632: -1- AC_SUBST_TRACE([TILDE_LIB])
+m4trace:configure.ac:632: -1- m4_pattern_allow([^TILDE_LIB$])
+m4trace:configure.ac:637: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:637: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.ac:637: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.ac:637: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:637: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.ac:637: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.ac:637: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:637: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.ac:637: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.ac:637: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:638: -1- AC_SUBST([AR])
+m4trace:configure.ac:638: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:638: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:642: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:642: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:642: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:643: -1- AC_SUBST([YACC])
+m4trace:configure.ac:643: -1- AC_SUBST_TRACE([YACC])
+m4trace:configure.ac:643: -1- m4_pattern_allow([^YACC$])
+m4trace:configure.ac:643: -1- AC_SUBST([YACC])
+m4trace:configure.ac:643: -1- AC_SUBST_TRACE([YACC])
+m4trace:configure.ac:643: -1- m4_pattern_allow([^YACC$])
+m4trace:configure.ac:643: -1- AC_SUBST([YFLAGS])
+m4trace:configure.ac:643: -1- AC_SUBST_TRACE([YFLAGS])
+m4trace:configure.ac:643: -1- m4_pattern_allow([^YFLAGS$])
+m4trace:configure.ac:644: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.ac:644: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.ac:644: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:655: -1- AC_SUBST([MAKE_SHELL])
+m4trace:configure.ac:655: -1- AC_SUBST_TRACE([MAKE_SHELL])
+m4trace:configure.ac:655: -1- m4_pattern_allow([^MAKE_SHELL$])
+m4trace:configure.ac:677: -1- AC_SUBST([SIZE])
+m4trace:configure.ac:677: -1- AC_SUBST_TRACE([SIZE])
+m4trace:configure.ac:677: -1- m4_pattern_allow([^SIZE$])
+m4trace:configure.ac:679: -1- m4_include([m4/stat-time.m4])
+m4trace:configure.ac:680: -1- m4_include([m4/timespec.m4])
+m4trace:configure.ac:683: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE])
+m4trace:configure.ac:683: -1- m4_pattern_allow([^_GNU_SOURCE$])
+m4trace:configure.ac:686: -1- AC_DEFINE_TRACE_LITERAL([const])
+m4trace:configure.ac:686: -1- m4_pattern_allow([^const$])
+m4trace:configure.ac:686: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
@%:@undef const])
-m4trace:configure.in:666: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
+m4trace:configure.ac:687: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
calls it, or to nothing if \'inline\' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif])
-m4trace:configure.in:667: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+m4trace:configure.ac:688: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
@@ -713,49 +729,49 @@ m4trace:configure.in:667: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGE
# undef WORDS_BIGENDIAN
# endif
#endif])
-m4trace:configure.in:667: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
-m4trace:configure.in:667: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
-m4trace:configure.in:667: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.in:667: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
-m4trace:configure.in:667: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
+m4trace:configure.ac:688: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
+m4trace:configure.ac:688: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
+m4trace:configure.ac:688: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
+m4trace:configure.ac:688: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
+m4trace:configure.ac:688: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
@%:@undef AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.in:668: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE])
-m4trace:configure.in:668: -1- m4_pattern_allow([^HAVE_STRINGIZE$])
-m4trace:configure.in:668: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */
+m4trace:configure.ac:689: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE])
+m4trace:configure.ac:689: -1- m4_pattern_allow([^HAVE_STRINGIZE$])
+m4trace:configure.ac:689: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */
@%:@undef HAVE_STRINGIZE])
-m4trace:configure.in:669: -1- _m4_warn([obsolete], [The macro `AC_C_LONG_DOUBLE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:451: AC_C_LONG_DOUBLE is expanded from...
-configure.in:669: the top level])
-m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE_WIDER])
-m4trace:configure.in:669: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE_WIDER$])
-m4trace:configure.in:669: -1- AH_OUTPUT([HAVE_LONG_DOUBLE_WIDER], [/* Define to 1 if the type `long double\' works and has more range or precision
+m4trace:configure.ac:690: -1- _m4_warn([obsolete], [The macro `AC_C_LONG_DOUBLE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/types.m4:452: AC_C_LONG_DOUBLE is expanded from...
+configure.ac:690: the top level])
+m4trace:configure.ac:690: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE_WIDER])
+m4trace:configure.ac:690: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE_WIDER$])
+m4trace:configure.ac:690: -1- AH_OUTPUT([HAVE_LONG_DOUBLE_WIDER], [/* Define to 1 if the type `long double\' works and has more range or precision
than `double\'. */
@%:@undef HAVE_LONG_DOUBLE_WIDER])
-m4trace:configure.in:669: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE])
-m4trace:configure.in:669: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE$])
-m4trace:configure.in:669: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if the type `long double\' works and has more range or precision
+m4trace:configure.ac:690: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE])
+m4trace:configure.ac:690: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE$])
+m4trace:configure.ac:690: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if the type `long double\' works and has more range or precision
than `double\'. */
@%:@undef HAVE_LONG_DOUBLE])
-m4trace:configure.in:670: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES])
-m4trace:configure.in:670: -1- m4_pattern_allow([^PROTOTYPES$])
-m4trace:configure.in:670: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */
+m4trace:configure.ac:691: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES])
+m4trace:configure.ac:691: -1- m4_pattern_allow([^PROTOTYPES$])
+m4trace:configure.ac:691: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */
@%:@undef PROTOTYPES])
-m4trace:configure.in:670: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES])
-m4trace:configure.in:670: -1- m4_pattern_allow([^__PROTOTYPES$])
-m4trace:configure.in:670: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */
+m4trace:configure.ac:691: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES])
+m4trace:configure.ac:691: -1- m4_pattern_allow([^__PROTOTYPES$])
+m4trace:configure.ac:691: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */
@%:@undef __PROTOTYPES])
-m4trace:configure.in:671: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc. */
+m4trace:configure.ac:692: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc. */
#ifndef __CHAR_UNSIGNED__
# undef __CHAR_UNSIGNED__
#endif])
-m4trace:configure.in:671: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
-m4trace:configure.in:671: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
-m4trace:configure.in:672: -1- AC_DEFINE_TRACE_LITERAL([volatile])
-m4trace:configure.in:672: -1- m4_pattern_allow([^volatile$])
-m4trace:configure.in:672: -1- AH_OUTPUT([volatile], [/* Define to empty if the keyword `volatile\' does not work. Warning: valid
+m4trace:configure.ac:692: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
+m4trace:configure.ac:692: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
+m4trace:configure.ac:693: -1- AC_DEFINE_TRACE_LITERAL([volatile])
+m4trace:configure.ac:693: -1- m4_pattern_allow([^volatile$])
+m4trace:configure.ac:693: -1- AH_OUTPUT([volatile], [/* Define to empty if the keyword `volatile\' does not work. Warning: valid
code using `volatile\' can become incorrect without. Disable with care. */
@%:@undef volatile])
-m4trace:configure.in:673: -1- AH_OUTPUT([restrict], [/* Define to the equivalent of the C99 \'restrict\' keyword, or to
+m4trace:configure.ac:694: -1- AH_OUTPUT([restrict], [/* Define to the equivalent of the C99 \'restrict\' keyword, or to
nothing if this is not supported. Do not define if restrict is
supported directly. */
#undef restrict
@@ -768,2005 +784,2006 @@ m4trace:configure.in:673: -1- AH_OUTPUT([restrict], [/* Define to the equivalent
# define _Restrict
# define __restrict__
#endif])
-m4trace:configure.in:673: -1- AC_DEFINE_TRACE_LITERAL([restrict])
-m4trace:configure.in:673: -1- m4_pattern_allow([^restrict$])
-m4trace:configure.in:673: -1- AC_DEFINE_TRACE_LITERAL([restrict])
-m4trace:configure.in:673: -1- m4_pattern_allow([^restrict$])
-m4trace:configure.in:676: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
-m4trace:configure.in:676: -1- AC_SUBST([MKINSTALLDIRS])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([MKINSTALLDIRS])
-m4trace:configure.in:676: -1- m4_pattern_allow([^MKINSTALLDIRS$])
-m4trace:configure.in:676: -1- AM_NLS
-m4trace:configure.in:676: -1- AC_SUBST([USE_NLS])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([USE_NLS])
-m4trace:configure.in:676: -1- m4_pattern_allow([^USE_NLS$])
-m4trace:configure.in:676: -1- AC_SUBST([MSGFMT])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([MSGFMT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^MSGFMT$])
-m4trace:configure.in:676: -1- AC_SUBST([GMSGFMT])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([GMSGFMT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^GMSGFMT$])
-m4trace:configure.in:676: -1- AC_SUBST([XGETTEXT])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([XGETTEXT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^XGETTEXT$])
-m4trace:configure.in:676: -1- AC_SUBST([MSGMERGE])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([MSGMERGE])
-m4trace:configure.in:676: -1- m4_pattern_allow([^MSGMERGE$])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/status.m4:1028: AC_OUTPUT_COMMANDS is expanded from...
+m4trace:configure.ac:694: -1- AC_DEFINE_TRACE_LITERAL([restrict])
+m4trace:configure.ac:694: -1- m4_pattern_allow([^restrict$])
+m4trace:configure.ac:694: -1- AC_DEFINE_TRACE_LITERAL([restrict])
+m4trace:configure.ac:694: -1- m4_pattern_allow([^restrict$])
+m4trace:configure.ac:697: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+m4trace:configure.ac:697: -1- AC_SUBST([MKINSTALLDIRS])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([MKINSTALLDIRS])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^MKINSTALLDIRS$])
+m4trace:configure.ac:697: -1- AM_NLS
+m4trace:configure.ac:697: -1- AC_SUBST([USE_NLS])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([USE_NLS])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^USE_NLS$])
+m4trace:configure.ac:697: -1- AC_SUBST([MSGFMT])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([MSGFMT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^MSGFMT$])
+m4trace:configure.ac:697: -1- AC_SUBST([GMSGFMT])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([GMSGFMT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^GMSGFMT$])
+m4trace:configure.ac:697: -1- AC_SUBST([XGETTEXT])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([XGETTEXT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^XGETTEXT$])
+m4trace:configure.ac:697: -1- AC_SUBST([MSGMERGE])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([MSGMERGE])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^MSGMERGE$])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/status.m4:1026: AC_OUTPUT_COMMANDS is expanded from...
aclocal.m4:3707: AM_PO_SUBDIRS is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.in:676: -1- m4_pattern_allow([^off_t$])
-m4trace:configure.in:676: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
@%:@undef off_t])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.in:676: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.in:676: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
@%:@undef size_t])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
@%:@undef HAVE_ALLOCA_H])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_ALLOCA$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
@%:@undef HAVE_ALLOCA])
-m4trace:configure.in:676: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.in:676: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([ALLOCA])
-m4trace:configure.in:676: -1- m4_pattern_allow([^ALLOCA$])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.in:676: -1- m4_pattern_allow([^C_ALLOCA$])
-m4trace:configure.in:676: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+m4trace:configure.ac:697: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.ac:697: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([ALLOCA])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
@%:@undef C_ALLOCA])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.in:676: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
-m4trace:configure.in:676: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c\' support on those systems.
*/
@%:@undef CRAY_STACKSEG_END])
-m4trace:configure.in:676: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+m4trace:configure.ac:697: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
@%:@undef STACK_DIRECTION])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.in:676: -1- m4_pattern_allow([^STACK_DIRECTION$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
@%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_MMAP$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_MMAP$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
@%:@undef HAVE_MMAP])
-m4trace:configure.in:676: -1- AC_SUBST([GLIBC21])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([GLIBC21])
-m4trace:configure.in:676: -1- m4_pattern_allow([^GLIBC21$])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- AC_SUBST([GLIBC21])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([GLIBC21])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^GLIBC21$])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2613: gt_INTDIV0 is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
-m4trace:configure.in:676: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$])
-m4trace:configure.in:676: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */
@%:@undef INTDIV0_RAISES_SIGFPE])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2715: jm_AC_HEADER_INTTYPES_H is expanded from...
aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if <inttypes.h> exists, doesn\'t clash with <sys/types.h>, and
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if <inttypes.h> exists, doesn\'t clash with <sys/types.h>, and
declares uintmax_t. */
@%:@undef HAVE_INTTYPES_H_WITH_UINTMAX])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:3986: jm_AC_HEADER_STDINT_H is expanded from...
aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if <stdint.h> exists, doesn\'t clash with <sys/types.h>, and declares
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if <stdint.h> exists, doesn\'t clash with <sys/types.h>, and declares
uintmax_t. */
@%:@undef HAVE_STDINT_H_WITH_UINTMAX])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:4043: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from...
aclocal.m4:4016: jm_AC_TYPE_UINTMAX_T is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */
@%:@undef HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
-m4trace:configure.in:676: -1- m4_pattern_allow([^uintmax_t$])
-m4trace:configure.in:676: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if <stdint.h> and
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^uintmax_t$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if <stdint.h> and
<inttypes.h> don\'t define. */
@%:@undef uintmax_t])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_UINTMAX_T$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in <stdint.h> or <inttypes.h>. */
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_UINTMAX_T$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in <stdint.h> or <inttypes.h>. */
@%:@undef HAVE_UINTMAX_T])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2688: gt_HEADER_INTTYPES_H is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if <inttypes.h> exists and doesn\'t clash with <sys/types.h>. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if <inttypes.h> exists and doesn\'t clash with <sys/types.h>. */
@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2743: gt_INTTYPES_PRI is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
-m4trace:configure.in:676: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$])
-m4trace:configure.in:676: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
@%:@undef PRI_MACROS_BROKEN])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
@%:@undef HAVE_ARGZ_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
@%:@undef HAVE_LIMITS_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
@%:@undef HAVE_LOCALE_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the <nl_types.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the <nl_types.h> header file. */
@%:@undef HAVE_NL_TYPES_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
@%:@undef HAVE_MALLOC_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
@%:@undef HAVE_STDDEF_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */
@%:@undef HAVE_FEOF_UNLOCKED])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */
@%:@undef HAVE_FGETS_UNLOCKED])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */
@%:@undef HAVE_GETC_UNLOCKED])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
@%:@undef HAVE_GETCWD])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */
@%:@undef HAVE_GETEGID])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */
@%:@undef HAVE_GETEUID])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */
@%:@undef HAVE_GETGID])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */
@%:@undef HAVE_GETUID])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
@%:@undef HAVE_MEMPCPY])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
@%:@undef HAVE_MUNMAP])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
@%:@undef HAVE_PUTENV])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
@%:@undef HAVE_SETENV])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
@%:@undef HAVE_SETLOCALE])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */
@%:@undef HAVE_LOCALECONV])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
@%:@undef HAVE_STPCPY])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
@%:@undef HAVE_STRCASECMP])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
@%:@undef HAVE_STRDUP])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
@%:@undef HAVE_STRTOUL])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */
@%:@undef HAVE_TSEARCH])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
@%:@undef HAVE___ARGZ_COUNT])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
@%:@undef HAVE___ARGZ_STRINGIFY])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
@%:@undef HAVE___ARGZ_NEXT])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */
@%:@undef HAVE___FSETLOCKING])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2521: AM_ICONV_LINK is expanded from...
aclocal.m4:2576: AM_ICONV is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2521: AM_ICONV_LINK is expanded from...
aclocal.m4:2576: AM_ICONV is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_ICONV$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_ICONV$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */
@%:@undef HAVE_ICONV])
-m4trace:configure.in:676: -1- AC_SUBST([LIBICONV])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([LIBICONV])
-m4trace:configure.in:676: -1- m4_pattern_allow([^LIBICONV$])
-m4trace:configure.in:676: -1- AC_SUBST([LTLIBICONV])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([LTLIBICONV])
-m4trace:configure.in:676: -1- m4_pattern_allow([^LTLIBICONV$])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:697: -1- AC_SUBST([LIBICONV])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([LIBICONV])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^LIBICONV$])
+m4trace:configure.ac:697: -1- AC_SUBST([LTLIBICONV])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([LTLIBICONV])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^LTLIBICONV$])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:2576: AM_ICONV is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
-m4trace:configure.in:676: -1- m4_pattern_allow([^ICONV_CONST$])
-m4trace:configure.in:676: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^ICONV_CONST$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */
@%:@undef ICONV_CONST])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2040: AM_LANGINFO_CODESET is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
@%:@undef HAVE_LANGINFO_CODESET])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2810: AM_LC_MESSAGES is expanded from...
aclocal.m4:2399: AM_INTL_SUBDIR is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your <locale.h> file defines LC_MESSAGES. */
@%:@undef HAVE_LC_MESSAGES])
-m4trace:configure.in:676: -1- AC_SUBST([INTLBISON])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([INTLBISON])
-m4trace:configure.in:676: -1- m4_pattern_allow([^INTLBISON$])
-m4trace:configure.in:676: -1- AM_NLS
-m4trace:configure.in:676: -1- AC_SUBST([USE_NLS])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([USE_NLS])
-m4trace:configure.in:676: -1- m4_pattern_allow([^USE_NLS$])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:697: -1- AC_SUBST([INTLBISON])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([INTLBISON])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^INTLBISON$])
+m4trace:configure.ac:697: -1- AM_NLS
+m4trace:configure.ac:697: -1- AC_SUBST([USE_NLS])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([USE_NLS])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^USE_NLS$])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:2111: AM_GNU_GETTEXT is expanded from...
-configure.in:676: the top level])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
-m4trace:configure.in:676: -1- m4_pattern_allow([^ENABLE_NLS$])
-m4trace:configure.in:676: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
+configure.ac:697: the top level])
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^ENABLE_NLS$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native
language is requested. */
@%:@undef ENABLE_NLS])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_GETTEXT$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_GETTEXT$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */
@%:@undef HAVE_GETTEXT])
-m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
-m4trace:configure.in:676: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
+m4trace:configure.ac:697: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^HAVE_DCGETTEXT$])
+m4trace:configure.ac:697: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
@%:@undef HAVE_DCGETTEXT])
-m4trace:configure.in:676: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([BUILD_INCLUDED_LIBINTL])
-m4trace:configure.in:676: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$])
-m4trace:configure.in:676: -1- AC_SUBST([USE_INCLUDED_LIBINTL])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([USE_INCLUDED_LIBINTL])
-m4trace:configure.in:676: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$])
-m4trace:configure.in:676: -1- AC_SUBST([CATOBJEXT])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([CATOBJEXT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^CATOBJEXT$])
-m4trace:configure.in:676: -1- AC_SUBST([DATADIRNAME])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([DATADIRNAME])
-m4trace:configure.in:676: -1- m4_pattern_allow([^DATADIRNAME$])
-m4trace:configure.in:676: -1- AC_SUBST([INSTOBJEXT])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([INSTOBJEXT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^INSTOBJEXT$])
-m4trace:configure.in:676: -1- AC_SUBST([GENCAT])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([GENCAT])
-m4trace:configure.in:676: -1- m4_pattern_allow([^GENCAT$])
-m4trace:configure.in:676: -1- AC_SUBST([INTLOBJS])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([INTLOBJS])
-m4trace:configure.in:676: -1- m4_pattern_allow([^INTLOBJS$])
-m4trace:configure.in:676: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([INTL_LIBTOOL_SUFFIX_PREFIX])
-m4trace:configure.in:676: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$])
-m4trace:configure.in:676: -1- AC_SUBST([INTLLIBS])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([INTLLIBS])
-m4trace:configure.in:676: -1- m4_pattern_allow([^INTLLIBS$])
-m4trace:configure.in:676: -1- AC_SUBST([LIBINTL])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([LIBINTL])
-m4trace:configure.in:676: -1- m4_pattern_allow([^LIBINTL$])
-m4trace:configure.in:676: -1- AC_SUBST([LTLIBINTL])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([LTLIBINTL])
-m4trace:configure.in:676: -1- m4_pattern_allow([^LTLIBINTL$])
-m4trace:configure.in:676: -1- AC_SUBST([POSUB])
-m4trace:configure.in:676: -1- AC_SUBST_TRACE([POSUB])
-m4trace:configure.in:676: -1- m4_pattern_allow([^POSUB$])
-m4trace:configure.in:679: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
+m4trace:configure.ac:697: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([BUILD_INCLUDED_LIBINTL])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$])
+m4trace:configure.ac:697: -1- AC_SUBST([USE_INCLUDED_LIBINTL])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([USE_INCLUDED_LIBINTL])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$])
+m4trace:configure.ac:697: -1- AC_SUBST([CATOBJEXT])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([CATOBJEXT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^CATOBJEXT$])
+m4trace:configure.ac:697: -1- AC_SUBST([DATADIRNAME])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([DATADIRNAME])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^DATADIRNAME$])
+m4trace:configure.ac:697: -1- AC_SUBST([INSTOBJEXT])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([INSTOBJEXT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^INSTOBJEXT$])
+m4trace:configure.ac:697: -1- AC_SUBST([GENCAT])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([GENCAT])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^GENCAT$])
+m4trace:configure.ac:697: -1- AC_SUBST([INTLOBJS])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([INTLOBJS])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^INTLOBJS$])
+m4trace:configure.ac:697: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([INTL_LIBTOOL_SUFFIX_PREFIX])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$])
+m4trace:configure.ac:697: -1- AC_SUBST([INTLLIBS])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([INTLLIBS])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^INTLLIBS$])
+m4trace:configure.ac:697: -1- AC_SUBST([LIBINTL])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([LIBINTL])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^LIBINTL$])
+m4trace:configure.ac:697: -1- AC_SUBST([LTLIBINTL])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([LTLIBINTL])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^LTLIBINTL$])
+m4trace:configure.ac:697: -1- AC_SUBST([POSUB])
+m4trace:configure.ac:697: -1- AC_SUBST_TRACE([POSUB])
+m4trace:configure.ac:697: -1- m4_pattern_allow([^POSUB$])
+m4trace:configure.ac:700: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
*/
@%:@undef HAVE_DIRENT_H])
-m4trace:configure.in:679: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
+m4trace:configure.ac:700: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
*/
@%:@undef HAVE_SYS_NDIR_H])
-m4trace:configure.in:679: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
+m4trace:configure.ac:700: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
*/
@%:@undef HAVE_SYS_DIR_H])
-m4trace:configure.in:679: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
+m4trace:configure.ac:700: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
@%:@undef HAVE_NDIR_H])
-m4trace:configure.in:680: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
-m4trace:configure.in:680: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
-m4trace:configure.in:680: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+m4trace:configure.ac:701: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
+m4trace:configure.ac:701: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
+m4trace:configure.ac:701: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
@%:@undef TIME_WITH_SYS_TIME])
-m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.ac:703: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.in:682: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
-m4trace:configure.in:682: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:703: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H])
+m4trace:configure.ac:703: -1- m4_pattern_allow([^HAVE_INTTYPES_H$])
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
@%:@undef HAVE_STDARG_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the <varargs.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the <varargs.h> header file. */
@%:@undef HAVE_VARARGS_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the <limits.h> header file. */
@%:@undef HAVE_LIMITS_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
@%:@undef HAVE_MEMORY_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
@%:@undef HAVE_LOCALE_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the <termcap.h> header file. */
@%:@undef HAVE_TERMCAP_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
@%:@undef HAVE_TERMIO_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the <termios.h> header file. */
@%:@undef HAVE_TERMIOS_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
@%:@undef HAVE_DLFCN_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if you have the <stdbool.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if you have the <stdbool.h> header file. */
@%:@undef HAVE_STDBOOL_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
@%:@undef HAVE_STDDEF_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
@%:@undef HAVE_NETDB_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
@%:@undef HAVE_PWD_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
@%:@undef HAVE_GRP_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the <regex.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the <regex.h> header file. */
@%:@undef HAVE_REGEX_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
@%:@undef HAVE_SYSLOG_H])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the <ulimit.h> header file. */
+m4trace:configure.ac:705: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the <ulimit.h> header file. */
@%:@undef HAVE_ULIMIT_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the <sys/pte.h> header file. */
@%:@undef HAVE_SYS_PTE_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the <sys/stream.h> header file. */
@%:@undef HAVE_SYS_STREAM_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
@%:@undef HAVE_SYS_SELECT_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the <sys/file.h> header file. */
@%:@undef HAVE_SYS_FILE_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
@%:@undef HAVE_SYS_RESOURCE_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
@%:@undef HAVE_SYS_SOCKET_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the <sys/times.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the <sys/times.h> header file. */
@%:@undef HAVE_SYS_TIMES_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.in:688: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the <sys/wait.h> header file. */
+m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the <sys/wait.h> header file. */
@%:@undef HAVE_SYS_WAIT_H])
-m4trace:configure.in:691: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
+m4trace:configure.ac:712: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
@%:@undef HAVE_NETINET_IN_H])
-m4trace:configure.in:691: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
+m4trace:configure.ac:712: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
@%:@undef HAVE_ARPA_INET_H])
-m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.in:702: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
-m4trace:configure.in:702: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+m4trace:configure.ac:723: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.ac:723: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.ac:723: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
@%:@undef HAVE_ALLOCA_H])
-m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.in:702: -1- m4_pattern_allow([^HAVE_ALLOCA$])
-m4trace:configure.in:702: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+m4trace:configure.ac:723: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.ac:723: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.ac:723: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
@%:@undef HAVE_ALLOCA])
-m4trace:configure.in:702: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.in:702: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
-m4trace:configure.in:702: -1- AC_SUBST_TRACE([ALLOCA])
-m4trace:configure.in:702: -1- m4_pattern_allow([^ALLOCA$])
-m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.in:702: -1- m4_pattern_allow([^C_ALLOCA$])
-m4trace:configure.in:702: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+m4trace:configure.ac:723: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.ac:723: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
+m4trace:configure.ac:723: -1- AC_SUBST_TRACE([ALLOCA])
+m4trace:configure.ac:723: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.ac:723: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.ac:723: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.ac:723: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
@%:@undef C_ALLOCA])
-m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.in:702: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
-m4trace:configure.in:702: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+m4trace:configure.ac:723: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.ac:723: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.ac:723: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c\' support on those systems.
*/
@%:@undef CRAY_STACKSEG_END])
-m4trace:configure.in:702: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+m4trace:configure.ac:723: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
@%:@undef STACK_DIRECTION])
-m4trace:configure.in:702: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.in:702: -1- m4_pattern_allow([^STACK_DIRECTION$])
-m4trace:configure.in:703: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID])
-m4trace:configure.in:703: -1- m4_pattern_allow([^GETPGRP_VOID$])
-m4trace:configure.in:703: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */
+m4trace:configure.ac:723: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.ac:723: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.ac:724: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID])
+m4trace:configure.ac:724: -1- m4_pattern_allow([^GETPGRP_VOID$])
+m4trace:configure.ac:724: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */
@%:@undef GETPGRP_VOID])
-m4trace:configure.in:704: -1- _m4_warn([obsolete], [The macro `AC_FUNC_SETVBUF_REVERSED' is obsolete. Remove it and all references to SETVBUF_REVERSED.], [../../lib/autoconf/functions.m4:1714: AC_FUNC_SETVBUF_REVERSED is expanded from...
-configure.in:704: the top level])
-m4trace:configure.in:705: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
+m4trace:configure.ac:725: -1- _m4_warn([obsolete], [The macro `AC_FUNC_SETVBUF_REVERSED' is obsolete. Remove it and all references to SETVBUF_REVERSED.], [../../lib/autoconf/functions.m4:1710: AC_FUNC_SETVBUF_REVERSED is expanded from...
+configure.ac:725: the top level])
+m4trace:configure.ac:726: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
@%:@undef HAVE_VPRINTF])
-m4trace:configure.in:705: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.in:705: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.in:705: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
-m4trace:configure.in:705: -1- m4_pattern_allow([^HAVE_DOPRNT$])
-m4trace:configure.in:705: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
+m4trace:configure.ac:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
+m4trace:configure.ac:726: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.ac:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
+m4trace:configure.ac:726: -1- m4_pattern_allow([^HAVE_DOPRNT$])
+m4trace:configure.ac:726: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
@%:@undef HAVE_DOPRNT])
-m4trace:configure.in:706: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
-m4trace:configure.in:706: -1- m4_pattern_allow([^HAVE_STRCOLL$])
-m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
+m4trace:configure.ac:727: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL])
+m4trace:configure.ac:727: -1- m4_pattern_allow([^HAVE_STRCOLL$])
+m4trace:configure.ac:727: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined.
*/
@%:@undef HAVE_STRCOLL])
-m4trace:configure.in:727: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.in:727: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.in:732: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS vprint.$ac_objext"])
-m4trace:configure.in:732: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:732: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:732: -1- AC_LIBSOURCE([vprint.c])
-m4trace:configure.in:736: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:738: AC_TYPE_SIGNAL is expanded from...
-configure.in:736: the top level])
-m4trace:configure.in:736: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.in:736: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.in:736: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
+m4trace:configure.ac:748: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
+m4trace:configure.ac:748: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.ac:753: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS vprint.$ac_objext"])
+m4trace:configure.ac:753: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:753: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:753: -1- AC_LIBSOURCE([vprint.c])
+m4trace:configure.ac:757: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/types.m4:746: AC_TYPE_SIGNAL is expanded from...
+configure.ac:757: the top level])
+m4trace:configure.ac:757: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
+m4trace:configure.ac:757: -1- m4_pattern_allow([^RETSIGTYPE$])
+m4trace:configure.ac:757: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
@%:@undef RETSIGTYPE])
-m4trace:configure.in:739: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE])
-m4trace:configure.in:739: -2- m4_pattern_allow([^HAVE_SETOSTYPE$])
-m4trace:configure.in:740: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3])
-m4trace:configure.in:740: -2- m4_pattern_allow([^HAVE_WAIT3$])
-m4trace:configure.in:743: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO])
-m4trace:configure.in:743: -2- m4_pattern_allow([^HAVE_MKFIFO$])
-m4trace:configure.in:743: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING])
-m4trace:configure.in:743: -2- m4_pattern_allow([^MKFIFO_MISSING$])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */
+m4trace:configure.ac:760: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE])
+m4trace:configure.ac:760: -2- m4_pattern_allow([^HAVE_SETOSTYPE$])
+m4trace:configure.ac:761: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3])
+m4trace:configure.ac:761: -2- m4_pattern_allow([^HAVE_WAIT3$])
+m4trace:configure.ac:764: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO])
+m4trace:configure.ac:764: -2- m4_pattern_allow([^HAVE_MKFIFO$])
+m4trace:configure.ac:764: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING])
+m4trace:configure.ac:764: -2- m4_pattern_allow([^MKFIFO_MISSING$])
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */
@%:@undef HAVE_DUP2])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */
@%:@undef HAVE_EACCESS])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */
@%:@undef HAVE_FCNTL])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */
@%:@undef HAVE_GETDTABLESIZE])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */
@%:@undef HAVE_GETGROUPS])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */
@%:@undef HAVE_GETHOSTNAME])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
@%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */
@%:@undef HAVE_GETPEERNAME])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
@%:@undef HAVE_GETRLIMIT])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */
@%:@undef HAVE_GETRUSAGE])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
@%:@undef HAVE_GETTIMEOFDAY])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */
@%:@undef HAVE_KILL])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */
@%:@undef HAVE_KILLPG])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */
@%:@undef HAVE_LSTAT])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */
@%:@undef HAVE_READLINK])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */
@%:@undef HAVE_SBRK])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
@%:@undef HAVE_SELECT])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */
@%:@undef HAVE_SETDTABLESIZE])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */
@%:@undef HAVE_SETITIMER])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
@%:@undef HAVE_TCGETPGRP])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */
@%:@undef HAVE_UNAME])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */
@%:@undef HAVE_ULIMIT])
-m4trace:configure.in:746: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */
+m4trace:configure.ac:767: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */
@%:@undef HAVE_WAITPID])
-m4trace:configure.in:750: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */
+m4trace:configure.ac:771: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */
@%:@undef HAVE_RENAME])
-m4trace:configure.in:750: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RENAME])
-m4trace:configure.in:750: -1- m4_pattern_allow([^HAVE_RENAME$])
-m4trace:configure.in:750: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS rename.$ac_objext"])
-m4trace:configure.in:750: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:750: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:750: -1- AC_LIBSOURCE([rename.c])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */
+m4trace:configure.ac:771: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RENAME])
+m4trace:configure.ac:771: -1- m4_pattern_allow([^HAVE_RENAME$])
+m4trace:configure.ac:771: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS rename.$ac_objext"])
+m4trace:configure.ac:771: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:771: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:771: -1- AC_LIBSOURCE([rename.c])
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */
@%:@undef HAVE_BCOPY])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */
@%:@undef HAVE_BZERO])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */
@%:@undef HAVE_CONFSTR])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_FACCESSAT], [/* Define to 1 if you have the `faccessat\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_FACCESSAT], [/* Define to 1 if you have the `faccessat\' function. */
@%:@undef HAVE_FACCESSAT])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */
@%:@undef HAVE_FNMATCH])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */
@%:@undef HAVE_GETADDRINFO])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */
@%:@undef HAVE_GETHOSTBYNAME])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */
@%:@undef HAVE_GETSERVBYNAME])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */
@%:@undef HAVE_GETSERVENT])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */
@%:@undef HAVE_INET_ATON])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_IMAXDIV], [/* Define to 1 if you have the `imaxdiv\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_IMAXDIV], [/* Define to 1 if you have the `imaxdiv\' function. */
@%:@undef HAVE_IMAXDIV])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
@%:@undef HAVE_MEMMOVE])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */
@%:@undef HAVE_PATHCONF])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */
@%:@undef HAVE_PUTENV])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */
@%:@undef HAVE_RAISE])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */
@%:@undef HAVE_REGCOMP])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */
@%:@undef HAVE_REGEXEC])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */
@%:@undef HAVE_SETENV])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */
@%:@undef HAVE_SETLINEBUF])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */
@%:@undef HAVE_SETLOCALE])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */
@%:@undef HAVE_SETVBUF])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */
@%:@undef HAVE_SIGINTERRUPT])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
@%:@undef HAVE_STRCHR])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
@%:@undef HAVE_SYSCONF])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
@%:@undef HAVE_SYSLOG])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */
@%:@undef HAVE_TCGETATTR])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */
@%:@undef HAVE_TIMES])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */
@%:@undef HAVE_TTYNAME])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */
@%:@undef HAVE_TZSET])
-m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */
+m4trace:configure.ac:774: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */
@%:@undef HAVE_UNSETENV])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */
+m4trace:configure.ac:780: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */
@%:@undef HAVE_VASPRINTF])
-m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */
+m4trace:configure.ac:780: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */
@%:@undef HAVE_ASPRINTF])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */
+m4trace:configure.ac:781: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */
@%:@undef HAVE_ISASCII])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */
+m4trace:configure.ac:781: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */
@%:@undef HAVE_ISBLANK])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */
+m4trace:configure.ac:781: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */
@%:@undef HAVE_ISGRAPH])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */
+m4trace:configure.ac:781: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */
@%:@undef HAVE_ISPRINT])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */
+m4trace:configure.ac:781: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */
@%:@undef HAVE_ISSPACE])
-m4trace:configure.in:760: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */
+m4trace:configure.ac:781: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */
@%:@undef HAVE_ISXDIGIT])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */
+m4trace:configure.ac:782: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */
@%:@undef HAVE_GETPWENT])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */
+m4trace:configure.ac:782: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */
@%:@undef HAVE_GETPWNAM])
-m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */
+m4trace:configure.ac:782: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */
@%:@undef HAVE_GETPWUID])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
+m4trace:configure.ac:783: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */
@%:@undef HAVE_GETCWD])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_GETCWD$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
-m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([getcwd.c])
-m4trace:configure.in:762: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
+m4trace:configure.ac:783: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD])
+m4trace:configure.ac:783: -1- m4_pattern_allow([^HAVE_GETCWD$])
+m4trace:configure.ac:783: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
+m4trace:configure.ac:783: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:783: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:783: -1- AC_LIBSOURCE([getcwd.c])
+m4trace:configure.ac:783: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
@%:@undef HAVE_MEMSET])
-m4trace:configure.in:762: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMSET])
-m4trace:configure.in:762: -1- m4_pattern_allow([^HAVE_MEMSET$])
-m4trace:configure.in:762: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS memset.$ac_objext"])
-m4trace:configure.in:762: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:762: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:762: -1- AC_LIBSOURCE([memset.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
+m4trace:configure.ac:783: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMSET])
+m4trace:configure.ac:783: -1- m4_pattern_allow([^HAVE_MEMSET$])
+m4trace:configure.ac:783: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS memset.$ac_objext"])
+m4trace:configure.ac:783: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:783: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:783: -1- AC_LIBSOURCE([memset.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
@%:@undef HAVE_STRCASECMP])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasecmp.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strcasecmp.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRCASESTR], [/* Define to 1 if you have the `strcasestr\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRCASECMP$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasecmp.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strcasecmp.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRCASESTR], [/* Define to 1 if you have the `strcasestr\' function. */
@%:@undef HAVE_STRCASESTR])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASESTR])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRCASESTR$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasestr.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strcasestr.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASESTR])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRCASESTR$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strcasestr.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strcasestr.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
@%:@undef HAVE_STRERROR])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRERROR$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strerror.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strerror.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRERROR$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strerror.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strerror.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */
@%:@undef HAVE_STRFTIME])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRFTIME$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strftime.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strftime.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRFTIME$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strftime.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strftime.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */
@%:@undef HAVE_STRNLEN])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNLEN])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRNLEN$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strnlen.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strnlen.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNLEN])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRNLEN$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strnlen.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strnlen.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */
@%:@undef HAVE_STRPBRK])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRPBRK])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRPBRK$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strpbrk.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strpbrk.c])
-m4trace:configure.in:763: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRPBRK])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRPBRK$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strpbrk.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strpbrk.c])
+m4trace:configure.ac:784: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
@%:@undef HAVE_STRSTR])
-m4trace:configure.in:763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSTR])
-m4trace:configure.in:763: -1- m4_pattern_allow([^HAVE_STRSTR$])
-m4trace:configure.in:763: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strstr.$ac_objext"])
-m4trace:configure.in:763: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:763: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:763: -1- AC_LIBSOURCE([strstr.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
+m4trace:configure.ac:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSTR])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^HAVE_STRSTR$])
+m4trace:configure.ac:784: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strstr.$ac_objext"])
+m4trace:configure.ac:784: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:784: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:784: -1- AC_LIBSOURCE([strstr.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
@%:@undef HAVE_STRTOD])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOD])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOD$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtod.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtod.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOD])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOD$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtod.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtod.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */
@%:@undef HAVE_STRTOL])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOL])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOL$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtol.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtol.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOL])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOL$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtol.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtol.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
@%:@undef HAVE_STRTOUL])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUL])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOUL$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoul.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtoul.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUL])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOUL$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoul.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtoul.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
@%:@undef HAVE_STRTOLL])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOLL$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoll.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtoll.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOLL$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoll.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtoll.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
@%:@undef HAVE_STRTOULL])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOULL])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOULL$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoull.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtoull.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOULL])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOULL$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoull.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtoull.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */
@%:@undef HAVE_STRTOIMAX])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOIMAX])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOIMAX$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoimax.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtoimax.c])
-m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOIMAX])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOIMAX$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoimax.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtoimax.c])
+m4trace:configure.ac:785: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */
@%:@undef HAVE_STRTOUMAX])
-m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUMAX])
-m4trace:configure.in:764: -1- m4_pattern_allow([^HAVE_STRTOUMAX$])
-m4trace:configure.in:764: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoumax.$ac_objext"])
-m4trace:configure.in:764: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:764: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:764: -1- AC_LIBSOURCE([strtoumax.c])
-m4trace:configure.in:765: -1- AH_OUTPUT([HAVE_DPRINTF], [/* Define to 1 if you have the `dprintf\' function. */
+m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOUMAX])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^HAVE_STRTOUMAX$])
+m4trace:configure.ac:785: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strtoumax.$ac_objext"])
+m4trace:configure.ac:785: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:785: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:785: -1- AC_LIBSOURCE([strtoumax.c])
+m4trace:configure.ac:786: -1- AH_OUTPUT([HAVE_DPRINTF], [/* Define to 1 if you have the `dprintf\' function. */
@%:@undef HAVE_DPRINTF])
-m4trace:configure.in:765: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DPRINTF])
-m4trace:configure.in:765: -1- m4_pattern_allow([^HAVE_DPRINTF$])
-m4trace:configure.in:765: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS dprintf.$ac_objext"])
-m4trace:configure.in:765: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:765: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:765: -1- AC_LIBSOURCE([dprintf.c])
-m4trace:configure.in:766: -1- AH_OUTPUT([HAVE_STRCHRNUL], [/* Define to 1 if you have the `strchrnul\' function. */
+m4trace:configure.ac:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DPRINTF])
+m4trace:configure.ac:786: -1- m4_pattern_allow([^HAVE_DPRINTF$])
+m4trace:configure.ac:786: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS dprintf.$ac_objext"])
+m4trace:configure.ac:786: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:786: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:786: -1- AC_LIBSOURCE([dprintf.c])
+m4trace:configure.ac:787: -1- AH_OUTPUT([HAVE_STRCHRNUL], [/* Define to 1 if you have the `strchrnul\' function. */
@%:@undef HAVE_STRCHRNUL])
-m4trace:configure.in:766: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCHRNUL])
-m4trace:configure.in:766: -1- m4_pattern_allow([^HAVE_STRCHRNUL$])
-m4trace:configure.in:766: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strchrnul.$ac_objext"])
-m4trace:configure.in:766: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:766: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:766: -1- AC_LIBSOURCE([strchrnul.c])
-m4trace:configure.in:768: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_AUDIT_USER_TTY])
-m4trace:configure.in:768: -1- m4_pattern_allow([^HAVE_DECL_AUDIT_USER_TTY$])
-m4trace:configure.in:768: -1- AH_OUTPUT([HAVE_DECL_AUDIT_USER_TTY], [/* Define to 1 if you have the declaration of `AUDIT_USER_TTY\', and to 0 if
+m4trace:configure.ac:787: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCHRNUL])
+m4trace:configure.ac:787: -1- m4_pattern_allow([^HAVE_STRCHRNUL$])
+m4trace:configure.ac:787: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strchrnul.$ac_objext"])
+m4trace:configure.ac:787: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:787: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:787: -1- AC_LIBSOURCE([strchrnul.c])
+m4trace:configure.ac:788: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
+@%:@undef HAVE_STRDUP])
+m4trace:configure.ac:788: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP])
+m4trace:configure.ac:788: -1- m4_pattern_allow([^HAVE_STRDUP$])
+m4trace:configure.ac:788: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS strdup.$ac_objext"])
+m4trace:configure.ac:788: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:788: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:788: -1- AC_LIBSOURCE([strdup.c])
+m4trace:configure.ac:790: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_AUDIT_USER_TTY])
+m4trace:configure.ac:790: -1- m4_pattern_allow([^HAVE_DECL_AUDIT_USER_TTY$])
+m4trace:configure.ac:790: -1- AH_OUTPUT([HAVE_DECL_AUDIT_USER_TTY], [/* Define to 1 if you have the declaration of `AUDIT_USER_TTY\', and to 0 if
you don\'t. */
@%:@undef HAVE_DECL_AUDIT_USER_TTY])
-m4trace:configure.in:770: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
-m4trace:configure.in:770: -1- m4_pattern_allow([^HAVE_DECL_CONFSTR$])
-m4trace:configure.in:770: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you
+m4trace:configure.ac:792: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR])
+m4trace:configure.ac:792: -1- m4_pattern_allow([^HAVE_DECL_CONFSTR$])
+m4trace:configure.ac:792: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you
don\'t. */
@%:@undef HAVE_DECL_CONFSTR])
-m4trace:configure.in:771: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
-m4trace:configure.in:771: -1- m4_pattern_allow([^HAVE_DECL_PRINTF$])
-m4trace:configure.in:771: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t.
+m4trace:configure.ac:793: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF])
+m4trace:configure.ac:793: -1- m4_pattern_allow([^HAVE_DECL_PRINTF$])
+m4trace:configure.ac:793: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t.
*/
@%:@undef HAVE_DECL_PRINTF])
-m4trace:configure.in:772: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
-m4trace:configure.in:772: -1- m4_pattern_allow([^HAVE_DECL_SBRK$])
-m4trace:configure.in:772: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t.
+m4trace:configure.ac:794: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK])
+m4trace:configure.ac:794: -1- m4_pattern_allow([^HAVE_DECL_SBRK$])
+m4trace:configure.ac:794: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t.
*/
@%:@undef HAVE_DECL_SBRK])
-m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
-m4trace:configure.in:773: -1- m4_pattern_allow([^HAVE_DECL_SETREGID$])
-m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you
+m4trace:configure.ac:795: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID])
+m4trace:configure.ac:795: -1- m4_pattern_allow([^HAVE_DECL_SETREGID$])
+m4trace:configure.ac:795: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you
don\'t. */
@%:@undef HAVE_DECL_SETREGID])
-m4trace:configure.in:774: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
-m4trace:configure.in:774: -1- m4_pattern_allow([^HAVE_DECL_STRCPY$])
-m4trace:configure.in:774: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t.
+m4trace:configure.ac:796: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY])
+m4trace:configure.ac:796: -1- m4_pattern_allow([^HAVE_DECL_STRCPY$])
+m4trace:configure.ac:796: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t.
*/
@%:@undef HAVE_DECL_STRCPY])
-m4trace:configure.in:775: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:775: -1- m4_pattern_allow([^HAVE_DECL_STRSIGNAL$])
-m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you
+m4trace:configure.ac:797: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL])
+m4trace:configure.ac:797: -1- m4_pattern_allow([^HAVE_DECL_STRSIGNAL$])
+m4trace:configure.ac:797: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you
don\'t. */
@%:@undef HAVE_DECL_STRSIGNAL])
-m4trace:configure.in:778: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
-m4trace:configure.in:778: -1- m4_pattern_allow([^HAVE_DECL_STRTOLD$])
-m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you
+m4trace:configure.ac:800: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD])
+m4trace:configure.ac:800: -1- m4_pattern_allow([^HAVE_DECL_STRTOLD$])
+m4trace:configure.ac:800: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you
don\'t. */
@%:@undef HAVE_DECL_STRTOLD])
-m4trace:configure.in:778: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2881: AC_CHECK_DECLS is expanded from...
-configure.in:778: the top level])
-m4trace:configure.in:778: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN])
-m4trace:configure.in:778: -1- m4_pattern_allow([^STRTOLD_BROKEN$])
-m4trace:configure.in:794: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:800: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2880: AC_CHECK_DECLS is expanded from...
+configure.ac:800: the top level])
+m4trace:configure.ac:800: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN])
+m4trace:configure.ac:800: -1- m4_pattern_allow([^STRTOLD_BROKEN$])
+m4trace:configure.ac:816: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:794: the top level])
-m4trace:configure.in:795: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:816: the top level])
+m4trace:configure.ac:817: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:795: the top level])
-m4trace:configure.in:796: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:817: the top level])
+m4trace:configure.ac:818: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:796: the top level])
-m4trace:configure.in:797: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:818: the top level])
+m4trace:configure.ac:819: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:797: the top level])
-m4trace:configure.in:798: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:819: the top level])
+m4trace:configure.ac:820: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:798: the top level])
-m4trace:configure.in:799: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:820: the top level])
+m4trace:configure.ac:821: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:103: BASH_CHECK_DECL is expanded from...
-configure.in:799: the top level])
-m4trace:configure.in:801: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+configure.ac:821: the top level])
+m4trace:configure.ac:823: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:801: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:823: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:801: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */
+m4trace:configure.ac:823: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */
@%:@undef HAVE_ALARM])
-m4trace:configure.in:801: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"])
-m4trace:configure.in:801: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:801: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:801: -1- AC_LIBSOURCE([mktime.c])
-m4trace:configure.in:808: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
+m4trace:configure.ac:823: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"])
+m4trace:configure.ac:823: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:823: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:823: -1- AC_LIBSOURCE([mktime.c])
+m4trace:configure.ac:830: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the <argz.h> header file. */
@%:@undef HAVE_ARGZ_H])
-m4trace:configure.in:808: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
+m4trace:configure.ac:830: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
@%:@undef HAVE_ERRNO_H])
-m4trace:configure.in:808: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
+m4trace:configure.ac:830: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
@%:@undef HAVE_FCNTL_H])
-m4trace:configure.in:808: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+m4trace:configure.ac:830: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
@%:@undef HAVE_MALLOC_H])
-m4trace:configure.in:808: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
+m4trace:configure.ac:830: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
@%:@undef HAVE_STDIO_EXT_H])
-m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.ac:833: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
-m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:833: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
-m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+m4trace:configure.ac:833: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
+m4trace:configure.ac:833: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
@%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
-m4trace:configure.in:811: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
-m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.in:811: -1- m4_pattern_allow([^HAVE_MMAP$])
-m4trace:configure.in:811: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
+m4trace:configure.ac:833: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
+m4trace:configure.ac:833: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
+m4trace:configure.ac:833: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
+m4trace:configure.ac:833: -1- m4_pattern_allow([^HAVE_MMAP$])
+m4trace:configure.ac:833: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
@%:@undef HAVE_MMAP])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */
@%:@undef HAVE___ARGZ_COUNT])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */
@%:@undef HAVE___ARGZ_NEXT])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */
@%:@undef HAVE___ARGZ_STRINGIFY])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */
@%:@undef HAVE_DCGETTEXT])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */
@%:@undef HAVE_MEMPCPY])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */
@%:@undef HAVE_MUNMAP])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */
@%:@undef HAVE_STPCPY])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
+m4trace:configure.ac:834: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */
@%:@undef HAVE_STRCSPN])
-m4trace:configure.in:812: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
-@%:@undef HAVE_STRDUP])
-m4trace:configure.in:821: -1- AC_SUBST([INTL_DEP])
-m4trace:configure.in:821: -1- AC_SUBST_TRACE([INTL_DEP])
-m4trace:configure.in:821: -1- m4_pattern_allow([^INTL_DEP$])
-m4trace:configure.in:822: -1- AC_SUBST([INTL_INC])
-m4trace:configure.in:822: -1- AC_SUBST_TRACE([INTL_INC])
-m4trace:configure.in:822: -1- m4_pattern_allow([^INTL_INC$])
-m4trace:configure.in:823: -1- AC_SUBST([LIBINTL_H])
-m4trace:configure.in:823: -1- AC_SUBST_TRACE([LIBINTL_H])
-m4trace:configure.in:823: -1- m4_pattern_allow([^LIBINTL_H$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the <wctype.h> header file. */
+m4trace:configure.ac:843: -1- AC_SUBST([INTL_DEP])
+m4trace:configure.ac:843: -1- AC_SUBST_TRACE([INTL_DEP])
+m4trace:configure.ac:843: -1- m4_pattern_allow([^INTL_DEP$])
+m4trace:configure.ac:844: -1- AC_SUBST([INTL_INC])
+m4trace:configure.ac:844: -1- AC_SUBST_TRACE([INTL_INC])
+m4trace:configure.ac:844: -1- m4_pattern_allow([^INTL_INC$])
+m4trace:configure.ac:845: -1- AC_SUBST([LIBINTL_H])
+m4trace:configure.ac:845: -1- AC_SUBST_TRACE([LIBINTL_H])
+m4trace:configure.ac:845: -1- m4_pattern_allow([^LIBINTL_H$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the <wctype.h> header file. */
@%:@undef HAVE_WCTYPE_H])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_H])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_WCTYPE_H$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the <wchar.h> header file. */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_H])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_WCTYPE_H$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the <wchar.h> header file. */
@%:@undef HAVE_WCHAR_H])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_H])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_WCHAR_H$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_H])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_WCHAR_H$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the <langinfo.h> header file. */
@%:@undef HAVE_LANGINFO_H])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_H])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_LANGINFO_H$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_MBRLEN$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_MBSCMP$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_MBSCMP$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSNRTOWCS])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_MBSNRTOWCS$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_MBSRTOWCS$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_MBSCHR], [/* Define to 1 if you have the `mbschr\' function. */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_H])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_LANGINFO_H$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_MBRLEN$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_MBSCMP$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCMP])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_MBSCMP$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSNRTOWCS])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_MBSNRTOWCS$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_MBSRTOWCS$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_MBSCHR], [/* Define to 1 if you have the `mbschr\' function. */
@%:@undef HAVE_MBSCHR])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCHR])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_MBSCHR$])
-m4trace:configure.in:829: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mbschr.$ac_objext"])
-m4trace:configure.in:829: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:829: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:829: -1- AC_LIBSOURCE([mbschr.c])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_WCRTOMB$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_WCSCOLL$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_WCSDUP$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_WCWIDTH$])
-m4trace:configure.in:829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE])
-m4trace:configure.in:829: -2- m4_pattern_allow([^HAVE_WCTYPE$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSCHR])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_MBSCHR$])
+m4trace:configure.ac:851: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mbschr.$ac_objext"])
+m4trace:configure.ac:851: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:851: -1- AC_LIBSOURCE([mbschr.c])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_WCRTOMB$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_WCSCOLL$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_WCSDUP$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_WCWIDTH$])
+m4trace:configure.ac:851: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE])
+m4trace:configure.ac:851: -2- m4_pattern_allow([^HAVE_WCTYPE$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */
@%:@undef HAVE_WCSWIDTH])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCSWIDTH])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_WCSWIDTH$])
-m4trace:configure.in:829: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS wcswidth.$ac_objext"])
-m4trace:configure.in:829: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:829: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:829: -1- AC_LIBSOURCE([wcswidth.c])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCSWIDTH])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_WCSWIDTH$])
+m4trace:configure.ac:851: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS wcswidth.$ac_objext"])
+m4trace:configure.ac:851: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:851: -1- AC_LIBSOURCE([wcswidth.c])
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_MBRTOWC$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
@%:@undef HAVE_MBRTOWC])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_MBSTATE_T$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_MBSTATE_T$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */
@%:@undef HAVE_ISWLOWER])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */
@%:@undef HAVE_ISWUPPER])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */
@%:@undef HAVE_TOWLOWER])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */
@%:@undef HAVE_TOWUPPER])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */
@%:@undef HAVE_ISWCTYPE])
-m4trace:configure.in:829: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
-m4trace:configure.in:829: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:851: the top level])
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$])
+m4trace:configure.ac:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_WCHAR_T$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */
+configure.ac:851: the top level])
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_WCHAR_T$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */
@%:@undef HAVE_WCHAR_T])
-m4trace:configure.in:829: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_WCTYPE_T$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */
+configure.ac:851: the top level])
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_WCTYPE_T$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */
@%:@undef HAVE_WCTYPE_T])
-m4trace:configure.in:829: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_WINT_T$])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
+configure.ac:851: the top level])
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_WINT_T$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */
@%:@undef HAVE_WINT_T])
-m4trace:configure.in:829: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
-aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [../../lib/autoconf/general.m4:2749: AC_RUN_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:1689: BASH_CHECK_MULTIBYTE is expanded from...
-configure.in:829: the top level])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([WCWIDTH_BROKEN])
-m4trace:configure.in:829: -1- m4_pattern_allow([^WCWIDTH_BROKEN$])
-m4trace:configure.in:829: -1- AH_OUTPUT([WCWIDTH_BROKEN], [/* wcwidth is usually not broken */
+configure.ac:851: the top level])
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([WCWIDTH_BROKEN])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^WCWIDTH_BROKEN$])
+m4trace:configure.ac:851: -1- AH_OUTPUT([WCWIDTH_BROKEN], [/* wcwidth is usually not broken */
@%:@undef WCWIDTH_BROKEN])
-m4trace:configure.in:829: -1- AH_OUTPUT([HAVE_LOCALE_CHARSET], [/* Define to 1 if you have the `locale_charset\' function. */
+m4trace:configure.ac:851: -1- AH_OUTPUT([HAVE_LOCALE_CHARSET], [/* Define to 1 if you have the `locale_charset\' function. */
@%:@undef HAVE_LOCALE_CHARSET])
-m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_CHARSET])
-m4trace:configure.in:829: -1- m4_pattern_allow([^HAVE_LOCALE_CHARSET$])
-m4trace:configure.in:833: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
+m4trace:configure.ac:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_CHARSET])
+m4trace:configure.ac:851: -1- m4_pattern_allow([^HAVE_LOCALE_CHARSET$])
+m4trace:configure.ac:855: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
@%:@undef HAVE_LIBDL])
-m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
-m4trace:configure.in:833: -1- m4_pattern_allow([^HAVE_LIBDL$])
-m4trace:configure.in:834: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */
+m4trace:configure.ac:855: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
+m4trace:configure.ac:855: -1- m4_pattern_allow([^HAVE_LIBDL$])
+m4trace:configure.ac:856: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */
@%:@undef HAVE_DLOPEN])
-m4trace:configure.in:834: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */
+m4trace:configure.ac:856: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */
@%:@undef HAVE_DLCLOSE])
-m4trace:configure.in:834: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */
+m4trace:configure.ac:856: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */
@%:@undef HAVE_DLSYM])
-m4trace:configure.in:838: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/specific.m4:41: AC_DECL_SYS_SIGLIST is expanded from...
-configure.in:838: the top level])
-m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:838: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$])
-m4trace:configure.in:838: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you
+m4trace:configure.ac:860: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/specific.m4:39: AC_DECL_SYS_SIGLIST is expanded from...
+configure.ac:860: the top level])
+m4trace:configure.ac:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST])
+m4trace:configure.ac:860: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$])
+m4trace:configure.ac:860: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you
don\'t. */
@%:@undef HAVE_DECL_SYS_SIGLIST])
-m4trace:configure.in:842: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:864: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:563: BASH_FUNC_INET_ATON is expanded from...
-configure.in:842: the top level])
-m4trace:configure.in:842: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON])
-m4trace:configure.in:842: -1- m4_pattern_allow([^HAVE_INET_ATON$])
-m4trace:configure.in:842: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS inet_aton.$ac_objext"])
-m4trace:configure.in:842: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:842: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:842: -1- AC_LIBSOURCE([inet_aton.c])
-m4trace:configure.in:848: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */
+configure.ac:864: the top level])
+m4trace:configure.ac:864: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON])
+m4trace:configure.ac:864: -1- m4_pattern_allow([^HAVE_INET_ATON$])
+m4trace:configure.ac:864: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS inet_aton.$ac_objext"])
+m4trace:configure.ac:864: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:864: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:864: -1- AC_LIBSOURCE([inet_aton.c])
+m4trace:configure.ac:870: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */
@%:@undef HAVE_LIBSUN])
-m4trace:configure.in:848: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN])
-m4trace:configure.in:848: -1- m4_pattern_allow([^HAVE_LIBSUN$])
-m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET])
-m4trace:configure.in:853: -1- m4_pattern_allow([^HAVE_LIBSOCKET$])
-m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME])
-m4trace:configure.in:853: -1- m4_pattern_allow([^HAVE_GETPEERNAME$])
-m4trace:configure.in:857: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:870: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN])
+m4trace:configure.ac:870: -1- m4_pattern_allow([^HAVE_LIBSUN$])
+m4trace:configure.ac:875: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET])
+m4trace:configure.ac:875: -1- m4_pattern_allow([^HAVE_LIBSOCKET$])
+m4trace:configure.ac:875: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME])
+m4trace:configure.ac:875: -1- m4_pattern_allow([^HAVE_GETPEERNAME$])
+m4trace:configure.ac:879: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:732: BASH_FUNC_GETHOSTBYNAME is expanded from...
-configure.in:857: the top level])
-m4trace:configure.in:857: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME])
-m4trace:configure.in:857: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$])
-m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
-m4trace:configure.in:861: -1- m4_pattern_allow([^uid_t$])
-m4trace:configure.in:861: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+configure.ac:879: the top level])
+m4trace:configure.ac:879: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME])
+m4trace:configure.ac:879: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$])
+m4trace:configure.ac:883: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
+m4trace:configure.ac:883: -1- m4_pattern_allow([^uid_t$])
+m4trace:configure.ac:883: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
@%:@undef uid_t])
-m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
-m4trace:configure.in:861: -1- m4_pattern_allow([^gid_t$])
-m4trace:configure.in:861: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.ac:883: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
+m4trace:configure.ac:883: -1- m4_pattern_allow([^gid_t$])
+m4trace:configure.ac:883: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
@%:@undef gid_t])
-m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T])
-m4trace:configure.in:861: -1- m4_pattern_allow([^GETGROUPS_T$])
-m4trace:configure.in:861: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually
+m4trace:configure.ac:883: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T])
+m4trace:configure.ac:883: -1- m4_pattern_allow([^GETGROUPS_T$])
+m4trace:configure.ac:883: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually
this is either `int\' or `gid_t\'. */
@%:@undef GETGROUPS_T])
-m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.in:862: -1- m4_pattern_allow([^off_t$])
-m4trace:configure.in:862: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:884: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.ac:884: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.ac:884: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
@%:@undef off_t])
-m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([mode_t])
-m4trace:configure.in:863: -1- m4_pattern_allow([^mode_t$])
-m4trace:configure.in:863: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:885: -1- AC_DEFINE_TRACE_LITERAL([mode_t])
+m4trace:configure.ac:885: -1- m4_pattern_allow([^mode_t$])
+m4trace:configure.ac:885: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef mode_t])
-m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
-m4trace:configure.in:864: -1- m4_pattern_allow([^uid_t$])
-m4trace:configure.in:864: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.ac:886: -1- AC_DEFINE_TRACE_LITERAL([uid_t])
+m4trace:configure.ac:886: -1- m4_pattern_allow([^uid_t$])
+m4trace:configure.ac:886: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
@%:@undef uid_t])
-m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
-m4trace:configure.in:864: -1- m4_pattern_allow([^gid_t$])
-m4trace:configure.in:864: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
+m4trace:configure.ac:886: -1- AC_DEFINE_TRACE_LITERAL([gid_t])
+m4trace:configure.ac:886: -1- m4_pattern_allow([^gid_t$])
+m4trace:configure.ac:886: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if <sys/types.h> doesn\'t define. */
@%:@undef gid_t])
-m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
-m4trace:configure.in:865: -1- m4_pattern_allow([^pid_t$])
-m4trace:configure.in:865: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:887: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
+m4trace:configure.ac:887: -1- m4_pattern_allow([^pid_t$])
+m4trace:configure.ac:887: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef pid_t])
-m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.in:866: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.in:866: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:888: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.ac:888: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:888: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
@%:@undef size_t])
-m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([ssize_t])
-m4trace:configure.in:867: -1- m4_pattern_allow([^ssize_t$])
-m4trace:configure.in:867: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:889: -1- AC_DEFINE_TRACE_LITERAL([ssize_t])
+m4trace:configure.ac:889: -1- m4_pattern_allow([^ssize_t$])
+m4trace:configure.ac:889: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef ssize_t])
-m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([time_t])
-m4trace:configure.in:868: -1- m4_pattern_allow([^time_t$])
-m4trace:configure.in:868: -1- AH_OUTPUT([time_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:890: -1- AC_DEFINE_TRACE_LITERAL([time_t])
+m4trace:configure.ac:890: -1- m4_pattern_allow([^time_t$])
+m4trace:configure.ac:890: -1- AH_OUTPUT([time_t], [/* Define to `long\' if <sys/types.h> does not define. */
@%:@undef time_t])
-m4trace:configure.in:870: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:892: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:472: BASH_TYPE_LONG_LONG is expanded from...
-configure.in:870: the top level])
-m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
-m4trace:configure.in:870: -1- m4_pattern_allow([^HAVE_LONG_LONG$])
-m4trace:configure.in:871: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:892: the top level])
+m4trace:configure.ac:892: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
+m4trace:configure.ac:892: -1- m4_pattern_allow([^HAVE_LONG_LONG$])
+m4trace:configure.ac:893: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:486: BASH_TYPE_UNSIGNED_LONG_LONG is expanded from...
-configure.in:871: the top level])
-m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
-m4trace:configure.in:871: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
-m4trace:configure.in:873: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:738: AC_TYPE_SIGNAL is expanded from...
-configure.in:873: the top level])
-m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
-m4trace:configure.in:873: -1- m4_pattern_allow([^RETSIGTYPE$])
-m4trace:configure.in:873: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
+configure.ac:893: the top level])
+m4trace:configure.ac:893: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG])
+m4trace:configure.ac:893: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$])
+m4trace:configure.ac:895: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/types.m4:746: AC_TYPE_SIGNAL is expanded from...
+configure.ac:895: the top level])
+m4trace:configure.ac:895: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE])
+m4trace:configure.ac:895: -1- m4_pattern_allow([^RETSIGTYPE$])
+m4trace:configure.ac:895: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */
@%:@undef RETSIGTYPE])
-m4trace:configure.in:874: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:896: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:537: BASH_TYPE_SIG_ATOMIC_T is expanded from...
-configure.in:874: the top level])
-m4trace:configure.in:874: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t])
-m4trace:configure.in:874: -1- m4_pattern_allow([^sig_atomic_t$])
-m4trace:configure.in:874: -1- AH_OUTPUT([sig_atomic_t], [/* Define to `int\' if <sys/types.h> does not define. */
+configure.ac:896: the top level])
+m4trace:configure.ac:896: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t])
+m4trace:configure.ac:896: -1- m4_pattern_allow([^sig_atomic_t$])
+m4trace:configure.ac:896: -1- AH_OUTPUT([sig_atomic_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef sig_atomic_t])
-m4trace:configure.in:876: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
-m4trace:configure.in:876: -1- m4_pattern_allow([^SIZEOF_CHAR$])
-m4trace:configure.in:876: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */
+m4trace:configure.ac:898: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR])
+m4trace:configure.ac:898: -1- m4_pattern_allow([^SIZEOF_CHAR$])
+m4trace:configure.ac:898: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */
@%:@undef SIZEOF_CHAR])
-m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
-m4trace:configure.in:877: -1- m4_pattern_allow([^SIZEOF_SHORT$])
-m4trace:configure.in:877: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
+m4trace:configure.ac:899: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
+m4trace:configure.ac:899: -1- m4_pattern_allow([^SIZEOF_SHORT$])
+m4trace:configure.ac:899: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
@%:@undef SIZEOF_SHORT])
-m4trace:configure.in:878: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
-m4trace:configure.in:878: -1- m4_pattern_allow([^SIZEOF_INT$])
-m4trace:configure.in:878: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
+m4trace:configure.ac:900: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
+m4trace:configure.ac:900: -1- m4_pattern_allow([^SIZEOF_INT$])
+m4trace:configure.ac:900: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
@%:@undef SIZEOF_INT])
-m4trace:configure.in:879: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
-m4trace:configure.in:879: -1- m4_pattern_allow([^SIZEOF_LONG$])
-m4trace:configure.in:879: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
+m4trace:configure.ac:901: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
+m4trace:configure.ac:901: -1- m4_pattern_allow([^SIZEOF_LONG$])
+m4trace:configure.ac:901: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
@%:@undef SIZEOF_LONG])
-m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
-m4trace:configure.in:880: -1- m4_pattern_allow([^SIZEOF_CHAR_P$])
-m4trace:configure.in:880: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of `char *\', as computed by sizeof. */
+m4trace:configure.ac:902: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P])
+m4trace:configure.ac:902: -1- m4_pattern_allow([^SIZEOF_CHAR_P$])
+m4trace:configure.ac:902: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of `char *\', as computed by sizeof. */
@%:@undef SIZEOF_CHAR_P])
-m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
-m4trace:configure.in:881: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
-m4trace:configure.in:881: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */
+m4trace:configure.ac:903: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
+m4trace:configure.ac:903: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
+m4trace:configure.ac:903: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */
@%:@undef SIZEOF_DOUBLE])
-m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
-m4trace:configure.in:882: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
-m4trace:configure.in:882: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
+m4trace:configure.ac:904: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
+m4trace:configure.ac:904: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
+m4trace:configure.ac:904: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
@%:@undef SIZEOF_LONG_LONG])
-m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([u_int])
-m4trace:configure.in:884: -1- m4_pattern_allow([^u_int$])
-m4trace:configure.in:884: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:906: -1- AC_DEFINE_TRACE_LITERAL([u_int])
+m4trace:configure.ac:906: -1- m4_pattern_allow([^u_int$])
+m4trace:configure.ac:906: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
@%:@undef u_int])
-m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([u_long])
-m4trace:configure.in:885: -1- m4_pattern_allow([^u_long$])
-m4trace:configure.in:885: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:907: -1- AC_DEFINE_TRACE_LITERAL([u_long])
+m4trace:configure.ac:907: -1- m4_pattern_allow([^u_long$])
+m4trace:configure.ac:907: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
@%:@undef u_long])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:887: -1- m4_pattern_allow([^bits16_t$])
-m4trace:configure.in:887: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
+m4trace:configure.ac:909: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.ac:909: -1- m4_pattern_allow([^bits16_t$])
+m4trace:configure.ac:909: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
@%:@undef bits16_t])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:887: -1- m4_pattern_allow([^bits16_t$])
-m4trace:configure.in:887: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if <sys/types.h> does not define. */
+m4trace:configure.ac:909: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.ac:909: -1- m4_pattern_allow([^bits16_t$])
+m4trace:configure.ac:909: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if <sys/types.h> does not define. */
@%:@undef bits16_t])
-m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
-m4trace:configure.in:887: -1- m4_pattern_allow([^bits16_t$])
-m4trace:configure.in:887: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
+m4trace:configure.ac:909: -1- AC_DEFINE_TRACE_LITERAL([bits16_t])
+m4trace:configure.ac:909: -1- m4_pattern_allow([^bits16_t$])
+m4trace:configure.ac:909: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if <sys/types.h> does not define. */
@%:@undef bits16_t])
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:888: -1- m4_pattern_allow([^u_bits16_t$])
-m4trace:configure.in:888: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
+m4trace:configure.ac:910: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.ac:910: -1- m4_pattern_allow([^u_bits16_t$])
+m4trace:configure.ac:910: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
@%:@undef u_bits16_t])
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:888: -1- m4_pattern_allow([^u_bits16_t$])
-m4trace:configure.in:888: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if <sys/types.h> does not define. */
+m4trace:configure.ac:910: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.ac:910: -1- m4_pattern_allow([^u_bits16_t$])
+m4trace:configure.ac:910: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if <sys/types.h> does not define. */
@%:@undef u_bits16_t])
-m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
-m4trace:configure.in:888: -1- m4_pattern_allow([^u_bits16_t$])
-m4trace:configure.in:888: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
+m4trace:configure.ac:910: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t])
+m4trace:configure.ac:910: -1- m4_pattern_allow([^u_bits16_t$])
+m4trace:configure.ac:910: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if <sys/types.h> does not define. */
@%:@undef u_bits16_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits32_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:911: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.ac:911: -1- m4_pattern_allow([^bits32_t$])
+m4trace:configure.ac:911: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef bits32_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits32_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:911: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.ac:911: -1- m4_pattern_allow([^bits32_t$])
+m4trace:configure.ac:911: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if <sys/types.h> does not define. */
@%:@undef bits32_t])
-m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
-m4trace:configure.in:889: -1- m4_pattern_allow([^bits32_t$])
-m4trace:configure.in:889: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:911: -1- AC_DEFINE_TRACE_LITERAL([bits32_t])
+m4trace:configure.ac:911: -1- m4_pattern_allow([^bits32_t$])
+m4trace:configure.ac:911: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef bits32_t])
-m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:890: -1- m4_pattern_allow([^u_bits32_t$])
-m4trace:configure.in:890: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:912: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.ac:912: -1- m4_pattern_allow([^u_bits32_t$])
+m4trace:configure.ac:912: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
@%:@undef u_bits32_t])
-m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:890: -1- m4_pattern_allow([^u_bits32_t$])
-m4trace:configure.in:890: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:912: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.ac:912: -1- m4_pattern_allow([^u_bits32_t$])
+m4trace:configure.ac:912: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if <sys/types.h> does not define. */
@%:@undef u_bits32_t])
-m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
-m4trace:configure.in:890: -1- m4_pattern_allow([^u_bits32_t$])
-m4trace:configure.in:890: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:912: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t])
+m4trace:configure.ac:912: -1- m4_pattern_allow([^u_bits32_t$])
+m4trace:configure.ac:912: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
@%:@undef u_bits32_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if <sys/types.h> does not define. */
+m4trace:configure.ac:913: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.ac:913: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.ac:913: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if <sys/types.h> does not define. */
@%:@undef bits64_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
+m4trace:configure.ac:913: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.ac:913: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.ac:913: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
@%:@undef bits64_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:913: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.ac:913: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.ac:913: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if <sys/types.h> does not define. */
@%:@undef bits64_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:913: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.ac:913: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.ac:913: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if <sys/types.h> does not define. */
@%:@undef bits64_t])
-m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
-m4trace:configure.in:891: -1- m4_pattern_allow([^bits64_t$])
-m4trace:configure.in:891: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
+m4trace:configure.ac:913: -1- AC_DEFINE_TRACE_LITERAL([bits64_t])
+m4trace:configure.ac:913: -1- m4_pattern_allow([^bits64_t$])
+m4trace:configure.ac:913: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if <sys/types.h> does not define. */
@%:@undef bits64_t])
-m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:893: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:893: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:915: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.ac:915: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.ac:915: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef ptrdiff_t])
-m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:893: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:893: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:915: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.ac:915: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.ac:915: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if <sys/types.h> does not define. */
@%:@undef ptrdiff_t])
-m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:893: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:893: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if <sys/types.h> does not define. */
+m4trace:configure.ac:915: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.ac:915: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.ac:915: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if <sys/types.h> does not define. */
@%:@undef ptrdiff_t])
-m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
-m4trace:configure.in:893: -1- m4_pattern_allow([^ptrdiff_t$])
-m4trace:configure.in:893: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
+m4trace:configure.ac:915: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t])
+m4trace:configure.ac:915: -1- m4_pattern_allow([^ptrdiff_t$])
+m4trace:configure.ac:915: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if <sys/types.h> does not define. */
@%:@undef ptrdiff_t])
-m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN])
-m4trace:configure.in:896: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$])
-m4trace:configure.in:896: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in <sys/stat.h> do not work properly. */
+m4trace:configure.ac:918: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN])
+m4trace:configure.ac:918: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$])
+m4trace:configure.ac:918: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in <sys/stat.h> do not work properly. */
@%:@undef STAT_MACROS_BROKEN])
-m4trace:configure.in:901: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC])
-m4trace:configure.in:901: -1- m4_pattern_allow([^HAVE_HASH_BANG_EXEC$])
-m4trace:configure.in:906: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:923: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC])
+m4trace:configure.ac:923: -1- m4_pattern_allow([^HAVE_HASH_BANG_EXEC$])
+m4trace:configure.ac:928: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:549: BASH_FUNC_LSTAT is expanded from...
-configure.in:906: the top level])
-m4trace:configure.in:906: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT])
-m4trace:configure.in:906: -1- m4_pattern_allow([^HAVE_LSTAT$])
-m4trace:configure.in:910: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:928: the top level])
+m4trace:configure.ac:928: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT])
+m4trace:configure.ac:928: -1- m4_pattern_allow([^HAVE_LSTAT$])
+m4trace:configure.ac:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1920: BASH_FUNC_CTYPE_NONASCII is expanded from...
-configure.in:910: the top level])
-m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
-m4trace:configure.in:910: -1- m4_pattern_allow([^CTYPE_NON_ASCII$])
-m4trace:configure.in:911: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:932: the top level])
+m4trace:configure.ac:932: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII])
+m4trace:configure.ac:932: -1- m4_pattern_allow([^CTYPE_NON_ASCII$])
+m4trace:configure.ac:933: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:270: BASH_FUNC_DUP2_CLOEXEC_CHECK is expanded from...
-configure.in:911: the top level])
-m4trace:configure.in:911: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN])
-m4trace:configure.in:911: -1- m4_pattern_allow([^DUP2_BROKEN$])
-m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:933: the top level])
+m4trace:configure.ac:933: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN])
+m4trace:configure.ac:933: -1- m4_pattern_allow([^DUP2_BROKEN$])
+m4trace:configure.ac:934: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1235: BASH_SYS_PGRP_SYNC is expanded from...
-configure.in:912: the top level])
-m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
-m4trace:configure.in:912: -1- m4_pattern_allow([^PGRP_PIPE$])
-m4trace:configure.in:913: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:934: the top level])
+m4trace:configure.ac:934: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
+m4trace:configure.ac:934: -1- m4_pattern_allow([^PGRP_PIPE$])
+m4trace:configure.ac:935: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1195: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:913: the top level])
-m4trace:configure.in:913: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2662: _AC_LINK_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2679: AC_LINK_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:935: the top level])
+m4trace:configure.ac:935: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1195: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:913: the top level])
-m4trace:configure.in:913: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2662: _AC_LINK_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2679: AC_LINK_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2662: _AC_LINK_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2679: AC_LINK_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:935: the top level])
+m4trace:configure.ac:935: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1195: BASH_SYS_SIGNAL_VINTAGE is expanded from...
-configure.in:913: the top level])
-m4trace:configure.in:913: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS])
-m4trace:configure.in:913: -1- m4_pattern_allow([^HAVE_POSIX_SIGNALS$])
-m4trace:configure.in:913: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS])
-m4trace:configure.in:913: -1- m4_pattern_allow([^HAVE_BSD_SIGNALS$])
-m4trace:configure.in:913: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD])
-m4trace:configure.in:913: -1- m4_pattern_allow([^HAVE_USG_SIGHOLD$])
-m4trace:configure.in:916: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:935: the top level])
+m4trace:configure.ac:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS])
+m4trace:configure.ac:935: -1- m4_pattern_allow([^HAVE_POSIX_SIGNALS$])
+m4trace:configure.ac:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS])
+m4trace:configure.ac:935: -1- m4_pattern_allow([^HAVE_BSD_SIGNALS$])
+m4trace:configure.ac:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD])
+m4trace:configure.ac:935: -1- m4_pattern_allow([^HAVE_USG_SIGHOLD$])
+m4trace:configure.ac:938: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:253: BASH_SYS_ERRLIST is expanded from...
-configure.in:916: the top level])
-m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST])
-m4trace:configure.in:916: -1- m4_pattern_allow([^HAVE_SYS_ERRLIST$])
-m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:938: the top level])
+m4trace:configure.ac:938: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST])
+m4trace:configure.ac:938: -1- m4_pattern_allow([^HAVE_SYS_ERRLIST$])
+m4trace:configure.ac:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:211: BASH_SYS_SIGLIST is expanded from...
-configure.in:917: the top level])
-m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST])
-m4trace:configure.in:917: -1- m4_pattern_allow([^HAVE_SYS_SIGLIST$])
-m4trace:configure.in:918: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:939: the top level])
+m4trace:configure.ac:939: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST])
+m4trace:configure.ac:939: -1- m4_pattern_allow([^HAVE_SYS_SIGLIST$])
+m4trace:configure.ac:940: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:167: BASH_DECL_UNDER_SYS_SIGLIST is expanded from...
aclocal.m4:184: BASH_UNDER_SYS_SIGLIST is expanded from...
-configure.in:918: the top level])
-m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED])
-m4trace:configure.in:918: -1- m4_pattern_allow([^UNDER_SYS_SIGLIST_DECLARED$])
-m4trace:configure.in:918: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:940: the top level])
+m4trace:configure.ac:940: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED])
+m4trace:configure.ac:940: -1- m4_pattern_allow([^UNDER_SYS_SIGLIST_DECLARED$])
+m4trace:configure.ac:940: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:184: BASH_UNDER_SYS_SIGLIST is expanded from...
-configure.in:918: the top level])
-m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST])
-m4trace:configure.in:918: -1- m4_pattern_allow([^HAVE_UNDER_SYS_SIGLIST$])
-m4trace:configure.in:921: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:940: the top level])
+m4trace:configure.ac:940: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST])
+m4trace:configure.ac:940: -1- m4_pattern_allow([^HAVE_UNDER_SYS_SIGLIST$])
+m4trace:configure.ac:943: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:366: BASH_TYPE_SIGHANDLER is expanded from...
-configure.in:921: the top level])
-m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER])
-m4trace:configure.in:921: -1- m4_pattern_allow([^VOID_SIGHANDLER$])
-m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([clock_t])
-m4trace:configure.in:922: -1- m4_pattern_allow([^clock_t$])
-m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([sigset_t])
-m4trace:configure.in:923: -1- m4_pattern_allow([^sigset_t$])
-m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T])
-m4trace:configure.in:924: -1- m4_pattern_allow([^HAVE_QUAD_T$])
-m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([quad_t])
-m4trace:configure.in:924: -1- m4_pattern_allow([^quad_t$])
-m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([intmax_t])
-m4trace:configure.in:925: -1- m4_pattern_allow([^intmax_t$])
-m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
-m4trace:configure.in:926: -1- m4_pattern_allow([^uintmax_t$])
-m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T])
-m4trace:configure.in:928: -1- m4_pattern_allow([^HAVE_SOCKLEN_T$])
-m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
-m4trace:configure.in:928: -1- m4_pattern_allow([^socklen_t$])
-m4trace:configure.in:930: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:943: the top level])
+m4trace:configure.ac:943: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER])
+m4trace:configure.ac:943: -1- m4_pattern_allow([^VOID_SIGHANDLER$])
+m4trace:configure.ac:944: -1- AC_DEFINE_TRACE_LITERAL([clock_t])
+m4trace:configure.ac:944: -1- m4_pattern_allow([^clock_t$])
+m4trace:configure.ac:945: -1- AC_DEFINE_TRACE_LITERAL([sigset_t])
+m4trace:configure.ac:945: -1- m4_pattern_allow([^sigset_t$])
+m4trace:configure.ac:946: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t])
+m4trace:configure.ac:946: -1- m4_pattern_allow([^sig_atomic_t$])
+m4trace:configure.ac:947: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T])
+m4trace:configure.ac:947: -1- m4_pattern_allow([^HAVE_QUAD_T$])
+m4trace:configure.ac:947: -1- AC_DEFINE_TRACE_LITERAL([quad_t])
+m4trace:configure.ac:947: -1- m4_pattern_allow([^quad_t$])
+m4trace:configure.ac:948: -1- AC_DEFINE_TRACE_LITERAL([intmax_t])
+m4trace:configure.ac:948: -1- m4_pattern_allow([^intmax_t$])
+m4trace:configure.ac:949: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t])
+m4trace:configure.ac:949: -1- m4_pattern_allow([^uintmax_t$])
+m4trace:configure.ac:951: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T])
+m4trace:configure.ac:951: -1- m4_pattern_allow([^HAVE_SOCKLEN_T$])
+m4trace:configure.ac:951: -1- AC_DEFINE_TRACE_LITERAL([socklen_t])
+m4trace:configure.ac:951: -1- m4_pattern_allow([^socklen_t$])
+m4trace:configure.ac:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:507: BASH_TYPE_RLIMIT is expanded from...
-configure.in:930: the top level])
-m4trace:configure.in:930: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2591: _AC_COMPILE_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2607: AC_COMPILE_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:953: the top level])
+m4trace:configure.ac:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2590: _AC_COMPILE_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2606: AC_COMPILE_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:507: BASH_TYPE_RLIMIT is expanded from...
-configure.in:930: the top level])
-m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
-m4trace:configure.in:930: -1- m4_pattern_allow([^RLIMTYPE$])
-m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
-m4trace:configure.in:930: -1- m4_pattern_allow([^RLIMTYPE$])
-m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INTMAX_T])
-m4trace:configure.in:932: -1- m4_pattern_allow([^SIZEOF_INTMAX_T$])
-m4trace:configure.in:932: -1- AH_OUTPUT([SIZEOF_INTMAX_T], [/* The size of `intmax_t\', as computed by sizeof. */
+configure.ac:953: the top level])
+m4trace:configure.ac:953: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
+m4trace:configure.ac:953: -1- m4_pattern_allow([^RLIMTYPE$])
+m4trace:configure.ac:953: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE])
+m4trace:configure.ac:953: -1- m4_pattern_allow([^RLIMTYPE$])
+m4trace:configure.ac:955: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INTMAX_T])
+m4trace:configure.ac:955: -1- m4_pattern_allow([^SIZEOF_INTMAX_T$])
+m4trace:configure.ac:955: -1- AH_OUTPUT([SIZEOF_INTMAX_T], [/* The size of `intmax_t\', as computed by sizeof. */
@%:@undef SIZEOF_INTMAX_T])
-m4trace:configure.in:935: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC])
-m4trace:configure.in:935: -2- m4_pattern_allow([^TERMIOS_LDISC$])
-m4trace:configure.in:936: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC])
-m4trace:configure.in:936: -2- m4_pattern_allow([^TERMIO_LDISC$])
-m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:958: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC])
+m4trace:configure.ac:958: -2- m4_pattern_allow([^TERMIOS_LDISC$])
+m4trace:configure.ac:959: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC])
+m4trace:configure.ac:959: -2- m4_pattern_allow([^TERMIO_LDISC$])
+m4trace:configure.ac:960: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1042: BASH_STRUCT_DIRENT_D_INO is expanded from...
-configure.in:937: the top level])
-m4trace:configure.in:937: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO])
-m4trace:configure.in:937: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_INO$])
-m4trace:configure.in:938: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:960: the top level])
+m4trace:configure.ac:960: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO])
+m4trace:configure.ac:960: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_INO$])
+m4trace:configure.ac:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1075: BASH_STRUCT_DIRENT_D_FILENO is expanded from...
-configure.in:938: the top level])
-m4trace:configure.in:938: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO])
-m4trace:configure.in:938: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_FILENO$])
-m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:961: the top level])
+m4trace:configure.ac:961: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO])
+m4trace:configure.ac:961: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_FILENO$])
+m4trace:configure.ac:962: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1108: BASH_STRUCT_DIRENT_D_NAMLEN is expanded from...
-configure.in:939: the top level])
-m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN])
-m4trace:configure.in:939: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_NAMLEN$])
-m4trace:configure.in:940: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:962: the top level])
+m4trace:configure.ac:962: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN])
+m4trace:configure.ac:962: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_NAMLEN$])
+m4trace:configure.ac:963: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1173: BASH_STRUCT_WINSIZE is expanded from...
-configure.in:940: the top level])
-m4trace:configure.in:940: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2591: _AC_COMPILE_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2607: AC_COMPILE_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:963: the top level])
+m4trace:configure.ac:963: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2590: _AC_COMPILE_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2606: AC_COMPILE_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1173: BASH_STRUCT_WINSIZE is expanded from...
-configure.in:940: the top level])
-m4trace:configure.in:940: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL])
-m4trace:configure.in:940: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_SYS_IOCTL$])
-m4trace:configure.in:940: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS])
-m4trace:configure.in:940: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_TERMIOS$])
-m4trace:configure.in:941: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL])
-m4trace:configure.in:941: -1- m4_pattern_allow([^HAVE_TIMEVAL$])
-m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS])
-m4trace:configure.in:942: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_BLOCKS$])
-m4trace:configure.in:942: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is a member of `struct stat\'. */
+configure.ac:963: the top level])
+m4trace:configure.ac:963: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL])
+m4trace:configure.ac:963: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_SYS_IOCTL$])
+m4trace:configure.ac:963: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS])
+m4trace:configure.ac:963: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_TERMIOS$])
+m4trace:configure.ac:964: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL])
+m4trace:configure.ac:964: -1- m4_pattern_allow([^HAVE_TIMEVAL$])
+m4trace:configure.ac:965: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS])
+m4trace:configure.ac:965: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_BLOCKS$])
+m4trace:configure.ac:965: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is a member of `struct stat\'. */
@%:@undef HAVE_STRUCT_STAT_ST_BLOCKS])
-m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
-m4trace:configure.in:943: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
-m4trace:configure.in:943: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
+m4trace:configure.ac:966: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME])
+m4trace:configure.ac:966: -1- m4_pattern_allow([^TM_IN_SYS_TIME$])
+m4trace:configure.ac:966: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your <sys/time.h> declares `struct tm\'. */
@%:@undef TM_IN_SYS_TIME])
-m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE])
-m4trace:configure.in:944: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_ZONE$])
-m4trace:configure.in:944: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is a member of `struct tm\'. */
+m4trace:configure.ac:967: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE])
+m4trace:configure.ac:967: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_ZONE$])
+m4trace:configure.ac:967: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is a member of `struct tm\'. */
@%:@undef HAVE_STRUCT_TM_TM_ZONE])
-m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE])
-m4trace:configure.in:944: -1- m4_pattern_allow([^HAVE_TM_ZONE$])
-m4trace:configure.in:944: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use
+m4trace:configure.ac:967: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE])
+m4trace:configure.ac:967: -1- m4_pattern_allow([^HAVE_TM_ZONE$])
+m4trace:configure.ac:967: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use
`HAVE_STRUCT_TM_TM_ZONE\' instead. */
@%:@undef HAVE_TM_ZONE])
-m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_TZNAME])
-m4trace:configure.in:944: -1- m4_pattern_allow([^HAVE_DECL_TZNAME$])
-m4trace:configure.in:944: -1- AH_OUTPUT([HAVE_DECL_TZNAME], [/* Define to 1 if you have the declaration of `tzname\', and to 0 if you don\'t.
+m4trace:configure.ac:967: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_TZNAME])
+m4trace:configure.ac:967: -1- m4_pattern_allow([^HAVE_DECL_TZNAME$])
+m4trace:configure.ac:967: -1- AH_OUTPUT([HAVE_DECL_TZNAME], [/* Define to 1 if you have the declaration of `tzname\', and to 0 if you don\'t.
*/
@%:@undef HAVE_DECL_TZNAME])
-m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME])
-m4trace:configure.in:944: -1- m4_pattern_allow([^HAVE_TZNAME$])
-m4trace:configure.in:944: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array
+m4trace:configure.ac:967: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME])
+m4trace:configure.ac:967: -1- m4_pattern_allow([^HAVE_TZNAME$])
+m4trace:configure.ac:967: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array
`tzname\'. */
@%:@undef HAVE_TZNAME])
-m4trace:configure.in:945: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
-m4trace:configure.in:945: -1- m4_pattern_allow([^HAVE_STRUCT_TIMEZONE$])
-m4trace:configure.in:947: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:968: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
+m4trace:configure.ac:968: -1- m4_pattern_allow([^HAVE_STRUCT_TIMEZONE$])
+m4trace:configure.ac:970: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:4149: BASH_STRUCT_WEXITSTATUS_OFFSET is expanded from...
-configure.in:947: the top level])
-m4trace:configure.in:947: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
-m4trace:configure.in:947: -1- m4_pattern_allow([^WEXITSTATUS_OFFSET$])
-m4trace:configure.in:947: -1- AH_OUTPUT([WEXITSTATUS_OFFSET], [/* Offset of exit status in wait status word */
+configure.ac:970: the top level])
+m4trace:configure.ac:970: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
+m4trace:configure.ac:970: -1- m4_pattern_allow([^WEXITSTATUS_OFFSET$])
+m4trace:configure.ac:970: -1- AH_OUTPUT([WEXITSTATUS_OFFSET], [/* Offset of exit status in wait status word */
@%:@undef WEXITSTATUS_OFFSET])
-m4trace:configure.in:949: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.ac:972: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- AC_SUBST_TRACE([TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- AC_SUBST_TRACE([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:949: -1- AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- AC_SUBST_TRACE([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
-m4trace:configure.in:949: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
-m4trace:configure.in:950: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+m4trace:configure.ac:972: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_DEFINE_TRACE_LITERAL([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_DEFINE_TRACE_LITERAL([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- AC_SUBST_TRACE([TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- AC_SUBST_TRACE([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.ac:972: -1- AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- AC_SUBST_TRACE([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+m4trace:configure.ac:972: -1- m4_pattern_allow([^PTHREAD_H_DEFINES_STRUCT_TIMESPEC$])
+m4trace:configure.ac:973: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
-m4trace:configure.in:950: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
-m4trace:configure.in:950: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is a member of `struct stat\'. */
+m4trace:configure.ac:973: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
+m4trace:configure.ac:973: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC$])
+m4trace:configure.ac:973: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC], [/* Define to 1 if `st_atim.tv_nsec\' is a member of `struct stat\'. */
@%:@undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC])
-m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
-m4trace:configure.in:950: -1- m4_pattern_allow([^TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC$])
-m4trace:configure.in:950: -1- AH_OUTPUT([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [/* Define to 1 if the type of the st_atim member of a struct stat is struct
+m4trace:configure.ac:973: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
+m4trace:configure.ac:973: -1- m4_pattern_allow([^TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC$])
+m4trace:configure.ac:973: -1- AH_OUTPUT([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [/* Define to 1 if the type of the st_atim member of a struct stat is struct
timespec. */
@%:@undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC])
-m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
-m4trace:configure.in:950: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
-m4trace:configure.in:950: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is a member of `struct stat\'. */
+m4trace:configure.ac:973: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
+m4trace:configure.ac:973: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC$])
+m4trace:configure.ac:973: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC], [/* Define to 1 if `st_atimespec.tv_nsec\' is a member of `struct stat\'. */
@%:@undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC])
-m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
-m4trace:configure.in:950: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
-m4trace:configure.in:950: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is a member of `struct stat\'. */
+m4trace:configure.ac:973: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIMENSEC])
+m4trace:configure.ac:973: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIMENSEC$])
+m4trace:configure.ac:973: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIMENSEC], [/* Define to 1 if `st_atimensec\' is a member of `struct stat\'. */
@%:@undef HAVE_STRUCT_STAT_ST_ATIMENSEC])
-m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
-m4trace:configure.in:950: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
-m4trace:configure.in:950: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is a member of `struct stat\'. */
+m4trace:configure.ac:973: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
+m4trace:configure.ac:973: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC$])
+m4trace:configure.ac:973: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC], [/* Define to 1 if `st_atim.st__tim.tv_nsec\' is a member of `struct stat\'. */
@%:@undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC])
-m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:976: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:299: BASH_FUNC_STRSIGNAL is expanded from...
-configure.in:953: the top level])
-m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
-m4trace:configure.in:953: -1- m4_pattern_allow([^HAVE_STRSIGNAL$])
-m4trace:configure.in:954: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:976: the top level])
+m4trace:configure.ac:976: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
+m4trace:configure.ac:976: -1- m4_pattern_allow([^HAVE_STRSIGNAL$])
+m4trace:configure.ac:977: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:313: BASH_FUNC_OPENDIR_CHECK is expanded from...
-configure.in:954: the top level])
-m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
-m4trace:configure.in:954: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$])
-m4trace:configure.in:955: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:977: the top level])
+m4trace:configure.ac:977: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
+m4trace:configure.ac:977: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$])
+m4trace:configure.ac:978: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:683: BASH_FUNC_ULIMIT_MAXFDS is expanded from...
-configure.in:955: the top level])
-m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
-m4trace:configure.in:955: -1- m4_pattern_allow([^ULIMIT_MAXFDS$])
-m4trace:configure.in:956: -1- AH_OUTPUT([HAVE_FPURGE], [/* Define to 1 if you have the `fpurge\' function. */
+configure.ac:978: the top level])
+m4trace:configure.ac:978: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
+m4trace:configure.ac:978: -1- m4_pattern_allow([^ULIMIT_MAXFDS$])
+m4trace:configure.ac:979: -1- AH_OUTPUT([HAVE_FPURGE], [/* Define to 1 if you have the `fpurge\' function. */
@%:@undef HAVE_FPURGE])
-m4trace:configure.in:956: -1- AH_OUTPUT([HAVE___FPURGE], [/* Define to 1 if you have the `__fpurge\' function. */
+m4trace:configure.ac:979: -1- AH_OUTPUT([HAVE___FPURGE], [/* Define to 1 if you have the `__fpurge\' function. */
@%:@undef HAVE___FPURGE])
-m4trace:configure.in:956: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
-m4trace:configure.in:956: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
-m4trace:configure.in:956: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
+m4trace:configure.ac:979: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
+m4trace:configure.ac:979: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
+m4trace:configure.ac:979: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
*/
@%:@undef HAVE_DECL_FPURGE])
-m4trace:configure.in:957: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:980: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:579: BASH_FUNC_GETENV is expanded from...
-configure.in:957: the top level])
-m4trace:configure.in:957: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
-m4trace:configure.in:957: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$])
-m4trace:configure.in:959: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:980: the top level])
+m4trace:configure.ac:980: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
+m4trace:configure.ac:980: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$])
+m4trace:configure.ac:982: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:702: BASH_FUNC_GETCWD is expanded from...
-configure.in:959: the top level])
-m4trace:configure.in:959: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
-m4trace:configure.in:959: -1- m4_pattern_allow([^GETCWD_BROKEN$])
-m4trace:configure.in:959: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
-m4trace:configure.in:959: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:959: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:959: -1- AC_LIBSOURCE([getcwd.c])
-m4trace:configure.in:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:982: the top level])
+m4trace:configure.ac:982: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
+m4trace:configure.ac:982: -1- m4_pattern_allow([^GETCWD_BROKEN$])
+m4trace:configure.ac:982: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
+m4trace:configure.ac:982: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:982: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:982: -1- AC_LIBSOURCE([getcwd.c])
+m4trace:configure.ac:984: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:778: BASH_FUNC_POSIX_SETJMP is expanded from...
-configure.in:961: the top level])
-m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
-m4trace:configure.in:961: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$])
-m4trace:configure.in:962: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:984: the top level])
+m4trace:configure.ac:984: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
+m4trace:configure.ac:984: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$])
+m4trace:configure.ac:985: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:829: BASH_FUNC_STRCOLL is expanded from...
-configure.in:962: the top level])
-m4trace:configure.in:962: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
-m4trace:configure.in:962: -1- m4_pattern_allow([^STRCOLL_BROKEN$])
-m4trace:configure.in:963: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
+configure.ac:985: the top level])
+m4trace:configure.ac:985: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
+m4trace:configure.ac:985: -1- m4_pattern_allow([^STRCOLL_BROKEN$])
+m4trace:configure.ac:986: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
@%:@undef HAVE_SNPRINTF])
-m4trace:configure.in:963: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:986: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:4065: BASH_FUNC_SNPRINTF is expanded from...
-configure.in:963: the top level])
-m4trace:configure.in:963: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
-m4trace:configure.in:963: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
-m4trace:configure.in:963: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
+configure.ac:986: the top level])
+m4trace:configure.ac:986: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
+m4trace:configure.ac:986: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
+m4trace:configure.ac:986: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
@%:@undef HAVE_SNPRINTF])
-m4trace:configure.in:964: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
+m4trace:configure.ac:987: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
@%:@undef HAVE_VSNPRINTF])
-m4trace:configure.in:964: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:987: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:4093: BASH_FUNC_VSNPRINTF is expanded from...
-configure.in:964: the top level])
-m4trace:configure.in:964: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
-m4trace:configure.in:964: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
-m4trace:configure.in:964: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
+configure.ac:987: the top level])
+m4trace:configure.ac:987: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
+m4trace:configure.ac:987: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
+m4trace:configure.ac:987: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
@%:@undef HAVE_VSNPRINTF])
-m4trace:configure.in:970: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+m4trace:configure.ac:993: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:624: BASH_FUNC_STD_PUTENV is expanded from...
-configure.in:970: the top level])
-m4trace:configure.in:970: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
-m4trace:configure.in:970: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
-m4trace:configure.in:972: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
-m4trace:configure.in:972: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
-m4trace:configure.in:975: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
-../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from...
+configure.ac:993: the top level])
+m4trace:configure.ac:993: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
+m4trace:configure.ac:993: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
+m4trace:configure.ac:995: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
+m4trace:configure.ac:995: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
+m4trace:configure.ac:998: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
+../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from...
aclocal.m4:654: BASH_FUNC_STD_UNSETENV is expanded from...
-configure.in:975: the top level])
-m4trace:configure.in:975: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
-m4trace:configure.in:975: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
-m4trace:configure.in:977: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
-m4trace:configure.in:977: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
-m4trace:configure.in:980: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:998: the top level])
+m4trace:configure.ac:998: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
+m4trace:configure.ac:998: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
+m4trace:configure.ac:1000: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
+m4trace:configure.ac:1000: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
+m4trace:configure.ac:1003: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:878: BASH_FUNC_PRINTF_A_FORMAT is expanded from...
-configure.in:980: the top level])
-m4trace:configure.in:980: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
-m4trace:configure.in:980: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$])
-m4trace:configure.in:983: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1003: the top level])
+m4trace:configure.ac:1003: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
+m4trace:configure.ac:1003: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$])
+m4trace:configure.ac:1006: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1297: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from...
-configure.in:983: the top level])
-m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
-m4trace:configure.in:983: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$])
-m4trace:configure.in:984: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1006: the top level])
+m4trace:configure.ac:1006: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
+m4trace:configure.ac:1006: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$])
+m4trace:configure.ac:1007: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1356: BASH_SYS_JOB_CONTROL_MISSING is expanded from...
-configure.in:984: the top level])
-m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
-m4trace:configure.in:984: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$])
-m4trace:configure.in:985: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1007: the top level])
+m4trace:configure.ac:1007: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
+m4trace:configure.ac:1007: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$])
+m4trace:configure.ac:1008: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1415: BASH_SYS_NAMED_PIPES is expanded from...
-configure.in:985: the top level])
-m4trace:configure.in:985: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
-m4trace:configure.in:985: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$])
-m4trace:configure.in:988: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
-m4trace:configure.in:988: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$])
-m4trace:configure.in:988: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
+configure.ac:1008: the top level])
+m4trace:configure.ac:1008: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
+m4trace:configure.ac:1008: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$])
+m4trace:configure.ac:1011: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
+m4trace:configure.ac:1011: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$])
+m4trace:configure.ac:1011: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
@%:@undef GWINSZ_IN_SYS_IOCTL])
-m4trace:configure.in:989: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+m4trace:configure.ac:1012: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1496: BASH_HAVE_TIOCSTAT is expanded from...
-configure.in:989: the top level])
-m4trace:configure.in:989: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
-m4trace:configure.in:989: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$])
-m4trace:configure.in:990: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1012: the top level])
+m4trace:configure.ac:1012: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
+m4trace:configure.ac:1012: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$])
+m4trace:configure.ac:1013: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1508: BASH_HAVE_FIONREAD is expanded from...
-configure.in:990: the top level])
-m4trace:configure.in:990: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
-m4trace:configure.in:990: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$])
-m4trace:configure.in:992: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1013: the top level])
+m4trace:configure.ac:1013: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
+m4trace:configure.ac:1013: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$])
+m4trace:configure.ac:1015: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1964: BASH_CHECK_WCONTINUED is expanded from...
-configure.in:992: the top level])
-m4trace:configure.in:992: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
-m4trace:configure.in:992: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
-m4trace:configure.in:995: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1015: the top level])
+m4trace:configure.ac:1015: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
+m4trace:configure.ac:1015: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
+m4trace:configure.ac:1018: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1526: BASH_CHECK_SPEED_T is expanded from...
-configure.in:995: the top level])
-m4trace:configure.in:995: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
-m4trace:configure.in:995: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$])
-m4trace:configure.in:996: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
-m4trace:configure.in:996: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$])
-m4trace:configure.in:997: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2765: AC_TRY_RUN is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1018: the top level])
+m4trace:configure.ac:1018: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
+m4trace:configure.ac:1018: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$])
+m4trace:configure.ac:1019: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
+m4trace:configure.ac:1019: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$])
+m4trace:configure.ac:1020: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1653: BASH_CHECK_RTSIGS is expanded from...
-configure.in:997: the top level])
-m4trace:configure.in:997: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
-m4trace:configure.in:997: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$])
-m4trace:configure.in:998: -1- AC_SUBST([SIGLIST_O])
-m4trace:configure.in:998: -1- AC_SUBST_TRACE([SIGLIST_O])
-m4trace:configure.in:998: -1- m4_pattern_allow([^SIGLIST_O$])
-m4trace:configure.in:1002: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1020: the top level])
+m4trace:configure.ac:1020: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
+m4trace:configure.ac:1020: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$])
+m4trace:configure.ac:1021: -1- AC_SUBST([SIGLIST_O])
+m4trace:configure.ac:1021: -1- AC_SUBST_TRACE([SIGLIST_O])
+m4trace:configure.ac:1021: -1- m4_pattern_allow([^SIGLIST_O$])
+m4trace:configure.ac:1025: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1605: BASH_CHECK_KERNEL_RLIMIT is expanded from...
-configure.in:1002: the top level])
-m4trace:configure.in:1002: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2591: _AC_COMPILE_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2607: AC_COMPILE_IFELSE is expanded from...
-../../lib/autoconf/general.m4:2615: AC_TRY_COMPILE is expanded from...
-../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from...
-../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from...
+configure.ac:1025: the top level])
+m4trace:configure.ac:1025: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2590: _AC_COMPILE_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2606: AC_COMPILE_IFELSE is expanded from...
+../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from...
+../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
+../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
aclocal.m4:1605: BASH_CHECK_KERNEL_RLIMIT is expanded from...
-configure.in:1002: the top level])
-m4trace:configure.in:1002: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
-m4trace:configure.in:1002: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$])
-m4trace:configure.in:1012: -1- AC_SUBST([TERMCAP_LIB])
-m4trace:configure.in:1012: -1- AC_SUBST_TRACE([TERMCAP_LIB])
-m4trace:configure.in:1012: -1- m4_pattern_allow([^TERMCAP_LIB$])
-m4trace:configure.in:1013: -1- AC_SUBST([TERMCAP_DEP])
-m4trace:configure.in:1013: -1- AC_SUBST_TRACE([TERMCAP_DEP])
-m4trace:configure.in:1013: -1- m4_pattern_allow([^TERMCAP_DEP$])
-m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
-m4trace:configure.in:1015: -1- m4_pattern_allow([^HAVE_DEV_FD$])
-m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
-m4trace:configure.in:1015: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
-m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
-m4trace:configure.in:1015: -1- m4_pattern_allow([^HAVE_DEV_FD$])
-m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
-m4trace:configure.in:1015: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
-m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
-m4trace:configure.in:1016: -1- m4_pattern_allow([^HAVE_DEV_STDIN$])
-m4trace:configure.in:1017: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
-m4trace:configure.in:1017: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$])
-m4trace:configure.in:1024: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
-m4trace:configure.in:1024: -1- m4_pattern_allow([^JOB_CONTROL$])
-m4trace:configure.in:1030: -1- AC_SUBST([JOBS_O])
-m4trace:configure.in:1030: -1- AC_SUBST_TRACE([JOBS_O])
-m4trace:configure.in:1030: -1- m4_pattern_allow([^JOBS_O$])
-m4trace:configure.in:1043: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
-m4trace:configure.in:1043: -1- m4_pattern_allow([^SVR4_2$])
-m4trace:configure.in:1044: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
-m4trace:configure.in:1044: -1- m4_pattern_allow([^SVR4$])
-m4trace:configure.in:1045: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
-m4trace:configure.in:1045: -1- m4_pattern_allow([^SVR4$])
-m4trace:configure.in:1046: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
-m4trace:configure.in:1046: -1- m4_pattern_allow([^SVR5$])
-m4trace:configure.in:1065: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
-m4trace:configure.in:1065: -1- m4_pattern_allow([^PGRP_PIPE$])
-m4trace:configure.in:1112: -1- AC_SUBST([SHOBJ_CC])
-m4trace:configure.in:1112: -1- AC_SUBST_TRACE([SHOBJ_CC])
-m4trace:configure.in:1112: -1- m4_pattern_allow([^SHOBJ_CC$])
-m4trace:configure.in:1113: -1- AC_SUBST([SHOBJ_CFLAGS])
-m4trace:configure.in:1113: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS])
-m4trace:configure.in:1113: -1- m4_pattern_allow([^SHOBJ_CFLAGS$])
-m4trace:configure.in:1114: -1- AC_SUBST([SHOBJ_LD])
-m4trace:configure.in:1114: -1- AC_SUBST_TRACE([SHOBJ_LD])
-m4trace:configure.in:1114: -1- m4_pattern_allow([^SHOBJ_LD$])
-m4trace:configure.in:1115: -1- AC_SUBST([SHOBJ_LDFLAGS])
-m4trace:configure.in:1115: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS])
-m4trace:configure.in:1115: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$])
-m4trace:configure.in:1116: -1- AC_SUBST([SHOBJ_XLDFLAGS])
-m4trace:configure.in:1116: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS])
-m4trace:configure.in:1116: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$])
-m4trace:configure.in:1117: -1- AC_SUBST([SHOBJ_LIBS])
-m4trace:configure.in:1117: -1- AC_SUBST_TRACE([SHOBJ_LIBS])
-m4trace:configure.in:1117: -1- m4_pattern_allow([^SHOBJ_LIBS$])
-m4trace:configure.in:1118: -1- AC_SUBST([SHOBJ_STATUS])
-m4trace:configure.in:1118: -1- AC_SUBST_TRACE([SHOBJ_STATUS])
-m4trace:configure.in:1118: -1- m4_pattern_allow([^SHOBJ_STATUS$])
-m4trace:configure.in:1150: -1- AC_SUBST([PROFILE_FLAGS])
-m4trace:configure.in:1150: -1- AC_SUBST_TRACE([PROFILE_FLAGS])
-m4trace:configure.in:1150: -1- m4_pattern_allow([^PROFILE_FLAGS$])
-m4trace:configure.in:1152: -1- AC_SUBST([incdir])
-m4trace:configure.in:1152: -1- AC_SUBST_TRACE([incdir])
-m4trace:configure.in:1152: -1- m4_pattern_allow([^incdir$])
-m4trace:configure.in:1153: -1- AC_SUBST([BUILD_DIR])
-m4trace:configure.in:1153: -1- AC_SUBST_TRACE([BUILD_DIR])
-m4trace:configure.in:1153: -1- m4_pattern_allow([^BUILD_DIR$])
-m4trace:configure.in:1156: -1- AC_SUBST([datarootdir])
-m4trace:configure.in:1156: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.in:1156: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.in:1157: -1- AC_SUBST([localedir])
-m4trace:configure.in:1157: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.in:1157: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.in:1159: -1- AC_SUBST([YACC])
-m4trace:configure.in:1159: -1- AC_SUBST_TRACE([YACC])
-m4trace:configure.in:1159: -1- m4_pattern_allow([^YACC$])
-m4trace:configure.in:1160: -1- AC_SUBST([AR])
-m4trace:configure.in:1160: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.in:1160: -1- m4_pattern_allow([^AR$])
-m4trace:configure.in:1161: -1- AC_SUBST([ARFLAGS])
-m4trace:configure.in:1161: -1- AC_SUBST_TRACE([ARFLAGS])
-m4trace:configure.in:1161: -1- m4_pattern_allow([^ARFLAGS$])
-m4trace:configure.in:1163: -1- AC_SUBST([BASHVERS])
-m4trace:configure.in:1163: -1- AC_SUBST_TRACE([BASHVERS])
-m4trace:configure.in:1163: -1- m4_pattern_allow([^BASHVERS$])
-m4trace:configure.in:1164: -1- AC_SUBST([RELSTATUS])
-m4trace:configure.in:1164: -1- AC_SUBST_TRACE([RELSTATUS])
-m4trace:configure.in:1164: -1- m4_pattern_allow([^RELSTATUS$])
-m4trace:configure.in:1165: -1- AC_SUBST([DEBUG])
-m4trace:configure.in:1165: -1- AC_SUBST_TRACE([DEBUG])
-m4trace:configure.in:1165: -1- m4_pattern_allow([^DEBUG$])
-m4trace:configure.in:1166: -1- AC_SUBST([MALLOC_DEBUG])
-m4trace:configure.in:1166: -1- AC_SUBST_TRACE([MALLOC_DEBUG])
-m4trace:configure.in:1166: -1- m4_pattern_allow([^MALLOC_DEBUG$])
-m4trace:configure.in:1168: -1- AC_SUBST([host_cpu])
-m4trace:configure.in:1168: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.in:1168: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.in:1169: -1- AC_SUBST([host_vendor])
-m4trace:configure.in:1169: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.in:1169: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.in:1170: -1- AC_SUBST([host_os])
-m4trace:configure.in:1170: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.in:1170: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.in:1172: -1- AC_SUBST([LOCAL_LIBS])
-m4trace:configure.in:1172: -1- AC_SUBST_TRACE([LOCAL_LIBS])
-m4trace:configure.in:1172: -1- m4_pattern_allow([^LOCAL_LIBS$])
-m4trace:configure.in:1173: -1- AC_SUBST([LOCAL_CFLAGS])
-m4trace:configure.in:1173: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
-m4trace:configure.in:1173: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
-m4trace:configure.in:1174: -1- AC_SUBST([LOCAL_LDFLAGS])
-m4trace:configure.in:1174: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
-m4trace:configure.in:1174: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
-m4trace:configure.in:1175: -1- AC_SUBST([LOCAL_DEFS])
-m4trace:configure.in:1175: -1- AC_SUBST_TRACE([LOCAL_DEFS])
-m4trace:configure.in:1175: -1- m4_pattern_allow([^LOCAL_DEFS$])
-m4trace:configure.in:1180: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
+configure.ac:1025: the top level])
+m4trace:configure.ac:1025: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
+m4trace:configure.ac:1025: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$])
+m4trace:configure.ac:1035: -1- AC_SUBST([TERMCAP_LIB])
+m4trace:configure.ac:1035: -1- AC_SUBST_TRACE([TERMCAP_LIB])
+m4trace:configure.ac:1035: -1- m4_pattern_allow([^TERMCAP_LIB$])
+m4trace:configure.ac:1036: -1- AC_SUBST([TERMCAP_DEP])
+m4trace:configure.ac:1036: -1- AC_SUBST_TRACE([TERMCAP_DEP])
+m4trace:configure.ac:1036: -1- m4_pattern_allow([^TERMCAP_DEP$])
+m4trace:configure.ac:1038: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
+m4trace:configure.ac:1038: -1- m4_pattern_allow([^HAVE_DEV_FD$])
+m4trace:configure.ac:1038: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
+m4trace:configure.ac:1038: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
+m4trace:configure.ac:1038: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
+m4trace:configure.ac:1038: -1- m4_pattern_allow([^HAVE_DEV_FD$])
+m4trace:configure.ac:1038: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
+m4trace:configure.ac:1038: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
+m4trace:configure.ac:1039: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
+m4trace:configure.ac:1039: -1- m4_pattern_allow([^HAVE_DEV_STDIN$])
+m4trace:configure.ac:1040: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
+m4trace:configure.ac:1040: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$])
+m4trace:configure.ac:1047: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
+m4trace:configure.ac:1047: -1- m4_pattern_allow([^JOB_CONTROL$])
+m4trace:configure.ac:1053: -1- AC_SUBST([JOBS_O])
+m4trace:configure.ac:1053: -1- AC_SUBST_TRACE([JOBS_O])
+m4trace:configure.ac:1053: -1- m4_pattern_allow([^JOBS_O$])
+m4trace:configure.ac:1066: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
+m4trace:configure.ac:1066: -1- m4_pattern_allow([^SVR4_2$])
+m4trace:configure.ac:1067: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
+m4trace:configure.ac:1067: -1- m4_pattern_allow([^SVR4$])
+m4trace:configure.ac:1068: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
+m4trace:configure.ac:1068: -1- m4_pattern_allow([^SVR4$])
+m4trace:configure.ac:1069: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
+m4trace:configure.ac:1069: -1- m4_pattern_allow([^SVR5$])
+m4trace:configure.ac:1088: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
+m4trace:configure.ac:1088: -1- m4_pattern_allow([^PGRP_PIPE$])
+m4trace:configure.ac:1136: -1- AC_SUBST([SHOBJ_CC])
+m4trace:configure.ac:1136: -1- AC_SUBST_TRACE([SHOBJ_CC])
+m4trace:configure.ac:1136: -1- m4_pattern_allow([^SHOBJ_CC$])
+m4trace:configure.ac:1137: -1- AC_SUBST([SHOBJ_CFLAGS])
+m4trace:configure.ac:1137: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS])
+m4trace:configure.ac:1137: -1- m4_pattern_allow([^SHOBJ_CFLAGS$])
+m4trace:configure.ac:1138: -1- AC_SUBST([SHOBJ_LD])
+m4trace:configure.ac:1138: -1- AC_SUBST_TRACE([SHOBJ_LD])
+m4trace:configure.ac:1138: -1- m4_pattern_allow([^SHOBJ_LD$])
+m4trace:configure.ac:1139: -1- AC_SUBST([SHOBJ_LDFLAGS])
+m4trace:configure.ac:1139: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS])
+m4trace:configure.ac:1139: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$])
+m4trace:configure.ac:1140: -1- AC_SUBST([SHOBJ_XLDFLAGS])
+m4trace:configure.ac:1140: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS])
+m4trace:configure.ac:1140: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$])
+m4trace:configure.ac:1141: -1- AC_SUBST([SHOBJ_LIBS])
+m4trace:configure.ac:1141: -1- AC_SUBST_TRACE([SHOBJ_LIBS])
+m4trace:configure.ac:1141: -1- m4_pattern_allow([^SHOBJ_LIBS$])
+m4trace:configure.ac:1142: -1- AC_SUBST([SHOBJ_STATUS])
+m4trace:configure.ac:1142: -1- AC_SUBST_TRACE([SHOBJ_STATUS])
+m4trace:configure.ac:1142: -1- m4_pattern_allow([^SHOBJ_STATUS$])
+m4trace:configure.ac:1174: -1- AC_SUBST([PROFILE_FLAGS])
+m4trace:configure.ac:1174: -1- AC_SUBST_TRACE([PROFILE_FLAGS])
+m4trace:configure.ac:1174: -1- m4_pattern_allow([^PROFILE_FLAGS$])
+m4trace:configure.ac:1176: -1- AC_SUBST([incdir])
+m4trace:configure.ac:1176: -1- AC_SUBST_TRACE([incdir])
+m4trace:configure.ac:1176: -1- m4_pattern_allow([^incdir$])
+m4trace:configure.ac:1177: -1- AC_SUBST([BUILD_DIR])
+m4trace:configure.ac:1177: -1- AC_SUBST_TRACE([BUILD_DIR])
+m4trace:configure.ac:1177: -1- m4_pattern_allow([^BUILD_DIR$])
+m4trace:configure.ac:1180: -1- AC_SUBST([datarootdir])
+m4trace:configure.ac:1180: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:1180: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:1181: -1- AC_SUBST([localedir])
+m4trace:configure.ac:1181: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:1181: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:1183: -1- AC_SUBST([YACC])
+m4trace:configure.ac:1183: -1- AC_SUBST_TRACE([YACC])
+m4trace:configure.ac:1183: -1- m4_pattern_allow([^YACC$])
+m4trace:configure.ac:1184: -1- AC_SUBST([AR])
+m4trace:configure.ac:1184: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:1184: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:1185: -1- AC_SUBST([ARFLAGS])
+m4trace:configure.ac:1185: -1- AC_SUBST_TRACE([ARFLAGS])
+m4trace:configure.ac:1185: -1- m4_pattern_allow([^ARFLAGS$])
+m4trace:configure.ac:1187: -1- AC_SUBST([BASHVERS])
+m4trace:configure.ac:1187: -1- AC_SUBST_TRACE([BASHVERS])
+m4trace:configure.ac:1187: -1- m4_pattern_allow([^BASHVERS$])
+m4trace:configure.ac:1188: -1- AC_SUBST([RELSTATUS])
+m4trace:configure.ac:1188: -1- AC_SUBST_TRACE([RELSTATUS])
+m4trace:configure.ac:1188: -1- m4_pattern_allow([^RELSTATUS$])
+m4trace:configure.ac:1189: -1- AC_SUBST([DEBUG])
+m4trace:configure.ac:1189: -1- AC_SUBST_TRACE([DEBUG])
+m4trace:configure.ac:1189: -1- m4_pattern_allow([^DEBUG$])
+m4trace:configure.ac:1190: -1- AC_SUBST([MALLOC_DEBUG])
+m4trace:configure.ac:1190: -1- AC_SUBST_TRACE([MALLOC_DEBUG])
+m4trace:configure.ac:1190: -1- m4_pattern_allow([^MALLOC_DEBUG$])
+m4trace:configure.ac:1192: -1- AC_SUBST([host_cpu])
+m4trace:configure.ac:1192: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:1192: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:1193: -1- AC_SUBST([host_vendor])
+m4trace:configure.ac:1193: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:1193: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:1194: -1- AC_SUBST([host_os])
+m4trace:configure.ac:1194: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:1194: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:1196: -1- AC_SUBST([LOCAL_LIBS])
+m4trace:configure.ac:1196: -1- AC_SUBST_TRACE([LOCAL_LIBS])
+m4trace:configure.ac:1196: -1- m4_pattern_allow([^LOCAL_LIBS$])
+m4trace:configure.ac:1197: -1- AC_SUBST([LOCAL_CFLAGS])
+m4trace:configure.ac:1197: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
+m4trace:configure.ac:1197: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
+m4trace:configure.ac:1198: -1- AC_SUBST([LOCAL_LDFLAGS])
+m4trace:configure.ac:1198: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
+m4trace:configure.ac:1198: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
+m4trace:configure.ac:1199: -1- AC_SUBST([LOCAL_DEFS])
+m4trace:configure.ac:1199: -1- AC_SUBST_TRACE([LOCAL_DEFS])
+m4trace:configure.ac:1199: -1- m4_pattern_allow([^LOCAL_DEFS$])
+m4trace:configure.ac:1204: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
lib/intl/Makefile \
lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
examples/loadables/Makefile examples/loadables/perl/Makefile])
-m4trace:configure.in:1180: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
+m4trace:configure.ac:1204: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
You should run autoupdate.], [])
-m4trace:configure.in:1180: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.in:1180: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.in:1180: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.in:1180: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.in:1180: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.ac:1204: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:1204: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:1204: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:1204: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.ac:1204: -1- AC_SUBST_TRACE([INSTALL])
diff --git a/configure b/configure
index 98bf8909..25fff61b 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac for Bash 4.3, version 4.063.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bash 4.3-release.
+# Generated by GNU Autoconf 2.69 for bash 4.3-maint.
#
# Report bugs to <bug-bash@gnu.org>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='4.3-release'
-PACKAGE_STRING='bash 4.3-release'
+PACKAGE_VERSION='4.3-maint'
+PACKAGE_STRING='bash 4.3-maint'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
PACKAGE_URL=''
@@ -1393,7 +1393,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures bash 4.3-release to adapt to many kinds of systems.
+\`configure' configures bash 4.3-maint to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1458,7 +1458,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of bash 4.3-release:";;
+ short | recursive ) echo "Configuration of bash 4.3-maint:";;
esac
cat <<\_ACEOF
@@ -1650,7 +1650,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-bash configure 4.3-release
+bash configure 4.3-maint
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2359,7 +2359,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by bash $as_me 4.3-release, which was
+It was created by bash $as_me 4.3-maint, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2753,7 +2753,7 @@ ac_config_headers="$ac_config_headers config.h"
BASHVERS=4.3
-RELSTATUS=release
+RELSTATUS=maint
case "$RELSTATUS" in
alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -11279,7 +11279,7 @@ _ACEOF
if ac_fn_c_try_run "$LINENO"; then :
bash_cv_wcwidth_broken=yes
else
- bash_cv_wcwdith_broken=no
+ bash_cv_wcwidth_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -16551,7 +16551,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by bash $as_me 4.3-release, which was
+This file was extended by bash $as_me 4.3-maint, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16617,7 +16617,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-bash config.status 4.3-release
+bash config.status 4.3-maint
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 97e8e044..d43974d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_REVISION([for Bash 4.3, version 4.063])dnl
define(bashvers, 4.3)
-define(relstatus, release)
+define(relstatus, maint)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
diff --git a/configure.ac~ b/configure.ac~
new file mode 100644
index 00000000..97e8e044
--- /dev/null
+++ b/configure.ac~
@@ -0,0 +1,1212 @@
+dnl
+dnl Configure script for bash-4.3
+dnl
+dnl report bugs to chet@po.cwru.edu
+dnl
+dnl Process this file with autoconf to produce a configure script.
+
+# Copyright (C) 1987-2013 Free Software Foundation, Inc.
+
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+AC_REVISION([for Bash 4.3, version 4.063])dnl
+
+define(bashvers, 4.3)
+define(relstatus, release)
+
+AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
+
+dnl make sure we are using a recent autoconf version
+AC_PREREQ(2.61)
+
+AC_CONFIG_SRCDIR(shell.h)
+dnl where to find install.sh, config.sub, and config.guess
+AC_CONFIG_AUX_DIR(./support)
+AC_CONFIG_HEADERS(config.h)
+
+dnl checks for version info
+BASHVERS=bashvers
+RELSTATUS=relstatus
+
+dnl defaults for debug settings
+case "$RELSTATUS" in
+alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
+*) DEBUG= MALLOC_DEBUG= ;;
+esac
+
+dnl canonicalize the host and os so we can do some tricky things before
+dnl parsing options
+AC_CANONICAL_HOST
+AC_CANONICAL_BUILD
+
+dnl configure defaults
+opt_bash_malloc=yes
+opt_purify=no
+opt_purecov=no
+opt_afs=no
+opt_curses=no
+opt_with_installed_readline=no
+
+#htmldir=
+
+dnl some systems should be configured without the bash malloc by default
+dnl and some need a special compiler or loader
+dnl look in the NOTES file for more
+case "${host_cpu}-${host_os}" in
+alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux
+*[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays
+*-osf1*) opt_bash_malloc=no ;; # other osf/1 machines
+sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2
+sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment
+mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment
+m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
+sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
+#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
+#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
+*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
+*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
+*-aix*) opt_bash_malloc=no ;; # AIX machines
+*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
+*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
+*-macos*) opt_bash_malloc=no ;; # Apple MacOS X
+*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X)
+*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X)
+*-dgux*) opt_bash_malloc=no ;; # DG/UX machines
+*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x
+*-machten4) opt_bash_malloc=no ;; # MachTen 4.x
+*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
+*-beos*) opt_bash_malloc=no ;; # they say it's suitable
+*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
+*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft
+*-nsk*) opt_bash_malloc=no ;; # HP NonStop
+*-haiku*) opt_bash_malloc=no ;; # Haiku OS
+esac
+
+# memory scrambling on free()
+case "${host_os}" in
+sco3.2v5*|sco3.2v4*) opt_memscramble=no ;;
+*) opt_memscramble=yes ;;
+esac
+
+dnl
+dnl macros for the bash debugger
+dnl
+dnl AM_PATH_LISPDIR
+AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
+
+dnl arguments to configure
+dnl packages
+AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
+AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
+AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
+AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
+AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
+AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval)
+AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval)
+
+if test "$opt_bash_malloc" = yes; then
+ MALLOC_TARGET=malloc
+ MALLOC_SRC=malloc.c
+
+ MALLOC_LIB='-lmalloc'
+ MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
+ MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
+ MALLOC_DEP='$(MALLOC_LIBRARY)'
+
+ AC_DEFINE(USING_BASH_MALLOC)
+else
+ MALLOC_LIB=
+ MALLOC_LIBRARY=
+ MALLOC_LDFLAGS=
+ MALLOC_DEP=
+fi
+
+if test "$opt_purify" = yes; then
+ PURIFY="purify "
+ AC_DEFINE(DISABLE_MALLOC_WRAPPERS)
+else
+ PURIFY=
+fi
+
+if test "$opt_purecov" = yes; then
+ PURIFY="${PURIFY}purecov"
+fi
+
+if test "$opt_afs" = yes; then
+ AC_DEFINE(AFS)
+fi
+
+if test "$opt_curses" = yes; then
+ prefer_curses=yes
+fi
+
+if test -z "${DEBUGGER_START_FILE}"; then
+ DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc'
+fi
+
+dnl optional shell features in config.h.in
+opt_minimal_config=no
+
+opt_job_control=yes
+opt_alias=yes
+opt_readline=yes
+opt_history=yes
+opt_bang_history=yes
+opt_dirstack=yes
+opt_restricted=yes
+opt_process_subst=yes
+opt_prompt_decoding=yes
+opt_select=yes
+opt_help=yes
+opt_array_variables=yes
+opt_dparen_arith=yes
+opt_extended_glob=yes
+opt_brace_expansion=yes
+opt_disabled_builtins=no
+opt_command_timing=yes
+opt_xpg_echo=no
+opt_strict_posix=no
+opt_cond_command=yes
+opt_cond_regexp=yes
+opt_coproc=yes
+opt_arith_for_command=yes
+opt_net_redirs=yes
+opt_progcomp=yes
+opt_separate_help=no
+opt_multibyte=yes
+opt_debugger=yes
+opt_single_longdoc_strings=yes
+opt_casemod_attrs=yes
+opt_casemod_expansions=yes
+opt_extglob_default=no
+opt_dircomplete_expand_default=no
+opt_globascii_default=no
+
+dnl options that affect how bash is compiled and linked
+opt_static_link=no
+opt_profiling=no
+
+dnl argument parsing for optional features
+AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
+
+dnl a minimal configuration turns everything off, but features can be
+dnl added individually
+if test $opt_minimal_config = yes; then
+ opt_job_control=no opt_alias=no opt_readline=no
+ opt_history=no opt_bang_history=no opt_dirstack=no
+ opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
+ opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
+ opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
+ opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
+ opt_net_redirs=no opt_progcomp=no opt_separate_help=no
+ opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
+ opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
+ opt_globascii_default=no
+fi
+
+AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
+AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
+AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
+AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
+AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
+AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
+AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
+AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
+AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
+AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
+AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
+AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
+AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
+AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
+AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
+AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
+AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
+AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval)
+AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval)
+AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
+AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
+AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
+AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
+AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
+AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
+AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
+AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
+AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
+AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
+AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
+AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
+AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval)
+AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval)
+AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
+AC_ARG_ENABLE(xpg-echo-default, AC_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval)
+
+dnl options that alter how bash is compiled and linked
+AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
+AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
+AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
+
+dnl So-called `precious' variables
+AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
+AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time])
+AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
+AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
+
+dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs
+
+dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs
+dnl to be run before we can check the version of an already-installed readline
+dnl library
+
+if test $opt_alias = yes; then
+AC_DEFINE(ALIAS)
+fi
+if test $opt_dirstack = yes; then
+AC_DEFINE(PUSHD_AND_POPD)
+fi
+if test $opt_restricted = yes; then
+AC_DEFINE(RESTRICTED_SHELL)
+fi
+if test $opt_process_subst = yes; then
+AC_DEFINE(PROCESS_SUBSTITUTION)
+fi
+if test $opt_prompt_decoding = yes; then
+AC_DEFINE(PROMPT_STRING_DECODE)
+fi
+if test $opt_select = yes; then
+AC_DEFINE(SELECT_COMMAND)
+fi
+if test $opt_help = yes; then
+AC_DEFINE(HELP_BUILTIN)
+fi
+if test $opt_array_variables = yes; then
+AC_DEFINE(ARRAY_VARS)
+fi
+if test $opt_dparen_arith = yes; then
+AC_DEFINE(DPAREN_ARITHMETIC)
+fi
+if test $opt_brace_expansion = yes; then
+AC_DEFINE(BRACE_EXPANSION)
+fi
+if test $opt_disabled_builtins = yes; then
+AC_DEFINE(DISABLED_BUILTINS)
+fi
+if test $opt_command_timing = yes; then
+AC_DEFINE(COMMAND_TIMING)
+fi
+if test $opt_xpg_echo = yes ; then
+AC_DEFINE(DEFAULT_ECHO_TO_XPG)
+fi
+if test $opt_strict_posix = yes; then
+AC_DEFINE(STRICT_POSIX)
+fi
+if test $opt_extended_glob = yes ; then
+AC_DEFINE(EXTENDED_GLOB)
+fi
+if test $opt_extglob_default = yes; then
+AC_DEFINE(EXTGLOB_DEFAULT, 1)
+else
+AC_DEFINE(EXTGLOB_DEFAULT, 0)
+fi
+if test $opt_cond_command = yes ; then
+AC_DEFINE(COND_COMMAND)
+fi
+if test $opt_cond_regexp = yes ; then
+AC_DEFINE(COND_REGEXP)
+fi
+if test $opt_coproc = yes; then
+AC_DEFINE(COPROCESS_SUPPORT)
+fi
+if test $opt_arith_for_command = yes; then
+AC_DEFINE(ARITH_FOR_COMMAND)
+fi
+if test $opt_net_redirs = yes; then
+AC_DEFINE(NETWORK_REDIRECTIONS)
+fi
+if test $opt_progcomp = yes; then
+AC_DEFINE(PROGRAMMABLE_COMPLETION)
+fi
+if test $opt_multibyte = no; then
+AC_DEFINE(NO_MULTIBYTE_SUPPORT)
+fi
+if test $opt_debugger = yes; then
+AC_DEFINE(DEBUGGER)
+fi
+if test $opt_casemod_attrs = yes; then
+AC_DEFINE(CASEMOD_ATTRS)
+fi
+if test $opt_casemod_expansions = yes; then
+AC_DEFINE(CASEMOD_EXPANSIONS)
+fi
+if test $opt_dircomplete_expand_default = yes; then
+AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)
+fi
+if test $opt_globascii_default = yes; then
+AC_DEFINE(GLOBASCII_DEFAULT, 1)
+else
+AC_DEFINE(GLOBASCII_DEFAULT, 0)
+fi
+
+if test $opt_memscramble = yes; then
+AC_DEFINE(MEMSCRAMBLE)
+fi
+
+if test "$opt_minimal_config" = yes; then
+ TESTSCRIPT=run-minimal
+else
+ TESTSCRIPT=run-all
+fi
+
+HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
+if test "$opt_separate_help" != no; then
+ if test "$opt_separate_help" = "yes" ; then
+ HELPDIR='${datadir}/bash'
+ else
+ HELPDIR=$opt_separate_help
+ fi
+ HELPDIRDEFINE='-H ${HELPDIR}'
+ HELPINSTALL='install-help'
+ HELPFILES_TARGET='helpdoc'
+fi
+HELPSTRINGS=
+if test "$opt_single_longdoc_strings" != "yes"; then
+ HELPSTRINGS='-S'
+fi
+
+dnl now substitute in the values generated by arguments
+AC_SUBST(TESTSCRIPT)
+AC_SUBST(PURIFY)
+AC_SUBST(MALLOC_TARGET)
+AC_SUBST(MALLOC_SRC)
+
+AC_SUBST(MALLOC_LIB)
+AC_SUBST(MALLOC_LIBRARY)
+AC_SUBST(MALLOC_LDFLAGS)
+AC_SUBST(MALLOC_DEP)
+
+AC_SUBST(htmldir)
+
+AC_SUBST(HELPDIR)
+AC_SUBST(HELPDIRDEFINE)
+AC_SUBST(HELPINSTALL)
+AC_SUBST(HELPFILES_TARGET)
+AC_SUBST(HELPSTRINGS)
+
+echo ""
+echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
+echo ""
+
+dnl compilation checks
+dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
+dnl different environment
+AC_PROG_CC
+
+dnl test for Unix variants
+AC_ISC_POSIX
+AC_MINIX
+
+AC_SYS_LARGEFILE
+
+dnl BEGIN changes for cross-building (currently cygwin, minGW, and
+dnl (obsolete) BeOS)
+
+SIGNAMES_O=
+SIGNAMES_H=lsignames.h
+
+dnl load up the cross-building cache file -- add more cases and cache
+dnl files as necessary
+
+dnl Note that host and target machine are the same, and different than the
+dnl build machine.
+dnl Set SIGNAMES_H based on whether or not we're cross-compiling.
+
+CROSS_COMPILE=
+if test "x$cross_compiling" = "xyes"; then
+ case "${host}" in
+ *-cygwin*)
+ cross_cache=${srcdir}/cross-build/cygwin32.cache
+ ;;
+ *-mingw*)
+ cross_cache=${srcdir}/cross-build/cygwin32.cache
+ ;;
+ i[[3456]]86-*-beos*)
+ cross_cache=${srcdir}/cross-build/x86-beos.cache
+ ;;
+ *) echo "configure: cross-compiling for $host is not supported" >&2
+ ;;
+ esac
+ if test -n "${cross_cache}" && test -r "${cross_cache}"; then
+ echo "loading cross-build cache file ${cross_cache}"
+ . ${cross_cache}
+ fi
+ unset cross_cache
+ SIGNAMES_O='signames.o'
+ CROSS_COMPILE='-DCROSS_COMPILING'
+ AC_SUBST(CROSS_COMPILE)
+fi
+AC_SUBST(SIGNAMES_H)
+AC_SUBST(SIGNAMES_O)
+
+dnl END changes for cross-building
+
+dnl We want these before the checks, so the checks can modify their values.
+if test -z "$CFLAGS"; then
+ AUTO_CFLAGS="-g ${GCC+-O2}"
+ AUTO_LDFLAGS="-g ${GCC+-O2}"
+else
+ AUTO_CFLAGS= AUTO_LDFLAGS=
+fi
+
+dnl default values
+CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
+# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX
+
+dnl handle options that alter how bash is compiled and linked
+dnl these must come after the test for cc/gcc
+if test "$opt_profiling" = "yes"; then
+ PROFILE_FLAGS=-pg
+ case "$host_os" in
+ solaris2*) ;;
+ *) opt_static_link=yes ;;
+ esac
+ DEBUG= MALLOC_DEBUG=
+fi
+
+prefer_shared=yes
+prefer_static=no
+
+if test "$opt_static_link" = yes; then
+ prefer_static=yes
+ prefer_shared=no
+ # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
+ if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
+ STATIC_LD="-static"
+ case "$host_os" in
+ solaris2*) ;;
+ *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental
+ esac
+ fi
+fi
+
+# set the appropriate make variables for building the "build tools"
+# modify defaults based on whether or not we are cross compiling, since the
+# options for the target host may not be appropriate for the build host
+if test "X$cross_compiling" = "Xno"; then
+ CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)'
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
+ # CFLAGS set above to default value if not passed in environment
+ CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
+else
+ CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
+ LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
+fi
+
+AC_SUBST(CFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(LDFLAGS)
+AC_SUBST(STATIC_LD)
+
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(CFLAGS_FOR_BUILD)
+AC_SUBST(CPPFLAGS_FOR_BUILD)
+AC_SUBST(LDFLAGS_FOR_BUILD)
+AC_SUBST(LIBS_FOR_BUILD)
+
+AC_PROG_GCC_TRADITIONAL
+
+dnl BEGIN READLINE and HISTORY LIBRARY SECTION
+dnl prepare to allow bash to be linked against an already-installed readline
+
+dnl first test that the readline version is new enough to link bash against
+if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no"
+then
+ # If the user specified --with-installed-readline=PREFIX and PREFIX
+ # is not `yes', set ac_cv_rl_prefix to PREFIX
+ test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline
+
+ RL_LIB_READLINE_VERSION
+
+ case "$ac_cv_rl_version" in
+ 5*|6*|7*|8*|9*) ;;
+ *) opt_with_installed_readline=no
+ AC_MSG_WARN([installed readline library is too old to be linked with bash])
+ AC_MSG_WARN([using private bash version])
+ ;;
+ esac
+fi
+
+TILDE_LIB=-ltilde
+if test $opt_readline = yes; then
+ AC_DEFINE(READLINE)
+ if test "$opt_with_installed_readline" != "no" ; then
+ case "$opt_with_installed_readline" in
+ yes) RL_INCLUDE= ;;
+ *) case "$RL_INCLUDEDIR" in
+ /usr/include) ;;
+ *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
+ esac
+ ;;
+ esac
+ READLINE_DEP=
+ READLINE_LIB=-lreadline
+ # section for OS versions that don't allow unresolved symbols
+ # to be compiled into dynamic libraries.
+ case "$host_os" in
+ cygwin*) TILDE_LIB= ;;
+ esac
+ else
+ RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
+ READLINE_DEP='$(READLINE_LIBRARY)'
+ # section for OS versions that ship an older/broken version of
+ # readline as a standard dynamic library and don't allow a
+ # static version specified as -llibname to override the
+ # dynamic version
+ case "${host_os}" in
+ darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
+ *) READLINE_LIB=-lreadline ;;
+ esac
+ fi
+else
+ RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
+ READLINE_LIB= READLINE_DEP=
+fi
+if test $opt_history = yes || test $opt_bang_history = yes; then
+ if test $opt_history = yes; then
+ AC_DEFINE(HISTORY)
+ fi
+ if test $opt_bang_history = yes; then
+ AC_DEFINE(BANG_HISTORY)
+ fi
+ if test "$opt_with_installed_readline" != "no"; then
+ HIST_LIBDIR=$RL_LIBDIR
+ HISTORY_DEP=
+ HISTORY_LIB=-lhistory
+ case "$opt_with_installed_readline" in
+ yes) RL_INCLUDE= ;;
+ *) case "$RL_INCLUDEDIR" in
+ /usr/include) ;;
+ *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;;
+ esac
+ ;;
+ esac
+ else
+ HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
+ HISTORY_DEP='$(HISTORY_LIBRARY)'
+ # section for OS versions that ship an older version of
+ # readline as a standard dynamic library and don't allow a
+ # static version specified as -llibname to override the
+ # dynamic version
+ case "${host_os}" in
+ darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;;
+ *) HISTORY_LIB=-lhistory ;;
+ esac
+ fi
+else
+ HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline'
+ HISTORY_LIB= HISTORY_DEP=
+fi
+AC_SUBST(READLINE_LIB)
+AC_SUBST(READLINE_DEP)
+AC_SUBST(RL_LIBDIR)
+AC_SUBST(RL_INCLUDEDIR)
+AC_SUBST(RL_INCLUDE)
+AC_SUBST(HISTORY_LIB)
+AC_SUBST(HISTORY_DEP)
+AC_SUBST(HIST_LIBDIR)
+AC_SUBST(TILDE_LIB)
+
+dnl END READLINE and HISTORY LIBRARY SECTION
+
+dnl programs needed by the build and install process
+AC_PROG_INSTALL
+AC_CHECK_TOOL(AR, ar)
+dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
+dnl This allows people to set it when running configure or make
+test -n "$ARFLAGS" || ARFLAGS="cr"
+AC_PROG_RANLIB
+AC_PROG_YACC
+AC_PROG_MAKE_SET
+
+case "$ac_cv_prog_YACC" in
+*bison*) ;;
+*) AC_MSG_WARN([bison not available; needed to process parse.y]) ;;
+esac
+
+case "$host_os" in
+opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;;
+*) MAKE_SHELL=/bin/sh ;;
+esac
+AC_SUBST(MAKE_SHELL)
+
+dnl this is similar to the expanded AC_PROG_RANLIB
+if test x$SIZE = x; then
+ if test x$ac_tool_prefix = x; then
+ SIZE=size
+ else
+ SIZE=${ac_tool_prefix}size
+ save_IFS=$IFS ; IFS=:
+ size_found=0
+ for dir in $PATH; do
+ if test -x $dir/$SIZE ; then
+ size_found=1
+ break
+ fi
+ done
+ if test $size_found -eq 0; then
+ SIZE=:
+ fi
+ IFS=$save_IFS
+ fi
+fi
+AC_SUBST(SIZE)
+
+m4_include([m4/stat-time.m4])
+m4_include([m4/timespec.m4])
+
+dnl Turn on any extensions available in the GNU C library.
+AC_DEFINE(_GNU_SOURCE, 1)
+
+dnl C compiler characteristics
+AC_C_CONST
+AC_C_INLINE
+AC_C_BIGENDIAN
+AC_C_STRINGIZE
+AC_C_LONG_DOUBLE
+AC_C_PROTOTYPES
+AC_C_CHAR_UNSIGNED
+AC_C_VOLATILE
+AC_C_RESTRICT
+
+dnl initialize GNU gettext
+AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+
+dnl header files
+AC_HEADER_DIRENT
+AC_HEADER_TIME
+
+BASH_HEADER_INTTYPES
+
+AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
+ memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
+ stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
+ regex.h syslog.h ulimit.h)
+AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
+ sys/resource.h sys/param.h sys/socket.h sys/stat.h \
+ sys/time.h sys/times.h sys/types.h sys/wait.h)
+AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
+
+dnl sys/ptem.h requires definitions from sys/stream.h on systems where it
+dnl exists
+AC_CHECK_HEADER(sys/ptem.h, , ,[[
+#if HAVE_SYS_STREAM_H
+# include <sys/stream.h>
+#endif
+]])
+
+dnl special checks for libc functions
+AC_FUNC_ALLOCA
+AC_FUNC_GETPGRP
+AC_FUNC_SETVBUF_REVERSED
+AC_FUNC_VPRINTF
+AC_FUNC_STRCOLL
+
+dnl if we're not using the bash malloc but require the C alloca, set things
+dnl up to build a libmalloc.a containing only alloca.o
+
+if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then
+ MALLOC_TARGET=alloca
+ MALLOC_SRC=alloca.c
+
+ MALLOC_LIB='-lmalloc'
+ MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a'
+ MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
+ MALLOC_DEP='$(MALLOC_LIBRARY)'
+fi
+
+dnl if vprintf is not in libc, see if it's defined in stdio.h
+if test "$ac_cv_func_vprintf" = no; then
+ AC_MSG_CHECKING(for declaration of vprintf in stdio.h)
+ AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes)
+ AC_MSG_RESULT($ac_cv_func_vprintf)
+ if test $ac_cv_func_vprintf = yes; then
+ AC_DEFINE(HAVE_VPRINTF)
+ fi
+fi
+
+if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
+ AC_LIBOBJ(vprint)
+fi
+
+dnl signal stuff
+AC_TYPE_SIGNAL
+
+dnl checks for certain version-specific system calls and libc functions
+AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
+AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
+
+dnl checks for missing libc functions
+AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
+
+dnl checks for system calls
+AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
+ getpagesize getpeername getrlimit getrusage gettimeofday \
+ kill killpg lstat readlink sbrk select setdtablesize \
+ setitimer tcgetpgrp uname ulimit waitpid)
+AC_REPLACE_FUNCS(rename)
+
+dnl checks for c library functions
+AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
+ getaddrinfo gethostbyname getservbyname getservent inet_aton \
+ imaxdiv memmove pathconf putenv raise regcomp regexec \
+ setenv setlinebuf setlocale setvbuf siginterrupt strchr \
+ sysconf syslog tcgetattr times ttyname tzset unsetenv)
+
+AC_CHECK_FUNCS(vasprintf asprintf)
+AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit)
+AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
+AC_REPLACE_FUNCS(getcwd memset)
+AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
+AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
+AC_REPLACE_FUNCS(dprintf)
+AC_REPLACE_FUNCS(strchrnul)
+AC_REPLACE_FUNCS(strdup)
+
+AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
+
+AC_CHECK_DECLS([confstr])
+AC_CHECK_DECLS([printf])
+AC_CHECK_DECLS([sbrk])
+AC_CHECK_DECLS([setregid])
+AC_CHECK_DECLS([strcpy])
+AC_CHECK_DECLS([strsignal])
+
+dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
+AC_CHECK_DECLS([strtold], [
+ AC_MSG_CHECKING([for broken strtold])
+ AC_CACHE_VAL(bash_cv_strtold_broken,
+ [AC_TRY_COMPILE(
+ [#include <stdlib.h>],
+ [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
+ bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
+ [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
+ ]
+ )
+ AC_MSG_RESULT($bash_cv_strtold_broken)
+ if test "$bash_cv_strtold_broken" = "yes" ; then
+ AC_DEFINE(STRTOLD_BROKEN)
+ fi
+])
+
+BASH_CHECK_DECL(strtoimax)
+BASH_CHECK_DECL(strtol)
+BASH_CHECK_DECL(strtoll)
+BASH_CHECK_DECL(strtoul)
+BASH_CHECK_DECL(strtoull)
+BASH_CHECK_DECL(strtoumax)
+
+AC_FUNC_MKTIME
+
+dnl
+dnl Checks for lib/intl and related code (uses some of the output from
+dnl AM_GNU_GETTEXT)
+dnl
+
+AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
+
+dnl AC_FUNC_MALLOC
+AC_FUNC_MMAP
+AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
+ munmap stpcpy strcspn])
+
+INTL_DEP= INTL_INC= LIBINTL_H=
+if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
+ INTL_DEP='${INTL_LIBDIR}/libintl.a'
+ INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
+ LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
+fi
+AC_SUBST(INTL_DEP)
+AC_SUBST(INTL_INC)
+AC_SUBST(LIBINTL_H)
+
+dnl
+dnl End of checks needed by files in lib/intl
+dnl
+
+BASH_CHECK_MULTIBYTE
+
+dnl checks for the dynamic loading library functions in libc and libdl
+if test "$opt_static_link" != yes; then
+AC_CHECK_LIB(dl, dlopen)
+AC_CHECK_FUNCS(dlopen dlclose dlsym)
+fi
+
+dnl this defines HAVE_DECL_SYS_SIGLIST
+AC_DECL_SYS_SIGLIST
+
+dnl network functions -- check for inet_aton again
+if test "$ac_cv_func_inet_aton" != 'yes'; then
+BASH_FUNC_INET_ATON
+fi
+
+dnl libraries
+dnl this is reportedly no longer necessary for irix[56].?
+case "$host_os" in
+irix4*) AC_CHECK_LIB(sun, getpwent) ;;
+esac
+
+dnl check for getpeername in the socket library only if it's not in libc
+if test "$ac_cv_func_getpeername" = no; then
+ BASH_CHECK_LIB_SOCKET
+fi
+dnl check for gethostbyname in socket libraries if it's not in libc
+if test "$ac_cv_func_gethostbyname" = no; then
+ BASH_FUNC_GETHOSTBYNAME
+fi
+
+dnl system types
+AC_TYPE_GETGROUPS
+AC_TYPE_OFF_T
+AC_TYPE_MODE_T
+AC_TYPE_UID_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_CHECK_TYPE(ssize_t, int)
+AC_CHECK_TYPE(time_t, long)
+
+BASH_TYPE_LONG_LONG
+BASH_TYPE_UNSIGNED_LONG_LONG
+
+AC_TYPE_SIGNAL
+BASH_TYPE_SIG_ATOMIC_T
+
+AC_CHECK_SIZEOF(char, 1)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(char *, 4)
+AC_CHECK_SIZEOF(double, 8)
+AC_CHECK_SIZEOF([long long], 8)
+
+AC_CHECK_TYPE(u_int, [unsigned int])
+AC_CHECK_TYPE(u_long, [unsigned long])
+
+BASH_TYPE_BITS16_T
+BASH_TYPE_U_BITS16_T
+BASH_TYPE_BITS32_T
+BASH_TYPE_U_BITS32_T
+BASH_TYPE_BITS64_T
+
+BASH_TYPE_PTRDIFF_T
+
+dnl structures
+AC_HEADER_STAT
+
+dnl system services
+AC_SYS_INTERPRETER
+if test $ac_cv_sys_interpreter = yes; then
+AC_DEFINE(HAVE_HASH_BANG_EXEC)
+fi
+
+dnl Miscellaneous Bash tests
+if test "$ac_cv_func_lstat" = "no"; then
+BASH_FUNC_LSTAT
+fi
+
+dnl behavior of system calls and library functions
+BASH_FUNC_CTYPE_NONASCII
+BASH_FUNC_DUP2_CLOEXEC_CHECK
+BASH_SYS_PGRP_SYNC
+BASH_SYS_SIGNAL_VINTAGE
+
+dnl checking for the presence of certain library symbols
+BASH_SYS_ERRLIST
+BASH_SYS_SIGLIST
+BASH_UNDER_SYS_SIGLIST
+
+dnl various system types
+BASH_TYPE_SIGHANDLER
+BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
+BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
+BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
+BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
+BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
+BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
+if test "$ac_cv_header_sys_socket_h" = "yes"; then
+BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
+fi
+BASH_TYPE_RLIMIT
+
+AC_CHECK_SIZEOF(intmax_t, 8)
+
+dnl presence and contents of structures used by system calls
+BASH_STRUCT_TERMIOS_LDISC
+BASH_STRUCT_TERMIO_LDISC
+BASH_STRUCT_DIRENT_D_INO
+BASH_STRUCT_DIRENT_D_FILENO
+BASH_STRUCT_DIRENT_D_NAMLEN
+BASH_STRUCT_WINSIZE
+BASH_STRUCT_TIMEVAL
+AC_CHECK_MEMBERS([struct stat.st_blocks])
+AC_STRUCT_TM
+AC_STRUCT_TIMEZONE
+BASH_STRUCT_TIMEZONE
+
+BASH_STRUCT_WEXITSTATUS_OFFSET
+
+BASH_CHECK_TYPE_STRUCT_TIMESPEC
+BASH_STAT_TIME
+
+dnl presence and behavior of C library functions
+BASH_FUNC_STRSIGNAL
+BASH_FUNC_OPENDIR_CHECK
+BASH_FUNC_ULIMIT_MAXFDS
+BASH_FUNC_FPURGE
+BASH_FUNC_GETENV
+if test "$ac_cv_func_getcwd" = "yes"; then
+BASH_FUNC_GETCWD
+fi
+BASH_FUNC_POSIX_SETJMP
+BASH_FUNC_STRCOLL
+BASH_FUNC_SNPRINTF
+BASH_FUNC_VSNPRINTF
+
+dnl If putenv or unsetenv is not present, set the right define so the
+dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
+
+if test "$ac_cv_func_putenv" = "yes"; then
+BASH_FUNC_STD_PUTENV
+else
+AC_DEFINE(HAVE_STD_PUTENV)
+fi
+if test "$ac_cv_func_unsetenv" = "yes"; then
+BASH_FUNC_STD_UNSETENV
+else
+AC_DEFINE(HAVE_STD_UNSETENV)
+fi
+
+BASH_FUNC_PRINTF_A_FORMAT
+
+dnl presence and behavior of OS functions
+BASH_SYS_REINSTALL_SIGHANDLERS
+BASH_SYS_JOB_CONTROL_MISSING
+BASH_SYS_NAMED_PIPES
+
+dnl presence of certain CPP defines
+AC_HEADER_TIOCGWINSZ
+BASH_HAVE_TIOCSTAT
+BASH_HAVE_FIONREAD
+
+BASH_CHECK_WCONTINUED
+
+dnl miscellaneous
+BASH_CHECK_SPEED_T
+BASH_CHECK_GETPW_FUNCS
+BASH_CHECK_RTSIGS
+BASH_CHECK_SYS_SIGLIST
+
+dnl special checks
+case "$host_os" in
+hpux*) BASH_CHECK_KERNEL_RLIMIT ;;
+esac
+
+if test "$opt_readline" = yes; then
+dnl yuck
+case "$host_os" in
+aix*) prefer_curses=yes ;;
+esac
+BASH_CHECK_LIB_TERMCAP
+fi
+AC_SUBST(TERMCAP_LIB)
+AC_SUBST(TERMCAP_DEP)
+
+BASH_CHECK_DEV_FD
+BASH_CHECK_DEV_STDIN
+BASH_SYS_DEFAULT_MAIL_DIR
+
+if test "$bash_cv_job_control_missing" = missing; then
+ opt_job_control=no
+fi
+
+if test "$opt_job_control" = yes; then
+AC_DEFINE(JOB_CONTROL)
+JOBS_O=jobs.o
+else
+JOBS_O=nojobs.o
+fi
+
+AC_SUBST(JOBS_O)
+
+dnl Defines that we want to propagate to the Makefiles in subdirectories,
+dnl like glob and readline
+
+LOCAL_DEFS=-DSHELL
+
+dnl use this section to possibly define more cpp variables, specify local
+dnl libraries, and specify any additional local cc or ld flags
+dnl
+dnl this should really go away someday
+
+case "${host_os}" in
+sysv4.2*) AC_DEFINE(SVR4_2)
+ AC_DEFINE(SVR4) ;;
+sysv4*) AC_DEFINE(SVR4) ;;
+sysv5*) AC_DEFINE(SVR5) ;;
+hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
+hpux*) LOCAL_CFLAGS=-DHPUX ;;
+dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
+isc*) LOCAL_CFLAGS=-Disc386 ;;
+rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
+darwin*) LOCAL_CFLAGS=-DMACOSX ;;
+sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;;
+sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;;
+sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
+sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
+solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
+solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;;
+solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;;
+solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;;
+solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
+lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
+ case "`uname -r`" in
+ 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;;
+ esac ;;
+*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
+*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
+powerux*) LOCAL_LIBS="-lgen" ;;
+cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;;
+*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;;
+esac
+
+dnl Stanza for OS/compiler pair-specific flags
+case "${host_os}-${CC}" in
+aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
+aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
+bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
+esac
+
+dnl FreeBSD-3.x can have either a.out or ELF
+case "${host_os}" in
+freebsd[[3-9]]*)
+ if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then
+ LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
+ fi ;;
+freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
+dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
+esac
+
+case "$host_cpu" in
+*cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it
+esac
+
+case "$host_cpu-$host_os" in
+ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;;
+esac
+
+case "$host_cpu-$host_vendor-$host_os" in
+m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
+mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
+esac
+
+#
+# Shared object configuration section. These values are generated by
+# ${srcdir}/support/shobj-conf
+#
+if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
+then
+ AC_MSG_CHECKING(shared object configuration for loadable builtins)
+ eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
+ AC_SUBST(SHOBJ_CC)
+ AC_SUBST(SHOBJ_CFLAGS)
+ AC_SUBST(SHOBJ_LD)
+ AC_SUBST(SHOBJ_LDFLAGS)
+ AC_SUBST(SHOBJ_XLDFLAGS)
+ AC_SUBST(SHOBJ_LIBS)
+ AC_SUBST(SHOBJ_STATUS)
+ AC_MSG_RESULT($SHOBJ_STATUS)
+fi
+
+# try to create a directory tree if the source is elsewhere
+# this should be packaged into a script accessible via ${srcdir}/support
+case "$srcdir" in
+.) ;;
+*) for d in doc tests support lib examples; do # dirs
+ test -d $d || mkdir $d
+ done
+ for ld in readline glob tilde malloc sh termcap; do # libdirs
+ test -d lib/$ld || mkdir lib/$ld
+ done
+ test -d examples/loadables || mkdir examples/loadables # loadable builtins
+ test -d examples/loadables/perl || mkdir examples/loadables/perl
+ ;;
+esac
+
+BUILD_DIR=`pwd`
+case "$BUILD_DIR" in
+*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;;
+*) ;;
+esac
+
+if test -z "$localedir"; then
+ localedir='${datarootdir}/locale'
+fi
+if test -z "$datarootdir"; then
+ datarootdir='${prefix}/share'
+fi
+
+AC_SUBST(PROFILE_FLAGS)
+
+AC_SUBST(incdir)
+AC_SUBST(BUILD_DIR)
+
+# Some versions of autoconf don't substitute these automatically
+AC_SUBST(datarootdir)
+AC_SUBST(localedir)
+
+AC_SUBST(YACC)
+AC_SUBST(AR)
+AC_SUBST(ARFLAGS)
+
+AC_SUBST(BASHVERS)
+AC_SUBST(RELSTATUS)
+AC_SUBST(DEBUG)
+AC_SUBST(MALLOC_DEBUG)
+
+AC_SUBST(host_cpu)
+AC_SUBST(host_vendor)
+AC_SUBST(host_os)
+
+AC_SUBST(LOCAL_LIBS)
+AC_SUBST(LOCAL_CFLAGS)
+AC_SUBST(LOCAL_LDFLAGS)
+AC_SUBST(LOCAL_DEFS)
+
+#AC_SUBST(ALLOCA_SOURCE)
+#AC_SUBST(ALLOCA_OBJECT)
+
+AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
+ lib/intl/Makefile \
+ lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
+ lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
+ examples/loadables/Makefile examples/loadables/perl/Makefile],
+[
+# Makefile uses this timestamp file to record whether config.h is up to date.
+echo timestamp > stamp-h
+])
diff --git a/doc/FAQ b/doc/FAQ
index 1df48d5c..eae94402 100644
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -144,7 +144,7 @@ of Case Western Reserve University.
A2) What's the latest version?
-The latest version is 4.3, first made available on xx December, 2013.
+The latest version is 4.3, first made available on 26 February, 2014.
A3) Where can I get it?
diff --git a/doc/bash.0 b/doc/bash.0
index 8f2c57dd..c3b29b56 100644
--- a/doc/bash.0
+++ b/doc/bash.0
@@ -4294,16 +4294,18 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with
the llooccaall command, unless the --gg option is supplied. If a vari-
able name is followed by =_v_a_l_u_e, the value of the variable is
- set to _v_a_l_u_e. The return value is 0 unless an invalid option is
- encountered, an attempt is made to define a function using ``-f
- foo=bar'', an attempt is made to assign a value to a readonly
- variable, an attempt is made to assign a value to an array vari-
- able without using the compound assignment syntax (see AArrrraayyss
- above), one of the _n_a_m_e_s is not a valid shell variable name, an
- attempt is made to turn off readonly status for a readonly vari-
- able, an attempt is made to turn off array status for an array
- variable, or an attempt is made to display a non-existent func-
- tion with --ff.
+ set to _v_a_l_u_e. When using --aa or --AA 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 ``-f foo=bar'', an attempt is made to
+ assign a value to a readonly variable, an attempt is made to
+ assign a value to an array variable without using the compound
+ assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
+ valid shell variable name, an attempt is made to turn off read-
+ only status for a readonly variable, an attempt is made to turn
+ off array status for an array variable, or an attempt is made to
+ display a non-existent function with --ff.
ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]]
Without options, displays the list of currently remembered
diff --git a/doc/bash.html b/doc/bash.html
index a83f8b31..bba7db6c 100644
--- a/doc/bash.html
+++ b/doc/bash.html
@@ -9612,6 +9612,9 @@ command,
unless the <B>-g</B> option is supplied.
If a variable name is followed by =<I>value</I>, the value of
the variable is set to <I>value</I>.
+When using <B>-a</B> or <B>-A</B> 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
@@ -13267,6 +13270,6 @@ There may be only one active coprocess at a time.
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
-Time: 04 February 2014 09:39:07 EST
+Time: 24 February 2014 08:28:34 EST
</BODY>
</HTML>
diff --git a/doc/bashref.dvi b/doc/bashref.dvi
index ab66a965..f56627f8 100644
--- a/doc/bashref.dvi
+++ b/doc/bashref.dvi
Binary files differ
diff --git a/doc/bashref.html b/doc/bashref.html
index 5b4eec4c..6f927076 100644
--- a/doc/bashref.html
+++ b/doc/bashref.html
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on February, 4 2014 by texi2html 1.64 -->
+<!-- Created on February, 24 2014 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -5158,6 +5158,11 @@ If a variable name is followed by =<VAR>value</VAR>, the value of the variable
is set to <VAR>value</VAR>.
</P><P>
+When using <SAMP>`-a'</SAMP> or <SAMP>`-A'</SAMP> and the compound assignment syntax to
+create array variables, additional attributes do not take effect until
+subsequent assignments.
+</P><P>
+
The return status is zero unless an invalid option is encountered,
an attempt is made to define a function using <SAMP>`-f foo=bar'</SAMP>,
an attempt is made to assign a value to a readonly variable,
@@ -9415,7 +9420,7 @@ a value to a readonly variable.
<P>
<LI>
-A non-interactive shell exists with an error status if a variable
+A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a special
builtin, but not with any other simple command.
<P>
@@ -10701,6 +10706,8 @@ the input read so far, or can take additional input to complete a longer
key sequence).
If no input is received within the timeout, Readline will use the shorter
but complete key sequence.
+Readline uses this value to determine whether or not input is
+available on the current input source (<CODE>rl_instream</CODE> by default).
The value is specified in milliseconds, so a value of 1000 means that
Readline will wait one second for additional input.
If this variable is set to a value less than or equal to zero, or to a
@@ -17304,7 +17311,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>February, 4 2014</I>
+This document was generated by <I>Chet Ramey</I> on <I>February, 24 2014</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -17466,7 +17473,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>Chet Ramey</I> on <I>February, 4 2014</I>
+by <I>Chet Ramey</I> on <I>February, 24 2014</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
diff --git a/doc/bashref.info b/doc/bashref.info
index 328f883a..6f60af1c 100644
--- a/doc/bashref.info
+++ b/doc/bashref.info
@@ -3414,6 +3414,10 @@ POSIX standard.
command, unless the `-g' option is used. If a variable name is
followed by =VALUE, the value of the variable is set to VALUE.
+ When using `-a' or `-A' and the compound assignment syntax to
+ create array variables, additional attributes do not take effect
+ until subsequent assignments.
+
The return status is zero unless an invalid option is encountered,
an attempt is made to define a function using `-f foo=bar', an
attempt is made to assign a value to a readonly variable, an
@@ -6424,7 +6428,7 @@ startup files.
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 26. A non-interactive shell exists with an error status if a variable
+ 26. A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a
special builtin, but not with any other simple command.
@@ -7272,8 +7276,10 @@ Variable Settings
complete key sequence using the input read so far, or can
take additional input to complete a longer key sequence). If
no input is received within the timeout, Readline will use
- the shorter but complete key sequence. The value is
- specified in milliseconds, so a value of 1000 means that
+ the shorter but complete key sequence. Readline uses this
+ value to determine whether or not input is available on the
+ current input source (`rl_instream' by default). The value
+ is specified in milliseconds, so a value of 1000 means that
Readline will wait one second for additional input. If this
variable is set to a value less than or equal to zero, or to a
non-numeric value, Readline will wait until another key is
@@ -10574,8 +10580,8 @@ D.1 Index of Shell Builtin Commands
(line 7)
* disown: Job Control Builtins.
(line 89)
-* echo: Bash Builtins. (line 241)
-* enable: Bash Builtins. (line 303)
+* echo: Bash Builtins. (line 245)
+* enable: Bash Builtins. (line 307)
* eval: Bourne Shell Builtins.
(line 89)
* exec: Bourne Shell Builtins.
@@ -10592,26 +10598,26 @@ D.1 Index of Shell Builtin Commands
(line 137)
* hash: Bourne Shell Builtins.
(line 180)
-* help: Bash Builtins. (line 332)
+* help: Bash Builtins. (line 336)
* history: Bash History Builtins.
(line 40)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 59)
-* let: Bash Builtins. (line 353)
-* local: Bash Builtins. (line 361)
-* logout: Bash Builtins. (line 372)
-* mapfile: Bash Builtins. (line 377)
+* let: Bash Builtins. (line 357)
+* local: Bash Builtins. (line 365)
+* logout: Bash Builtins. (line 376)
+* mapfile: Bash Builtins. (line 381)
* popd: Directory Stack Builtins.
(line 39)
-* printf: Bash Builtins. (line 425)
+* printf: Bash Builtins. (line 429)
* pushd: Directory Stack Builtins.
(line 61)
* pwd: Bourne Shell Builtins.
(line 200)
-* read: Bash Builtins. (line 473)
-* readarray: Bash Builtins. (line 560)
+* read: Bash Builtins. (line 477)
+* readarray: Bash Builtins. (line 564)
* readonly: Bourne Shell Builtins.
(line 210)
* return: Bourne Shell Builtins.
@@ -10620,7 +10626,7 @@ D.1 Index of Shell Builtin Commands
* shift: Bourne Shell Builtins.
(line 245)
* shopt: The Shopt Builtin. (line 9)
-* source: Bash Builtins. (line 569)
+* source: Bash Builtins. (line 573)
* suspend: Job Control Builtins.
(line 101)
* test: Bourne Shell Builtins.
@@ -10629,12 +10635,12 @@ D.1 Index of Shell Builtin Commands
(line 334)
* trap: Bourne Shell Builtins.
(line 340)
-* type: Bash Builtins. (line 574)
-* typeset: Bash Builtins. (line 606)
-* ulimit: Bash Builtins. (line 612)
+* type: Bash Builtins. (line 578)
+* typeset: Bash Builtins. (line 610)
+* ulimit: Bash Builtins. (line 616)
* umask: Bourne Shell Builtins.
(line 389)
-* unalias: Bash Builtins. (line 703)
+* unalias: Bash Builtins. (line 707)
* unset: Bourne Shell Builtins.
(line 407)
* wait: Job Control Builtins.
@@ -10826,13 +10832,13 @@ D.3 Parameter and Variable Index
(line 27)
* MAPFILE: Bash Variables. (line 463)
* mark-modified-lines: Readline Init File Syntax.
- (line 194)
+ (line 196)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 199)
+ (line 201)
* match-hidden-files: Readline Init File Syntax.
- (line 204)
+ (line 206)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 211)
+ (line 213)
* meta-flag: Readline Init File Syntax.
(line 153)
* OLDPWD: Bash Variables. (line 467)
@@ -10843,9 +10849,9 @@ D.3 Parameter and Variable Index
(line 38)
* OSTYPE: Bash Variables. (line 474)
* output-meta: Readline Init File Syntax.
- (line 216)
+ (line 218)
* page-completions: Readline Init File Syntax.
- (line 221)
+ (line 223)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 477)
@@ -10865,19 +10871,19 @@ D.3 Parameter and Variable Index
* READLINE_POINT: Bash Variables. (line 528)
* REPLY: Bash Variables. (line 532)
* revert-all-at-newline: Readline Init File Syntax.
- (line 231)
+ (line 233)
* SECONDS: Bash Variables. (line 535)
* SHELL: Bash Variables. (line 541)
* SHELLOPTS: Bash Variables. (line 546)
* SHLVL: Bash Variables. (line 555)
* show-all-if-ambiguous: Readline Init File Syntax.
- (line 237)
+ (line 239)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 243)
+ (line 245)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 252)
+ (line 254)
* skip-completed-text: Readline Init File Syntax.
- (line 257)
+ (line 259)
* TEXTDOMAIN: Locale Translation. (line 11)
* TEXTDOMAINDIR: Locale Translation. (line 11)
* TIMEFORMAT: Bash Variables. (line 560)
@@ -10885,7 +10891,7 @@ D.3 Parameter and Variable Index
* TMPDIR: Bash Variables. (line 610)
* UID: Bash Variables. (line 614)
* visible-stats: Readline Init File Syntax.
- (line 270)
+ (line 272)

File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -11211,82 +11217,82 @@ Node: Shell Scripts113153
Node: Shell Builtin Commands115671
Node: Bourne Shell Builtins117699
Node: Bash Builtins137606
-Node: Modifying Shell Behavior165059
-Node: The Set Builtin165404
-Node: The Shopt Builtin175730
-Node: Special Builtins190151
-Node: Shell Variables191130
-Node: Bourne Shell Variables191570
-Node: Bash Variables193601
-Node: Bash Features220476
-Node: Invoking Bash221375
-Node: Bash Startup Files227153
-Node: Interactive Shells232182
-Node: What is an Interactive Shell?232592
-Node: Is this Shell Interactive?233241
-Node: Interactive Shell Behavior234056
-Node: Bash Conditional Expressions237344
-Node: Shell Arithmetic241346
-Node: Aliases244122
-Node: Arrays246678
-Node: The Directory Stack251659
-Node: Directory Stack Builtins252378
-Node: Controlling the Prompt255334
-Node: The Restricted Shell258106
-Node: Bash POSIX Mode259943
-Node: Job Control269330
-Node: Job Control Basics269790
-Node: Job Control Builtins274509
-Node: Job Control Variables278980
-Node: Command Line Editing280138
-Node: Introduction and Notation281810
-Node: Readline Interaction283432
-Node: Readline Bare Essentials284623
-Node: Readline Movement Commands286412
-Node: Readline Killing Commands287377
-Node: Readline Arguments289297
-Node: Searching290341
-Node: Readline Init File292527
-Node: Readline Init File Syntax293674
-Node: Conditional Init Constructs310511
-Node: Sample Init File313044
-Node: Bindable Readline Commands316162
-Node: Commands For Moving317369
-Node: Commands For History318513
-Node: Commands For Text322698
-Node: Commands For Killing325627
-Node: Numeric Arguments328084
-Node: Commands For Completion329223
-Node: Keyboard Macros333415
-Node: Miscellaneous Commands334103
-Node: Readline vi Mode339909
-Node: Programmable Completion340816
-Node: Programmable Completion Builtins348092
-Node: A Programmable Completion Example357838
-Node: Using History Interactively363088
-Node: Bash History Facilities363772
-Node: Bash History Builtins366771
-Node: History Interaction370699
-Node: Event Designators373404
-Node: Word Designators374626
-Node: Modifiers376265
-Node: Installing Bash377669
-Node: Basic Installation378806
-Node: Compilers and Options381498
-Node: Compiling For Multiple Architectures382239
-Node: Installation Names383903
-Node: Specifying the System Type384721
-Node: Sharing Defaults385437
-Node: Operation Controls386110
-Node: Optional Features387068
-Node: Reporting Bugs397132
-Node: Major Differences From The Bourne Shell398330
-Node: GNU Free Documentation License415189
-Node: Indexes440385
-Node: Builtin Index440839
-Node: Reserved Word Index447666
-Node: Variable Index450114
-Node: Function Index464294
-Node: Concept Index471595
+Node: Modifying Shell Behavior165232
+Node: The Set Builtin165577
+Node: The Shopt Builtin175903
+Node: Special Builtins190324
+Node: Shell Variables191303
+Node: Bourne Shell Variables191743
+Node: Bash Variables193774
+Node: Bash Features220649
+Node: Invoking Bash221548
+Node: Bash Startup Files227326
+Node: Interactive Shells232355
+Node: What is an Interactive Shell?232765
+Node: Is this Shell Interactive?233414
+Node: Interactive Shell Behavior234229
+Node: Bash Conditional Expressions237517
+Node: Shell Arithmetic241519
+Node: Aliases244295
+Node: Arrays246851
+Node: The Directory Stack251832
+Node: Directory Stack Builtins252551
+Node: Controlling the Prompt255507
+Node: The Restricted Shell258279
+Node: Bash POSIX Mode260116
+Node: Job Control269502
+Node: Job Control Basics269962
+Node: Job Control Builtins274681
+Node: Job Control Variables279152
+Node: Command Line Editing280310
+Node: Introduction and Notation281982
+Node: Readline Interaction283604
+Node: Readline Bare Essentials284795
+Node: Readline Movement Commands286584
+Node: Readline Killing Commands287549
+Node: Readline Arguments289469
+Node: Searching290513
+Node: Readline Init File292699
+Node: Readline Init File Syntax293846
+Node: Conditional Init Constructs310832
+Node: Sample Init File313365
+Node: Bindable Readline Commands316483
+Node: Commands For Moving317690
+Node: Commands For History318834
+Node: Commands For Text323019
+Node: Commands For Killing325948
+Node: Numeric Arguments328405
+Node: Commands For Completion329544
+Node: Keyboard Macros333736
+Node: Miscellaneous Commands334424
+Node: Readline vi Mode340230
+Node: Programmable Completion341137
+Node: Programmable Completion Builtins348413
+Node: A Programmable Completion Example358159
+Node: Using History Interactively363409
+Node: Bash History Facilities364093
+Node: Bash History Builtins367092
+Node: History Interaction371020
+Node: Event Designators373725
+Node: Word Designators374947
+Node: Modifiers376586
+Node: Installing Bash377990
+Node: Basic Installation379127
+Node: Compilers and Options381819
+Node: Compiling For Multiple Architectures382560
+Node: Installation Names384224
+Node: Specifying the System Type385042
+Node: Sharing Defaults385758
+Node: Operation Controls386431
+Node: Optional Features387389
+Node: Reporting Bugs397453
+Node: Major Differences From The Bourne Shell398651
+Node: GNU Free Documentation License415510
+Node: Indexes440706
+Node: Builtin Index441160
+Node: Reserved Word Index447987
+Node: Variable Index450435
+Node: Function Index464615
+Node: Concept Index471916

End Tag Table
diff --git a/doc/bashref.log b/doc/bashref.log
index 0dc385f1..2aa6b223 100644
--- a/doc/bashref.log
+++ b/doc/bashref.log
@@ -1,4 +1,4 @@
-This is TeX, Version 3.1415926 (TeX Live 2011/Fink) (format=tex 2012.4.18) 11 FEB 2014 10:59
+This is TeX, Version 3.1415926 (TeX Live 2011/Fink) (format=tex 2012.4.18) 24 FEB 2014 08:28
**/usr/homes/chet/src/bash/src/doc/bashref.texi
(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
Loading texinfo [version 2013-09-11.11]:
diff --git a/doc/bashref.pdf b/doc/bashref.pdf
index 64cf6353..45284f78 100644
--- a/doc/bashref.pdf
+++ b/doc/bashref.pdf
Binary files differ
diff --git a/doc/bashref.ps b/doc/bashref.ps
index e080c0fa..1d3bb836 100644
--- a/doc/bashref.ps
+++ b/doc/bashref.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software
%%Title: bashref.dvi
-%%CreationDate: Tue Feb 4 09:39:05 2014
+%%CreationDate: Mon Feb 24 08:28:32 2014
%%Pages: 172
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2014.02.04:0939
+%DVIPSSource: TeX output 2014.02.24:0828
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -11713,685 +11713,686 @@ b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 b(to)g(b)s(e)f
(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)s(e,)630
408 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell)h
(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630
-518 y(cases.)630 646 y(The)27 b(follo)m(wing)h(options)g(can)f(b)s(e)g
+518 y(cases.)630 654 y(The)27 b(follo)m(wing)h(options)g(can)f(b)s(e)g
(used)f(to)i(restrict)g(output)e(to)i(v)-5 b(ariables)28
-b(with)f(the)g(sp)s(ec-)630 756 y(i\014ed)j(attributes)h(or)f(to)h(giv)
-m(e)h(v)-5 b(ariables)31 b(attributes:)630 902 y Ft(-a)384
+b(with)f(the)g(sp)s(ec-)630 764 y(i\014ed)j(attributes)h(or)f(to)h(giv)
+m(e)h(v)-5 b(ariables)31 b(attributes:)630 926 y Ft(-a)384
b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra)m(y)g(v)-5
b(ariable)36 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)1110
-1011 y(page)31 b(89\).)630 1157 y Ft(-A)384 b Fu(Eac)m(h)24
+1035 y(page)31 b(89\).)630 1198 y Ft(-A)384 b Fu(Eac)m(h)24
b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m(e)j(arra)m(y)e(v)-5
b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)1110
-1267 y(page)31 b(89\).)630 1413 y Ft(-f)384 b Fu(Use)31
-b(function)f(names)g(only)-8 b(.)630 1559 y Ft(-i)384
+1307 y(page)31 b(89\).)630 1469 y Ft(-f)384 b Fu(Use)31
+b(function)f(names)g(only)-8 b(.)630 1631 y Ft(-i)384
b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f
(in)m(teger;)41 b(arithmetic)c(ev)-5 b(aluation)1110
-1669 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(87\))h
-(is)f(p)s(erformed)e(when)h(the)1110 1778 y(v)-5 b(ariable)31
-b(is)g(assigned)f(a)h(v)-5 b(alue.)630 1924 y Ft(-l)384
+1741 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(87\))h
+(is)f(p)s(erformed)e(when)h(the)1110 1851 y(v)-5 b(ariable)31
+b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2013 y Ft(-l)384
b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5
b(alue,)28 b(all)f(upp)s(er-case)e(c)m(haracters)j(are)1110
-2034 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30
-b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 2180
+2122 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30
+b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 2285
y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k Fu(the)27
b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f
-(reference)1110 2290 y(to)32 b(another)g(v)-5 b(ariable.)46
+(reference)1110 2394 y(to)32 b(another)g(v)-5 b(ariable.)46
b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g
-(v)-5 b(alue)32 b(of)1110 2399 y Fr(name)p Fu(.)39 b(All)26
+(v)-5 b(alue)32 b(of)1110 2504 y Fr(name)p Fu(.)39 b(All)26
b(references)g(and)f(assignmen)m(ts)h(to)g Fr(name)p
-Fu(,)h(except)g(for)e(c)m(hanging)1110 2509 y(the)43
+Fu(,)h(except)g(for)e(c)m(hanging)1110 2613 y(the)43
b Ft(-n)f Fu(attribute)i(itself,)j(are)c(p)s(erformed)f(on)g(the)h(v)-5
-b(ariable)44 b(referenced)1110 2619 y(b)m(y)h Fr(name)5
+b(ariable)44 b(referenced)1110 2723 y(b)m(y)h Fr(name)5
b Fu('s)46 b(v)-5 b(alue.)86 b(The)45 b Ft(-n)f Fu(attribute)j(cannot)e
-(b)s(e)g(applied)g(to)h(arra)m(y)1110 2728 y(v)-5 b(ariables.)630
-2874 y Ft(-r)384 b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23
+(b)s(e)g(applied)g(to)h(arra)m(y)1110 2833 y(v)-5 b(ariables.)630
+2995 y Ft(-r)384 b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23
b(readonly)-8 b(.)39 b(These)24 b(names)f(cannot)h(then)f(b)s(e)g
-(assigned)h(v)-5 b(alues)1110 2984 y(b)m(y)30 b(subsequen)m(t)g
-(assignmen)m(t)h(statemen)m(ts)h(or)f(unset.)630 3130
+(assigned)h(v)-5 b(alues)1110 3104 y(b)m(y)30 b(subsequen)m(t)g
+(assignmen)m(t)h(statemen)m(ts)h(or)f(unset.)630 3267
y Ft(-t)384 b Fu(Giv)m(e)33 b(eac)m(h)h Fr(name)j Fu(the)32
b Ft(trace)f Fu(attribute.)46 b(T)-8 b(raced)32 b(functions)g(inherit)g
-(the)1110 3240 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g
+(the)1110 3376 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g
(the)h(calling)h(shell.)40 b(The)27 b(trace)i(attribute)1110
-3349 y(has)h(no)g(sp)s(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630
-3495 y Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29
+3486 y(has)h(no)g(sp)s(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630
+3648 y Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29
b(is)f(assigned)h(a)f(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m
-(haracters)f(are)1110 3605 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40
+(haracters)f(are)1110 3758 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40
b(The)30 b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630
-3751 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29
+3920 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29
b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110
-3861 y(ronmen)m(t.)630 4007 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g
+4029 y(ronmen)m(t.)630 4191 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g
(`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f
-(the)g(exceptions)h(that)630 4116 y(`)p Ft(+a)p Fu(')h(ma)m(y)h(not)f
+(the)g(exceptions)h(that)630 4301 y(`)p Ft(+a)p Fu(')h(ma)m(y)h(not)f
(b)s(e)f(used)g(to)i(destro)m(y)g(an)f(arra)m(y)g(v)-5
b(ariable)31 b(and)f(`)p Ft(+r)p Fu(')g(will)g(not)g(remo)m(v)m(e)i
-(the)630 4226 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h
+(the)630 4411 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h
(function,)g Ft(declare)e Fu(mak)m(es)j(eac)m(h)f Fr(name)35
-b Fu(lo)s(cal,)630 4335 y(as)f(with)f(the)g Ft(local)f
+b Fu(lo)s(cal,)630 4520 y(as)f(with)f(the)g Ft(local)f
Fu(command,)i(unless)f(the)g Ft(-g)g Fu(option)h(is)f(used.)49
-b(If)33 b(a)h(v)-5 b(ariable)34 b(name)630 4445 y(is)c(follo)m(w)m(ed)i
+b(If)33 b(a)h(v)-5 b(ariable)34 b(name)630 4630 y(is)c(follo)m(w)m(ed)i
(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)30 b(the)h(v)-5 b(alue)31
b(of)f(the)h(v)-5 b(ariable)31 b(is)g(set)g(to)g Fr(v)-5
-b(alue)p Fu(.)630 4573 y(The)35 b(return)f(status)i(is)g(zero)g(unless)
-f(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f
-(attempt)630 4682 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f
-(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)
-630 4792 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5
+b(alue)p Fu(.)630 4766 y(When)41 b(using)g Ft(-a)g Fu(or)h
+Ft(-A)e Fu(and)h(the)h(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g
+(create)h(arra)m(y)630 4875 y(v)-5 b(ariables,)28 b(additional)f
+(attributes)g(do)f(not)h(tak)m(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)
+g(assignmen)m(ts.)630 5011 y(The)35 b(return)f(status)i(is)g(zero)g
+(unless)f(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m(tered,)h
+(an)f(attempt)630 5121 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g
+(using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h
+(assign)630 5230 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5
b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5
-b(alue)42 b(to)h(an)630 4902 y(arra)m(y)30 b(v)-5 b(ariable)30
+b(alue)42 b(to)h(an)630 5340 y(arra)m(y)30 b(v)-5 b(ariable)30
b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g
-(\(see)h(Section)f(6.7)630 5011 y([Arra)m(ys],)47 b(page)c(89\),)48
-b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5
-b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630
-5121 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
-(for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630
-5230 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
-(arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630
-5340 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
-Ft(-f)p Fu(.)p eop end
+(\(see)h(Section)f(6.7)p eop end
%%Page: 52 58
TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(52)150 299 y Ft(echo)870
-434 y(echo)47 b([-neE])f([)p Fj(arg)g Ft(...])630 568
-y Fu(Output)31 b(the)i Fr(arg)8 b Fu(s,)33 b(separated)g(b)m(y)g
-(spaces,)g(terminated)g(with)f(a)h(newline.)47 b(The)32
-b(return)630 678 y(status)f(is)f(0)h(unless)f(a)h(write)g(error)f(o)s
-(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s(eci\014ed,)f(the)h(trailing)g
-(newline)g(is)630 787 y(suppressed.)38 b(If)29 b(the)h
-Ft(-e)f Fu(option)h(is)f(giv)m(en,)i(in)m(terpretation)g(of)e(the)h
-(follo)m(wing)h(bac)m(kslash-)630 897 y(escap)s(ed)43
-b(c)m(haracters)h(is)e(enabled.)78 b(The)42 b Ft(-E)g
-Fu(option)h(disables)g(the)g(in)m(terpretation)h(of)630
-1007 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g(systems)f
-(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630
-1116 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
+b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y([Arra)m(ys],)47
+b(page)c(89\),)48 b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)
+-5 b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630
+408 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
+(for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630
+518 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
+(arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630
+628 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
+Ft(-f)p Fu(.)150 785 y Ft(echo)870 918 y(echo)47 b([-neE])f([)p
+Fj(arg)g Ft(...])630 1051 y Fu(Output)31 b(the)i Fr(arg)8
+b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h
+(newline.)47 b(The)32 b(return)630 1161 y(status)f(is)f(0)h(unless)f(a)
+h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s
+(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1270
+y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i
+(in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630
+1380 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78
+b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of)
+630 1490 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g
+(systems)f(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630
+1599 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
(used)g(to)h(dynamically)h(determine)f(whether)f(or)630
-1226 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
+1709 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
(b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630
-1335 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
-1470 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
-(sequences:)630 1630 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
-1789 y Ft(\\b)384 b Fu(bac)m(kspace)630 1949 y Ft(\\c)g
-Fu(suppress)28 b(further)h(output)630 2109 y Ft(\\e)630
-2218 y(\\E)384 b Fu(escap)s(e)630 2378 y Ft(\\f)g Fu(form)30
-b(feed)630 2538 y Ft(\\n)384 b Fu(new)30 b(line)630 2697
-y Ft(\\r)384 b Fu(carriage)32 b(return)630 2857 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 3017 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 3176 y Ft(\\\\)384 b Fu(bac)m(kslash)630 3336
+1818 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
+1952 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
+(sequences:)630 2109 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
+2266 y Ft(\\b)384 b Fu(bac)m(kspace)630 2423 y Ft(\\c)g
+Fu(suppress)28 b(further)h(output)630 2580 y Ft(\\e)630
+2689 y(\\E)384 b Fu(escap)s(e)630 2846 y Ft(\\f)g Fu(form)30
+b(feed)630 3003 y Ft(\\n)384 b Fu(new)30 b(line)630 3160
+y Ft(\\r)384 b Fu(carriage)32 b(return)630 3317 y Ft(\\t)384
+b Fu(horizon)m(tal)32 b(tab)630 3474 y Ft(\\v)384 b Fu(v)m(ertical)32
+b(tab)630 3631 y Ft(\\\\)384 b Fu(bac)m(kslash)630 3788
y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g
(whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5
-b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 3446 y(three)e(o)s(ctal)g
-(digits\))630 3605 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)
+b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 3898 y(three)e(o)s(ctal)g
+(digits\))630 4055 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)
m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5
-b(alue)39 b Fr(HH)1110 3715 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 3875 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41
+b(alue)39 b Fr(HH)1110 4164 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 4321 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41
b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5
-b(alue)41 b(is)g(the)g(hex-)1110 3984 y(adecimal)32 b(v)-5
+b(alue)41 b(is)g(the)g(hex-)1110 4431 y(adecimal)32 b(v)-5
b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630
-4144 y Ft(\\U)p Fj(HHHHHHHH)1110 4253 y Fu(the)41 b(Unico)s(de)g
+4588 y Ft(\\U)p Fj(HHHHHHHH)1110 4697 y Fu(the)41 b(Unico)s(de)g
(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41
-b(is)g(the)g(hex-)1110 4363 y(adecimal)32 b(v)-5 b(alue)31
+b(is)g(the)g(hex-)1110 4807 y(adecimal)32 b(v)-5 b(alue)31
b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150
-4523 y Ft(enable)870 4657 y(enable)46 b([-a])h([-dnps])f([-f)g
-Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 4792
+4964 y Ft(enable)870 5097 y(enable)46 b([-a])h([-dnps])f([-f)g
+Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 5230
y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56
b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630
-4902 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h
-(builtin)e(to)i(b)s(e)f(executed)h(without)630 5011 y(sp)s(ecifying)27
+5340 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h
+(builtin)e(to)i(b)s(e)f(executed)h(without)p eop end
+%%Page: 53 59
+TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(sp)s(ecifying)27
b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g
-(searc)m(hes)h(for)f(builtins)630 5121 y(b)s(efore)35
+(searc)m(hes)h(for)f(builtins)630 408 y(b)s(efore)35
b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g
Fr(name)5 b Fu(s)35 b(b)s(ecome)h(disabled.)55 b(Otherwise)630
-5230 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8
+518 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8
b(or)45 b(example,)k(to)c(use)f(the)g Ft(test)f Fu(binary)h(found)f
-(via)h Ft($PATH)630 5340 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g
+(via)h Ft($PATH)630 628 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g
(v)m(ersion,)h(t)m(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p
-Fu('.)p eop end
-%%Page: 53 59
-TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(If)45
-b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d(no)g
-Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f(shell)
-630 408 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
+Fu('.)630 762 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d
+(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f
+(shell)630 871 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h
-(enabled)630 518 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
+(enabled)630 981 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h
-(indication)h(of)630 628 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
-630 763 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
+(indication)h(of)630 1090 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
+630 1224 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
(builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5
-b(ject)630 872 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)s
-(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h
-(delete)630 982 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
-Fu(.)630 1117 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
+b(ject)630 1334 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)
+s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h
+(delete)630 1443 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
+Fu(.)630 1577 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33
-b Ft(-s)g Fu(option)630 1227 y(restricts)j Ft(enable)d
+b Ft(-s)g Fu(option)630 1687 y(restricts)j Ft(enable)d
Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54
b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630
-1336 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
+1797 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(68\).)630
-1471 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
+1931 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g
-(error)630 1581 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
-(ob)5 b(ject.)150 1742 y Ft(help)870 1877 y(help)47 b([-dms])f([)p
-Fj(pattern)p Ft(])630 2012 y Fu(Displa)m(y)40 b(helpful)e(information)h
+(error)630 2040 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
+(ob)5 b(ject.)150 2198 y Ft(help)870 2332 y(help)47 b([-dms])f([)p
+Fj(pattern)p Ft(])630 2466 y Fu(Displa)m(y)40 b(helpful)e(information)h
(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h
-Fu(is)g(sp)s(eci\014ed,)630 2122 y Ft(help)28 b Fu(giv)m(es)i(detailed)
+Fu(is)g(sp)s(eci\014ed,)630 2576 y Ft(help)28 b Fu(giv)m(es)i(detailed)
g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p
-Fu(,)g(otherwise)f(a)g(list)h(of)630 2231 y(the)h(builtins)e(is)i(prin)
-m(ted.)630 2366 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
-m(wing)h(meanings:)630 2527 y Ft(-d)384 b Fu(Displa)m(y)32
+Fu(,)g(otherwise)f(a)g(list)h(of)630 2685 y(the)h(builtins)e(is)i(prin)
+m(ted.)630 2819 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
+m(wing)h(meanings:)630 2978 y Ft(-d)384 b Fu(Displa)m(y)32
b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630
-2688 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
+3136 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630
-2849 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h
-(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3009 y Fu(The)f(return)f
+3294 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h
+(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3453 y Fu(The)f(return)f
(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g
-Fr(pattern)p Fu(.)150 3170 y Ft(let)870 3305 y(let)47
+Fr(pattern)p Fu(.)150 3611 y Ft(let)870 3745 y(let)47
b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630
-3440 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s
+3879 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s
(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74
-b(Eac)m(h)630 3550 y Fr(expression)31 b Fu(is)g(ev)-5
+b(Eac)m(h)630 3988 y Fr(expression)31 b Fu(is)g(ev)-5
b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f
-(in)f(Section)i(6.5)g([Shell)630 3660 y(Arithmetic],)51
+(in)f(Section)i(6.5)g([Shell)630 4098 y(Arithmetic],)51
b(page)46 b(87.)87 b(If)45 b(the)g(last)h Fr(expression)g
Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630
-3769 y(otherwise)31 b(0)g(is)f(returned.)150 3930 y Ft(local)870
-4065 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
-Fj(value)p Ft(])e(...)630 4200 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m
+4208 y(otherwise)31 b(0)g(is)f(returned.)150 4366 y Ft(local)870
+4500 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
+Fj(value)p Ft(])e(...)630 4634 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m
(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31
b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p
-Fu(.)630 4310 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f
+Fu(.)630 4743 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f
(the)h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59
-b Ft(local)36 b Fu(can)i(only)630 4419 y(b)s(e)j(used)h(within)f(a)i
+b Ft(local)36 b Fu(can)i(only)630 4853 y(b)s(e)j(used)h(within)f(a)i
(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43
b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630
-4529 y(restricted)c(to)g(that)g(function)f(and)f(its)i(c)m(hildren.)64
-b(The)38 b(return)f(status)h(is)h(zero)g(unless)630 4639
+4963 y(restricted)c(to)g(that)g(function)f(and)f(its)i(c)m(hildren.)64
+b(The)38 b(return)f(status)h(is)h(zero)g(unless)630 5072
y Ft(local)g Fu(is)h(used)g(outside)g(a)h(function,)h(an)e(in)m(v)-5
b(alid)41 b Fr(name)46 b Fu(is)40 b(supplied,)i(or)e
-Fr(name)45 b Fu(is)c(a)630 4748 y(readonly)30 b(v)-5
-b(ariable.)150 4909 y Ft(logout)870 5044 y(logout)46
-b([)p Fj(n)p Ft(])630 5179 y Fu(Exit)31 b(a)g(login)g(shell,)g
-(returning)e(a)i(status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m
-(t.)150 5340 y Ft(mapfile)p eop end
+Fr(name)45 b Fu(is)c(a)630 5182 y(readonly)30 b(v)-5
+b(ariable.)150 5340 y Ft(logout)p eop end
%%Page: 54 60
TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(54)870 299 y Ft(mapfile)46
-b([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g
-Fj(count)p Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 408
-y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p
-Fj(array)p Ft(])630 540 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e
-(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38
-b Fr(arra)m(y)p Fu(,)i(or)630 650 y(from)28 b(\014le)h(descriptor)f
+b(Shell)30 b(Builtin)h(Commands)2069 b(54)870 299 y Ft(logout)46
+b([)p Fj(n)p Ft(])630 429 y Fu(Exit)31 b(a)g(login)g(shell,)g
+(returning)e(a)i(status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m
+(t.)150 580 y Ft(mapfile)870 710 y(mapfile)46 b([-n)h
+Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p
+Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 819 y([-C)g Fj(callback)p
+Ft(])e([-c)i Fj(quantum)p Ft(])f([)p Fj(array)p Ft(])630
+950 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p
+Fu(,)i(or)630 1059 y(from)28 b(\014le)h(descriptor)f
Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39
b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630
-759 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 b(if)g(supplied,)g
-(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 913
-y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i
+1169 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30
+b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630
+1319 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i
Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h
-(copied.)630 1066 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g
+(copied.)630 1470 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g
Fr(arra)m(y)39 b Fu(at)31 b(index)f Fr(origin)p Fu(.)41
-b(The)30 b(default)h(index)f(is)g(0.)630 1219 y Ft(-s)384
+b(The)30 b(default)h(index)f(is)g(0.)630 1621 y Ft(-s)384
b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j Fu(lines)e(read.)630
-1373 y Ft(-t)384 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(newline)g(from)f
-(eac)m(h)h(line)g(read.)630 1526 y Ft(-u)384 b Fu(Read)31
+1771 y Ft(-t)384 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(newline)g(from)f
+(eac)m(h)h(line)g(read.)630 1922 y Ft(-u)384 b Fu(Read)31
b(lines)f(from)g(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h
-(standard)e(input.)630 1680 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33
+(standard)e(input.)630 2073 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33
b Fr(callbac)m(k)39 b Fu(eac)m(h)33 b(time)f Fr(quan)m(tum)p
Fu(P)f(lines)h(are)g(read.)45 b(The)31 b Ft(-c)g Fu(op-)1110
-1789 y(tion)g(sp)s(eci\014es)f Fr(quan)m(tum)p Fu(.)630
-1943 y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i
+2182 y(tion)g(sp)s(eci\014es)f Fr(quan)m(tum)p Fu(.)630
+2333 y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i
(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f
-Fr(callbac)m(k)p Fu(.)630 2096 y(If)36 b Ft(-C)g Fu(is)g(sp)s
+Fr(callbac)m(k)p Fu(.)630 2484 y(If)36 b Ft(-C)g Fu(is)g(sp)s
(eci\014ed)g(without)g Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h
-(5000.)60 b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 2206
+(5000.)60 b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 2593
y(ev)-5 b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f
(next)g(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630
-2315 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i
+2703 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i
(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47
-b Fu(is)630 2425 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)
+b Fu(is)630 2813 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)
g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630
-2556 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
+2943 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24
-b(assigning)630 2666 y(to)31 b(it.)630 2798 y Ft(mapfile)41
+b(assigning)630 3052 y(to)31 b(it.)630 3182 y Ft(mapfile)41
b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5
b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630
-2907 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
+3292 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38
b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150
-3061 y Ft(printf)870 3192 y(printf)46 b([-v)h Fj(var)p
-Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 3324
+3443 y Ft(printf)870 3573 y(printf)46 b([-v)h Fj(var)p
+Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 3703
y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k
Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the)
-630 3433 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
+630 3813 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
(the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5
-b(ariable)39 b Fr(v)-5 b(ar)630 3543 y Fu(rather)30 b(than)g(b)s(eing)g
-(prin)m(ted)g(to)h(the)g(standard)e(output.)630 3674
+b(ariable)39 b Fr(v)-5 b(ar)630 3922 y Fu(rather)30 b(than)g(b)s(eing)g
+(prin)m(ted)g(to)h(the)g(standard)e(output.)630 4052
y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g
(con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53
-b(plain)630 3784 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
+b(plain)630 4162 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
(copied)i(to)g(standard)f(output,)i(c)m(haracter)g(escap)s(e)e(se-)630
-3893 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
-g(the)g(standard)f(output,)i(and)f(format)630 4003 y(sp)s
+4271 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
+g(the)g(standard)f(output,)i(and)f(format)630 4381 y(sp)s
(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of)
h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630
-4113 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
+4491 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630
-4222 y(extensions:)630 4376 y Ft(\045b)384 b Fu(Causes)30
+4600 y(extensions:)630 4751 y Ft(\045b)384 b Fu(Causes)30
b Ft(printf)e Fu(to)j(expand)f(bac)m(kslash)h(escap)s(e)f(sequences)h
-(in)f(the)g(corre-)1110 4485 y(sp)s(onding)19 b Fr(argumen)m(t)p
+(in)f(the)g(corre-)1110 4861 y(sp)s(onding)19 b Fr(argumen)m(t)p
Fu(,)24 b(except)e(that)g(`)p Ft(\\c)p Fu(')e(terminates)i(output,)h
-(bac)m(kslashes)1110 4595 y(in)k(`)p Ft(\\')p Fu(',)h(`)p
+(bac)m(kslashes)1110 4970 y(in)k(`)p Ft(\\')p Fu(',)h(`)p
Ft(\\")p Fu(',)g(and)f(`)p Ft(\\?)p Fu(')g(are)h(not)f(remo)m(v)m(ed,)j
-(and)c(o)s(ctal)j(escap)s(es)f(b)s(eginning)1110 4704
+(and)c(o)s(ctal)j(escap)s(es)f(b)s(eginning)1110 5080
y(with)i(`)p Ft(\\0)p Fu(')g(ma)m(y)h(con)m(tain)h(up)d(to)i(four)f
-(digits.)630 4858 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
+(digits.)630 5230 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j
-Fu(in)d(a)i(format)1110 4967 y(that)e(can)g(b)s(e)e(reused)h(as)h
-(shell)f(input.)630 5121 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110
-5230 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i
-(string)e(resulting)h(from)e(using)1110 5340 y Fr(datefm)m(t)45
-b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74
-b(The)41 b(corresp)s(onding)p eop end
+Fu(in)d(a)i(format)1110 5340 y(that)e(can)g(b)s(e)e(reused)h(as)h
+(shell)f(input.)p eop end
%%Page: 55 61
TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(55)1110 299 y
-Fr(argumen)m(t)42 b Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g
-(n)m(um)m(b)s(er)f(of)h(seconds)g(since)1110 408 y(the)24
+b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Ft(\045\()p
+Fj(datefmt)p Ft(\)T)1110 408 y Fu(Causes)29 b Ft(printf)e
+Fu(to)j(output)f(the)g(date-time)i(string)e(resulting)h(from)e(using)
+1110 518 y Fr(datefm)m(t)45 b Fu(as)d(a)g(format)g(string)g(for)g
+Ft(strftime)p Fu(\(3\).)74 b(The)41 b(corresp)s(onding)1110
+628 y Fr(argumen)m(t)h Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)
+g(n)m(um)m(b)s(er)f(of)h(seconds)g(since)1110 737 y(the)24
b(ep)s(o)s(c)m(h.)38 b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5
b(alues)24 b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110
-518 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
+847 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110
-628 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
+956 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
(ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110
-737 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
-Ft(printf)f Fu(b)s(eha)m(vior.)630 896 y(Argumen)m(ts)f(to)h
+1066 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
+Ft(printf)f Fu(b)s(eha)m(vior.)630 1230 y(Argumen)m(ts)f(to)h
(non-string)e(format)i(sp)s(eci\014ers)e(are)h(treated)h(as)g(C)e
-(language)j(constan)m(ts,)630 1005 y(except)22 b(that)g(a)g(leading)g
+(language)j(constan)m(ts,)630 1340 y(except)22 b(that)g(a)g(leading)g
(plus)e(or)h(min)m(us)f(sign)i(is)f(allo)m(w)m(ed,)k(and)c(if)g(the)g
-(leading)h(c)m(haracter)h(is)630 1115 y(a)i(single)g(or)f(double)h
+(leading)h(c)m(haracter)h(is)630 1450 y(a)i(single)g(or)f(double)h
(quote,)h(the)f(v)-5 b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5
b(alue)25 b(of)f(the)h(follo)m(wing)h(c)m(haracter.)630
-1249 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i
+1587 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i
(consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44
-b(If)30 b(the)i Fr(for-)630 1358 y(mat)c Fu(requires)e(more)g
+b(If)30 b(the)i Fr(for-)630 1696 y(mat)c Fu(requires)e(more)g
Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f
-(sp)s(eci\014cations)630 1468 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g
+(sp)s(eci\014cations)630 1806 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g
(v)-5 b(alue)29 b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)
-s(een)g(supplied.)38 b(The)630 1577 y(return)29 b(v)-5
+s(een)g(supplied.)38 b(The)630 1915 y(return)29 b(v)-5
b(alue)31 b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150
-1736 y Ft(read)870 1870 y(read)47 b([-ers])f([-a)h Fj(aname)p
+2080 y Ft(read)870 2217 y(read)47 b([-ers])f([-a)h Fj(aname)p
Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h
-Fj(nchars)p Ft(])1061 1979 y([-N)g Fj(nchars)p Ft(])f([-p)h
+Fj(nchars)p Ft(])1061 2326 y([-N)g Fj(nchars)p Ft(])f([-p)h
Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p
-Ft(])g([)p Fj(name)f Ft(...)o(])630 2113 y Fu(One)26
+Ft(])g([)p Fj(name)f Ft(...)o(])630 2463 y Fu(One)26
b(line)h(is)g(read)f(from)h(the)f(standard)g(input,)h(or)g(from)f(the)h
-(\014le)f(descriptor)h Fr(fd)i Fu(supplied)630 2223 y(as)23
+(\014le)f(descriptor)h Fr(fd)i Fu(supplied)630 2573 y(as)23
b(an)g(argumen)m(t)h(to)f(the)h Ft(-u)e Fu(option,)j(and)e(the)g
(\014rst)f(w)m(ord)h(is)g(assigned)g(to)h(the)f(\014rst)g
-Fr(name)p Fu(,)630 2332 y(the)32 b(second)g(w)m(ord)f(to)i(the)f
+Fr(name)p Fu(,)630 2682 y(the)32 b(second)g(w)m(ord)f(to)i(the)f
(second)g Fr(name)p Fu(,)g(and)g(so)g(on,)g(with)f(lefto)m(v)m(er)j(w)m
-(ords)e(and)f(their)630 2442 y(in)m(terv)m(ening)f(separators)g
+(ords)e(and)f(their)630 2792 y(in)m(terv)m(ening)f(separators)g
(assigned)g(to)g(the)g(last)g Fr(name)p Fu(.)40 b(If)29
-b(there)h(are)g(few)m(er)f(w)m(ords)g(read)630 2552 y(from)36
+b(there)h(are)g(few)m(er)f(w)m(ords)g(read)630 2902 y(from)36
b(the)i(input)d(stream)j(than)e(names,)j(the)e(remaining)g(names)g(are)
-g(assigned)h(empt)m(y)630 2661 y(v)-5 b(alues.)40 b(The)26
+g(assigned)h(empt)m(y)630 3011 y(v)-5 b(alues.)40 b(The)26
b(c)m(haracters)j(in)d(the)i(v)-5 b(alue)27 b(of)g(the)g
Ft(IFS)f Fu(v)-5 b(ariable)28 b(are)f(used)g(to)g(split)g(the)h(line)
-630 2771 y(in)m(to)36 b(w)m(ords)e(using)g(the)h(same)g(rules)f(the)h
+630 3121 y(in)m(to)36 b(w)m(ords)e(using)g(the)h(same)g(rules)f(the)h
(shell)g(uses)f(for)g(expansion)h(\(describ)s(ed)f(ab)s(o)m(v)m(e)630
-2880 y(in)j(Section)h(3.5.7)i([W)-8 b(ord)38 b(Splitting],)i(page)e
+3230 y(in)j(Section)h(3.5.7)i([W)-8 b(ord)38 b(Splitting],)i(page)e
(29\).)63 b(The)37 b(bac)m(kslash)h(c)m(haracter)h(`)p
-Ft(\\)p Fu(')e(ma)m(y)630 2990 y(b)s(e)28 b(used)g(to)i(remo)m(v)m(e)g
+Ft(\\)p Fu(')e(ma)m(y)630 3340 y(b)s(e)28 b(used)g(to)i(remo)m(v)m(e)g
(an)m(y)f(sp)s(ecial)h(meaning)f(for)g(the)g(next)g(c)m(haracter)h
-(read)f(and)f(for)h(line)630 3099 y(con)m(tin)m(uation.)42
+(read)f(and)f(for)h(line)630 3450 y(con)m(tin)m(uation.)42
b(If)27 b(no)h(names)f(are)h(supplied,)g(the)f(line)h(read)g(is)g
-(assigned)g(to)g(the)g(v)-5 b(ariable)630 3209 y Ft(REPLY)p
+(assigned)g(to)g(the)g(v)-5 b(ariable)630 3559 y Ft(REPLY)p
Fu(.)37 b(The)23 b(return)f(co)s(de)h(is)g(zero,)j(unless)d
(end-of-\014le)g(is)h(encoun)m(tered,)h Ft(read)d Fu(times)i(out)630
-3319 y(\(in)k(whic)m(h)f(case)i(the)e(return)g(co)s(de)h(is)f(greater)i
+3669 y(\(in)k(whic)m(h)f(case)i(the)e(return)g(co)s(de)h(is)f(greater)i
(than)f(128\),)i(a)e(v)-5 b(ariable)28 b(assignmen)m(t)g(error)630
-3428 y(\(suc)m(h)g(as)h(assigning)g(to)g(a)f(readonly)h(v)-5
+3778 y(\(suc)m(h)g(as)h(assigning)g(to)g(a)f(readonly)h(v)-5
b(ariable\))29 b(o)s(ccurs,)g(or)f(an)g(in)m(v)-5 b(alid)29
-b(\014le)g(descriptor)f(is)630 3538 y(supplied)h(as)i(the)f(argumen)m
-(t)h(to)g Ft(-u)p Fu(.)630 3672 y(Options,)f(if)h(supplied,)e(ha)m(v)m
-(e)i(the)g(follo)m(wing)h(meanings:)630 3830 y Ft(-a)e
+b(\014le)g(descriptor)f(is)630 3888 y(supplied)h(as)i(the)f(argumen)m
+(t)h(to)g Ft(-u)p Fu(.)630 4025 y(Options,)f(if)h(supplied,)e(ha)m(v)m
+(e)i(the)g(follo)m(wing)h(meanings:)630 4189 y Ft(-a)e
Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m
(tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110
-3940 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29
+4299 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29
b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fr(aname)34
-b Fu(b)s(efore)1110 4049 y(the)d(assignmen)m(t.)41 b(Other)30
+b Fu(b)s(efore)1110 4408 y(the)d(assignmen)m(t.)41 b(Other)30
b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630
-4208 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
+4573 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110
-4317 y(rather)30 b(than)g(newline.)630 4475 y Ft(-e)384
+4682 y(rather)30 b(than)g(newline.)630 4847 y Ft(-e)384
b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50
-b(page)45 b(101\))i(is)1110 4585 y(used)37 b(to)i(obtain)g(the)f(line.)
+b(page)45 b(101\))i(is)1110 4956 y(used)37 b(to)i(obtain)g(the)f(line.)
65 b(Readline)39 b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110
-4695 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j
-(editing)e(settings.)630 4853 y Ft(-i)f Fj(text)162 b
+5066 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j
+(editing)e(settings.)630 5230 y Ft(-i)f Fj(text)162 b
Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j
-Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 4963 y(editing)31
-b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 5121
-y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f
-Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110
-5230 y(for)g(a)h(complete)h(line)f(of)f(input,)i(but)e(honor)g(a)h
-(delimiter)g(if)f(few)m(er)h(than)1110 5340 y Fr(nc)m(hars)34
-b Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)p
-eop end
+Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 5340 y(editing)31
+b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)p eop end
%%Page: 56 62
TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(-N)30
-b Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j(reading)e(exactly)j
-Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than)1110
-408 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)
-f(EOF)h(is)g(encoun)m(tered)g(or)1110 518 y Ft(read)f
+b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(-n)30
+b Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f
+Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110
+408 y(for)g(a)h(complete)h(line)f(of)f(input,)i(but)e(honor)g(a)h
+(delimiter)g(if)f(few)m(er)h(than)1110 518 y Fr(nc)m(hars)34
+b Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)630
+673 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j(reading)
+e(exactly)j Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than)1110
+783 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)
+f(EOF)h(is)g(encoun)m(tered)g(or)1110 892 y Ft(read)f
Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g
-(in)f(the)g(input)g(are)1110 628 y(not)g(treated)h(sp)s(ecially)f(and)f
-(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m(til)i
-Fr(nc)m(hars)1110 737 y Fu(c)m(haracters)h(are)f(read.)630
-904 y Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p
+(in)f(the)g(input)g(are)1110 1002 y(not)g(treated)h(sp)s(ecially)f(and)
+f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m(til)i
+Fr(nc)m(hars)1110 1112 y Fu(c)m(haracters)h(are)f(read.)630
+1267 y Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p
Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)
-1110 1014 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m
-(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 1123 y(from)30
-b(a)h(terminal.)630 1290 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
+1110 1377 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m
+(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 1486 y(from)30
+b(a)h(terminal.)630 1641 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
(giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h
-(c)m(haracter.)1110 1400 y(The)30 b(bac)m(kslash)i(is)f(considered)g
+(c)m(haracter.)1110 1751 y(The)30 b(bac)m(kslash)i(is)f(considered)g
(to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110
-1509 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i
-(a)g(line)f(con)m(tin)m(uation.)630 1676 y Ft(-s)384
+1861 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i
+(a)g(line)f(con)m(tin)m(uation.)630 2016 y Ft(-s)384
b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f
-(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 1785
-y(ec)m(ho)s(ed.)630 1952 y Ft(-t)i Fj(timeout)1110 2062
+(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 2125
+y(ec)m(ho)s(ed.)630 2281 y Ft(-t)i Fj(timeout)1110 2390
y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f(failure)i
-(if)g(a)g(complete)h(line)f(of)1110 2171 y(input)26 b(\(or)h(a)g(sp)s
+(if)g(a)g(complete)h(line)f(of)1110 2500 y(input)26 b(\(or)h(a)g(sp)s
(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h(is)f(not)g(read)g
-(within)f Fr(time-)1110 2281 y(out)37 b Fu(seconds.)53
+(within)f Fr(time-)1110 2609 y(out)37 b Fu(seconds.)53
b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)m(um)m(b)s(er)d
-(with)h(a)h(fractional)1110 2391 y(p)s(ortion)29 b(follo)m(wing)h(the)f
+(with)h(a)h(fractional)1110 2719 y(p)s(ortion)29 b(follo)m(wing)h(the)f
(decimal)h(p)s(oin)m(t.)40 b(This)29 b(option)g(is)g(only)g(e\013ectiv)
-m(e)j(if)1110 2500 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h
+m(e)j(if)1110 2829 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h
(terminal,)i(pip)s(e,)e(or)g(other)f(sp)s(ecial)i(\014le;)1110
-2610 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g
+2938 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g
(\014les.)42 b(If)30 b Ft(read)g Fu(times)h(out,)1110
-2719 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)
+3048 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)
m(to)h(the)e(sp)s(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p
-Fu(.)1110 2829 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e
+Fu(.)1110 3157 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e
Fu(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110
-2939 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g
+3267 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g
(input)f(is)h(a)m(v)-5 b(ailable)34 b(on)c(the)i(sp)s(eci\014ed)1110
-3048 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
-b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 3158
-y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 3324
+3377 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
+b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 3486
+y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 3641
y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h
-Fr(fd)p Fu(.)150 3491 y Ft(readarray)870 3601 y(readarray)45
+Fr(fd)p Fu(.)150 3797 y Ft(readarray)870 3906 y(readarray)45
b([-n)i Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h
-Fj(count)p Ft(])f([-t])h([-u)g Fj(fd)p Ft(])1061 3710
+Fj(count)p Ft(])f([-t])h([-u)g Fj(fd)p Ft(])1061 4016
y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p
-Fj(array)p Ft(])630 3849 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e
+Fj(array)p Ft(])630 4148 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e
(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38
-b Fr(arra)m(y)p Fu(,)i(or)630 3958 y(from)30 b(\014le)g(descriptor)h
+b Fr(arra)m(y)p Fu(,)i(or)630 4258 y(from)30 b(\014le)g(descriptor)h
Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630
-4096 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 4263
-y Ft(source)870 4401 y(source)46 b Fj(filename)630 4539
+4390 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 4545
+y Ft(source)870 4678 y(source)46 b Fj(filename)630 4810
y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g
-([Bourne)g(Shell)f(Builtins],)h(page)g(41\).)150 4706
-y Ft(type)870 4844 y(type)47 b([-afptP])e([)p Fj(name)i
-Ft(...)o(])630 4983 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
+([Bourne)g(Shell)f(Builtins],)h(page)g(41\).)150 4966
+y Ft(type)870 5098 y(type)47 b([-afptP])e([)p Fj(name)i
+Ft(...)o(])630 5230 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if)
-g(used)f(as)i(a)f(command)630 5092 y(name.)630 5230 y(If)g(the)g
-Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g
-(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p
-Fu(',)630 5340 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
-Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h
-Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)p
-eop end
+g(used)f(as)i(a)f(command)630 5340 y(name.)p eop end
%%Page: 57 63
TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(shell)35
-b(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g(w)m(ord,)h
-(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h Fr(name)40
-b Fu(is)35 b(not)630 408 y(found,)29 b(then)h(nothing)h(is)f(prin)m
-(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630
-544 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
+b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(If)41
+b(the)g Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h
+(single)g(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p
+Fu(',)630 408 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
+Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h
+Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630
+518 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g(w)
+m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h
+Fr(name)40 b Fu(is)35 b(not)630 628 y(found,)29 b(then)h(nothing)h(is)f
+(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630
+765 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g
-(that)h(w)m(ould)630 654 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
+(that)h(w)m(ould)630 874 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630
-789 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
+1011 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
(eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h
-(return)630 899 y(`)p Ft(file)p Fu('.)630 1034 y(If)f(a)g(command)g(is)
-g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f(v)-5
-b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 1144 y(sarily)h(the)f
-(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g Ft($PATH)p
-Fu(.)630 1279 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g(used,)h
-Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m(tain)i
-(an)d(executable)630 1389 y(named)32 b Fr(\014le)p Fu(.)49
-b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f(only)h
-(if)g(the)g Ft(-p)f Fu(option)i(is)630 1499 y(not)d(also)g(used.)630
-1634 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e Ft(type)g
-Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j(functions,)f(as)g
-(with)630 1744 y(the)h Ft(command)d Fu(builtin.)630 1879
-y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h(of)f(the)h
-Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h(not)630
-1989 y(found.)150 2150 y Ft(typeset)870 2286 y(typeset)46
-b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p Ft([=)p Fj(value)p
-Ft(])d(...)o(])630 2421 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g
-(supplied)f(for)h(compatibilit)m(y)i(with)e(the)g(Korn)f(shell.)44
-b(It)31 b(is)630 2531 y(a)g(synon)m(ym)f(for)g(the)g
-Ft(declare)f Fu(builtin)h(command.)150 2693 y Ft(ulimit)870
-2828 y(ulimit)46 b([-abcdefilmnpqrstuvxHST])41 b([)p
-Fj(limit)p Ft(])630 2964 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o)
-m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses)
-f(started)h(b)m(y)g(the)630 3073 y(shell,)i(on)f(systems)g(that)h(allo)
-m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i
-(it)e(is)h(in)m(terpreted)630 3183 y(as)i(follo)m(ws:)630
-3344 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)
-g(asso)s(ciated)h(with)e(a)h(resource.)630 3506 y Ft(-H)384
-b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h
-(with)e(a)h(resource.)630 3667 y Ft(-a)384 b Fu(All)31
-b(curren)m(t)f(limits)h(are)g(rep)s(orted.)630 3829 y
-Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e
-(size.)630 3990 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g
-(core)g(\014les)f(created.)630 4152 y Ft(-d)384 b Fu(The)30
-b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630
-4313 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m
-(y)f(\()p Ft(")p Fu(nice)p Ft(")p Fu(\).)630 4475 y Ft(-f)384
-b Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)
-g(shell)h(and)f(its)h(c)m(hildren.)630 4636 y Ft(-i)384
-b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e
-(signals.)630 4798 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g
-(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8
-b(.)630 4959 y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g
-(size)g(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110
-5069 y(limit\).)630 5230 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)
-m(b)s(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)
-1110 5340 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31
-b(to)g(b)s(e)e(set\).)p eop end
+(return)630 1121 y(`)p Ft(file)p Fu('.)630 1258 y(If)f(a)g(command)g
+(is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f
+(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 1367
+y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g
+Ft($PATH)p Fu(.)630 1504 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g
+(used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m
+(tain)i(an)d(executable)630 1614 y(named)32 b Fr(\014le)p
+Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f
+(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 1724 y(not)d(also)g
+(used.)630 1861 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e
+Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j
+(functions,)f(as)g(with)630 1970 y(the)h Ft(command)d
+Fu(builtin.)630 2107 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h
+(of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h
+(not)630 2217 y(found.)150 2381 y Ft(typeset)870 2518
+y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p
+Ft([=)p Fj(value)p Ft(])d(...)o(])630 2655 y Fu(The)31
+b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i
+(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 2765
+y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150
+2929 y Ft(ulimit)870 3066 y(ulimit)46 b([-abcdefilmnpqrstuvxHST])41
+b([)p Fj(limit)p Ft(])630 3203 y(ulimit)25 b Fu(pro)m(vides)h(con)m
+(trol)i(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29
+b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 3313
+y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e(con)m(trol.)41
+b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m(terpreted)630
+3422 y(as)i(follo)m(ws:)630 3587 y Ft(-S)384 b Fu(Change)30
+b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h
+(resource.)630 3751 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)
+g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)630
+3915 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s
+(orted.)630 4080 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m
+(et)i(bu\013er)e(size.)630 4244 y Ft(-c)384 b Fu(The)30
+b(maxim)m(um)g(size)h(of)g(core)g(\014les)f(created.)630
+4408 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s
+(cess's)f(data)h(segmen)m(t.)630 4573 y Ft(-e)384 b Fu(The)30
+b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p Ft(")p
+Fu(nice)p Ft(")p Fu(\).)630 4737 y Ft(-f)384 b Fu(The)30
+b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g(shell)h
+(and)f(its)h(c)m(hildren.)630 4902 y Ft(-i)384 b Fu(The)30
+b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e(signals.)630
+5066 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s
+(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 5230
+y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g
+(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 5340
+y(limit\).)p eop end
%%Page: 58 64
TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-p)384
-b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 454 y Ft(-q)384
-b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(in)f
-(POSIX)f(message)j(queues.)630 608 y Ft(-r)384 b Fu(The)30
-b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8
-b(.)630 763 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.)630
-918 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)
-h(in)f(seconds.)630 1072 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)
-m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 b(ailable)33
-b(to)e(a)f(single)i(user.)630 1227 y Ft(-v)384 b Fu(The)41
-b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5
-b(ailable)44 b(to)e(the)g(shell,)1110 1337 y(and,)30
+b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-n)384
+b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(op)s(en)f(\014le)h
+(descriptors)g(\(most)g(systems)g(do)1110 408 y(not)31
+b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)630
+567 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
+726 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
+(ytes)g(in)f(POSIX)f(message)j(queues.)630 885 y Ft(-r)384
+b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8
+b(.)630 1043 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.)
+630 1202 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g
+(time)h(in)f(seconds.)630 1361 y Ft(-u)384 b Fu(The)30
+b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5
+b(ailable)33 b(to)e(a)f(single)i(user.)630 1520 y Ft(-v)384
+b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5
+b(ailable)44 b(to)e(the)g(shell,)1110 1629 y(and,)30
b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630
-1491 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(\014le)f(lo)s(c)m(ks.)630 1646 y Ft(-T)384 b Fu(The)30
-b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(threads.)630 1801
+1788 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(\014le)f(lo)s(c)m(ks.)630 1947 y Ft(-T)384 b Fu(The)30
+b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(threads.)630 2105
y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h
Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f
-(v)-5 b(alue)37 b(of)g(the)630 1910 y(sp)s(eci\014ed)c(resource.)51
+(v)-5 b(alue)37 b(of)g(the)630 2215 y(sp)s(eci\014ed)c(resource.)51
b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34
b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e
-Fu(stand)630 2020 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g
+Fu(stand)630 2325 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g
(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8
-b(.)48 b(A)630 2130 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b)
+b(.)48 b(A)630 2434 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b)
m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g
-(limit)630 2239 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5
+(limit)630 2544 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5
b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43
-b(the)d(curren)m(t)630 2349 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit)
+b(the)d(curren)m(t)630 2653 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit)
h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f
-(the)h Ft(-H)f Fu(option)630 2458 y(is)h(supplied.)39
+(the)h Ft(-H)f Fu(option)630 2763 y(is)h(supplied.)39
b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g
Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630
-2568 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31
+2872 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31
b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46
-b(V)-8 b(alues)630 2677 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e
+b(V)-8 b(alues)630 2982 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e
(except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h
-Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 2787 y(units)g(of)g(512-b)m(yte)j
+Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 3092 y(units)g(of)g(512-b)m(yte)j
(blo)s(c)m(ks;)e(and)f Ft(-T)p Fu(,)g Ft(-b)p Fu(,)g
Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)g(are)h(unscaled)f(v)-5
-b(alues.)630 2919 y(The)34 b(return)g(status)h(is)f(zero)i(unless)e(an)
+b(alues.)630 3226 y(The)34 b(return)g(status)h(is)f(zero)i(unless)e(an)
g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h
-(or)630 3029 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f
-(limit.)150 3183 y Ft(unalias)870 3316 y(unalias)46 b([-a])g([)p
-Fj(name)h Ft(...)g(])630 3448 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f
+(or)630 3335 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f
+(limit.)150 3494 y Ft(unalias)870 3628 y(unalias)46 b([-a])g([)p
+Fj(name)h Ft(...)g(])630 3762 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f
Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71
b(If)40 b Ft(-a)f Fu(is)h(supplied,)h(all)g(aliases)h(are)630
-3557 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)
-i(6.6)f([Aliases],)h(page)f(88.)150 3785 y Fs(4.3)68
-b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 4007 y Fk(4.3.1)63
-b(The)41 b(Set)g(Builtin)150 4154 y Fu(This)35 b(builtin)h(is)g(so)g
+3872 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)
+i(6.6)f([Aliases],)h(page)f(88.)150 4104 y Fs(4.3)68
+b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 4328 y Fk(4.3.1)63
+b(The)41 b(Set)g(Builtin)150 4475 y Fu(This)35 b(builtin)h(is)g(so)g
(complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59
b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150
-4263 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f
+4584 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f
(p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h
-(and)150 4373 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150
-4528 y Ft(set)870 4660 y(set)47 b([--abefhkmnptuvxBCEHPT])41
+(and)150 4694 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150
+4852 y Ft(set)870 4987 y(set)47 b([--abefhkmnptuvxBCEHPT])41
b([-o)47 b Fj(option-name)p Ft(])e([)p Fj(argument)g
-Ft(...)o(])870 4769 y(set)i([+abefhkmnptuvxBCEHPT])42
+Ft(...)o(])870 5096 y(set)i([+abefhkmnptuvxBCEHPT])42
b([+o)47 b Fj(option-name)p Ft(])d([)p Fj(argument)h
-Ft(...)o(])630 4902 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g
+Ft(...)o(])630 5230 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g
(are)g(supplied,)g Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5
-b(alues)23 b(of)g(all)630 5011 y(shell)j(v)-5 b(ariables)27
+b(alues)23 b(of)g(all)630 5340 y(shell)j(v)-5 b(ariables)27
b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s
-(cale,)k(in)c(a)i(format)630 5121 y(that)i(ma)m(y)h(b)s(e)e(reused)g
-(as)h(input)f(for)h(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h
-(v)-5 b(ariables.)630 5230 y(Read-only)37 b(v)-5 b(ariables)37
-b(cannot)h(b)s(e)e(reset.)59 b(In)36 b Fm(posix)g Fu(mo)s(de,)i(only)f
-(shell)f(v)-5 b(ariables)38 b(are)630 5340 y(listed.)p
-eop end
+(cale,)k(in)c(a)i(format)p eop end
%%Page: 59 65
TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(When)29
+b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(that)29
+b(ma)m(y)h(b)s(e)e(reused)g(as)h(input)f(for)h(setting)h(or)e
+(resetting)i(the)f(curren)m(tly-set)h(v)-5 b(ariables.)630
+408 y(Read-only)37 b(v)-5 b(ariables)37 b(cannot)h(b)s(e)e(reset.)59
+b(In)36 b Fm(posix)g Fu(mo)s(de,)i(only)f(shell)f(v)-5
+b(ariables)38 b(are)630 518 y(listed.)630 647 y(When)29
b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f(shell)h
-(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630 408
+(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630 757
y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630
-555 y Ft(-a)384 b Fu(Mark)32 b(v)-5 b(ariables)33 b(and)e(function)h
+905 y Ft(-a)384 b Fu(Mark)32 b(v)-5 b(ariables)33 b(and)e(function)h
(whic)m(h)g(are)g(mo)s(di\014ed)f(or)h(created)h(for)f(ex-)1110
-664 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)h(of)g(subsequen)m(t)f
-(commands.)630 810 y Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f
+1014 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)h(of)g(subsequen)m(t)f
+(commands.)630 1163 y Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f
(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110
-920 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g
-(the)g(next)g(primary)g(prompt.)630 1066 y Ft(-e)384
+1272 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)
+g(the)g(next)g(primary)g(prompt.)630 1421 y Ft(-e)384
b Fu(Exit)65 b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g
-(3.2.2)h([Pip)s(elines],)1110 1176 y(page)56 b(8\),)62
+(3.2.2)h([Pip)s(elines],)1110 1530 y(page)56 b(8\),)62
b(whic)m(h)55 b(ma)m(y)h(consist)f(of)h(a)f(single)h(simple)f(command)g
-(\(see)1110 1285 y(Section)30 b(3.2.1)i([Simple)d(Commands],)g(page)h
-(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.3)1110 1395
+(\(see)1110 1640 y(Section)30 b(3.2.1)i([Simple)d(Commands],)g(page)h
+(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.3)1110 1749
y([Lists],)66 b(page)59 b(9\),)67 b(or)58 b(a)h(comp)s(ound)e(command)h
-(\(see)h(Section)g(3.2.4)1110 1504 y([Comp)s(ound)67
+(\(see)h(Section)g(3.2.4)1110 1859 y([Comp)s(ound)67
b(Commands],)77 b(page)69 b(9\))g(returns)e(a)i(non-zero)g(status.)1110
-1614 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f
-(that)h(fails)f(is)g(part)g(of)h(the)1110 1724 y(command)g(list)h
+1969 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f
+(that)h(fails)f(is)g(part)g(of)h(the)1110 2078 y(command)g(list)h
(immediately)g(follo)m(wing)g(a)g Ft(while)e Fu(or)h
-Ft(until)e Fu(k)m(eyw)m(ord,)1110 1833 y(part)61 b(of)g(the)g(test)h
+Ft(until)e Fu(k)m(eyw)m(ord,)1110 2188 y(part)61 b(of)g(the)g(test)h
(in)e(an)h Ft(if)f Fu(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g
-(command)1110 1943 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h
+(command)1110 2297 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h
Ft(||)f Fu(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110
-2052 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f
+2407 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f
(in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110
-2162 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h
+2516 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h
(with)e Ft(!)p Fu(.)48 b(If)33 b(a)g(comp)s(ound)1110
-2271 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h
-(status)f(b)s(ecause)1110 2381 y(a)k(command)g(failed)g(while)g
+2626 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h
+(status)f(b)s(ecause)1110 2736 y(a)k(command)g(failed)g(while)g
Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not)
-1110 2491 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g
+1110 2845 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g
(is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.)1110
-2619 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g
-(and)f(eac)m(h)h(subshell)f(en-)1110 2728 y(vironmen)m(t)j(separately)i
+2974 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g
+(and)f(eac)m(h)h(subshell)f(en-)1110 3084 y(vironmen)m(t)j(separately)i
(\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110
-2838 y(vironmen)m(t],)i(page)f(36\),)i(and)d(ma)m(y)h(cause)f
-(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 2947 y(cuting)d(all)g
-(the)g(commands)f(in)g(the)g(subshell.)1110 3075 y(If)41
+3193 y(vironmen)m(t],)i(page)f(36\),)i(and)d(ma)m(y)h(cause)f
+(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 3303 y(cuting)d(all)g
+(the)g(commands)f(in)g(the)g(subshell.)1110 3432 y(If)41
b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f
-(a)g(con)m(text)1110 3185 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g
+(a)g(con)m(text)1110 3541 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g
(ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110
-3294 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will)
-h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3404 y Ft(-e)25
+3651 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will)
+h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3761 y Ft(-e)25
b Fu(setting,)j(ev)m(en)e(if)g Ft(-e)f Fu(is)h(set)g(and)f(a)h(command)
-g(returns)e(a)i(failure)g(status.)1110 3513 y(If)32 b(a)i(comp)s(ound)d
+g(returns)e(a)i(failure)g(status.)1110 3870 y(If)32 b(a)i(comp)s(ound)d
(command)i(or)g(shell)g(function)f(sets)i Ft(-e)e Fu(while)h(executing)
-1110 3623 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g
+1110 3980 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g
Fu(is)h(ignored,)j(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y)
-1110 3733 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g
-(the)g(command)g(con)m(taining)1110 3842 y(the)31 b(function)f(call)h
-(completes.)630 3988 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g
-(expansion)f(\(globbing\).)630 4134 y Ft(-h)384 b Fu(Lo)s(cate)33
+1110 4089 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g
+(the)g(command)g(con)m(taining)1110 4199 y(the)31 b(function)f(call)h
+(completes.)630 4347 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g
+(expansion)f(\(globbing\).)630 4495 y Ft(-h)384 b Fu(Lo)s(cate)33
b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s
-(ok)m(ed)h(up)e(for)1110 4244 y(execution.)42 b(This)29
-b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4390 y
+(ok)m(ed)h(up)e(for)1110 4605 y(execution.)42 b(This)29
+b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4753 y
Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g
(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110
-4500 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f
-(those)i(that)f(precede)g(the)1110 4609 y(command)30
-b(name.)630 4756 y Ft(-m)384 b Fu(Job)32 b(con)m(trol)h(is)f(enabled)g
+4863 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f
+(those)i(that)f(precede)g(the)1110 4973 y(command)30
+b(name.)630 5121 y Ft(-m)384 b Fu(Job)32 b(con)m(trol)h(is)f(enabled)g
(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)e(97\).)47
-b(All)1110 4865 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
+b(All)1110 5230 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
(cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110
-4975 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m
-(taining)i(its)f(exit)g(status.)630 5121 y Ft(-n)384
+5340 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m
+(taining)i(its)f(exit)g(status.)p eop end
+%%Page: 60 66
+TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-n)384
b Fu(Read)21 b(commands)f(but)g(do)h(not)g(execute)h(them;)i(this)d(ma)
-m(y)g(b)s(e)f(used)g(to)h(c)m(hec)m(k)1110 5230 y(a)42
+m(y)g(b)s(e)f(used)g(to)h(c)m(hec)m(k)1110 408 y(a)42
b(script)g(for)g(syn)m(tax)g(errors.)75 b(This)41 b(option)h(is)g
-(ignored)g(b)m(y)g(in)m(teractiv)m(e)1110 5340 y(shells.)p
+(ignored)g(b)m(y)g(in)m(teractiv)m(e)1110 518 y(shells.)630
+667 y Ft(-o)30 b Fj(option-name)1110 777 y Fu(Set)h(the)f(option)h
+(corresp)s(onding)e(to)i Fr(option-name)5 b Fu(:)1110
+927 y Ft(allexport)1590 1036 y Fu(Same)30 b(as)h Ft(-a)p
+Fu(.)1110 1186 y Ft(braceexpand)1590 1295 y Fu(Same)f(as)h
+Ft(-B)p Fu(.)1110 1445 y Ft(emacs)240 b Fu(Use)25 b(an)f
+Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g
+(Chapter)e(8)1590 1554 y([Command)33 b(Line)g(Editing],)h(page)h
+(101\).)51 b(This)32 b(also)i(a\013ects)1590 1664 y(the)d(editing)g(in)
+m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 1813
+y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110
+1963 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110
+2112 y Ft(functrace)1590 2222 y Fu(Same)f(as)h Ft(-T)p
+Fu(.)1110 2371 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p
+Fu(.)1110 2521 y Ft(histexpand)1590 2630 y Fu(Same)f(as)h
+Ft(-H)p Fu(.)1110 2780 y Ft(history)144 b Fu(Enable)39
+b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1)
+1590 2889 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(133.)60
+b(This)36 b(option)h(is)f(on)1590 2999 y(b)m(y)30 b(default)h(in)f(in)m
+(teractiv)m(e)j(shells.)1110 3148 y Ft(ignoreeof)1590
+3258 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on)
+e(reading)i(EOF.)1110 3407 y Ft(keyword)144 b Fu(Same)30
+b(as)h Ft(-k)p Fu(.)1110 3557 y Ft(monitor)144 b Fu(Same)30
+b(as)h Ft(-m)p Fu(.)1110 3706 y Ft(noclobber)1590 3816
+y Fu(Same)f(as)h Ft(-C)p Fu(.)1110 3965 y Ft(noexec)192
+b Fu(Same)30 b(as)h Ft(-n)p Fu(.)1110 4115 y Ft(noglob)192
+b Fu(Same)30 b(as)h Ft(-f)p Fu(.)1110 4264 y Ft(nolog)240
+b Fu(Curren)m(tly)30 b(ignored.)1110 4413 y Ft(notify)192
+b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110 4563 y Ft(nounset)144
+b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110 4712 y Ft(onecmd)192
+b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110 4862 y Ft(physical)96
+b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110 5011 y Ft(pipefail)96
+b Fu(If)44 b(set,)k(the)d(return)e(v)-5 b(alue)45 b(of)f(a)h(pip)s
+(eline)e(is)i(the)f(v)-5 b(alue)45 b(of)1590 5121 y(the)33
+b(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g(with)f(a)g(non-zero)
+1590 5230 y(status,)28 b(or)f(zero)g(if)f(all)i(commands)e(in)g(the)h
+(pip)s(eline)f(exit)i(suc-)1590 5340 y(cessfully)-8 b(.)41
+b(This)30 b(option)h(is)f(disabled)g(b)m(y)h(default.)p
eop end
-%%Page: 60 66
-TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-o)30
-b Fj(option-name)1110 408 y Fu(Set)h(the)f(option)h(corresp)s(onding)e
-(to)i Fr(option-name)5 b Fu(:)1110 575 y Ft(allexport)1590
-685 y Fu(Same)30 b(as)h Ft(-a)p Fu(.)1110 852 y Ft(braceexpand)1590
-962 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 1129 y Ft(emacs)240
-b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m
-(terface)h(\(see)g(Chapter)e(8)1590 1238 y([Command)33
-b(Line)g(Editing],)h(page)h(101\).)51 b(This)32 b(also)i(a\013ects)1590
-1348 y(the)d(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p
-Fu(.)1110 1515 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p
-Fu(.)1110 1682 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p
-Fu(.)1110 1849 y Ft(functrace)1590 1958 y Fu(Same)f(as)h
-Ft(-T)p Fu(.)1110 2125 y Ft(hashall)144 b Fu(Same)30
-b(as)h Ft(-h)p Fu(.)1110 2292 y Ft(histexpand)1590 2402
-y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 2569 y Ft(history)144
-b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h
-(Section)h(9.1)1590 2679 y([Bash)d(History)g(F)-8 b(acilities],)41
-b(page)c(133.)60 b(This)36 b(option)h(is)f(on)1590 2788
-y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110
-2955 y Ft(ignoreeof)1590 3065 y Fu(An)d(in)m(teractiv)m(e)j(shell)e
-(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3232
-y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110
-3399 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110
-3566 y Ft(noclobber)1590 3675 y Fu(Same)f(as)h Ft(-C)p
-Fu(.)1110 3842 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p
-Fu(.)1110 4009 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p
-Fu(.)1110 4176 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110
-4343 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110
-4510 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110
-4677 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110
-4844 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110
-5011 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5
-b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i(the)f(v)-5 b(alue)45
-b(of)1590 5121 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h
-(exit)g(with)f(a)g(non-zero)1590 5230 y(status,)28 b(or)f(zero)g(if)f
-(all)i(commands)e(in)g(the)h(pip)s(eline)f(exit)i(suc-)1590
-5340 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h
-(default.)p eop end
%%Page: 61 67
TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41
b(Shell)30 b(Builtin)h(Commands)2069 b(61)1110 299 y
@@ -14843,20 +14844,19 @@ b(ariable)32 b(assignmen)m(t)g(error)e(o)s(ccurs)330
(t)h(statemen)m(ts.)69 b(A)39 b(v)-5 b(ariable)40 b(assignmen)m(t)330
2144 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g
(assign)f(a)h(v)-5 b(alue)31 b(to)g(a)g(readonly)f(v)-5
-b(ariable.)154 2271 y(26.)61 b(A)28 b(non-in)m(teractiv)m(e)j(shell)e
-(exists)f(with)g(an)g(error)g(status)h(if)f(a)g(v)-5
-b(ariable)29 b(assignmen)m(t)g(error)f(o)s(ccurs)330
-2381 y(in)i(an)g(assignmen)m(t)i(statemen)m(t)g(preceding)e(a)h(sp)s
-(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f(other)h(simple)330
-2491 y(command.)154 2619 y(27.)61 b(A)43 b(non-in)m(teractiv)m(e)i
-(shell)e(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration)h(v)
--5 b(ariable)44 b(in)f(a)g Ft(for)330 2728 y Fu(statemen)m(t)32
-b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g
-Ft(select)f Fu(statemen)m(t)j(is)f(a)f(readonly)h(v)-5
-b(ariable.)154 2856 y(28.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)
-f(a)m(v)-5 b(ailable.)154 2984 y(29.)61 b(While)32 b(v)-5
-b(ariable)32 b(indirection)f(is)g(a)m(v)-5 b(ailable,)34
-b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p
+b(ariable.)154 2271 y(26.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d
+(exits)h(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32
+b(assignmen)m(t)g(error)e(o)s(ccurs)330 2381 y(in)g(an)g(assignmen)m(t)
+i(statemen)m(t)g(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g
+(with)h(an)m(y)f(other)h(simple)330 2491 y(command.)154
+2619 y(27.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f
+(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44
+b(in)f(a)g Ft(for)330 2728 y Fu(statemen)m(t)32 b(or)f(the)f(selection)
+i(v)-5 b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f
+(readonly)h(v)-5 b(ariable.)154 2856 y(28.)61 b(Pro)s(cess)30
+b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 2984
+y(29.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5
+b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p
Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330
3093 y(parameters.)154 3221 y(30.)61 b(Assignmen)m(t)23
b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s
@@ -15715,350 +15715,351 @@ Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g(line)1110
628 y(retriev)m(ed)h(with)f Ft(previous-history)c Fu(or)37
b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110 737
-y(is)30 b(`)p Ft(off)p Fu('.)630 883 y Ft(history-size)1110
-993 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
-(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 1103
+y(is)30 b(`)p Ft(off)p Fu('.)630 902 y Ft(history-size)1110
+1011 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 1121
y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
-(en)m(tries)g(are)g(deleted)h(and)e(no)1110 1212 y(new)e(en)m(tries)i
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 1230 y(new)e(en)m(tries)i
(are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
-1322 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+1340 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
-1431 y(en)m(tries)g(is)g(not)f(limited.)630 1577 y Ft
-(horizontal-scroll-mode)1110 1687 y Fu(This)35 b(v)-5
+1450 y(en)m(tries)g(is)g(not)f(limited.)630 1614 y Ft
+(horizontal-scroll-mode)1110 1724 y Fu(This)35 b(v)-5
b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p
Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36
-b(it)g(to)h(`)p Ft(on)p Fu(')1110 1797 y(means)26 b(that)h(the)f(text)h
+b(it)g(to)h(`)p Ft(on)p Fu(')1110 1833 y(means)26 b(that)h(the)f(text)h
(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
-(tally)1110 1906 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
-(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 2016
+(tally)1110 1943 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
+(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 2052
y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g
-(line.)39 b(By)27 b(default,)g(this)1110 2125 y(v)-5
+(line.)39 b(By)27 b(default,)g(this)1110 2162 y(v)-5
b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630
-2271 y Ft(input-meta)1110 2381 y Fu(If)f(set)g(to)h(`)p
+2326 y Ft(input-meta)1110 2436 y Fu(If)f(set)g(to)h(`)p
Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
-i(will)f(not)h(clear)1110 2491 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
+i(will)f(not)h(clear)1110 2545 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
-2600 y(terminal)g(claims)h(it)g(can)f(supp)s(ort.)68
+2655 y(terminal)g(claims)h(it)g(can)f(supp)s(ort.)68
b(The)39 b(default)h(v)-5 b(alue)40 b(is)g(`)p Ft(off)p
-Fu('.)69 b(The)1110 2710 y(name)30 b Ft(meta-flag)e Fu(is)j(a)f(synon)m
-(ym)g(for)g(this)h(v)-5 b(ariable.)630 2856 y Ft(isearch-terminators)
-1110 2966 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e
-(terminate)j(an)f(incremen)m(tal)1110 3075 y(searc)m(h)25
+Fu('.)69 b(The)1110 2765 y(name)30 b Ft(meta-flag)e Fu(is)j(a)f(synon)m
+(ym)g(for)g(this)h(v)-5 b(ariable.)630 2929 y Ft(isearch-terminators)
+1110 3039 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e
+(terminate)j(an)f(incremen)m(tal)1110 3148 y(searc)m(h)25
b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g
-(command)1110 3185 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h
+(command)1110 3258 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h
(page)e(103\).)62 b(If)37 b(this)g(v)-5 b(ariable)38
-b(has)f(not)1110 3294 y(b)s(een)e(giv)m(en)h(a)g(v)-5
+b(has)f(not)1110 3367 y(b)s(een)e(giv)m(en)h(a)g(v)-5
b(alue,)37 b(the)f(c)m(haracters)h Ft(ESC)d Fu(and)h
-Fj(C-J)g Fu(will)h(terminate)g(an)1110 3404 y(incremen)m(tal)c(searc)m
-(h.)630 3550 y Ft(keymap)192 b Fu(Sets)39 b(Readline's)g(idea)h(of)f
+Fj(C-J)g Fu(will)h(terminate)g(an)1110 3477 y(incremen)m(tal)c(searc)m
+(h.)630 3641 y Ft(keymap)192 b Fu(Sets)39 b(Readline's)g(idea)h(of)f
(the)g(curren)m(t)f(k)m(eymap)h(for)g(k)m(ey)g(binding)f(com-)1110
-3660 y(mands.)81 b(Acceptable)47 b Ft(keymap)42 b Fu(names)i(are)h
-Ft(emacs)p Fu(,)i Ft(emacs-standard)p Fu(,)1110 3769
+3751 y(mands.)81 b(Acceptable)47 b Ft(keymap)42 b Fu(names)i(are)h
+Ft(emacs)p Fu(,)i Ft(emacs-standard)p Fu(,)1110 3861
y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p
Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)f(and)1110
-3879 y Ft(vi-insert)p Fu(.)64 b Ft(vi)38 b Fu(is)h(equiv)-5
+3970 y Ft(vi-insert)p Fu(.)64 b Ft(vi)38 b Fu(is)h(equiv)-5
b(alen)m(t)41 b(to)e Ft(vi-command)p Fu(;)i Ft(emacs)c
-Fu(is)i(equiv)-5 b(alen)m(t)1110 3988 y(to)33 b Ft(emacs-standard)p
+Fu(is)i(equiv)-5 b(alen)m(t)1110 4080 y(to)33 b Ft(emacs-standard)p
Fu(.)41 b(The)31 b(default)h(v)-5 b(alue)32 b(is)g Ft(emacs)p
-Fu(.)44 b(The)31 b(v)-5 b(alue)33 b(of)f(the)1110 4098
+Fu(.)44 b(The)31 b(v)-5 b(alue)33 b(of)f(the)1110 4189
y Ft(editing-mode)27 b Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f(the)g
-(default)f(k)m(eymap.)630 4244 y Ft(keyseq-timeout)1110
-4354 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
-(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 4463
+(default)f(k)m(eymap.)630 4354 y Ft(keyseq-timeout)1110
+4463 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 4573
y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
-(form)g(a)g(complete)h(k)m(ey)1110 4573 y(sequence)24
-b(using)f(the)h(input)f(read)g(so)h(far,)h(or)f(can)g(tak)m(e)h
-(additional)g(input)d(to)1110 4682 y(complete)31 b(a)e(longer)h(k)m(ey)
-g(sequence\).)41 b(If)28 b(no)h(input)g(is)g(receiv)m(ed)h(within)f
-(the)1110 4792 y(timeout,)34 b(Readline)g(will)f(use)f(the)h(shorter)f
-(but)g(complete)i(k)m(ey)f(sequence.)1110 4902 y(The)25
-b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h(milliseconds,)j(so)d(a)h
-(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)1110 5011
-y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g(additional)i(input.)
-37 b(If)22 b(this)g(v)-5 b(ariable)23 b(is)1110 5121
-y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f(equal)i(to)f
-(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 b(alue,)1110
-5230 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h(k)m(ey)g(is)
-f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 5340
-y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)g Ft(500)p Fu(.)p eop end
+(form)g(a)g(complete)h(k)m(ey)1110 4682 y(sequence)j(using)e(the)i
+(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
+1110 4792 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
+4902 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 5011 y(quence.)c(Readline)26
+b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
+(input)1110 5121 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110
+5230 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
+(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
+1110 5340 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
+(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
+b(is)p eop end
%%Page: 108 114
TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(108)630 299 y Ft(mark-directories)
-1110 408 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e
-(directory)f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
-518 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 676
-y Ft(mark-modified-lines)1110 786 y Fu(This)k(v)-5 b(ariable,)38
-b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g(Readline)f(to)h
-(displa)m(y)f(an)f(as-)1110 896 y(terisk)f(\(`)p Ft(*)p
-Fu('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f(ha)m(v)m
-(e)i(b)s(een)e(mo)s(di\014ed.)1110 1005 y(This)d(v)-5
-b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630
-1163 y Ft(mark-symlinked-directori)o(es)1110 1273 y Fu(If)59
-b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g
-(are)h(sym)m(b)s(olic)g(links)f(to)1110 1383 y(directories)71
-b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
-b(to)g(the)g(v)-5 b(alue)70 b(of)1110 1492 y Ft(mark-directories)p
-Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)630
-1650 y Ft(match-hidden-files)1110 1760 y Fu(This)21 b(v)-5
-b(ariable,)25 b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f
-(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 1870
-y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f
-(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 1979
-y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p Fu(',)i(the)e
-(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110
-2089 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)
-53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110
-2198 y(default.)630 2357 y Ft(menu-complete-display-pr)o(efix)1110
-2466 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)h(men)m(u)e(completion)i
-(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
-2576 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
-s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 2685 y(through)30
-b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Ft(off)p
-Fu('.)630 2844 y Ft(output-meta)1110 2953 y Fu(If)35
-b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)f(c)m
-(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 3063 y(set)h(directly)g
-(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59
-b(The)1110 3173 y(default)31 b(is)f(`)p Ft(off)p Fu('.)630
-3331 y Ft(page-completions)1110 3440 y Fu(If)j(set)i(to)f(`)p
-Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m(ternal)h
-Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
-3550 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+b(Command)29 b(Line)i(Editing)2062 b(108)1110 299 y(set)28
+b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f(equal)i(to)f(zero,)i(or)
+e(to)g(a)h(non-n)m(umeric)e(v)-5 b(alue,)1110 408 y(Readline)30
+b(will)f(w)m(ait)i(un)m(til)e(another)h(k)m(ey)g(is)f(pressed)g(to)h
+(decide)f(whic)m(h)g(k)m(ey)1110 518 y(sequence)i(to)g(complete.)42
+b(The)30 b(default)g(v)-5 b(alue)31 b(is)g Ft(500)p Fu(.)630
+701 y Ft(mark-directories)1110 810 y Fu(If)38 b(set)g(to)h(`)p
+Ft(on)p Fu(',)i(completed)e(directory)f(names)g(ha)m(v)m(e)i(a)e(slash)
+g(app)s(ended.)1110 920 y(The)30 b(default)g(is)h(`)p
+Ft(on)p Fu('.)630 1103 y Ft(mark-modified-lines)1110
+1212 y Fu(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p
+Ft(on)p Fu(',)g(causes)g(Readline)f(to)h(displa)m(y)f(an)f(as-)1110
+1322 y(terisk)f(\(`)p Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g
+(lines)g(whic)m(h)f(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110
+1431 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g
+(default.)630 1614 y Ft(mark-symlinked-directori)o(es)1110
+1724 y Fu(If)59 b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60
+b(names)f(whic)m(h)g(are)h(sym)m(b)s(olic)g(links)f(to)1110
+1833 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5
+b(ject)70 b(to)g(the)g(v)-5 b(alue)70 b(of)1110 1943
+y Ft(mark-directories)p Fu(\).)37 b(The)30 b(default)g(is)g(`)p
+Ft(off)p Fu('.)630 2125 y Ft(match-hidden-files)1110
+2235 y Fu(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p
+Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m(h)g(\014les)f(whose)
+1110 2345 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p
+Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)1110
+2454 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p
+Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f
+(b)m(y)1110 2564 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f
+(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p
+Ft(on)p Fu(')g(b)m(y)1110 2673 y(default.)630 2856 y
+Ft(menu-complete-display-pr)o(efix)1110 2966 y Fu(If)f(set)h(to)g(`)p
+Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g
+(pre\014x)e(of)i(the)1110 3075 y(list)k(of)g(p)s(ossible)f(completions)
+i(\(whic)m(h)e(ma)m(y)h(b)s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110
+3185 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p
+Ft(off)p Fu('.)630 3367 y Ft(output-meta)1110 3477 y
+Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)
+f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 3587
+y(set)h(directly)g(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s
+(e)h(sequence.)59 b(The)1110 3696 y(default)31 b(is)f(`)p
+Ft(off)p Fu('.)630 3879 y Ft(page-completions)1110 3988
+y Fu(If)j(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m
+(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
+4098 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p Fu(')1110
-3660 y(b)m(y)e(default.)630 3818 y Ft(print-completions-horizo)o(ntal)o
-(ly)1110 3927 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g
+4208 y(b)m(y)e(default.)630 4390 y Ft(print-completions-horizo)o(ntal)o
+(ly)1110 4500 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g
(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
-4037 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
-(than)g(do)m(wn)g(the)h(screen.)1110 4147 y(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)630 4305 y Ft(revert-all-at-newline)1110
-4415 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f
+4609 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 4719 y(The)30 b(default)g(is)h(`)p
+Ft(off)p Fu('.)630 4902 y Ft(revert-all-at-newline)1110
+5011 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f
(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
-4524 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
-b(By)29 b(default,)g(history)g(lines)1110 4634 y(ma)m(y)42
+5121 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 5230 y(ma)m(y)42
b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
-(across)g(calls)h(to)1110 4743 y Ft(readline)p Fu(.)38
-b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 4902
-y Ft(show-all-if-ambiguous)1110 5011 y Fu(This)f(alters)i(the)f
-(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
-b(If)29 b(set)1110 5121 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)
-g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)
-1110 5230 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
-(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 5340 y(The)30
-b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)p
-eop end
+(across)g(calls)h(to)1110 5340 y Ft(readline)p Fu(.)38
+b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)p eop end
%%Page: 109 115
TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41
b(Command)29 b(Line)i(Editing)2062 b(109)630 299 y Ft
-(show-all-if-unmodified)1110 408 y Fu(This)38 b(alters)h(the)g(default)
-g(b)s(eha)m(vior)g(of)f(the)h(completion)h(functions)e(in)h(a)1110
-518 y(fashion)25 b(similar)h(to)g Fr(sho)m(w-all-if-am)m(biguous)p
-Fu(.)41 b(If)25 b(set)h(to)h(`)p Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)
-1110 628 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e
-(completion)i(without)f(an)m(y)g(p)s(ossible)f(par-)1110
-737 y(tial)43 b(completion)h(\(the)f(p)s(ossible)f(completions)h(don't)
-f(share)g(a)h(common)1110 847 y(pre\014x\))30 b(cause)g(the)h(matc)m
-(hes)g(to)g(b)s(e)f(listed)g(immediately)i(instead)e(of)h(ring-)1110
-956 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)f(`)p Ft(off)p Fu('.)630 1113 y Ft(show-mode-in-prompt)
-1110 1223 y Fu(If)35 b(set)i(to)f(`)p Ft(on)p Fu(',)h(add)e(a)h(c)m
-(haracter)i(to)e(the)g(b)s(eginning)f(of)h(the)g(prompt)f(in-)1110
-1332 y(dicating)43 b(the)f(editing)h(mo)s(de:)63 b(emacs)43
-b(\(`)p Ft(@)p Fu('\),)i(vi)d(command)g(\(`)p Ft(:)p
-Fu('\),)k(or)c(vi)1110 1442 y(insertion)30 b(\(`)p Ft(+)p
-Fu('\).)42 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p
-Ft(off)p Fu('.)630 1598 y Ft(skip-completed-text)1110
-1708 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g
-(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
-1817 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40
-b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110
-1927 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53
-b(If)35 b(enabled,)g(readline)g(do)s(es)1110 2037 y(not)41
-b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
-(c)m(haracters)1110 2146 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
-(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
-2256 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
-b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
-2365 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
-(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 2475 y(`)p Ft(Makefile)p
+(show-all-if-ambiguous)1110 408 y Fu(This)29 b(alters)i(the)f(default)g
+(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
+b(If)29 b(set)1110 518 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)g
+(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)1110
+628 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 737 y(The)30
+b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630
+920 y Ft(show-all-if-unmodified)1110 1029 y Fu(This)38
+b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h
+(functions)e(in)h(a)1110 1139 y(fashion)25 b(similar)h(to)g
+Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p
+Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 1249 y(ha)m(v)m(e)32
+b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s
+(ossible)f(par-)1110 1358 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 1468
+y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g
+(immediately)i(instead)e(of)h(ring-)1110 1577 y(ing)g(the)f(b)s(ell.)41
+b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p
+Fu('.)630 1760 y Ft(show-mode-in-prompt)1110 1870 y Fu(If)35
+b(set)i(to)f(`)p Ft(on)p Fu(',)h(add)e(a)h(c)m(haracter)i(to)e(the)g(b)
+s(eginning)f(of)h(the)g(prompt)f(in-)1110 1979 y(dicating)43
+b(the)f(editing)h(mo)s(de:)63 b(emacs)43 b(\(`)p Ft(@)p
+Fu('\),)i(vi)d(command)g(\(`)p Ft(:)p Fu('\),)k(or)c(vi)1110
+2089 y(insertion)30 b(\(`)p Ft(+)p Fu('\).)42 b(The)30
+b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p Fu('.)630
+2271 y Ft(skip-completed-text)1110 2381 y Fu(If)h(set)i(to)f(`)p
+Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha)m
+(vior)f(when)f(in-)1110 2491 y(serting)d(a)h(single)g(matc)m(h)f(in)m
+(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)
+1110 2600 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m
+(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110
+2710 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h
+(that)f(matc)m(h)g(c)m(haracters)1110 2819 y(after)c(p)s(oin)m(t)g(in)g
+(the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g
+(w)m(ord)1110 2929 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g
+(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+3039 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 3148 y(`)p Ft(Makefile)p
Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`)
-p Ft(Makefilefile)p Fu(',)1110 2585 y(assuming)d(there)g(is)h(a)f
+p Ft(Makefilefile)p Fu(',)1110 3258 y(assuming)d(there)g(is)h(a)f
(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
-b(alue)1110 2694 y(is)30 b(`)p Ft(off)p Fu('.)630 2851
-y Ft(visible-stats)1110 2960 y Fu(If)h(set)i(to)f(`)p
+b(alue)1110 3367 y(is)30 b(`)p Ft(off)p Fu('.)630 3550
+y Ft(visible-stats)1110 3660 y Fu(If)h(set)i(to)f(`)p
Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s
-(e)g(is)g(app)s(ended)e(to)j(the)1110 3070 y(\014lename)e(when)e
+(e)g(is)g(app)s(ended)e(to)j(the)1110 3769 y(\014lename)e(when)e
(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)150 3226 y(Key)f(Bindings)630 3336 y(The)41
+Ft(off)p Fu('.)150 3952 y(Key)f(Bindings)630 4061 y(The)41
b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g
(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630
-3446 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i
+4171 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i
(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630
-3555 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j
+4281 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j
(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630
-3665 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h
-(do)s(es.)630 3798 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g
+4390 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h
+(do)s(es.)630 4536 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g
(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630
-3907 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h
+4646 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h
(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630
-4017 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+4756 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
-(and)630 4127 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(and)630 4865 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
-b(The)40 b(name)h(of)630 4236 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+b(The)40 b(name)h(of)630 4975 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
-(what)h(y)m(ou)g(\014nd)e(most)630 4346 y(comfortable.)630
-4479 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
+(what)h(y)m(ou)g(\014nd)e(most)630 5084 y(comfortable.)630
+5230 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630
-4589 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
-(\(a)h Fr(macro)5 b Fu(\).)630 4722 y(The)42 b Ft(bind)30
-b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and)
-f(bindings)g(in)h(a)630 4831 y(format)37 b(that)h(can)f(put)f(directly)
-i(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38
-b(Section)f(4.2)i([Bash)630 4941 y(Builtins],)31 b(page)g(48.)630
-5097 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35
-b Fu(or)c Fr(macro)1110 5207 y(k)m(eyname)k Fu(is)29
-b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39
-b(F)-8 b(or)30 b(example:)1350 5340 y Ft(Control-u:)45
-b(universal-argument)p eop end
+5340 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
+(\(a)h Fr(macro)5 b Fu(\).)p eop end
%%Page: 110 116
TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(110)1350 299 y Ft(Meta-Rubout:)44
-b(backward-kill-word)1350 408 y(Control-o:)h(">)i(output")1110
-544 y Fu(In)94 b(the)g(ab)s(o)m(v)m(e)i(example,)111
+b(Command)29 b(Line)i(Editing)2062 b(110)630 299 y(The)42
+b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g
+(names)g(and)f(bindings)g(in)h(a)630 408 y(format)37
+b(that)h(can)f(put)f(directly)i(in)m(to)g(an)f(initialization)j
+(\014le.)60 b(See)38 b(Section)f(4.2)i([Bash)630 518
+y(Builtins],)31 b(page)g(48.)630 673 y Fr(k)m(eyname)5
+b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110
+783 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
+915 y Ft(Control-u:)45 b(universal-argument)1350 1024
+y(Meta-Rubout:)f(backward-kill-word)1350 1134 y(Control-o:)h(">)i
+(output")1110 1266 y Fu(In)94 b(the)g(ab)s(o)m(v)m(e)i(example,)111
b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110
-653 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107
-b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 763 y Ft
-(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e
-(to)j(run)d(the)i(macro)1110 873 y(expressed)45 b(on)h(the)g(righ)m(t)g
-(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
-Ft(>)1110 982 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110
-1118 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
-(names)f(are)g(recognized)h(while)1110 1227 y(pro)s(cessing)40
+1376 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107
+b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 1485 y
+Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e
+(to)j(run)d(the)i(macro)1110 1595 y(expressed)45 b(on)h(the)g(righ)m(t)
+g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
+Ft(>)1110 1705 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110
+1837 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
+(names)f(are)g(recognized)h(while)1110 1946 y(pro)s(cessing)40
b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p
Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p
-Fu(,)1110 1337 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f
+Fu(,)1110 2056 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f
Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p
Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630
-1498 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36
-b Fu(or)30 b Fr(macro)1110 1608 y(k)m(eyseq)k Fu(di\013ers)d(from)f
+2211 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36
+b Fu(or)30 b Fr(macro)1110 2321 y(k)m(eyseq)k Fu(di\013ers)d(from)f
Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f
-(denoting)g(an)g(en-)1110 1717 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s
+(denoting)g(an)g(en-)1110 2430 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s
(e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)
-1110 1827 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h
+1110 2540 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h
Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)
-1110 1936 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s
-(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 2046 y(recognized.)1350
-2181 y Ft("\\C-u":)46 b(universal-argument)1350 2291
-y("\\C-x\\C-r":)f(re-read-init-file)1350 2400 y("\\e[11~":)g("Function)
-h(Key)g(1")1110 2536 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
+1110 2649 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s
+(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 2759 y(recognized.)1350
+2891 y Ft("\\C-u":)46 b(universal-argument)1350 3001
+y("\\C-x\\C-r":)f(re-read-init-file)1350 3110 y("\\e[11~":)g("Function)
+h(Key)g(1")1110 3243 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
-2645 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
-(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 2755
+3352 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3462
y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110
-2865 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
-Ft(Function)e(Key)g(1)p Fu('.)630 3026 y(The)g(follo)m(wing)i
+3571 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Ft(Function)e(Key)g(1)p Fu('.)630 3726 y(The)g(follo)m(wing)i
Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5
-b(ailable)32 b(when)d(sp)s(ecifying)630 3135 y(k)m(ey)i(sequences:)630
-3296 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
-3458 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3619 y
+b(ailable)32 b(when)d(sp)s(ecifying)630 3836 y(k)m(ey)i(sequences:)630
+3991 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
+4146 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4301 y
Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630
-3780 y Fj(\\\\)384 b Fu(bac)m(kslash)630 3941 y Fj(\\)p
+4456 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4611 y Fj(\\)p
Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630
-4102 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
-(ostrophe)630 4263 y(In)d(addition)h(to)g(the)g Fm(gnu)f
+4766 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 4921 y(In)d(addition)h(to)g(the)g Fm(gnu)f
Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
-(bac)m(kslash)630 4373 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
-4534 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 4695
-y Ft(\\b)384 b Fu(bac)m(kspace)630 4856 y Ft(\\d)g Fu(delete)630
-5018 y Ft(\\f)g Fu(form)30 b(feed)630 5179 y Ft(\\n)384
-b Fu(newline)630 5340 y Ft(\\r)g Fu(carriage)32 b(return)p
-eop end
+(bac)m(kslash)630 5030 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+5185 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 5340
+y Ft(\\b)384 b Fu(bac)m(kspace)p eop end
%%Page: 111 117
TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 451 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 604 y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m
-(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5
-b(alue)35 b Fr(nnn)e Fu(\(one)i(to)1110 713 y(three)c(digits\))630
-866 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g
+b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y Ft(\\d)384
+b Fu(delete)630 451 y Ft(\\f)g Fu(form)30 b(feed)630
+604 y Ft(\\n)384 b Fu(newline)630 757 y Ft(\\r)g Fu(carriage)32
+b(return)630 909 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630
+1062 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1214
+y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)
+e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35
+b Fr(nnn)e Fu(\(one)i(to)1110 1324 y(three)c(digits\))630
+1477 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g
(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5
-b(alue)39 b Fr(HH)1110 975 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 1128 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g
+b(alue)39 b Fr(HH)1110 1586 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 1739 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g
(macro,)i(single)e(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)
-630 1237 y(indicate)23 b(a)e(macro)h(de\014nition.)38
+630 1848 y(indicate)23 b(a)e(macro)h(de\014nition.)38
b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f
-(name.)38 b(In)630 1347 y(the)22 b(macro)f(b)s(o)s(dy)-8
+(name.)38 b(In)630 1958 y(the)22 b(macro)f(b)s(o)s(dy)-8
b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m
-(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 1456 y(will)j(quote)h(an)m
+(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 2067 y(will)j(quote)h(an)m
(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39
b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8
-b(or)630 1566 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
+b(or)630 2177 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
(mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p
-Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 1697 y Ft("\\C-x\\\\":)45
-b("\\\\")150 1889 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
-150 2036 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
+Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2308 y Ft("\\C-x\\\\":)45
+b("\\\\")150 2501 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
+150 2647 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150
-2146 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
+2757 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
(bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s
-(erformed)f(as)i(the)150 2255 y(result)f(of)h(tests.)41
+(erformed)f(as)i(the)150 2867 y(result)f(of)h(tests.)41
b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
-2408 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h
+3019 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h
(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g
-(the)630 2517 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g
+(the)630 3129 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g
(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test)
-630 2627 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m
+630 3238 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m
(haracters)i(are)f(required)e(to)i(isolate)i(it.)630
-2779 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h
+3391 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h
Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110
-2889 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g
+3501 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g
Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction)
-1110 2998 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38
+1110 3610 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38
b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
-3108 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
-Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3218 y(starting)f(out)g
-(in)f Ft(emacs)f Fu(mo)s(de.)630 3370 y Ft(term)288 b
+3720 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
+Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3829 y(starting)f(out)g
+(in)f Ft(emacs)f Fu(mo)s(de.)630 3982 y Ft(term)288 b
Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
-(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 3480 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4092 y(ings,)38
b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g
-(the)g(terminal's)1110 3589 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 4201 y(function)24 b(k)m(eys.)39
b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p
-Ft(=)p Fu(')g(is)g(tested)h(against)1110 3699 y(b)s(oth)k(the)h(full)g
+Ft(=)p Fu(')g(is)g(tested)h(against)1110 4311 y(b)s(oth)k(the)h(full)g
(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g
-(terminal)1110 3808 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+(terminal)1110 4420 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s
-(oth)f Ft(sun)g Fu(and)1110 3918 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
-630 4070 y Ft(application)1110 4180 y Fu(The)21 b Fr(application)j
+(oth)f Ft(sun)g Fu(and)1110 4530 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
+630 4682 y Ft(application)1110 4792 y Fu(The)21 b Fr(application)j
Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 4289 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(set-)1110 4902 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
(Readline)g(library)g(sets)g(the)g Fr(application)1110
-4399 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+5011 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
-4509 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
-(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 4618
+5121 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 5230
y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f
-(sequence)h(that)f(quotes)1110 4728 y(the)e(curren)m(t)f(or)g(previous)
-g(w)m(ord)g(in)g(Bash:)1350 4859 y Ft($if)47 b(Bash)1350
-4968 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
-5078 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 5188 y($endif)150
-5340 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g
-(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)p
-eop end
+(sequence)h(that)f(quotes)1110 5340 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)p eop end
%%Page: 112 118
TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(112)150 299 y Ft($else)240
-b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the)f
-Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.)
-150 458 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m(es)g(a)e
+b(Command)29 b(Line)i(Editing)2062 b(112)1350 299 y Ft($if)47
+b(Bash)1350 408 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
+518 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 628 y($endif)150
+787 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g
+(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150
+946 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the)
+f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.)
+150 1106 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m(es)g(a)e
(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g(commands)
-630 568 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+630 1215 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
-(from)630 677 y Ft(/etc/inputrc)p Fu(:)870 812 y Ft($include)46
-b(/etc/inputrc)150 1011 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150
-1158 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k
+(from)630 1325 y Ft(/etc/inputrc)p Fu(:)870 1460 y Ft($include)46
+b(/etc/inputrc)150 1659 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150
+1806 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k
Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
-b(ariable)27 b(assignmen)m(t,)i(and)150 1268 y(conditional)j(syn)m
+b(ariable)27 b(assignmen)m(t,)i(and)150 1915 y(conditional)j(syn)m
(tax.)p eop end
%%Page: 113 119
TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41
@@ -19430,7 +19431,7 @@ f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
b Fb(53)2025 3118 y Fs(M)2025 3238 y Fe(mapfile)15 b
Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)41 b Fb(53)2025 3500 y Fs(P)2025 3620
+h(:)f(:)g(:)g(:)41 b Fb(54)2025 3500 y Fs(P)2025 3620
y Fe(popd)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(91)2025
@@ -19985,7 +19986,7 @@ b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)46 b Fb(78)2025 2650 y Fe(show-all-if-ambiguous)11
b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(108)2025 2740 y Fe
+(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(109)2025 2740 y Fe
(show-all-if-unmodified)8 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b
Fb(109)2025 2830 y Fe(show-mode-in-prompt)16 b Fc(:)h(:)c(:)g(:)h(:)f
diff --git a/doc/builtins.0 b/doc/builtins.0
index f078351e..dcdc6c51 100644
--- a/doc/builtins.0
+++ b/doc/builtins.0
@@ -424,16 +424,18 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with
the llooccaall command, unless the --gg option is supplied. If a vari-
able name is followed by =_v_a_l_u_e, the value of the variable is
- set to _v_a_l_u_e. The return value is 0 unless an invalid option is
- encountered, an attempt is made to define a function using ``-f
- foo=bar'', an attempt is made to assign a value to a readonly
- variable, an attempt is made to assign a value to an array vari-
- able without using the compound assignment syntax (see AArrrraayyss
- above), one of the _n_a_m_e_s is not a valid shell variable name, an
- attempt is made to turn off readonly status for a readonly vari-
- able, an attempt is made to turn off array status for an array
- variable, or an attempt is made to display a non-existent func-
- tion with --ff.
+ set to _v_a_l_u_e. When using --aa or --AA 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 ``-f foo=bar'', an attempt is made to
+ assign a value to a readonly variable, an attempt is made to
+ assign a value to an array variable without using the compound
+ assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
+ valid shell variable name, an attempt is made to turn off read-
+ only status for a readonly variable, an attempt is made to turn
+ off array status for an array variable, or an attempt is made to
+ display a non-existent function with --ff.
ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]]
Without options, displays the list of currently remembered
diff --git a/doc/builtins.ps b/doc/builtins.ps
index e42402b8..5d49778a 100644
--- a/doc/builtins.ps
+++ b/doc/builtins.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.19.2
-%%CreationDate: Tue Feb 4 09:39:00 2014
+%%CreationDate: Mon Feb 24 08:28:31 2014
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
@@ -894,56 +894,61 @@ Q F0 .91(When the v)24.74 F .909(ariable is assigned a v)-.25 F .909
(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835
E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335
(local, as with the)2.835 F F1(local)2.835 E F0 .335
-(command, unless the)2.835 F F1<ad67>2.835 E F0(option)2.835 E .134
-(is supplied.)144 424.8 R .134(If a v)5.134 F .134
-(ariable name is follo)-.25 F .134(wed by =)-.25 F F2(value)A F0 2.634
-(,t)C .134(he v)-2.634 F .134(alue of the v)-.25 F .133
-(ariable is set to)-.25 F F2(value)2.633 E F0 5.133(.T)C(he)-5.133 E .8
-(return v)144 436.8 R .8(alue is 0 unless an in)-.25 F -.25(va)-.4 G
-.801
-(lid option is encountered, an attempt is made to de\214ne a function)
-.25 F(using)144 448.8 Q/F4 10/Courier@0 SF 1.039(\255f foo=bar)3.539 F
-F0 3.539(,a)C 3.539(na)-3.539 G 1.038(ttempt is made to assign a v)
--3.539 F 1.038(alue to a readonly v)-.25 F 1.038(ariable, an attempt is)
--.25 F .974(made to assign a v)144 460.8 R .974(alue to an array v)-.25
-F .974(ariable without using the compound assignment syntax \(see)-.25 F
-F1(Arrays)144 472.8 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the)
-.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F
-.36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .056
-(readonly status for a readonly v)144 484.8 R .057
-(ariable, an attempt is made to turn of)-.25 F 2.557(fa)-.25 G .057
-(rray status for an array v)-2.557 F(ari-)-.25 E
-(able, or an attempt is made to display a non-e)144 496.8 Q
+(command, unless the)2.835 F F1<ad67>2.835 E F0(option)2.835 E 1.283
+(is supplied.)144 424.8 R 1.283(If a v)6.283 F 1.283
+(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783
+(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282
+(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144
+436.8 R F1<ad61>3.426 E F0(or)3.426 E F1<ad41>3.426 E F0 .927
+(and the compound assignment syntax to create array v)3.426 F .927
+(ariables, additional)-.25 F(attrib)144 448.8 Q .592(utes do not tak)-.2
+F 3.092(ee)-.1 G -.25(ff)-3.092 G .592
+(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592
+(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429
+(option is encountered, an attempt is made to de\214ne a function using)
+144 460.8 R/F4 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C
+2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144
+472.8 R .063(alue to a readonly v)-.25 F .062
+(ariable, an attempt is made to assign a v)-.25 F .062
+(alue to an array v)-.25 F(ari-)-.25 E .102
+(able without using the compound assignment syntax \(see)144 484.8 R F1
+(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F
+F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 496.8 S .172
+(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25
+F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171
+(ariable, an)-.25 F .96(attempt is made to turn of)144 508.8 R 3.46(fa)
+-.25 G .96(rray status for an array v)-3.46 F .96
+(ariable, or an attempt is made to display a)-.25 F(non-e)144 520.8 Q
(xistent function with)-.15 E F1<ad66>2.5 E F0(.)A F1
-(dirs [\255clpv] [+)108 513.6 Q F2(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1
-(])A F0 -.4(Wi)144 525.6 S .329
+(dirs [\255clpv] [+)108 537.6 Q F2(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1
+(])A F0 -.4(Wi)144 549.6 S .329
(thout options, displays the list of currently remembered directories.)
.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 537.6 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 549.6 Q
+(single line with directory names separated by spaces.)144 561.6 R 1.238
+(Directories are added to the list with the)6.238 F F1(pushd)144 573.6 Q
F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G
-2.5(se).15 G(ntries from the list.)-2.5 E F1<ad63>144 561.6 Q F0
+2.5(se).15 G(ntries from the list.)-2.5 E F1<ad63>144 585.6 Q F0
(Clears the directory stack by deleting all of the entries.)25.86 E F1
-<ad6c>144 573.6 Q F0 .882
+<ad6c>144 597.6 Q F0 .882
(Produces a listing using full pathnames; the def)27.52 F .881
(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-585.6 Q(.)-.65 E F1<ad70>144 597.6 Q F0
+609.6 Q(.)-.65 E F1<ad70>144 621.6 Q F0
(Print the directory stack with one entry per line.)24.74 E F1<ad76>144
-609.6 Q F0 .272(Print the directory stack with one entry per line, pre\
+633.6 Q F0 .272(Print the directory stack with one entry per line, pre\
\214xing each entry with its inde)25.3 F 2.773(xi)-.15 G 2.773(nt)-2.773
-G(he)-2.773 E(stack.)180 621.6 Q F1(+)144 633.6 Q F2(n)A F0 1.565
+G(he)-2.773 E(stack.)180 645.6 Q F1(+)144 657.6 Q F2(n)A F0 1.565
(Displays the)25.3 F F2(n)4.065 E F0 1.565
(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1
(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 645.6 Q F1<ad>144 657.6 Q F2
+(without options, starting with zero.)180 669.6 Q F1<ad>144 681.6 Q F2
(n)A F0 1.194(Displays the)25.3 F F2(n)3.694 E F0 1.194
(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 669.6 Q .258(The return v)144
-686.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(without options, starting with zero.)180 693.6 Q .258(The return v)144
+710.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 698.4 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735
+.15 F(tory stack.)144 722.4 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735
E(6)203.725 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
diff --git a/doc/rbash.ps b/doc/rbash.ps
index fdf71adb..6d2a4500 100644
--- a/doc/rbash.ps
+++ b/doc/rbash.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.19.2
-%%CreationDate: Tue Feb 4 09:39:00 2014
+%%CreationDate: Mon Feb 24 08:28:31 2014
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.19 2
diff --git a/execute_cmd.c~ b/execute_cmd.c~
new file mode 100644
index 00000000..a633dfa2
--- /dev/null
+++ b/execute_cmd.c~
@@ -0,0 +1,5447 @@
+/* execute_cmd.c -- Execute a COMMAND structure. */
+
+/* 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX)
+ #pragma alloca
+#endif /* _AIX && RISC6000 && !__GNUC__ */
+
+#include <stdio.h>
+#include "chartypes.h"
+#include "bashtypes.h"
+#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H)
+# include <sys/file.h>
+#endif
+#include "filecntl.h"
+#include "posixstat.h"
+#include <signal.h>
+#if defined (HAVE_SYS_PARAM_H)
+# include <sys/param.h>
+#endif
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include "posixtime.h"
+
+#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
+# include <sys/resource.h>
+#endif
+
+#if defined (HAVE_SYS_TIMES_H) && defined (HAVE_TIMES)
+# include <sys/times.h>
+#endif
+
+#include <errno.h>
+
+#if !defined (errno)
+extern int errno;
+#endif
+
+#define NEED_FPURGE_DECL
+
+#include "bashansi.h"
+#include "bashintl.h"
+
+#include "memalloc.h"
+#include "shell.h"
+#include <y.tab.h> /* use <...> so we pick it up from the build directory */
+#include "flags.h"
+#include "builtins.h"
+#include "hashlib.h"
+#include "jobs.h"
+#include "execute_cmd.h"
+#include "findcmd.h"
+#include "redir.h"
+#include "trap.h"
+#include "pathexp.h"
+#include "hashcmd.h"
+
+#if defined (COND_COMMAND)
+# include "test.h"
+#endif
+
+#include "builtins/common.h"
+#include "builtins/builtext.h" /* list of builtins */
+
+#include <glob/strmatch.h>
+#include <tilde/tilde.h>
+
+#if defined (BUFFERED_INPUT)
+# include "input.h"
+#endif
+
+#if defined (ALIAS)
+# include "alias.h"
+#endif
+
+#if defined (HISTORY)
+# include "bashhist.h"
+#endif
+
+extern int dollar_dollar_pid;
+extern int posixly_correct;
+extern int expand_aliases;
+extern int autocd;
+extern int breaking, continuing, loop_level;
+extern int parse_and_execute_level, running_trap, sourcelevel;
+extern int command_string_index, line_number;
+extern int dot_found_in_search;
+extern int already_making_children;
+extern int tempenv_assign_error;
+extern char *the_printed_command, *shell_name;
+extern pid_t last_command_subst_pid;
+extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
+extern char **subshell_argv, **subshell_envp;
+extern int subshell_argc;
+extern time_t shell_start_time;
+#if 0
+extern char *glob_argv_flags;
+#endif
+
+extern int job_control; /* XXX */
+
+extern int close __P((int));
+
+/* Static functions defined and used in this file. */
+static void close_pipes __P((int, int));
+static void do_piping __P((int, int));
+static void bind_lastarg __P((char *));
+static int shell_control_structure __P((enum command_type));
+static void cleanup_redirects __P((REDIRECT *));
+
+#if defined (JOB_CONTROL)
+static int restore_signal_mask __P((sigset_t *));
+#endif
+
+static void async_redirect_stdin __P((void));
+
+static int builtin_status __P((int));
+
+static int execute_for_command __P((FOR_COM *));
+#if defined (SELECT_COMMAND)
+static int displen __P((const char *));
+static int print_index_and_element __P((int, int, WORD_LIST *));
+static void indent __P((int, int));
+static void print_select_list __P((WORD_LIST *, int, int, int));
+static char *select_query __P((WORD_LIST *, int, char *, int));
+static int execute_select_command __P((SELECT_COM *));
+#endif
+#if defined (DPAREN_ARITHMETIC)
+static int execute_arith_command __P((ARITH_COM *));
+#endif
+#if defined (COND_COMMAND)
+static int execute_cond_node __P((COND_COM *));
+static int execute_cond_command __P((COND_COM *));
+#endif
+#if defined (COMMAND_TIMING)
+static int mkfmt __P((char *, int, int, time_t, int));
+static void print_formatted_time __P((FILE *, char *,
+ time_t, int, time_t, int,
+ time_t, int, int));
+static int time_command __P((COMMAND *, int, int, int, struct fd_bitmap *));
+#endif
+#if defined (ARITH_FOR_COMMAND)
+static intmax_t eval_arith_for_expr __P((WORD_LIST *, int *));
+static int execute_arith_for_command __P((ARITH_FOR_COM *));
+#endif
+static int execute_case_command __P((CASE_COM *));
+static int execute_while_command __P((WHILE_COM *));
+static int execute_until_command __P((WHILE_COM *));
+static int execute_while_or_until __P((WHILE_COM *, int));
+static int execute_if_command __P((IF_COM *));
+static int execute_null_command __P((REDIRECT *, int, int, int));
+static void fix_assignment_words __P((WORD_LIST *));
+static int execute_simple_command __P((SIMPLE_COM *, int, int, int, struct fd_bitmap *));
+static int execute_builtin __P((sh_builtin_func_t *, WORD_LIST *, int, int));
+static int execute_function __P((SHELL_VAR *, WORD_LIST *, int, struct fd_bitmap *, int, int));
+static int execute_builtin_or_function __P((WORD_LIST *, sh_builtin_func_t *,
+ SHELL_VAR *,
+ REDIRECT *, struct fd_bitmap *, int));
+static void execute_subshell_builtin_or_function __P((WORD_LIST *, REDIRECT *,
+ sh_builtin_func_t *,
+ SHELL_VAR *,
+ int, int, int,
+ struct fd_bitmap *,
+ int));
+static int execute_disk_command __P((WORD_LIST *, REDIRECT *, char *,
+ int, int, int, struct fd_bitmap *, int));
+
+static char *getinterp __P((char *, int, int *));
+static void initialize_subshell __P((void));
+static int execute_in_subshell __P((COMMAND *, int, int, int, struct fd_bitmap *));
+#if defined (COPROCESS_SUPPORT)
+static int execute_coproc __P((COMMAND *, int, int, struct fd_bitmap *));
+#endif
+
+static int execute_pipeline __P((COMMAND *, int, int, int, struct fd_bitmap *));
+
+static int execute_connection __P((COMMAND *, int, int, int, struct fd_bitmap *));
+
+static int execute_intern_function __P((WORD_DESC *, FUNCTION_DEF *));
+
+/* Set to 1 if fd 0 was the subject of redirection to a subshell. Global
+ so that reader_loop can set it to zero before executing a command. */
+int stdin_redir;
+
+/* The name of the command that is currently being executed.
+ `test' needs this, for example. */
+char *this_command_name;
+
+/* The printed representation of the currently-executing command (same as
+ the_printed_command), except when a trap is being executed. Useful for
+ a debugger to know where exactly the program is currently executing. */
+char *the_printed_command_except_trap;
+
+/* For catching RETURN in a function. */
+int return_catch_flag;
+int return_catch_value;
+procenv_t return_catch;
+
+/* The value returned by the last synchronous command. */
+int last_command_exit_value;
+
+/* Whether or not the last command (corresponding to last_command_exit_value)
+ was terminated by a signal, and, if so, which one. */
+int last_command_exit_signal;
+
+/* Are we currently ignoring the -e option for the duration of a builtin's
+ execution? */
+int builtin_ignoring_errexit = 0;
+
+/* The list of redirections to perform which will undo the redirections
+ that I made in the shell. */
+REDIRECT *redirection_undo_list = (REDIRECT *)NULL;
+
+/* The list of redirections to perform which will undo the internal
+ redirections performed by the `exec' builtin. These are redirections
+ that must be undone even when exec discards redirection_undo_list. */
+REDIRECT *exec_redirection_undo_list = (REDIRECT *)NULL;
+
+/* When greater than zero, value is the `level' of builtins we are
+ currently executing (e.g. `eval echo a' would have it set to 2). */
+int executing_builtin = 0;
+
+/* Non-zero if we are executing a command list (a;b;c, etc.) */
+int executing_list = 0;
+
+/* Non-zero if failing commands in a command substitution should not exit the
+ shell even if -e is set. Used to pass the CMD_IGNORE_RETURN flag down to
+ commands run in command substitutions by parse_and_execute. */
+int comsub_ignore_return = 0;
+
+/* Non-zero if we have just forked and are currently running in a subshell
+ environment. */
+int subshell_environment;
+
+/* Count of nested subshells, like SHLVL. Available via $BASH_SUBSHELL */
+int subshell_level = 0;
+
+/* Currently-executing shell function. */
+SHELL_VAR *this_shell_function;
+
+/* If non-zero, matches in case and [[ ... ]] are case-insensitive */
+int match_ignore_case = 0;
+
+int executing_command_builtin = 0;
+
+struct stat SB; /* used for debugging */
+
+static int special_builtin_failed;
+
+static COMMAND *currently_executing_command;
+
+/* The line number that the currently executing function starts on. */
+static int function_line_number;
+
+/* XXX - set to 1 if we're running the DEBUG trap and we want to show the line
+ number containing the function name. Used by executing_line_number to
+ report the correct line number. Kind of a hack. */
+static int showing_function_line;
+
+/* $LINENO ($BASH_LINENO) for use by an ERR trap. Global so parse_and_execute
+ can save and restore it. */
+int line_number_for_err_trap;
+
+/* A sort of function nesting level counter */
+int funcnest = 0;
+int funcnest_max = 0; /* bash-4.2 */
+
+int lastpipe_opt = 0;
+
+struct fd_bitmap *current_fds_to_close = (struct fd_bitmap *)NULL;
+
+#define FD_BITMAP_DEFAULT_SIZE 32
+
+/* Functions to allocate and deallocate the structures used to pass
+ information from the shell to its children about file descriptors
+ to close. */
+struct fd_bitmap *
+new_fd_bitmap (size)
+ int size;
+{
+ struct fd_bitmap *ret;
+
+ ret = (struct fd_bitmap *)xmalloc (sizeof (struct fd_bitmap));
+
+ ret->size = size;
+
+ if (size)
+ {
+ ret->bitmap = (char *)xmalloc (size);
+ memset (ret->bitmap, '\0', size);
+ }
+ else
+ ret->bitmap = (char *)NULL;
+ return (ret);
+}
+
+void
+dispose_fd_bitmap (fdbp)
+ struct fd_bitmap *fdbp;
+{
+ FREE (fdbp->bitmap);
+ free (fdbp);
+}
+
+void
+close_fd_bitmap (fdbp)
+ struct fd_bitmap *fdbp;
+{
+ register int i;
+
+ if (fdbp)
+ {
+ for (i = 0; i < fdbp->size; i++)
+ if (fdbp->bitmap[i])
+ {
+ close (i);
+ fdbp->bitmap[i] = 0;
+ }
+ }
+}
+
+/* Return the line number of the currently executing command. */
+int
+executing_line_number ()
+{
+ if (executing && showing_function_line == 0 &&
+ (variable_context == 0 || interactive_shell == 0) &&
+ currently_executing_command)
+ {
+#if defined (COND_COMMAND)
+ if (currently_executing_command->type == cm_cond)
+ return currently_executing_command->value.Cond->line;
+#endif
+#if defined (DPAREN_ARITHMETIC)
+ if (currently_executing_command->type == cm_arith)
+ return currently_executing_command->value.Arith->line;
+#endif
+#if defined (ARITH_FOR_COMMAND)
+ if (currently_executing_command->type == cm_arith_for)
+ return currently_executing_command->value.ArithFor->line;
+#endif
+
+ return line_number;
+ }
+ else
+ return line_number;
+}
+
+/* Execute the command passed in COMMAND. COMMAND is exactly what
+ read_command () places into GLOBAL_COMMAND. See "command.h" for the
+ details of the command structure.
+
+ EXECUTION_SUCCESS or EXECUTION_FAILURE are the only possible
+ return values. Executing a command with nothing in it returns
+ EXECUTION_SUCCESS. */
+int
+execute_command (command)
+ COMMAND *command;
+{
+ struct fd_bitmap *bitmap;
+ int result;
+
+ current_fds_to_close = (struct fd_bitmap *)NULL;
+ bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE);
+ begin_unwind_frame ("execute-command");
+ add_unwind_protect (dispose_fd_bitmap, (char *)bitmap);
+
+ /* Just do the command, but not asynchronously. */
+ result = execute_command_internal (command, 0, NO_PIPE, NO_PIPE, bitmap);
+
+ dispose_fd_bitmap (bitmap);
+ discard_unwind_frame ("execute-command");
+
+#if defined (PROCESS_SUBSTITUTION)
+ /* don't unlink fifos if we're in a shell function; wait until the function
+ returns. */
+ if (variable_context == 0)
+ unlink_fifo_list ();
+#endif /* PROCESS_SUBSTITUTION */
+
+ QUIT;
+ return (result);
+}
+
+/* Return 1 if TYPE is a shell control structure type. */
+static int
+shell_control_structure (type)
+ enum command_type type;
+{
+ switch (type)
+ {
+#if defined (ARITH_FOR_COMMAND)
+ case cm_arith_for:
+#endif
+#if defined (SELECT_COMMAND)
+ case cm_select:
+#endif
+#if defined (DPAREN_ARITHMETIC)
+ case cm_arith:
+#endif
+#if defined (COND_COMMAND)
+ case cm_cond:
+#endif
+ case cm_case:
+ case cm_while:
+ case cm_until:
+ case cm_if:
+ case cm_for:
+ case cm_group:
+ case cm_function_def:
+ return (1);
+
+ default:
+ return (0);
+ }
+}
+
+/* A function to use to unwind_protect the redirection undo list
+ for loops. */
+static void
+cleanup_redirects (list)
+ REDIRECT *list;
+{
+ do_redirections (list, RX_ACTIVE);
+ dispose_redirects (list);
+}
+
+#if 0
+/* Function to unwind_protect the redirections for functions and builtins. */
+static void
+cleanup_func_redirects (list)
+ REDIRECT *list;
+{
+ do_redirections (list, RX_ACTIVE);
+}
+#endif
+
+void
+dispose_exec_redirects ()
+{
+ if (exec_redirection_undo_list)
+ {
+ dispose_redirects (exec_redirection_undo_list);
+ exec_redirection_undo_list = (REDIRECT *)NULL;
+ }
+}
+
+#if defined (JOB_CONTROL)
+/* A function to restore the signal mask to its proper value when the shell
+ is interrupted or errors occur while creating a pipeline. */
+static int
+restore_signal_mask (set)
+ sigset_t *set;
+{
+ return (sigprocmask (SIG_SETMASK, set, (sigset_t *)NULL));
+}
+#endif /* JOB_CONTROL */
+
+#ifdef DEBUG
+/* A debugging function that can be called from gdb, for instance. */
+void
+open_files ()
+{
+ register int i;
+ int f, fd_table_size;
+
+ fd_table_size = getdtablesize ();
+
+ fprintf (stderr, "pid %ld open files:", (long)getpid ());
+ for (i = 3; i < fd_table_size; i++)
+ {
+ if ((f = fcntl (i, F_GETFD, 0)) != -1)
+ fprintf (stderr, " %d (%s)", i, f ? "close" : "open");
+ }
+ fprintf (stderr, "\n");
+}
+#endif
+
+static void
+async_redirect_stdin ()
+{
+ int fd;
+
+ fd = open ("/dev/null", O_RDONLY);
+ if (fd > 0)
+ {
+ dup2 (fd, 0);
+ close (fd);
+ }
+ else if (fd < 0)
+ internal_error (_("cannot redirect standard input from /dev/null: %s"), strerror (errno));
+}
+
+#define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0)
+
+/* Execute the command passed in COMMAND, perhaps doing it asynchronously.
+ COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
+ ASYNCHROUNOUS, if non-zero, says to do this command in the background.
+ PIPE_IN and PIPE_OUT are file descriptors saying where input comes
+ from and where it goes. They can have the value of NO_PIPE, which means
+ I/O is stdin/stdout.
+ FDS_TO_CLOSE is a list of file descriptors to close once the child has
+ been forked. This list often contains the unusable sides of pipes, etc.
+
+ EXECUTION_SUCCESS or EXECUTION_FAILURE are the only possible
+ return values. Executing a command with nothing in it returns
+ EXECUTION_SUCCESS. */
+int
+execute_command_internal (command, asynchronous, pipe_in, pipe_out,
+ fds_to_close)
+ COMMAND *command;
+ int asynchronous;
+ int pipe_in, pipe_out;
+ struct fd_bitmap *fds_to_close;
+{
+ int exec_result, user_subshell, invert, ignore_return, was_error_trap;
+ REDIRECT *my_undo_list, *exec_undo_list;
+ char *tcmd;
+ volatile int last_pid;
+ volatile int save_line_number;
+#if defined (PROCESS_SUBSTITUTION)
+ volatile int ofifo, nfifo, osize, saved_fifo;
+ volatile char *ofifo_list;
+#endif
+
+ if (breaking || continuing)
+ return (last_command_exit_value);
+ if (command == 0 || read_but_dont_execute)
+ return (EXECUTION_SUCCESS);
+
+ QUIT;
+ run_pending_traps ();
+
+#if 0
+ if (running_trap == 0)
+#endif
+ currently_executing_command = command;
+
+ invert = (command->flags & CMD_INVERT_RETURN) != 0;
+
+ /* If we're inverting the return value and `set -e' has been executed,
+ we don't want a failing command to inadvertently cause the shell
+ to exit. */
+ if (exit_immediately_on_error && invert) /* XXX */
+ command->flags |= CMD_IGNORE_RETURN; /* XXX */
+
+ exec_result = EXECUTION_SUCCESS;
+
+ /* If a command was being explicitly run in a subshell, or if it is
+ a shell control-structure, and it has a pipe, then we do the command
+ in a subshell. */
+ if (command->type == cm_subshell && (command->flags & CMD_NO_FORK))
+ return (execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close));
+
+#if defined (COPROCESS_SUPPORT)
+ if (command->type == cm_coproc)
+ return (execute_coproc (command, pipe_in, pipe_out, fds_to_close));
+#endif
+
+ user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0);
+
+ if (command->type == cm_subshell ||
+ (command->flags & (CMD_WANT_SUBSHELL|CMD_FORCE_SUBSHELL)) ||
+ (shell_control_structure (command->type) &&
+ (pipe_out != NO_PIPE || pipe_in != NO_PIPE || asynchronous)))
+ {
+ pid_t paren_pid;
+ int s;
+
+ /* Fork a subshell, turn off the subshell bit, turn off job
+ control and call execute_command () on the command again. */
+ line_number_for_err_trap = line_number;
+ tcmd = make_command_string (command);
+ paren_pid = make_child (savestring (tcmd), asynchronous);
+
+ if (user_subshell && signal_is_trapped (ERROR_TRAP) &&
+ signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ if (paren_pid == 0)
+ {
+ /* We want to run the exit trap for forced {} subshells, and we
+ want to note this before execute_in_subshell modifies the
+ COMMAND struct. Need to keep in mind that execute_in_subshell
+ runs the exit trap for () subshells itself. */
+ /* This handles { command; } & */
+ s = user_subshell == 0 && command->type == cm_group && pipe_in == NO_PIPE && pipe_out == NO_PIPE && asynchronous;
+ /* run exit trap for : | { ...; } and { ...; } | : */
+ /* run exit trap for : | ( ...; ) and ( ...; ) | : */
+ s += user_subshell == 0 && command->type == cm_group && (pipe_in != NO_PIPE || pipe_out != NO_PIPE) && asynchronous == 0;
+
+ last_command_exit_value = execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+ if (s)
+ subshell_exit (last_command_exit_value);
+ else
+ exit (last_command_exit_value);
+ /* NOTREACHED */
+ }
+ else
+ {
+ close_pipes (pipe_in, pipe_out);
+
+#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+ if (variable_context == 0) /* wait until shell function completes */
+ unlink_fifo_list ();
+#endif
+ /* If we are part of a pipeline, and not the end of the pipeline,
+ then we should simply return and let the last command in the
+ pipe be waited for. If we are not in a pipeline, or are the
+ last command in the pipeline, then we wait for the subshell
+ and return its exit status as usual. */
+ if (pipe_out != NO_PIPE)
+ return (EXECUTION_SUCCESS);
+
+ stop_pipeline (asynchronous, (COMMAND *)NULL);
+
+ if (asynchronous == 0)
+ {
+ was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
+ invert = (command->flags & CMD_INVERT_RETURN) != 0;
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
+ exec_result = wait_for (paren_pid);
+
+ /* If we have to, invert the return value. */
+ if (invert)
+ exec_result = ((exec_result == EXECUTION_SUCCESS)
+ ? EXECUTION_FAILURE
+ : EXECUTION_SUCCESS);
+
+ last_command_exit_value = exec_result;
+ if (user_subshell && was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
+ {
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
+ run_error_trap ();
+ line_number = save_line_number;
+ }
+
+ if (user_subshell && ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
+ {
+ run_pending_traps ();
+ jump_to_top_level (ERREXIT);
+ }
+
+ return (last_command_exit_value);
+ }
+ else
+ {
+ DESCRIBE_PID (paren_pid);
+
+ run_pending_traps ();
+
+ /* Posix 2013 2.9.3.1: "the exit status of an asynchronous list
+ shall be zero." */
+ last_command_exit_value = 0;
+ return (EXECUTION_SUCCESS);
+ }
+ }
+ }
+
+#if defined (COMMAND_TIMING)
+ if (command->flags & CMD_TIME_PIPELINE)
+ {
+ if (asynchronous)
+ {
+ command->flags |= CMD_FORCE_SUBSHELL;
+ exec_result = execute_command_internal (command, 1, pipe_in, pipe_out, fds_to_close);
+ }
+ else
+ {
+ exec_result = time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+#if 0
+ if (running_trap == 0)
+#endif
+ currently_executing_command = (COMMAND *)NULL;
+ }
+ return (exec_result);
+ }
+#endif /* COMMAND_TIMING */
+
+ if (shell_control_structure (command->type) && command->redirects)
+ stdin_redir = stdin_redirects (command->redirects);
+
+#if defined (PROCESS_SUBSTITUTION)
+ if (variable_context != 0)
+ {
+ ofifo = num_fifos ();
+ ofifo_list = copy_fifo_list ((int *)&osize);
+ saved_fifo = 1;
+ }
+ else
+ saved_fifo = 0;
+#endif
+
+ /* Handle WHILE FOR CASE etc. with redirections. (Also '&' input
+ redirection.) */
+ if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
+ {
+ cleanup_redirects (redirection_undo_list);
+ redirection_undo_list = (REDIRECT *)NULL;
+ dispose_exec_redirects ();
+#if defined (PROCESS_SUBSTITUTION)
+ if (saved_fifo)
+ free ((void *)ofifo_list);
+#endif
+ return (last_command_exit_value = EXECUTION_FAILURE);
+ }
+
+ if (redirection_undo_list)
+ {
+ /* XXX - why copy here? */
+ my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list);
+ dispose_redirects (redirection_undo_list);
+ redirection_undo_list = (REDIRECT *)NULL;
+ }
+ else
+ my_undo_list = (REDIRECT *)NULL;
+
+ if (exec_redirection_undo_list)
+ {
+ /* XXX - why copy here? */
+ exec_undo_list = (REDIRECT *)copy_redirects (exec_redirection_undo_list);
+ dispose_redirects (exec_redirection_undo_list);
+ exec_redirection_undo_list = (REDIRECT *)NULL;
+ }
+ else
+ exec_undo_list = (REDIRECT *)NULL;
+
+ if (my_undo_list || exec_undo_list)
+ begin_unwind_frame ("loop_redirections");
+
+ if (my_undo_list)
+ add_unwind_protect ((Function *)cleanup_redirects, my_undo_list);
+
+ if (exec_undo_list)
+ add_unwind_protect ((Function *)dispose_redirects, exec_undo_list);
+
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
+ QUIT;
+
+ switch (command->type)
+ {
+ case cm_simple:
+ {
+ save_line_number = line_number;
+ /* We can't rely on variables retaining their values across a
+ call to execute_simple_command if a longjmp occurs as the
+ result of a `return' builtin. This is true for sure with gcc. */
+#if defined (RECYCLES_PIDS)
+ last_made_pid = NO_PID;
+#endif
+ last_pid = last_made_pid;
+ was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
+
+ if (ignore_return && command->value.Simple)
+ command->value.Simple->flags |= CMD_IGNORE_RETURN;
+ if (command->flags & CMD_STDIN_REDIR)
+ command->value.Simple->flags |= CMD_STDIN_REDIR;
+
+ line_number_for_err_trap = line_number = command->value.Simple->line;
+ exec_result =
+ execute_simple_command (command->value.Simple, pipe_in, pipe_out,
+ asynchronous, fds_to_close);
+ line_number = save_line_number;
+
+ /* The temporary environment should be used for only the simple
+ command immediately following its definition. */
+ dispose_used_env_vars ();
+
+#if (defined (ultrix) && defined (mips)) || defined (C_ALLOCA)
+ /* Reclaim memory allocated with alloca () on machines which
+ may be using the alloca emulation code. */
+ (void) alloca (0);
+#endif /* (ultrix && mips) || C_ALLOCA */
+
+ /* If we forked to do the command, then we must wait_for ()
+ the child. */
+
+ /* XXX - this is something to watch out for if there are problems
+ when the shell is compiled without job control. Don't worry about
+ whether or not last_made_pid == last_pid; already_making_children
+ tells us whether or not there are unwaited-for children to wait
+ for and reap. */
+ if (already_making_children && pipe_out == NO_PIPE)
+ {
+ stop_pipeline (asynchronous, (COMMAND *)NULL);
+
+ if (asynchronous)
+ {
+ DESCRIBE_PID (last_made_pid);
+ }
+ else
+#if !defined (JOB_CONTROL)
+ /* Do not wait for asynchronous processes started from
+ startup files. */
+ if (last_made_pid != last_asynchronous_pid)
+#endif
+ /* When executing a shell function that executes other
+ commands, this causes the last simple command in
+ the function to be waited for twice. This also causes
+ subshells forked to execute builtin commands (e.g., in
+ pipelines) to be waited for twice. */
+ exec_result = wait_for (last_made_pid);
+ }
+ }
+
+ /* 2009/02/13 -- pipeline failure is processed elsewhere. This handles
+ only the failure of a simple command. */
+ if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ line_number = line_number_for_err_trap;
+ run_error_trap ();
+ line_number = save_line_number;
+ }
+
+ if (ignore_return == 0 && invert == 0 &&
+ ((posixly_correct && interactive == 0 && special_builtin_failed) ||
+ (exit_immediately_on_error && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)))
+ {
+ last_command_exit_value = exec_result;
+ run_pending_traps ();
+ jump_to_top_level (ERREXIT);
+ }
+
+ break;
+
+ case cm_for:
+ if (ignore_return)
+ command->value.For->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_for_command (command->value.For);
+ break;
+
+#if defined (ARITH_FOR_COMMAND)
+ case cm_arith_for:
+ if (ignore_return)
+ command->value.ArithFor->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_arith_for_command (command->value.ArithFor);
+ break;
+#endif
+
+#if defined (SELECT_COMMAND)
+ case cm_select:
+ if (ignore_return)
+ command->value.Select->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_select_command (command->value.Select);
+ break;
+#endif
+
+ case cm_case:
+ if (ignore_return)
+ command->value.Case->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_case_command (command->value.Case);
+ break;
+
+ case cm_while:
+ if (ignore_return)
+ command->value.While->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_while_command (command->value.While);
+ break;
+
+ case cm_until:
+ if (ignore_return)
+ command->value.While->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_until_command (command->value.While);
+ break;
+
+ case cm_if:
+ if (ignore_return)
+ command->value.If->flags |= CMD_IGNORE_RETURN;
+ exec_result = execute_if_command (command->value.If);
+ break;
+
+ case cm_group:
+
+ /* This code can be executed from either of two paths: an explicit
+ '{}' command, or via a function call. If we are executed via a
+ function call, we have already taken care of the function being
+ executed in the background (down there in execute_simple_command ()),
+ and this command should *not* be marked as asynchronous. If we
+ are executing a regular '{}' group command, and asynchronous == 1,
+ we must want to execute the whole command in the background, so we
+ need a subshell, and we want the stuff executed in that subshell
+ (this group command) to be executed in the foreground of that
+ subshell (i.e. there will not be *another* subshell forked).
+
+ What we do is to force a subshell if asynchronous, and then call
+ execute_command_internal again with asynchronous still set to 1,
+ but with the original group command, so the printed command will
+ look right.
+
+ The code above that handles forking off subshells will note that
+ both subshell and async are on, and turn off async in the child
+ after forking the subshell (but leave async set in the parent, so
+ the normal call to describe_pid is made). This turning off
+ async is *crucial*; if it is not done, this will fall into an
+ infinite loop of executions through this spot in subshell after
+ subshell until the process limit is exhausted. */
+
+ if (asynchronous)
+ {
+ command->flags |= CMD_FORCE_SUBSHELL;
+ exec_result =
+ execute_command_internal (command, 1, pipe_in, pipe_out,
+ fds_to_close);
+ }
+ else
+ {
+ if (ignore_return && command->value.Group->command)
+ command->value.Group->command->flags |= CMD_IGNORE_RETURN;
+ exec_result =
+ execute_command_internal (command->value.Group->command,
+ asynchronous, pipe_in, pipe_out,
+ fds_to_close);
+ }
+ break;
+
+ case cm_connection:
+ exec_result = execute_connection (command, asynchronous,
+ pipe_in, pipe_out, fds_to_close);
+ break;
+
+#if defined (DPAREN_ARITHMETIC)
+ case cm_arith:
+ was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
+ if (ignore_return)
+ command->value.Arith->flags |= CMD_IGNORE_RETURN;
+ line_number_for_err_trap = save_line_number = line_number;
+ exec_result = execute_arith_command (command->value.Arith);
+ line_number = save_line_number;
+
+ if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
+ run_error_trap ();
+ line_number = save_line_number;
+ }
+
+ if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ run_pending_traps ();
+ jump_to_top_level (ERREXIT);
+ }
+
+ break;
+#endif
+
+#if defined (COND_COMMAND)
+ case cm_cond:
+ was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
+ if (ignore_return)
+ command->value.Cond->flags |= CMD_IGNORE_RETURN;
+
+ line_number_for_err_trap = save_line_number = line_number;
+ exec_result = execute_cond_command (command->value.Cond);
+ line_number = save_line_number;
+
+ if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
+ run_error_trap ();
+ line_number = save_line_number;
+ }
+
+ if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ run_pending_traps ();
+ jump_to_top_level (ERREXIT);
+ }
+
+ break;
+#endif
+
+ case cm_function_def:
+ exec_result = execute_intern_function (command->value.Function_def->name,
+ command->value.Function_def);
+ break;
+
+ default:
+ command_error ("execute_command", CMDERR_BADTYPE, command->type, 0);
+ }
+
+ if (my_undo_list)
+ {
+ do_redirections (my_undo_list, RX_ACTIVE);
+ dispose_redirects (my_undo_list);
+ }
+
+ if (exec_undo_list)
+ dispose_redirects (exec_undo_list);
+
+ if (my_undo_list || exec_undo_list)
+ discard_unwind_frame ("loop_redirections");
+
+#if defined (PROCESS_SUBSTITUTION)
+ if (saved_fifo)
+ {
+ nfifo = num_fifos ();
+ if (nfifo > ofifo)
+ close_new_fifos ((char *)ofifo_list, osize);
+ free ((void *)ofifo_list);
+ }
+#endif
+
+ /* Invert the return value if we have to */
+ if (invert)
+ exec_result = (exec_result == EXECUTION_SUCCESS)
+ ? EXECUTION_FAILURE
+ : EXECUTION_SUCCESS;
+
+#if defined (DPAREN_ARITHMETIC) || defined (COND_COMMAND)
+ /* This is where we set PIPESTATUS from the exit status of the appropriate
+ compound commands (the ones that look enough like simple commands to
+ cause confusion). We might be able to optimize by not doing this if
+ subshell_environment != 0. */
+ switch (command->type)
+ {
+# if defined (DPAREN_ARITHMETIC)
+ case cm_arith:
+# endif
+# if defined (COND_COMMAND)
+ case cm_cond:
+# endif
+ set_pipestatus_from_exit (exec_result);
+ break;
+ }
+#endif
+
+ last_command_exit_value = exec_result;
+ run_pending_traps ();
+#if 0
+ if (running_trap == 0)
+#endif
+ currently_executing_command = (COMMAND *)NULL;
+
+ return (last_command_exit_value);
+}
+
+#if defined (COMMAND_TIMING)
+
+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY)
+extern struct timeval *difftimeval __P((struct timeval *, struct timeval *, struct timeval *));
+extern struct timeval *addtimeval __P((struct timeval *, struct timeval *, struct timeval *));
+extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeval *));
+#endif
+
+#define POSIX_TIMEFORMAT "real %2R\nuser %2U\nsys %2S"
+#define BASH_TIMEFORMAT "\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS"
+
+static const int precs[] = { 0, 100, 10, 1 };
+
+/* Expand one `%'-prefixed escape sequence from a time format string. */
+static int
+mkfmt (buf, prec, lng, sec, sec_fraction)
+ char *buf;
+ int prec, lng;
+ time_t sec;
+ int sec_fraction;
+{
+ time_t min;
+ char abuf[INT_STRLEN_BOUND(time_t) + 1];
+ int ind, aind;
+
+ ind = 0;
+ abuf[sizeof(abuf) - 1] = '\0';
+
+ /* If LNG is non-zero, we want to decompose SEC into minutes and seconds. */
+ if (lng)
+ {
+ min = sec / 60;
+ sec %= 60;
+ aind = sizeof(abuf) - 2;
+ do
+ abuf[aind--] = (min % 10) + '0';
+ while (min /= 10);
+ aind++;
+ while (abuf[aind])
+ buf[ind++] = abuf[aind++];
+ buf[ind++] = 'm';
+ }
+
+ /* Now add the seconds. */
+ aind = sizeof (abuf) - 2;
+ do
+ abuf[aind--] = (sec % 10) + '0';
+ while (sec /= 10);
+ aind++;
+ while (abuf[aind])
+ buf[ind++] = abuf[aind++];
+
+ /* We want to add a decimal point and PREC places after it if PREC is
+ nonzero. PREC is not greater than 3. SEC_FRACTION is between 0
+ and 999. */
+ if (prec != 0)
+ {
+ buf[ind++] = '.';
+ for (aind = 1; aind <= prec; aind++)
+ {
+ buf[ind++] = (sec_fraction / precs[aind]) + '0';
+ sec_fraction %= precs[aind];
+ }
+ }
+
+ if (lng)
+ buf[ind++] = 's';
+ buf[ind] = '\0';
+
+ return (ind);
+}
+
+/* Interpret the format string FORMAT, interpolating the following escape
+ sequences:
+ %[prec][l][RUS]
+
+ where the optional `prec' is a precision, meaning the number of
+ characters after the decimal point, the optional `l' means to format
+ using minutes and seconds (MMmNN[.FF]s), like the `times' builtin',
+ and the last character is one of
+
+ R number of seconds of `real' time
+ U number of seconds of `user' time
+ S number of seconds of `system' time
+
+ An occurrence of `%%' in the format string is translated to a `%'. The
+ result is printed to FP, a pointer to a FILE. The other variables are
+ the seconds and thousandths of a second of real, user, and system time,
+ resectively. */
+static void
+print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu)
+ FILE *fp;
+ char *format;
+ time_t rs;
+ int rsf;
+ time_t us;
+ int usf;
+ time_t ss;
+ int ssf, cpu;
+{
+ int prec, lng, len;
+ char *str, *s, ts[INT_STRLEN_BOUND (time_t) + sizeof ("mSS.FFFF")];
+ time_t sum;
+ int sum_frac;
+ int sindex, ssize;
+
+ len = strlen (format);
+ ssize = (len + 64) - (len % 64);
+ str = (char *)xmalloc (ssize);
+ sindex = 0;
+
+ for (s = format; *s; s++)
+ {
+ if (*s != '%' || s[1] == '\0')
+ {
+ RESIZE_MALLOCED_BUFFER (str, sindex, 1, ssize, 64);
+ str[sindex++] = *s;
+ }
+ else if (s[1] == '%')
+ {
+ s++;
+ RESIZE_MALLOCED_BUFFER (str, sindex, 1, ssize, 64);
+ str[sindex++] = *s;
+ }
+ else if (s[1] == 'P')
+ {
+ s++;
+#if 0
+ /* clamp CPU usage at 100% */
+ if (cpu > 10000)
+ cpu = 10000;
+#endif
+ sum = cpu / 100;
+ sum_frac = (cpu % 100) * 10;
+ len = mkfmt (ts, 2, 0, sum, sum_frac);
+ RESIZE_MALLOCED_BUFFER (str, sindex, len, ssize, 64);
+ strcpy (str + sindex, ts);
+ sindex += len;
+ }
+ else
+ {
+ prec = 3; /* default is three places past the decimal point. */
+ lng = 0; /* default is to not use minutes or append `s' */
+ s++;
+ if (DIGIT (*s)) /* `precision' */
+ {
+ prec = *s++ - '0';
+ if (prec > 3) prec = 3;
+ }
+ if (*s == 'l') /* `length extender' */
+ {
+ lng = 1;
+ s++;
+ }
+ if (*s == 'R' || *s == 'E')
+ len = mkfmt (ts, prec, lng, rs, rsf);
+ else if (*s == 'U')
+ len = mkfmt (ts, prec, lng, us, usf);
+ else if (*s == 'S')
+ len = mkfmt (ts, prec, lng, ss, ssf);
+ else
+ {
+ internal_error (_("TIMEFORMAT: `%c': invalid format character"), *s);
+ free (str);
+ return;
+ }
+ RESIZE_MALLOCED_BUFFER (str, sindex, len, ssize, 64);
+ strcpy (str + sindex, ts);
+ sindex += len;
+ }
+ }
+
+ str[sindex] = '\0';
+ fprintf (fp, "%s\n", str);
+ fflush (fp);
+
+ free (str);
+}
+
+static int
+time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
+ COMMAND *command;
+ int asynchronous, pipe_in, pipe_out;
+ struct fd_bitmap *fds_to_close;
+{
+ int rv, posix_time, old_flags, nullcmd;
+ time_t rs, us, ss;
+ int rsf, usf, ssf;
+ int cpu;
+ char *time_format;
+
+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY)
+ struct timeval real, user, sys;
+ struct timeval before, after;
+# if defined (HAVE_STRUCT_TIMEZONE)
+ struct timezone dtz; /* posix doesn't define this */
+# endif
+ struct rusage selfb, selfa, kidsb, kidsa; /* a = after, b = before */
+#else
+# if defined (HAVE_TIMES)
+ clock_t tbefore, tafter, real, user, sys;
+ struct tms before, after;
+# endif
+#endif
+
+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY)
+# if defined (HAVE_STRUCT_TIMEZONE)
+ gettimeofday (&before, &dtz);
+# else
+ gettimeofday (&before, (void *)NULL);
+# endif /* !HAVE_STRUCT_TIMEZONE */
+ getrusage (RUSAGE_SELF, &selfb);
+ getrusage (RUSAGE_CHILDREN, &kidsb);
+#else
+# if defined (HAVE_TIMES)
+ tbefore = times (&before);
+# endif
+#endif
+
+ posix_time = command && (command->flags & CMD_TIME_POSIX);
+
+ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0);
+ if (posixly_correct && nullcmd)
+ {
+#if defined (HAVE_GETRUSAGE)
+ selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0;
+ selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0;
+ before.tv_sec = shell_start_time;
+ before.tv_usec = 0;
+#else
+ before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0;
+ tbefore = shell_start_time;
+#endif
+ }
+
+ old_flags = command->flags;
+ command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX);
+ rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+ command->flags = old_flags;
+
+ rs = us = ss = 0;
+ rsf = usf = ssf = cpu = 0;
+
+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY)
+# if defined (HAVE_STRUCT_TIMEZONE)
+ gettimeofday (&after, &dtz);
+# else
+ gettimeofday (&after, (void *)NULL);
+# endif /* !HAVE_STRUCT_TIMEZONE */
+ getrusage (RUSAGE_SELF, &selfa);
+ getrusage (RUSAGE_CHILDREN, &kidsa);
+
+ difftimeval (&real, &before, &after);
+ timeval_to_secs (&real, &rs, &rsf);
+
+ addtimeval (&user, difftimeval(&after, &selfb.ru_utime, &selfa.ru_utime),
+ difftimeval(&before, &kidsb.ru_utime, &kidsa.ru_utime));
+ timeval_to_secs (&user, &us, &usf);
+
+ addtimeval (&sys, difftimeval(&after, &selfb.ru_stime, &selfa.ru_stime),
+ difftimeval(&before, &kidsb.ru_stime, &kidsa.ru_stime));
+ timeval_to_secs (&sys, &ss, &ssf);
+
+ cpu = timeval_to_cpu (&real, &user, &sys);
+#else
+# if defined (HAVE_TIMES)
+ tafter = times (&after);
+
+ real = tafter - tbefore;
+ clock_t_to_secs (real, &rs, &rsf);
+
+ user = (after.tms_utime - before.tms_utime) + (after.tms_cutime - before.tms_cutime);
+ clock_t_to_secs (user, &us, &usf);
+
+ sys = (after.tms_stime - before.tms_stime) + (after.tms_cstime - before.tms_cstime);
+ clock_t_to_secs (sys, &ss, &ssf);
+
+ cpu = (real == 0) ? 0 : ((user + sys) * 10000) / real;
+
+# else
+ rs = us = ss = 0;
+ rsf = usf = ssf = cpu = 0;
+# endif
+#endif
+
+ if (posix_time)
+ time_format = POSIX_TIMEFORMAT;
+ else if ((time_format = get_string_value ("TIMEFORMAT")) == 0)
+ {
+ if (posixly_correct && nullcmd)
+ time_format = "user\t%2lU\nsys\t%2lS";
+ else
+ time_format = BASH_TIMEFORMAT;
+ }
+ if (time_format && *time_format)
+ print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu);
+
+ return rv;
+}
+#endif /* COMMAND_TIMING */
+
+/* Execute a command that's supposed to be in a subshell. This must be
+ called after make_child and we must be running in the child process.
+ The caller will return or exit() immediately with the value this returns. */
+static int
+execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
+ COMMAND *command;
+ int asynchronous;
+ int pipe_in, pipe_out;
+ struct fd_bitmap *fds_to_close;
+{
+ int user_subshell, return_code, function_value, should_redir_stdin, invert;
+ int ois, user_coproc;
+ int result;
+ volatile COMMAND *tcom;
+
+ USE_VAR(user_subshell);
+ USE_VAR(user_coproc);
+ USE_VAR(invert);
+ USE_VAR(tcom);
+ USE_VAR(asynchronous);
+
+ subshell_level++;
+ should_redir_stdin = (asynchronous && (command->flags & CMD_STDIN_REDIR) &&
+ pipe_in == NO_PIPE &&
+ stdin_redirects (command->redirects) == 0);
+
+ invert = (command->flags & CMD_INVERT_RETURN) != 0;
+ user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0);
+ user_coproc = command->type == cm_coproc;
+
+ command->flags &= ~(CMD_FORCE_SUBSHELL | CMD_WANT_SUBSHELL | CMD_INVERT_RETURN);
+
+ /* If a command is asynchronous in a subshell (like ( foo ) & or
+ the special case of an asynchronous GROUP command where the
+ the subshell bit is turned on down in case cm_group: below),
+ turn off `asynchronous', so that two subshells aren't spawned.
+ XXX - asynchronous used to be set to 0 in this block, but that
+ means that setup_async_signals was never run. Now it's set to
+ 0 after subshell_environment is set appropriately and setup_async_signals
+ is run.
+
+ This seems semantically correct to me. For example,
+ ( foo ) & seems to say ``do the command `foo' in a subshell
+ environment, but don't wait for that subshell to finish'',
+ and "{ foo ; bar ; } &" seems to me to be like functions or
+ builtins in the background, which executed in a subshell
+ environment. I just don't see the need to fork two subshells. */
+
+ /* Don't fork again, we are already in a subshell. A `doubly
+ async' shell is not interactive, however. */
+ if (asynchronous)
+ {
+#if defined (JOB_CONTROL)
+ /* If a construct like ( exec xxx yyy ) & is given while job
+ control is active, we want to prevent exec from putting the
+ subshell back into the original process group, carefully
+ undoing all the work we just did in make_child. */
+ original_pgrp = -1;
+#endif /* JOB_CONTROL */
+ ois = interactive_shell;
+ interactive_shell = 0;
+ /* This test is to prevent alias expansion by interactive shells that
+ run `(command) &' but to allow scripts that have enabled alias
+ expansion with `shopt -s expand_alias' to continue to expand
+ aliases. */
+ if (ois != interactive_shell)
+ expand_aliases = 0;
+ }
+
+ /* Subshells are neither login nor interactive. */
+ login_shell = interactive = 0;
+
+ if (user_subshell)
+ subshell_environment = SUBSHELL_PAREN;
+ else
+ {
+ subshell_environment = 0; /* XXX */
+ if (asynchronous)
+ subshell_environment |= SUBSHELL_ASYNC;
+ if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
+ subshell_environment |= SUBSHELL_PIPE;
+ if (user_coproc)
+ subshell_environment |= SUBSHELL_COPROC;
+ }
+
+ reset_terminating_signals (); /* in sig.c */
+ /* Cancel traps, in trap.c. */
+ /* Reset the signal handlers in the child, but don't free the
+ trap strings. Set a flag noting that we have to free the
+ trap strings if we run trap to change a signal disposition. */
+ reset_signal_handlers ();
+ subshell_environment |= SUBSHELL_RESETTRAP;
+
+ /* Make sure restore_original_signals doesn't undo the work done by
+ make_child to ensure that asynchronous children are immune to SIGINT
+ and SIGQUIT. Turn off asynchronous to make sure more subshells are
+ not spawned. */
+ if (asynchronous)
+ {
+ setup_async_signals ();
+ asynchronous = 0;
+ }
+
+#if defined (JOB_CONTROL)
+ set_sigchld_handler ();
+#endif /* JOB_CONTROL */
+
+ set_sigint_handler ();
+
+#if defined (JOB_CONTROL)
+ /* Delete all traces that there were any jobs running. This is
+ only for subshells. */
+ without_job_control ();
+#endif /* JOB_CONTROL */
+
+ if (fds_to_close)
+ close_fd_bitmap (fds_to_close);
+
+ do_piping (pipe_in, pipe_out);
+
+#if defined (COPROCESS_SUPPORT)
+ coproc_closeall ();
+#endif
+
+ /* If this is a user subshell, set a flag if stdin was redirected.
+ This is used later to decide whether to redirect fd 0 to
+ /dev/null for async commands in the subshell. This adds more
+ sh compatibility, but I'm not sure it's the right thing to do. */
+ if (user_subshell)
+ {
+ stdin_redir = stdin_redirects (command->redirects);
+ restore_default_signal (EXIT_TRAP);
+ }
+
+ /* If this is an asynchronous command (command &), we want to
+ redirect the standard input from /dev/null in the absence of
+ any specific redirection involving stdin. */
+ if (should_redir_stdin && stdin_redir == 0)
+ async_redirect_stdin ();
+
+ /* Do redirections, then dispose of them before recursive call. */
+ if (command->redirects)
+ {
+ if (do_redirections (command->redirects, RX_ACTIVE) != 0)
+ exit (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
+
+ dispose_redirects (command->redirects);
+ command->redirects = (REDIRECT *)NULL;
+ }
+
+ if (command->type == cm_subshell)
+ tcom = command->value.Subshell->command;
+ else if (user_coproc)
+ tcom = command->value.Coproc->command;
+ else
+ tcom = command;
+
+ if (command->flags & CMD_TIME_PIPELINE)
+ tcom->flags |= CMD_TIME_PIPELINE;
+ if (command->flags & CMD_TIME_POSIX)
+ tcom->flags |= CMD_TIME_POSIX;
+
+ /* Make sure the subshell inherits any CMD_IGNORE_RETURN flag. */
+ if ((command->flags & CMD_IGNORE_RETURN) && tcom != command)
+ tcom->flags |= CMD_IGNORE_RETURN;
+
+ /* If this is a simple command, tell execute_disk_command that it
+ might be able to get away without forking and simply exec.
+ This means things like ( sleep 10 ) will only cause one fork.
+ If we're timing the command or inverting its return value, however,
+ we cannot do this optimization. */
+ if ((user_subshell || user_coproc) && (tcom->type == cm_simple || tcom->type == cm_subshell) &&
+ ((tcom->flags & CMD_TIME_PIPELINE) == 0) &&
+ ((tcom->flags & CMD_INVERT_RETURN) == 0))
+ {
+ tcom->flags |= CMD_NO_FORK;
+ if (tcom->type == cm_simple)
+ tcom->value.Simple->flags |= CMD_NO_FORK;
+ }
+
+ invert = (tcom->flags & CMD_INVERT_RETURN) != 0;
+ tcom->flags &= ~CMD_INVERT_RETURN;
+
+ result = setjmp_nosigs (top_level);
+
+ /* If we're inside a function while executing this subshell, we
+ need to handle a possible `return'. */
+ function_value = 0;
+ if (return_catch_flag)
+ function_value = setjmp_nosigs (return_catch);
+
+ /* If we're going to exit the shell, we don't want to invert the return
+ status. */
+ if (result == EXITPROG)
+ invert = 0, return_code = last_command_exit_value;
+ else if (result)
+ return_code = EXECUTION_FAILURE;
+ else if (function_value)
+ return_code = return_catch_value;
+ else
+ return_code = execute_command_internal ((COMMAND *)tcom, asynchronous, NO_PIPE, NO_PIPE, fds_to_close);
+
+ /* If we are asked to, invert the return value. */
+ if (invert)
+ return_code = (return_code == EXECUTION_SUCCESS) ? EXECUTION_FAILURE
+ : EXECUTION_SUCCESS;
+
+ /* If we were explicitly placed in a subshell with (), we need
+ to do the `shell cleanup' things, such as running traps[0]. */
+ if (user_subshell && signal_is_trapped (0))
+ {
+ last_command_exit_value = return_code;
+ return_code = run_exit_trap ();
+ }
+
+ subshell_level--;
+ return (return_code);
+ /* NOTREACHED */
+}
+
+#if defined (COPROCESS_SUPPORT)
+#define COPROC_MAX 16
+
+typedef struct cpelement
+ {
+ struct cpelement *next;
+ struct coproc *coproc;
+ }
+cpelement_t;
+
+typedef struct cplist
+ {
+ struct cpelement *head;
+ struct cpelement *tail;
+ int ncoproc;
+ int lock;
+ }
+cplist_t;
+
+static struct cpelement *cpe_alloc __P((struct coproc *));
+static void cpe_dispose __P((struct cpelement *));
+static struct cpelement *cpl_add __P((struct coproc *));
+static struct cpelement *cpl_delete __P((pid_t));
+static void cpl_reap __P((void));
+static void cpl_flush __P((void));
+static void cpl_closeall __P((void));
+static struct cpelement *cpl_search __P((pid_t));
+static struct cpelement *cpl_searchbyname __P((const char *));
+static void cpl_prune __P((void));
+
+static void coproc_free __P((struct coproc *));
+
+/* Will go away when there is fully-implemented support for multiple coprocs. */
+Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0, 0, 0, 0 };
+
+cplist_t coproc_list = {0, 0, 0};
+
+/* Functions to manage the list of coprocs */
+
+static struct cpelement *
+cpe_alloc (cp)
+ Coproc *cp;
+{
+ struct cpelement *cpe;
+
+ cpe = (struct cpelement *)xmalloc (sizeof (struct cpelement));
+ cpe->coproc = cp;
+ cpe->next = (struct cpelement *)0;
+ return cpe;
+}
+
+static void
+cpe_dispose (cpe)
+ struct cpelement *cpe;
+{
+ free (cpe);
+}
+
+static struct cpelement *
+cpl_add (cp)
+ Coproc *cp;
+{
+ struct cpelement *cpe;
+
+ cpe = cpe_alloc (cp);
+
+ if (coproc_list.head == 0)
+ {
+ coproc_list.head = coproc_list.tail = cpe;
+ coproc_list.ncoproc = 0; /* just to make sure */
+ }
+ else
+ {
+ coproc_list.tail->next = cpe;
+ coproc_list.tail = cpe;
+ }
+ coproc_list.ncoproc++;
+
+ return cpe;
+}
+
+static struct cpelement *
+cpl_delete (pid)
+ pid_t pid;
+{
+ struct cpelement *prev, *p;
+
+ for (prev = p = coproc_list.head; p; prev = p, p = p->next)
+ if (p->coproc->c_pid == pid)
+ {
+ prev->next = p->next; /* remove from list */
+ break;
+ }
+
+ if (p == 0)
+ return 0; /* not found */
+
+#if defined (DEBUG)
+ itrace("cpl_delete: deleting %d", pid);
+#endif
+
+ /* Housekeeping in the border cases. */
+ if (p == coproc_list.head)
+ coproc_list.head = coproc_list.head->next;
+ else if (p == coproc_list.tail)
+ coproc_list.tail = prev;
+
+ coproc_list.ncoproc--;
+ if (coproc_list.ncoproc == 0)
+ coproc_list.head = coproc_list.tail = 0;
+ else if (coproc_list.ncoproc == 1)
+ coproc_list.tail = coproc_list.head; /* just to make sure */
+
+ return (p);
+}
+
+static void
+cpl_reap ()
+{
+ struct cpelement *p, *next, *nh, *nt;
+
+ /* Build a new list by removing dead coprocs and fix up the coproc_list
+ pointers when done. */
+ nh = nt = next = (struct cpelement *)0;
+ for (p = coproc_list.head; p; p = next)
+ {
+ next = p->next;
+ if (p->coproc->c_flags & COPROC_DEAD)
+ {
+ coproc_list.ncoproc--; /* keep running count, fix up pointers later */
+
+#if defined (DEBUG)
+ itrace("cpl_reap: deleting %d", p->coproc->c_pid);
+#endif
+
+ coproc_dispose (p->coproc);
+ cpe_dispose (p);
+ }
+ else if (nh == 0)
+ nh = nt = p;
+ else
+ {
+ nt->next = p;
+ nt = nt->next;
+ }
+ }
+
+ if (coproc_list.ncoproc == 0)
+ coproc_list.head = coproc_list.tail = 0;
+ else
+ {
+ if (nt)
+ nt->next = 0;
+ coproc_list.head = nh;
+ coproc_list.tail = nt;
+ if (coproc_list.ncoproc == 1)
+ coproc_list.tail = coproc_list.head; /* just to make sure */
+ }
+}
+
+/* Clear out the list of saved statuses */
+static void
+cpl_flush ()
+{
+ struct cpelement *cpe, *p;
+
+ for (cpe = coproc_list.head; cpe; )
+ {
+ p = cpe;
+ cpe = cpe->next;
+
+ coproc_dispose (p->coproc);
+ cpe_dispose (p);
+ }
+
+ coproc_list.head = coproc_list.tail = 0;
+ coproc_list.ncoproc = 0;
+}
+
+static void
+cpl_closeall ()
+{
+ struct cpelement *cpe;
+
+ for (cpe = coproc_list.head; cpe; cpe = cpe->next)
+ coproc_close (cpe->coproc);
+}
+
+static void
+cpl_fdchk (fd)
+ int fd;
+{
+ struct cpelement *cpe;
+
+ for (cpe = coproc_list.head; cpe; cpe = cpe->next)
+ coproc_checkfd (cpe->coproc, fd);
+}
+
+/* Search for PID in the list of coprocs; return the cpelement struct if
+ found. If not found, return NULL. */
+static struct cpelement *
+cpl_search (pid)
+ pid_t pid;
+{
+ struct cpelement *cpe;
+
+ for (cpe = coproc_list.head ; cpe; cpe = cpe->next)
+ if (cpe->coproc->c_pid == pid)
+ return cpe;
+ return (struct cpelement *)NULL;
+}
+
+/* Search for the coproc named NAME in the list of coprocs; return the
+ cpelement struct if found. If not found, return NULL. */
+static struct cpelement *
+cpl_searchbyname (name)
+ const char *name;
+{
+ struct cpelement *cp;
+
+ for (cp = coproc_list.head ; cp; cp = cp->next)
+ if (STREQ (cp->coproc->c_name, name))
+ return cp;
+ return (struct cpelement *)NULL;
+}
+
+#if 0
+static void
+cpl_prune ()
+{
+ struct cpelement *cp;
+
+ while (coproc_list.head && coproc_list.ncoproc > COPROC_MAX)
+ {
+ cp = coproc_list.head;
+ coproc_list.head = coproc_list.head->next;
+ coproc_dispose (cp->coproc);
+ cpe_dispose (cp);
+ coproc_list.ncoproc--;
+ }
+}
+#endif
+
+/* These currently use a single global "shell coproc" but are written in a
+ way to not preclude additional coprocs later (using the list management
+ package above). */
+
+struct coproc *
+getcoprocbypid (pid)
+ pid_t pid;
+{
+#if MULTIPLE_COPROCS
+ struct cpelement *p;
+
+ p = cpl_search (pid);
+ return (p ? p->coproc : 0);
+#else
+ return (pid == sh_coproc.c_pid ? &sh_coproc : 0);
+#endif
+}
+
+struct coproc *
+getcoprocbyname (name)
+ const char *name;
+{
+#if MULTIPLE_COPROCS
+ struct cpelement *p;
+
+ p = cpl_searchbyname (name);
+ return (p ? p->coproc : 0);
+#else
+ return ((sh_coproc.c_name && STREQ (sh_coproc.c_name, name)) ? &sh_coproc : 0);
+#endif
+}
+
+void
+coproc_init (cp)
+ struct coproc *cp;
+{
+ cp->c_name = 0;
+ cp->c_pid = NO_PID;
+ cp->c_rfd = cp->c_wfd = -1;
+ cp->c_rsave = cp->c_wsave = -1;
+ cp->c_flags = cp->c_status = cp->c_lock = 0;
+}
+
+struct coproc *
+coproc_alloc (name, pid)
+ char *name;
+ pid_t pid;
+{
+ struct coproc *cp;
+
+#if MULTIPLE_COPROCS
+ cp = (struct coproc *)xmalloc (sizeof (struct coproc));
+#else
+ cp = &sh_coproc;
+#endif
+ coproc_init (cp);
+ cp->c_lock = 2;
+
+ cp->c_pid = pid;
+ cp->c_name = savestring (name);
+#if MULTIPLE_COPROCS
+ cpl_add (cp);
+#endif
+ cp->c_lock = 0;
+ return (cp);
+}
+
+static void
+coproc_free (cp)
+ struct coproc *cp;
+{
+ free (cp);
+}
+
+void
+coproc_dispose (cp)
+ struct coproc *cp;
+{
+ sigset_t set, oset;
+
+ if (cp == 0)
+ return;
+
+ BLOCK_SIGNAL (SIGCHLD, set, oset);
+ cp->c_lock = 3;
+ coproc_unsetvars (cp);
+ FREE (cp->c_name);
+ coproc_close (cp);
+#if MULTIPLE_COPROCS
+ coproc_free (cp);
+#else
+ coproc_init (cp);
+ cp->c_lock = 0;
+#endif
+ UNBLOCK_SIGNAL (oset);
+}
+
+/* Placeholder for now. Will require changes for multiple coprocs */
+void
+coproc_flush ()
+{
+#if MULTIPLE_COPROCS
+ cpl_flush ();
+#else
+ coproc_dispose (&sh_coproc);
+#endif
+}
+
+void
+coproc_close (cp)
+ struct coproc *cp;
+{
+ if (cp->c_rfd >= 0)
+ {
+ close (cp->c_rfd);
+ cp->c_rfd = -1;
+ }
+ if (cp->c_wfd >= 0)
+ {
+ close (cp->c_wfd);
+ cp->c_wfd = -1;
+ }
+ cp->c_rsave = cp->c_wsave = -1;
+}
+
+void
+coproc_closeall ()
+{
+#if MULTIPLE_COPROCS
+ cpl_closeall ();
+#else
+ coproc_close (&sh_coproc); /* XXX - will require changes for multiple coprocs */
+#endif
+}
+
+void
+coproc_reap ()
+{
+#if MULTIPLE_COPROCS
+ cpl_reap ();
+#else
+ struct coproc *cp;
+
+ cp = &sh_coproc; /* XXX - will require changes for multiple coprocs */
+ if (cp && (cp->c_flags & COPROC_DEAD))
+ coproc_dispose (cp);
+#endif
+}
+
+void
+coproc_rclose (cp, fd)
+ struct coproc *cp;
+ int fd;
+{
+ if (cp->c_rfd >= 0 && cp->c_rfd == fd)
+ {
+ close (cp->c_rfd);
+ cp->c_rfd = -1;
+ }
+}
+
+void
+coproc_wclose (cp, fd)
+ struct coproc *cp;
+ int fd;
+{
+ if (cp->c_wfd >= 0 && cp->c_wfd == fd)
+ {
+ close (cp->c_wfd);
+ cp->c_wfd = -1;
+ }
+}
+
+void
+coproc_checkfd (cp, fd)
+ struct coproc *cp;
+ int fd;
+{
+ int update;
+
+ update = 0;
+ if (cp->c_rfd >= 0 && cp->c_rfd == fd)
+ update = cp->c_rfd = -1;
+ if (cp->c_wfd >= 0 && cp->c_wfd == fd)
+ update = cp->c_wfd = -1;
+ if (update)
+ coproc_setvars (cp);
+}
+
+void
+coproc_fdchk (fd)
+ int fd;
+{
+#if MULTIPLE_COPROCS
+ cpl_fdchk (fd);
+#else
+ coproc_checkfd (&sh_coproc, fd);
+#endif
+}
+
+void
+coproc_fdclose (cp, fd)
+ struct coproc *cp;
+ int fd;
+{
+ coproc_rclose (cp, fd);
+ coproc_wclose (cp, fd);
+ coproc_setvars (cp);
+}
+
+void
+coproc_fdsave (cp)
+ struct coproc *cp;
+{
+ cp->c_rsave = cp->c_rfd;
+ cp->c_wsave = cp->c_wfd;
+}
+
+void
+coproc_fdrestore (cp)
+ struct coproc *cp;
+{
+ cp->c_rfd = cp->c_rsave;
+ cp->c_wfd = cp->c_wsave;
+}
+
+void
+coproc_pidchk (pid, status)
+ pid_t pid;
+{
+ struct coproc *cp;
+
+#if MULTIPLE_COPROCS
+ struct cpelement *cpe;
+
+ cpe = cpl_delete (pid);
+ cp = cpe ? cpe->coproc : 0;
+#else
+ cp = getcoprocbypid (pid);
+#endif
+ if (cp)
+ {
+ cp->c_lock = 4;
+ cp->c_status = status;
+ cp->c_flags |= COPROC_DEAD;
+ cp->c_flags &= ~COPROC_RUNNING;
+ /* Don't dispose the coproc or unset the COPROC_XXX variables because
+ this is executed in a signal handler context. Wait until coproc_reap
+ takes care of it. */
+ cp->c_lock = 0;
+ }
+}
+
+void
+coproc_setvars (cp)
+ struct coproc *cp;
+{
+ SHELL_VAR *v;
+ char *namevar, *t;
+ int l;
+#if defined (ARRAY_VARS)
+ arrayind_t ind;
+#endif
+
+ if (cp->c_name == 0)
+ return;
+
+ l = strlen (cp->c_name);
+ namevar = xmalloc (l + 16);
+
+#if defined (ARRAY_VARS)
+ v = find_variable (cp->c_name);
+ if (v == 0)
+ v = make_new_array_variable (cp->c_name);
+ if (array_p (v) == 0)
+ v = convert_var_to_array (v);
+
+ t = itos (cp->c_rfd);
+ ind = 0;
+ v = bind_array_variable (cp->c_name, ind, t, 0);
+ free (t);
+
+ t = itos (cp->c_wfd);
+ ind = 1;
+ bind_array_variable (cp->c_name, ind, t, 0);
+ free (t);
+#else
+ sprintf (namevar, "%s_READ", cp->c_name);
+ t = itos (cp->c_rfd);
+ bind_variable (namevar, t, 0);
+ free (t);
+ sprintf (namevar, "%s_WRITE", cp->c_name);
+ t = itos (cp->c_wfd);
+ bind_variable (namevar, t, 0);
+ free (t);
+#endif
+
+ sprintf (namevar, "%s_PID", cp->c_name);
+ t = itos (cp->c_pid);
+ bind_variable (namevar, t, 0);
+ free (t);
+
+ free (namevar);
+}
+
+void
+coproc_unsetvars (cp)
+ struct coproc *cp;
+{
+ int l;
+ char *namevar;
+
+ if (cp->c_name == 0)
+ return;
+
+ l = strlen (cp->c_name);
+ namevar = xmalloc (l + 16);
+
+ sprintf (namevar, "%s_PID", cp->c_name);
+ unbind_variable (namevar);
+
+#if defined (ARRAY_VARS)
+ unbind_variable (cp->c_name);
+#else
+ sprintf (namevar, "%s_READ", cp->c_name);
+ unbind_variable (namevar);
+ sprintf (namevar, "%s_WRITE", cp->c_name);
+ unbind_variable (namevar);
+#endif
+
+ free (namevar);
+}
+
+static int
+execute_coproc (command, pipe_in, pipe_out, fds_to_close)
+ COMMAND *command;
+ int pipe_in, pipe_out;
+ struct fd_bitmap *fds_to_close;
+{
+ int rpipe[2], wpipe[2], estat, invert;
+ pid_t coproc_pid;
+ Coproc *cp;
+ char *tcmd;
+ sigset_t set, oset;
+
+ /* XXX -- can be removed after changes to handle multiple coprocs */
+#if !MULTIPLE_COPROCS
+ if (sh_coproc.c_pid != NO_PID)
+ internal_warning ("execute_coproc: coproc [%d:%s] still exists", sh_coproc.c_pid, sh_coproc.c_name);
+ coproc_init (&sh_coproc);
+#endif
+
+ invert = (command->flags & CMD_INVERT_RETURN) != 0;
+ command_string_index = 0;
+ tcmd = make_command_string (command);
+
+ sh_openpipe ((int *)&rpipe); /* 0 = parent read, 1 = child write */
+ sh_openpipe ((int *)&wpipe); /* 0 = child read, 1 = parent write */
+
+ BLOCK_SIGNAL (SIGCHLD, set, oset);
+
+ coproc_pid = make_child (savestring (tcmd), 1);
+
+ if (coproc_pid == 0)
+ {
+ close (rpipe[0]);
+ close (wpipe[1]);
+
+ UNBLOCK_SIGNAL (oset);
+ estat = execute_in_subshell (command, 1, wpipe[0], rpipe[1], fds_to_close);
+
+ fflush (stdout);
+ fflush (stderr);
+
+ exit (estat);
+ }
+
+ close (rpipe[1]);
+ close (wpipe[0]);
+
+ /* XXX - possibly run Coproc->name through word expansion? */
+ cp = coproc_alloc (command->value.Coproc->name, coproc_pid);
+ cp->c_rfd = rpipe[0];
+ cp->c_wfd = wpipe[1];
+
+ SET_CLOSE_ON_EXEC (cp->c_rfd);
+ SET_CLOSE_ON_EXEC (cp->c_wfd);
+
+ coproc_setvars (cp);
+
+ UNBLOCK_SIGNAL (oset);
+
+#if 0
+ itrace ("execute_coproc: [%d] %s", coproc_pid, the_printed_command);
+#endif
+
+ close_pipes (pipe_in, pipe_out);
+#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+ unlink_fifo_list ();
+#endif
+ stop_pipeline (1, (COMMAND *)NULL);
+ DESCRIBE_PID (coproc_pid);
+ run_pending_traps ();
+
+ return (invert ? EXECUTION_FAILURE : EXECUTION_SUCCESS);
+}
+#endif
+
+static void
+restore_stdin (s)
+ int s;
+{
+ dup2 (s, 0);
+ close (s);
+}
+
+/* Catch-all cleanup function for lastpipe code for unwind-protects */
+static void
+lastpipe_cleanup (s)
+ int s;
+{
+ unfreeze_jobs_list ();
+}
+
+static int
+execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
+ COMMAND *command;
+ int asynchronous, pipe_in, pipe_out;
+ struct fd_bitmap *fds_to_close;
+{
+ int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result;
+ int lstdin, lastpipe_flag, lastpipe_jid;
+ COMMAND *cmd;
+ struct fd_bitmap *fd_bitmap;
+ pid_t lastpid;
+
+#if defined (JOB_CONTROL)
+ sigset_t set, oset;
+ BLOCK_CHILD (set, oset);
+#endif /* JOB_CONTROL */
+
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
+ prev = pipe_in;
+ cmd = command;
+
+ while (cmd && cmd->type == cm_connection &&
+ cmd->value.Connection && cmd->value.Connection->connector == '|')
+ {
+ /* Make a pipeline between the two commands. */
+ if (pipe (fildes) < 0)
+ {
+ sys_error (_("pipe error"));
+#if defined (JOB_CONTROL)
+ terminate_current_pipeline ();
+ kill_current_pipeline ();
+ UNBLOCK_CHILD (oset);
+#endif /* JOB_CONTROL */
+ last_command_exit_value = EXECUTION_FAILURE;
+ /* The unwind-protects installed below will take care
+ of closing all of the open file descriptors. */
+ throw_to_top_level ();
+ return (EXECUTION_FAILURE); /* XXX */
+ }
+
+ /* Here is a problem: with the new file close-on-exec
+ code, the read end of the pipe (fildes[0]) stays open
+ in the first process, so that process will never get a
+ SIGPIPE. There is no way to signal the first process
+ that it should close fildes[0] after forking, so it
+ remains open. No SIGPIPE is ever sent because there
+ is still a file descriptor open for reading connected
+ to the pipe. We take care of that here. This passes
+ around a bitmap of file descriptors that must be
+ closed after making a child process in execute_simple_command. */
+
+ /* We need fd_bitmap to be at least as big as fildes[0].
+ If fildes[0] is less than fds_to_close->size, then
+ use fds_to_close->size. */
+ new_bitmap_size = (fildes[0] < fds_to_close->size)
+ ? fds_to_close->size
+ : fildes[0] + 8;
+
+ fd_bitmap = new_fd_bitmap (new_bitmap_size);
+
+ /* Now copy the old information into the new bitmap. */
+ xbcopy ((char *)fds_to_close->bitmap, (char *)fd_bitmap->bitmap, fds_to_close->size);
+
+ /* And mark the pipe file descriptors to be closed. */
+ fd_bitmap->bitmap[fildes[0]] = 1;
+
+ /* In case there are pipe or out-of-processes errors, we
+ want all these file descriptors to be closed when
+ unwind-protects are run, and the storage used for the
+ bitmaps freed up. */
+ begin_unwind_frame ("pipe-file-descriptors");
+ add_unwind_protect (dispose_fd_bitmap, fd_bitmap);
+ add_unwind_protect (close_fd_bitmap, fd_bitmap);
+ if (prev >= 0)
+ add_unwind_protect (close, prev);
+ dummyfd = fildes[1];
+ add_unwind_protect (close, dummyfd);
+
+#if defined (JOB_CONTROL)
+ add_unwind_protect (restore_signal_mask, &oset);
+#endif /* JOB_CONTROL */
+
+ if (ignore_return && cmd->value.Connection->first)
+ cmd->value.Connection->first->flags |= CMD_IGNORE_RETURN;
+ execute_command_internal (cmd->value.Connection->first, asynchronous,
+ prev, fildes[1], fd_bitmap);
+
+ if (prev >= 0)
+ close (prev);
+
+ prev = fildes[0];
+ close (fildes[1]);
+
+ dispose_fd_bitmap (fd_bitmap);
+ discard_unwind_frame ("pipe-file-descriptors");
+
+ cmd = cmd->value.Connection->second;
+ }
+
+ lastpid = last_made_pid;
+
+ /* Now execute the rightmost command in the pipeline. */
+ if (ignore_return && cmd)
+ cmd->flags |= CMD_IGNORE_RETURN;
+
+ lastpipe_flag = 0;
+
+ begin_unwind_frame ("lastpipe-exec");
+ lstdin = -1;
+ /* If the `lastpipe' option is set with shopt, and job control is not
+ enabled, execute the last element of non-async pipelines in the
+ current shell environment. */
+ if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
+ {
+ lstdin = move_to_high_fd (0, 1, -1);
+ if (lstdin > 0)
+ {
+ do_piping (prev, pipe_out);
+ prev = NO_PIPE;
+ add_unwind_protect (restore_stdin, lstdin);
+ lastpipe_flag = 1;
+ freeze_jobs_list ();
+ lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL); /* XXX */
+ add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
+ }
+ if (cmd)
+ cmd->flags |= CMD_LASTPIPE;
+ }
+ if (prev >= 0)
+ add_unwind_protect (close, prev);
+
+ exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
+
+ if (lstdin > 0)
+ restore_stdin (lstdin);
+
+ if (prev >= 0)
+ close (prev);
+
+#if defined (JOB_CONTROL)
+ UNBLOCK_CHILD (oset);
+#endif
+
+ QUIT;
+
+ if (lastpipe_flag)
+ {
+#if defined (JOB_CONTROL)
+ append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
+#endif
+ lstdin = wait_for (lastpid);
+#if defined (JOB_CONTROL)
+ exec_result = job_exit_status (lastpipe_jid);
+#endif
+ unfreeze_jobs_list ();
+ }
+
+ discard_unwind_frame ("lastpipe-exec");
+
+ return (exec_result);
+}
+
+static int
+execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
+ COMMAND *command;
+ int asynchronous, pipe_in, pipe_out;
+ struct fd_bitmap *fds_to_close;
+{
+ COMMAND *tc, *second;
+ int ignore_return, exec_result, was_error_trap, invert;
+ volatile int save_line_number;
+
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
+ switch (command->value.Connection->connector)
+ {
+ /* Do the first command asynchronously. */
+ case '&':
+ tc = command->value.Connection->first;
+ if (tc == 0)
+ return (EXECUTION_SUCCESS);
+
+ if (ignore_return)
+ tc->flags |= CMD_IGNORE_RETURN;
+ tc->flags |= CMD_AMPERSAND;
+
+ /* If this shell was compiled without job control support,
+ if we are currently in a subshell via `( xxx )', or if job
+ control is not active then the standard input for an
+ asynchronous command is forced to /dev/null. */
+#if defined (JOB_CONTROL)
+ if ((subshell_environment || !job_control) && !stdin_redir)
+#else
+ if (!stdin_redir)
+#endif /* JOB_CONTROL */
+ tc->flags |= CMD_STDIN_REDIR;
+
+ exec_result = execute_command_internal (tc, 1, pipe_in, pipe_out, fds_to_close);
+ QUIT;
+
+ if (tc->flags & CMD_STDIN_REDIR)
+ tc->flags &= ~CMD_STDIN_REDIR;
+
+ second = command->value.Connection->second;
+ if (second)
+ {
+ if (ignore_return)
+ second->flags |= CMD_IGNORE_RETURN;
+
+ exec_result = execute_command_internal (second, asynchronous, pipe_in, pipe_out, fds_to_close);
+ }
+
+ break;
+
+ /* Just call execute command on both sides. */
+ case ';':
+ if (ignore_return)
+ {
+ if (command->value.Connection->first)
+ command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
+ if (command->value.Connection->second)
+ command->value.Connection->second->flags |= CMD_IGNORE_RETURN;
+ }
+ executing_list++;
+ QUIT;
+ execute_command (command->value.Connection->first);
+ QUIT;
+ exec_result = execute_command_internal (command->value.Connection->second,
+ asynchronous, pipe_in, pipe_out,
+ fds_to_close);
+ executing_list--;
+ break;
+
+ case '|':
+ was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
+ invert = (command->flags & CMD_INVERT_RETURN) != 0;
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
+ line_number_for_err_trap = line_number;
+ exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+
+ if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
+ run_error_trap ();
+ line_number = save_line_number;
+ }
+
+ if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = exec_result;
+ run_pending_traps ();
+ jump_to_top_level (ERREXIT);
+ }
+
+ break;
+
+ case AND_AND:
+ case OR_OR:
+ if (asynchronous)
+ {
+ /* If we have something like `a && b &' or `a || b &', run the
+ && or || stuff in a subshell. Force a subshell and just call
+ execute_command_internal again. Leave asynchronous on
+ so that we get a report from the parent shell about the
+ background job. */
+ command->flags |= CMD_FORCE_SUBSHELL;
+ exec_result = execute_command_internal (command, 1, pipe_in, pipe_out, fds_to_close);
+ break;
+ }
+
+ /* Execute the first command. If the result of that is successful
+ and the connector is AND_AND, or the result is not successful
+ and the connector is OR_OR, then execute the second command,
+ otherwise return. */
+
+ executing_list++;
+ if (command->value.Connection->first)
+ command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
+
+ exec_result = execute_command (command->value.Connection->first);
+ QUIT;
+ if (((command->value.Connection->connector == AND_AND) &&
+ (exec_result == EXECUTION_SUCCESS)) ||
+ ((command->value.Connection->connector == OR_OR) &&
+ (exec_result != EXECUTION_SUCCESS)))
+ {
+ if (ignore_return && command->value.Connection->second)
+ command->value.Connection->second->flags |= CMD_IGNORE_RETURN;
+
+ exec_result = execute_command (command->value.Connection->second);
+ }
+ executing_list--;
+ break;
+
+ default:
+ command_error ("execute_connection", CMDERR_BADCONN, command->value.Connection->connector, 0);
+ jump_to_top_level (DISCARD);
+ exec_result = EXECUTION_FAILURE;
+ }
+
+ return exec_result;
+}
+
+#define REAP() \
+ do \
+ { \
+ if (!interactive_shell) \
+ reap_dead_jobs (); \
+ } \
+ while (0)
+
+/* Execute a FOR command. The syntax is: FOR word_desc IN word_list;
+ DO command; DONE */
+static int
+execute_for_command (for_command)
+ FOR_COM *for_command;
+{
+ register WORD_LIST *releaser, *list;
+ SHELL_VAR *v;
+ char *identifier;
+ int retval, save_line_number;
+#if 0
+ SHELL_VAR *old_value = (SHELL_VAR *)NULL; /* Remember the old value of x. */
+#endif
+
+ save_line_number = line_number;
+ if (check_identifier (for_command->name, 1) == 0)
+ {
+ if (posixly_correct && interactive_shell == 0)
+ {
+ last_command_exit_value = EX_BADUSAGE;
+ jump_to_top_level (ERREXIT);
+ }
+ return (EXECUTION_FAILURE);
+ }
+
+ loop_level++;
+ identifier = for_command->name->word;
+
+ line_number = for_command->line; /* for expansion error messages */
+ list = releaser = expand_words_no_vars (for_command->map_list);
+
+ begin_unwind_frame ("for");
+ add_unwind_protect (dispose_words, releaser);
+
+#if 0
+ if (lexical_scoping)
+ {
+ old_value = copy_variable (find_variable (identifier));
+ if (old_value)
+ add_unwind_protect (dispose_variable, old_value);
+ }
+#endif
+
+ if (for_command->flags & CMD_IGNORE_RETURN)
+ for_command->action->flags |= CMD_IGNORE_RETURN;
+
+ for (retval = EXECUTION_SUCCESS; list; list = list->next)
+ {
+ QUIT;
+
+ line_number = for_command->line;
+
+ /* Remember what this command looks like, for debugger. */
+ command_string_index = 0;
+ print_for_command_head (for_command);
+
+ if (echo_command_at_execute)
+ xtrace_print_for_command_head (for_command);
+
+ /* Save this command unless it's a trap command and we're not running
+ a debug trap. */
+ if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ retval = run_debug_trap ();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode && retval != EXECUTION_SUCCESS)
+ continue;
+#endif
+
+ this_command_name = (char *)NULL;
+ /* XXX - special ksh93 for command index variable handling */
+ v = find_variable_last_nameref (identifier);
+ if (v && nameref_p (v))
+ {
+ v = bind_variable_value (v, list->word->word, 0);
+ }
+ else
+ v = bind_variable (identifier, list->word->word, 0);
+ if (readonly_p (v) || noassign_p (v))
+ {
+ line_number = save_line_number;
+ if (readonly_p (v) && interactive_shell == 0 && posixly_correct)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+ jump_to_top_level (FORCE_EOF);
+ }
+ else
+ {
+ dispose_words (releaser);
+ discard_unwind_frame ("for");
+ loop_level--;
+ return (EXECUTION_FAILURE);
+ }
+ }
+itrace("execute_for_command: calling execute_command");
+ retval = execute_command (for_command->action);
+ REAP ();
+ QUIT;
+itrace("execute_for_command: execute_command returns %d", retval);
+
+ if (breaking)
+ {
+ breaking--;
+ break;
+ }
+
+ if (continuing)
+ {
+ continuing--;
+ if (continuing)
+ break;
+ }
+ }
+
+ loop_level--;
+ line_number = save_line_number;
+
+#if 0
+ if (lexical_scoping)
+ {
+ if (!old_value)
+ unbind_variable (identifier);
+ else
+ {
+ SHELL_VAR *new_value;
+
+ new_value = bind_variable (identifier, value_cell(old_value), 0);
+ new_value->attributes = old_value->attributes;
+ dispose_variable (old_value);
+ }
+ }
+#endif
+
+ dispose_words (releaser);
+ discard_unwind_frame ("for");
+ return (retval);
+}
+
+#if defined (ARITH_FOR_COMMAND)
+/* Execute an arithmetic for command. The syntax is
+
+ for (( init ; step ; test ))
+ do
+ body
+ done
+
+ The execution should be exactly equivalent to
+
+ eval \(\( init \)\)
+ while eval \(\( test \)\) ; do
+ body;
+ eval \(\( step \)\)
+ done
+*/
+static intmax_t
+eval_arith_for_expr (l, okp)
+ WORD_LIST *l;
+ int *okp;
+{
+ WORD_LIST *new;
+ intmax_t expresult;
+ int r;
+
+ new = expand_words_no_vars (l);
+ if (new)
+ {
+ if (echo_command_at_execute)
+ xtrace_print_arith_cmd (new);
+ this_command_name = "(("; /* )) for expression error messages */
+
+ command_string_index = 0;
+ print_arith_command (new);
+ if (signal_in_progress (DEBUG_TRAP) == 0)
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ r = run_debug_trap ();
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+#if defined (DEBUGGER)
+ if (debugging_mode == 0 || r == EXECUTION_SUCCESS)
+ expresult = evalexp (new->word->word, okp);
+ else
+ {
+ expresult = 0;
+ if (okp)
+ *okp = 1;
+ }
+#else
+ expresult = evalexp (new->word->word, okp);
+#endif
+ dispose_words (new);
+ }
+ else
+ {
+ expresult = 0;
+ if (okp)
+ *okp = 1;
+ }
+ return (expresult);
+}
+
+static int
+execute_arith_for_command (arith_for_command)
+ ARITH_FOR_COM *arith_for_command;
+{
+ intmax_t expresult;
+ int expok, body_status, arith_lineno, save_lineno;
+
+ body_status = EXECUTION_SUCCESS;
+ loop_level++;
+ save_lineno = line_number;
+
+ if (arith_for_command->flags & CMD_IGNORE_RETURN)
+ arith_for_command->action->flags |= CMD_IGNORE_RETURN;
+
+ this_command_name = "(("; /* )) for expression error messages */
+
+ /* save the starting line number of the command so we can reset
+ line_number before executing each expression -- for $LINENO
+ and the DEBUG trap. */
+ line_number = arith_lineno = arith_for_command->line;
+ if (variable_context && interactive_shell)
+ line_number -= function_line_number;
+
+ /* Evaluate the initialization expression. */
+ expresult = eval_arith_for_expr (arith_for_command->init, &expok);
+ if (expok == 0)
+ {
+ line_number = save_lineno;
+ return (EXECUTION_FAILURE);
+ }
+
+ while (1)
+ {
+ /* Evaluate the test expression. */
+ line_number = arith_lineno;
+ expresult = eval_arith_for_expr (arith_for_command->test, &expok);
+ line_number = save_lineno;
+
+ if (expok == 0)
+ {
+ body_status = EXECUTION_FAILURE;
+ break;
+ }
+ REAP ();
+ if (expresult == 0)
+ break;
+
+ /* Execute the body of the arithmetic for command. */
+ QUIT;
+ body_status = execute_command (arith_for_command->action);
+ QUIT;
+
+ /* Handle any `break' or `continue' commands executed by the body. */
+ if (breaking)
+ {
+ breaking--;
+ break;
+ }
+
+ if (continuing)
+ {
+ continuing--;
+ if (continuing)
+ break;
+ }
+
+ /* Evaluate the step expression. */
+ line_number = arith_lineno;
+ expresult = eval_arith_for_expr (arith_for_command->step, &expok);
+ line_number = save_lineno;
+
+ if (expok == 0)
+ {
+ body_status = EXECUTION_FAILURE;
+ break;
+ }
+ }
+
+ loop_level--;
+ line_number = save_lineno;
+
+ return (body_status);
+}
+#endif
+
+#if defined (SELECT_COMMAND)
+static int LINES, COLS, tabsize;
+
+#define RP_SPACE ") "
+#define RP_SPACE_LEN 2
+
+/* XXX - does not handle numbers > 1000000 at all. */
+#define NUMBER_LEN(s) \
+((s < 10) ? 1 \
+ : ((s < 100) ? 2 \
+ : ((s < 1000) ? 3 \
+ : ((s < 10000) ? 4 \
+ : ((s < 100000) ? 5 \
+ : 6)))))
+
+static int
+displen (s)
+ const char *s;
+{
+#if defined (HANDLE_MULTIBYTE)
+ wchar_t *wcstr;
+ size_t slen;
+ int wclen;
+
+ wcstr = 0;
+ slen = mbstowcs (wcstr, s, 0);
+ if (slen == -1)
+ slen = 0;
+ wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1));
+ mbstowcs (wcstr, s, slen + 1);
+ wclen = wcswidth (wcstr, slen);
+ free (wcstr);
+ return (wclen < 0 ? STRLEN(s) : wclen);
+#else
+ return (STRLEN (s));
+#endif
+}
+
+static int
+print_index_and_element (len, ind, list)
+ int len, ind;
+ WORD_LIST *list;
+{
+ register WORD_LIST *l;
+ register int i;
+
+ if (list == 0)
+ return (0);
+ for (i = ind, l = list; l && --i; l = l->next)
+ ;
+ if (l == 0) /* don't think this can happen */
+ return (0);
+ fprintf (stderr, "%*d%s%s", len, ind, RP_SPACE, l->word->word);
+ return (displen (l->word->word));
+}
+
+static void
+indent (from, to)
+ int from, to;
+{
+ while (from < to)
+ {
+ if ((to / tabsize) > (from / tabsize))
+ {
+ putc ('\t', stderr);
+ from += tabsize - from % tabsize;
+ }
+ else
+ {
+ putc (' ', stderr);
+ from++;
+ }
+ }
+}
+
+static void
+print_select_list (list, list_len, max_elem_len, indices_len)
+ WORD_LIST *list;
+ int list_len, max_elem_len, indices_len;
+{
+ int ind, row, elem_len, pos, cols, rows;
+ int first_column_indices_len, other_indices_len;
+
+ if (list == 0)
+ {
+ putc ('\n', stderr);
+ return;
+ }
+
+ cols = max_elem_len ? COLS / max_elem_len : 1;
+ if (cols == 0)
+ cols = 1;
+ rows = list_len ? list_len / cols + (list_len % cols != 0) : 1;
+ cols = list_len ? list_len / rows + (list_len % rows != 0) : 1;
+
+ if (rows == 1)
+ {
+ rows = cols;
+ cols = 1;
+ }
+
+ first_column_indices_len = NUMBER_LEN (rows);
+ other_indices_len = indices_len;
+
+ for (row = 0; row < rows; row++)
+ {
+ ind = row;
+ pos = 0;
+ while (1)
+ {
+ indices_len = (pos == 0) ? first_column_indices_len : other_indices_len;
+ elem_len = print_index_and_element (indices_len, ind + 1, list);
+ elem_len += indices_len + RP_SPACE_LEN;
+ ind += rows;
+ if (ind >= list_len)
+ break;
+ indent (pos + elem_len, pos + max_elem_len);
+ pos += max_elem_len;
+ }
+ putc ('\n', stderr);
+ }
+}
+
+/* Print the elements of LIST, one per line, preceded by an index from 1 to
+ LIST_LEN. Then display PROMPT and wait for the user to enter a number.
+ If the number is between 1 and LIST_LEN, return that selection. If EOF
+ is read, return a null string. If a blank line is entered, or an invalid
+ number is entered, the loop is executed again. */
+static char *
+select_query (list, list_len, prompt, print_menu)
+ WORD_LIST *list;
+ int list_len;
+ char *prompt;
+ int print_menu;
+{
+ int max_elem_len, indices_len, len;
+ intmax_t reply;
+ WORD_LIST *l;
+ char *repl_string, *t;
+
+#if 0
+ t = get_string_value ("LINES");
+ LINES = (t && *t) ? atoi (t) : 24;
+#endif
+ t = get_string_value ("COLUMNS");
+ COLS = (t && *t) ? atoi (t) : 80;
+
+#if 0
+ t = get_string_value ("TABSIZE");
+ tabsize = (t && *t) ? atoi (t) : 8;
+ if (tabsize <= 0)
+ tabsize = 8;
+#else
+ tabsize = 8;
+#endif
+
+ max_elem_len = 0;
+ for (l = list; l; l = l->next)
+ {
+ len = displen (l->word->word);
+ if (len > max_elem_len)
+ max_elem_len = len;
+ }
+ indices_len = NUMBER_LEN (list_len);
+ max_elem_len += indices_len + RP_SPACE_LEN + 2;
+
+ while (1)
+ {
+ if (print_menu)
+ print_select_list (list, list_len, max_elem_len, indices_len);
+ fprintf (stderr, "%s", prompt);
+ fflush (stderr);
+ QUIT;
+
+ if (read_builtin ((WORD_LIST *)NULL) != EXECUTION_SUCCESS)
+ {
+ putchar ('\n');
+ return ((char *)NULL);
+ }
+ repl_string = get_string_value ("REPLY");
+ if (*repl_string == 0)
+ {
+ print_menu = 1;
+ continue;
+ }
+ if (legal_number (repl_string, &reply) == 0)
+ return "";
+ if (reply < 1 || reply > list_len)
+ return "";
+
+ for (l = list; l && --reply; l = l->next)
+ ;
+ return (l->word->word); /* XXX - can't be null? */
+ }
+}
+
+/* Execute a SELECT command. The syntax is:
+ SELECT word IN list DO command_list DONE
+ Only `break' or `return' in command_list will terminate
+ the command. */
+static int
+execute_select_command (select_command)
+ SELECT_COM *select_command;
+{
+ WORD_LIST *releaser, *list;
+ SHELL_VAR *v;
+ char *identifier, *ps3_prompt, *selection;
+ int retval, list_len, show_menu, save_line_number;
+
+ if (check_identifier (select_command->name, 1) == 0)
+ return (EXECUTION_FAILURE);
+
+ save_line_number = line_number;
+ line_number = select_command->line;
+
+ command_string_index = 0;
+ print_select_command_head (select_command);
+
+ if (echo_command_at_execute)
+ xtrace_print_select_command_head (select_command);
+
+#if 0
+ if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0)))
+#else
+ if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
+#endif
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ retval = run_debug_trap ();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode && retval != EXECUTION_SUCCESS)
+ return (EXECUTION_SUCCESS);
+#endif
+
+ loop_level++;
+ identifier = select_command->name->word;
+
+ /* command and arithmetic substitution, parameter and variable expansion,
+ word splitting, pathname expansion, and quote removal. */
+ list = releaser = expand_words_no_vars (select_command->map_list);
+ list_len = list_length (list);
+ if (list == 0 || list_len == 0)
+ {
+ if (list)
+ dispose_words (list);
+ line_number = save_line_number;
+ return (EXECUTION_SUCCESS);
+ }
+
+ begin_unwind_frame ("select");
+ add_unwind_protect (dispose_words, releaser);
+
+ if (select_command->flags & CMD_IGNORE_RETURN)
+ select_command->action->flags |= CMD_IGNORE_RETURN;
+
+ retval = EXECUTION_SUCCESS;
+ show_menu = 1;
+
+ while (1)
+ {
+ line_number = select_command->line;
+ ps3_prompt = get_string_value ("PS3");
+ if (ps3_prompt == 0)
+ ps3_prompt = "#? ";
+
+ QUIT;
+ selection = select_query (list, list_len, ps3_prompt, show_menu);
+ QUIT;
+ if (selection == 0)
+ {
+ /* select_query returns EXECUTION_FAILURE if the read builtin
+ fails, so we want to return failure in this case. */
+ retval = EXECUTION_FAILURE;
+ break;
+ }
+
+ v = bind_variable (identifier, selection, 0);
+ if (readonly_p (v) || noassign_p (v))
+ {
+ if (readonly_p (v) && interactive_shell == 0 && posixly_correct)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+ jump_to_top_level (FORCE_EOF);
+ }
+ else
+ {
+ dispose_words (releaser);
+ discard_unwind_frame ("select");
+ loop_level--;
+ line_number = save_line_number;
+ return (EXECUTION_FAILURE);
+ }
+ }
+
+ retval = execute_command (select_command->action);
+
+ REAP ();
+ QUIT;
+
+ if (breaking)
+ {
+ breaking--;
+ break;
+ }
+
+ if (continuing)
+ {
+ continuing--;
+ if (continuing)
+ break;
+ }
+
+#if defined (KSH_COMPATIBLE_SELECT)
+ show_menu = 0;
+ selection = get_string_value ("REPLY");
+ if (selection && *selection == '\0')
+ show_menu = 1;
+#endif
+ }
+
+ loop_level--;
+ line_number = save_line_number;
+
+ dispose_words (releaser);
+ discard_unwind_frame ("select");
+ return (retval);
+}
+#endif /* SELECT_COMMAND */
+
+/* Execute a CASE command. The syntax is: CASE word_desc IN pattern_list ESAC.
+ The pattern_list is a linked list of pattern clauses; each clause contains
+ some patterns to compare word_desc against, and an associated command to
+ execute. */
+static int
+execute_case_command (case_command)
+ CASE_COM *case_command;
+{
+ register WORD_LIST *list;
+ WORD_LIST *wlist, *es;
+ PATTERN_LIST *clauses;
+ char *word, *pattern;
+ int retval, match, ignore_return, save_line_number;
+
+ save_line_number = line_number;
+ line_number = case_command->line;
+
+ command_string_index = 0;
+ print_case_command_head (case_command);
+
+ if (echo_command_at_execute)
+ xtrace_print_case_command_head (case_command);
+
+#if 0
+ if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0)))
+#else
+ if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
+#endif
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ retval = run_debug_trap();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode && retval != EXECUTION_SUCCESS)
+ {
+ line_number = save_line_number;
+ return (EXECUTION_SUCCESS);
+ }
+#endif
+
+ wlist = expand_word_unsplit (case_command->word, 0);
+ word = wlist ? string_list (wlist) : savestring ("");
+ dispose_words (wlist);
+
+ retval = EXECUTION_SUCCESS;
+ ignore_return = case_command->flags & CMD_IGNORE_RETURN;
+
+ begin_unwind_frame ("case");
+ add_unwind_protect ((Function *)xfree, word);
+
+#define EXIT_CASE() goto exit_case_command
+
+ for (clauses = case_command->clauses; clauses; clauses = clauses->next)
+ {
+ QUIT;
+ for (list = clauses->patterns; list; list = list->next)
+ {
+ es = expand_word_leave_quoted (list->word, 0);
+
+ if (es && es->word && es->word->word && *(es->word->word))
+ pattern = quote_string_for_globbing (es->word->word, QGLOB_CVTNULL);
+ else
+ {
+ pattern = (char *)xmalloc (1);
+ pattern[0] = '\0';
+ }
+
+ /* Since the pattern does not undergo quote removal (as per
+ Posix.2, section 3.9.4.3), the strmatch () call must be able
+ to recognize backslashes as escape characters. */
+ match = strmatch (pattern, word, FNMATCH_EXTFLAG|FNMATCH_IGNCASE) != FNM_NOMATCH;
+ free (pattern);
+
+ dispose_words (es);
+
+ if (match)
+ {
+ do
+ {
+ if (clauses->action && ignore_return)
+ clauses->action->flags |= CMD_IGNORE_RETURN;
+ retval = execute_command (clauses->action);
+ }
+ while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next));
+ if (clauses == 0 || (clauses->flags & CASEPAT_TESTNEXT) == 0)
+ EXIT_CASE ();
+ else
+ break;
+ }
+
+ QUIT;
+ }
+ }
+
+exit_case_command:
+ free (word);
+ discard_unwind_frame ("case");
+ line_number = save_line_number;
+ return (retval);
+}
+
+#define CMD_WHILE 0
+#define CMD_UNTIL 1
+
+/* The WHILE command. Syntax: WHILE test DO action; DONE.
+ Repeatedly execute action while executing test produces
+ EXECUTION_SUCCESS. */
+static int
+execute_while_command (while_command)
+ WHILE_COM *while_command;
+{
+ return (execute_while_or_until (while_command, CMD_WHILE));
+}
+
+/* UNTIL is just like WHILE except that the test result is negated. */
+static int
+execute_until_command (while_command)
+ WHILE_COM *while_command;
+{
+ return (execute_while_or_until (while_command, CMD_UNTIL));
+}
+
+/* The body for both while and until. The only difference between the
+ two is that the test value is treated differently. TYPE is
+ CMD_WHILE or CMD_UNTIL. The return value for both commands should
+ be EXECUTION_SUCCESS if no commands in the body are executed, and
+ the status of the last command executed in the body otherwise. */
+static int
+execute_while_or_until (while_command, type)
+ WHILE_COM *while_command;
+ int type;
+{
+ int return_value, body_status;
+
+ body_status = EXECUTION_SUCCESS;
+ loop_level++;
+
+ while_command->test->flags |= CMD_IGNORE_RETURN;
+ if (while_command->flags & CMD_IGNORE_RETURN)
+ while_command->action->flags |= CMD_IGNORE_RETURN;
+
+ while (1)
+ {
+ return_value = execute_command (while_command->test);
+ REAP ();
+
+ /* Need to handle `break' in the test when we would break out of the
+ loop. The job control code will set `breaking' to loop_level
+ when a job in a loop is stopped with SIGTSTP. If the stopped job
+ is in the loop test, `breaking' will not be reset unless we do
+ this, and the shell will cease to execute commands. */
+ if (type == CMD_WHILE && return_value != EXECUTION_SUCCESS)
+ {
+ if (breaking)
+ breaking--;
+ break;
+ }
+ if (type == CMD_UNTIL && return_value == EXECUTION_SUCCESS)
+ {
+ if (breaking)
+ breaking--;
+ break;
+ }
+
+ QUIT;
+ body_status = execute_command (while_command->action);
+ QUIT;
+
+ if (breaking)
+ {
+ breaking--;
+ break;
+ }
+
+ if (continuing)
+ {
+ continuing--;
+ if (continuing)
+ break;
+ }
+ }
+ loop_level--;
+
+ return (body_status);
+}
+
+/* IF test THEN command [ELSE command].
+ IF also allows ELIF in the place of ELSE IF, but
+ the parser makes *that* stupidity transparent. */
+static int
+execute_if_command (if_command)
+ IF_COM *if_command;
+{
+ int return_value, save_line_number;
+
+ save_line_number = line_number;
+ if_command->test->flags |= CMD_IGNORE_RETURN;
+ return_value = execute_command (if_command->test);
+ line_number = save_line_number;
+
+ if (return_value == EXECUTION_SUCCESS)
+ {
+ QUIT;
+
+ if (if_command->true_case && (if_command->flags & CMD_IGNORE_RETURN))
+ if_command->true_case->flags |= CMD_IGNORE_RETURN;
+
+ return (execute_command (if_command->true_case));
+ }
+ else
+ {
+ QUIT;
+
+ if (if_command->false_case && (if_command->flags & CMD_IGNORE_RETURN))
+ if_command->false_case->flags |= CMD_IGNORE_RETURN;
+
+ return (execute_command (if_command->false_case));
+ }
+}
+
+#if defined (DPAREN_ARITHMETIC)
+static int
+execute_arith_command (arith_command)
+ ARITH_COM *arith_command;
+{
+ int expok, save_line_number, retval;
+ intmax_t expresult;
+ WORD_LIST *new;
+ char *exp;
+
+ expresult = 0;
+
+ save_line_number = line_number;
+ this_command_name = "(("; /* )) */
+ line_number = arith_command->line;
+ /* If we're in a function, update the line number information. */
+ if (variable_context && interactive_shell)
+ line_number -= function_line_number;
+
+ command_string_index = 0;
+ print_arith_command (arith_command->exp);
+
+ if (signal_in_progress (DEBUG_TRAP) == 0)
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ /* Run the debug trap before each arithmetic command, but do it after we
+ update the line number information and before we expand the various
+ words in the expression. */
+ retval = run_debug_trap ();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode && retval != EXECUTION_SUCCESS)
+ {
+ line_number = save_line_number;
+ return (EXECUTION_SUCCESS);
+ }
+#endif
+
+ new = expand_words_no_vars (arith_command->exp);
+
+ /* If we're tracing, make a new word list with `((' at the front and `))'
+ at the back and print it. */
+ if (echo_command_at_execute)
+ xtrace_print_arith_cmd (new);
+
+ if (new)
+ {
+ exp = new->next ? string_list (new) : new->word->word;
+ expresult = evalexp (exp, &expok);
+ line_number = save_line_number;
+ if (exp != new->word->word)
+ free (exp);
+ dispose_words (new);
+ }
+ else
+ {
+ expresult = 0;
+ expok = 1;
+ }
+
+ if (expok == 0)
+ return (EXECUTION_FAILURE);
+
+ return (expresult == 0 ? EXECUTION_FAILURE : EXECUTION_SUCCESS);
+}
+#endif /* DPAREN_ARITHMETIC */
+
+#if defined (COND_COMMAND)
+
+static char * const nullstr = "";
+
+/* XXX - can COND ever be NULL when this is called? */
+static int
+execute_cond_node (cond)
+ COND_COM *cond;
+{
+ int result, invert, patmatch, rmatch, mflags, ignore;
+ char *arg1, *arg2;
+#if 0
+ char *t1, *t2;
+#endif
+
+ invert = (cond->flags & CMD_INVERT_RETURN);
+ ignore = (cond->flags & CMD_IGNORE_RETURN);
+ if (ignore)
+ {
+ if (cond->left)
+ cond->left->flags |= CMD_IGNORE_RETURN;
+ if (cond->right)
+ cond->right->flags |= CMD_IGNORE_RETURN;
+ }
+
+ if (cond->type == COND_EXPR)
+ result = execute_cond_node (cond->left);
+ else if (cond->type == COND_OR)
+ {
+ result = execute_cond_node (cond->left);
+ if (result != EXECUTION_SUCCESS)
+ result = execute_cond_node (cond->right);
+ }
+ else if (cond->type == COND_AND)
+ {
+ result = execute_cond_node (cond->left);
+ if (result == EXECUTION_SUCCESS)
+ result = execute_cond_node (cond->right);
+ }
+ else if (cond->type == COND_UNARY)
+ {
+ if (ignore)
+ comsub_ignore_return++;
+ arg1 = cond_expand_word (cond->left->op, 0);
+ if (ignore)
+ comsub_ignore_return--;
+ if (arg1 == 0)
+ arg1 = nullstr;
+ if (echo_command_at_execute)
+ xtrace_print_cond_term (cond->type, invert, cond->op, arg1, (char *)NULL);
+ result = unary_test (cond->op->word, arg1) ? EXECUTION_SUCCESS : EXECUTION_FAILURE;
+ if (arg1 != nullstr)
+ free (arg1);
+ }
+ else if (cond->type == COND_BINARY)
+ {
+ rmatch = 0;
+ patmatch = (((cond->op->word[1] == '=') && (cond->op->word[2] == '\0') &&
+ (cond->op->word[0] == '!' || cond->op->word[0] == '=')) ||
+ (cond->op->word[0] == '=' && cond->op->word[1] == '\0'));
+#if defined (COND_REGEXP)
+ rmatch = (cond->op->word[0] == '=' && cond->op->word[1] == '~' &&
+ cond->op->word[2] == '\0');
+#endif
+
+ if (ignore)
+ comsub_ignore_return++;
+ arg1 = cond_expand_word (cond->left->op, 0);
+ if (ignore)
+ comsub_ignore_return--;
+ if (arg1 == 0)
+ arg1 = nullstr;
+ if (ignore)
+ comsub_ignore_return++;
+ arg2 = cond_expand_word (cond->right->op,
+ (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
+ if (ignore)
+ comsub_ignore_return--;
+ if (arg2 == 0)
+ arg2 = nullstr;
+
+ if (echo_command_at_execute)
+ xtrace_print_cond_term (cond->type, invert, cond->op, arg1, arg2);
+
+#if defined (COND_REGEXP)
+ if (rmatch)
+ {
+ mflags = SHMAT_PWARN;
+#if defined (ARRAY_VARS)
+ mflags |= SHMAT_SUBEXP;
+#endif
+
+#if 0
+ t1 = strescape(arg1);
+ t2 = strescape(arg2);
+ itrace("execute_cond_node: sh_regmatch on `%s' and `%s'", t1, t2);
+ free(t1);
+ free(t2);
+#endif
+
+ result = sh_regmatch (arg1, arg2, mflags);
+ }
+ else
+#endif /* COND_REGEXP */
+ {
+ int oe;
+ oe = extended_glob;
+ extended_glob = 1;
+ result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP|TEST_LOCALE)
+ ? EXECUTION_SUCCESS
+ : EXECUTION_FAILURE;
+ extended_glob = oe;
+ }
+ if (arg1 != nullstr)
+ free (arg1);
+ if (arg2 != nullstr)
+ free (arg2);
+ }
+ else
+ {
+ command_error ("execute_cond_node", CMDERR_BADTYPE, cond->type, 0);
+ jump_to_top_level (DISCARD);
+ result = EXECUTION_FAILURE;
+ }
+
+ if (invert)
+ result = (result == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : EXECUTION_SUCCESS;
+
+ return result;
+}
+
+static int
+execute_cond_command (cond_command)
+ COND_COM *cond_command;
+{
+ int retval, save_line_number;
+
+ retval = EXECUTION_SUCCESS;
+ save_line_number = line_number;
+
+ this_command_name = "[[";
+ line_number = cond_command->line;
+ /* If we're in a function, update the line number information. */
+ if (variable_context && interactive_shell)
+ line_number -= function_line_number;
+ command_string_index = 0;
+ print_cond_command (cond_command);
+
+ if (signal_in_progress (DEBUG_TRAP) == 0)
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = savestring (the_printed_command);
+ }
+
+ /* Run the debug trap before each conditional command, but do it after we
+ update the line number information. */
+ retval = run_debug_trap ();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode && retval != EXECUTION_SUCCESS)
+ {
+ line_number = save_line_number;
+ return (EXECUTION_SUCCESS);
+ }
+#endif
+
+#if 0
+ debug_print_cond_command (cond_command);
+#endif
+
+ last_command_exit_value = retval = execute_cond_node (cond_command);
+ line_number = save_line_number;
+ return (retval);
+}
+#endif /* COND_COMMAND */
+
+static void
+bind_lastarg (arg)
+ char *arg;
+{
+ SHELL_VAR *var;
+
+ if (arg == 0)
+ arg = "";
+ var = bind_variable ("_", arg, 0);
+ VUNSETATTR (var, att_exported);
+}
+
+/* Execute a null command. Fork a subshell if the command uses pipes or is
+ to be run asynchronously. This handles all the side effects that are
+ supposed to take place. */
+static int
+execute_null_command (redirects, pipe_in, pipe_out, async)
+ REDIRECT *redirects;
+ int pipe_in, pipe_out, async;
+{
+ int r;
+ int forcefork;
+ REDIRECT *rd;
+
+ for (forcefork = 0, rd = redirects; rd; rd = rd->next)
+ forcefork += rd->rflags & REDIR_VARASSIGN;
+
+ if (forcefork || pipe_in != NO_PIPE || pipe_out != NO_PIPE || async)
+ {
+ /* We have a null command, but we really want a subshell to take
+ care of it. Just fork, do piping and redirections, and exit. */
+ if (make_child ((char *)NULL, async) == 0)
+ {
+ /* Cancel traps, in trap.c. */
+ restore_original_signals (); /* XXX */
+
+ do_piping (pipe_in, pipe_out);
+
+#if defined (COPROCESS_SUPPORT)
+ coproc_closeall ();
+#endif
+
+ subshell_environment = 0;
+ if (async)
+ subshell_environment |= SUBSHELL_ASYNC;
+ if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
+ subshell_environment |= SUBSHELL_PIPE;
+
+ if (do_redirections (redirects, RX_ACTIVE) == 0)
+ exit (EXECUTION_SUCCESS);
+ else
+ exit (EXECUTION_FAILURE);
+ }
+ else
+ {
+ close_pipes (pipe_in, pipe_out);
+#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+ if (pipe_out == NO_PIPE)
+ unlink_fifo_list ();
+#endif
+ return (EXECUTION_SUCCESS);
+ }
+ }
+ else
+ {
+ /* Even if there aren't any command names, pretend to do the
+ redirections that are specified. The user expects the side
+ effects to take place. If the redirections fail, then return
+ failure. Otherwise, if a command substitution took place while
+ expanding the command or a redirection, return the value of that
+ substitution. Otherwise, return EXECUTION_SUCCESS. */
+
+ r = do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE);
+ cleanup_redirects (redirection_undo_list);
+ redirection_undo_list = (REDIRECT *)NULL;
+
+ if (r != 0)
+ return (EXECUTION_FAILURE);
+ else if (last_command_subst_pid != NO_PID)
+ return (last_command_exit_value);
+ else
+ return (EXECUTION_SUCCESS);
+ }
+}
+
+/* This is a hack to suppress word splitting for assignment statements
+ given as arguments to builtins with the ASSIGNMENT_BUILTIN flag set. */
+static void
+fix_assignment_words (words)
+ WORD_LIST *words;
+{
+ WORD_LIST *w, *wcmd;
+ struct builtin *b;
+ int assoc, global, array, integer;
+
+ if (words == 0)
+ return;
+
+ b = 0;
+ assoc = global = array = integer = 0;
+
+ /* Skip over assignment statements preceding a command name */
+ wcmd = words;
+ for (wcmd = words; wcmd; wcmd = wcmd->next)
+ if ((wcmd->word->flags & W_ASSIGNMENT) == 0)
+ break;
+
+ for (w = wcmd; w; w = w->next)
+ if (w->word->flags & W_ASSIGNMENT)
+ {
+ if (b == 0)
+ {
+ /* Posix (post-2008) says that `command' doesn't change whether
+ or not the builtin it shadows is a `declaration command', even
+ though it removes other special builtin properties. In Posix
+ mode, we skip over one or more instances of `command' and
+ deal with the next word as the assignment builtin. */
+ while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command"))
+ wcmd = wcmd->next;
+ b = builtin_address_internal (wcmd->word->word, 0);
+ if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0)
+ return;
+ else if (b && (b->flags & ASSIGNMENT_BUILTIN))
+ wcmd->word->flags |= W_ASSNBLTIN;
+ }
+ w->word->flags |= (W_NOSPLIT|W_NOGLOB|W_TILDEEXP|W_ASSIGNARG);
+#if defined (ARRAY_VARS)
+ if (assoc)
+ w->word->flags |= W_ASSIGNASSOC;
+ if (array)
+ w->word->flags |= W_ASSIGNARRAY;
+#endif
+ if (global)
+ w->word->flags |= W_ASSNGLOBAL;
+ if (integer)
+ w->word->flags |= W_ASSIGNINT;
+ }
+#if defined (ARRAY_VARS)
+ /* Note that we saw an associative array option to a builtin that takes
+ assignment statements. This is a bit of a kludge. */
+ else if (w->word->word[0] == '-' && (strchr (w->word->word+1, 'A') || strchr (w->word->word+1, 'a') || strchr (w->word->word+1, 'g')))
+#else
+ else if (w->word->word[0] == '-' && strchr (w->word->word+1, 'g'))
+#endif
+ {
+ if (b == 0)
+ {
+ while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command"))
+ wcmd = wcmd->next;
+ b = builtin_address_internal (wcmd->word->word, 0);
+ if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0)
+ return;
+ else if (b && (b->flags & ASSIGNMENT_BUILTIN))
+ wcmd->word->flags |= W_ASSNBLTIN;
+ }
+ if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'A'))
+ assoc = 1;
+ else if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'a'))
+ array = 1;
+ if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'g'))
+ global = 1;
+ if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'i'))
+ integer = 1;
+ }
+}
+
+/* Return 1 if the file found by searching $PATH for PATHNAME, defaulting
+ to PATHNAME, is a directory. Used by the autocd code below. */
+static int
+is_dirname (pathname)
+ char *pathname;
+{
+ char *temp;
+ int ret;
+
+ temp = search_for_command (pathname, 0);
+ ret = (temp ? file_isdir (temp) : file_isdir (pathname));
+ free (temp);
+ return ret;
+}
+
+/* The meaty part of all the executions. We have to start hacking the
+ real execution of commands here. Fork a process, set things up,
+ execute the command. */
+static int
+execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
+ SIMPLE_COM *simple_command;
+ int pipe_in, pipe_out, async;
+ struct fd_bitmap *fds_to_close;
+{
+ WORD_LIST *words, *lastword;
+ char *command_line, *lastarg, *temp;
+ int first_word_quoted, result, builtin_is_special, already_forked, dofork;
+ pid_t old_last_async_pid;
+ sh_builtin_func_t *builtin;
+ SHELL_VAR *func;
+ volatile int old_builtin, old_command_builtin;
+
+ result = EXECUTION_SUCCESS;
+ special_builtin_failed = builtin_is_special = 0;
+ command_line = (char *)0;
+
+ QUIT;
+
+ /* If we're in a function, update the line number information. */
+ if (variable_context && interactive_shell && sourcelevel == 0)
+ line_number -= function_line_number;
+
+ /* Remember what this command line looks like at invocation. */
+ command_string_index = 0;
+ print_simple_command (simple_command);
+
+#if 0
+ if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0)))
+#else
+ if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
+#endif
+ {
+ FREE (the_printed_command_except_trap);
+ the_printed_command_except_trap = the_printed_command ? savestring (the_printed_command) : (char *)0;
+ }
+
+ /* Run the debug trap before each simple command, but do it after we
+ update the line number information. */
+ result = run_debug_trap ();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode && result != EXECUTION_SUCCESS)
+ return (EXECUTION_SUCCESS);
+#endif
+
+ first_word_quoted =
+ simple_command->words ? (simple_command->words->word->flags & W_QUOTED) : 0;
+
+ last_command_subst_pid = NO_PID;
+ old_last_async_pid = last_asynchronous_pid;
+
+ already_forked = dofork = 0;
+
+ /* If we're in a pipeline or run in the background, set DOFORK so we
+ make the child early, before word expansion. This keeps assignment
+ statements from affecting the parent shell's environment when they
+ should not. */
+ dofork = pipe_in != NO_PIPE || pipe_out != NO_PIPE || async;
+
+ /* Something like `%2 &' should restart job 2 in the background, not cause
+ the shell to fork here. */
+ if (dofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE &&
+ simple_command->words && simple_command->words->word &&
+ simple_command->words->word->word &&
+ (simple_command->words->word->word[0] == '%'))
+ dofork = 0;
+
+ if (dofork)
+ {
+ /* Do this now, because execute_disk_command will do it anyway in the
+ vast majority of cases. */
+ maybe_make_export_env ();
+
+ /* Don't let a DEBUG trap overwrite the command string to be saved with
+ the process/job associated with this child. */
+ if (make_child (savestring (the_printed_command_except_trap), async) == 0)
+ {
+ already_forked = 1;
+ simple_command->flags |= CMD_NO_FORK;
+
+ subshell_environment = SUBSHELL_FORK;
+ if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
+ subshell_environment |= SUBSHELL_PIPE;
+ if (async)
+ subshell_environment |= SUBSHELL_ASYNC;
+
+ /* We need to do this before piping to handle some really
+ pathological cases where one of the pipe file descriptors
+ is < 2. */
+ if (fds_to_close)
+ close_fd_bitmap (fds_to_close);
+
+ do_piping (pipe_in, pipe_out);
+ pipe_in = pipe_out = NO_PIPE;
+#if defined (COPROCESS_SUPPORT)
+ coproc_closeall ();
+#endif
+
+ last_asynchronous_pid = old_last_async_pid;
+
+ CHECK_SIGTERM;
+ }
+ else
+ {
+ /* Don't let simple commands that aren't the last command in a
+ pipeline change $? for the rest of the pipeline (or at all). */
+ if (pipe_out != NO_PIPE)
+ result = last_command_exit_value;
+ close_pipes (pipe_in, pipe_out);
+#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+ /* Close /dev/fd file descriptors in the parent after forking the
+ last child in a (possibly one-element) pipeline. Defer this
+ until any running shell function completes. */
+ if (pipe_out == NO_PIPE && variable_context == 0) /* XXX */
+ unlink_fifo_list (); /* XXX */
+#endif
+ command_line = (char *)NULL; /* don't free this. */
+ bind_lastarg ((char *)NULL);
+ return (result);
+ }
+ }
+
+ /* If we are re-running this as the result of executing the `command'
+ builtin, do not expand the command words a second time. */
+ if ((simple_command->flags & CMD_INHIBIT_EXPANSION) == 0)
+ {
+ current_fds_to_close = fds_to_close;
+ fix_assignment_words (simple_command->words);
+ /* Pass the ignore return flag down to command substitutions */
+ if (simple_command->flags & CMD_IGNORE_RETURN) /* XXX */
+ comsub_ignore_return++;
+ words = expand_words (simple_command->words);
+ if (simple_command->flags & CMD_IGNORE_RETURN)
+ comsub_ignore_return--;
+ current_fds_to_close = (struct fd_bitmap *)NULL;
+ }
+ else
+ words = copy_word_list (simple_command->words);
+
+ /* It is possible for WORDS not to have anything left in it.
+ Perhaps all the words consisted of `$foo', and there was
+ no variable `$foo'. */
+ if (words == 0)
+ {
+ this_command_name = 0;
+ result = execute_null_command (simple_command->redirects,
+ pipe_in, pipe_out,
+ already_forked ? 0 : async);
+ if (already_forked)
+ exit (result);
+ else
+ {
+ bind_lastarg ((char *)NULL);
+ set_pipestatus_from_exit (result);
+ return (result);
+ }
+ }
+
+ lastarg = (char *)NULL;
+
+ begin_unwind_frame ("simple-command");
+
+ if (echo_command_at_execute)
+ xtrace_print_word_list (words, 1);
+
+ builtin = (sh_builtin_func_t *)NULL;
+ func = (SHELL_VAR *)NULL;
+ if ((simple_command->flags & CMD_NO_FUNCTIONS) == 0)
+ {
+ /* Posix.2 says special builtins are found before functions. We
+ don't set builtin_is_special anywhere other than here, because
+ this path is followed only when the `command' builtin is *not*
+ being used, and we don't want to exit the shell if a special
+ builtin executed with `command builtin' fails. `command' is not
+ a special builtin. */
+ if (posixly_correct)
+ {
+ builtin = find_special_builtin (words->word->word);
+ if (builtin)
+ builtin_is_special = 1;
+ }
+ if (builtin == 0)
+ func = find_function (words->word->word);
+ }
+
+ /* In POSIX mode, assignment errors in the temporary environment cause a
+ non-interactive shell to exit. */
+ if (posixly_correct && builtin_is_special && interactive_shell == 0 && tempenv_assign_error)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+ jump_to_top_level (ERREXIT);
+ }
+ tempenv_assign_error = 0; /* don't care about this any more */
+
+ add_unwind_protect (dispose_words, words);
+ QUIT;
+
+ /* Bind the last word in this command to "$_" after execution. */
+ for (lastword = words; lastword->next; lastword = lastword->next)
+ ;
+ lastarg = lastword->word->word;
+
+#if defined (JOB_CONTROL)
+ /* Is this command a job control related thing? */
+ if (words->word->word[0] == '%' && already_forked == 0)
+ {
+ this_command_name = async ? "bg" : "fg";
+ last_shell_builtin = this_shell_builtin;
+ this_shell_builtin = builtin_address (this_command_name);
+ result = (*this_shell_builtin) (words);
+ goto return_result;
+ }
+
+ /* One other possibililty. The user may want to resume an existing job.
+ If they do, find out whether this word is a candidate for a running
+ job. */
+ if (job_control && already_forked == 0 && async == 0 &&
+ !first_word_quoted &&
+ !words->next &&
+ words->word->word[0] &&
+ !simple_command->redirects &&
+ pipe_in == NO_PIPE &&
+ pipe_out == NO_PIPE &&
+ (temp = get_string_value ("auto_resume")))
+ {
+ int job, jflags, started_status;
+
+ jflags = JM_STOPPED|JM_FIRSTMATCH;
+ if (STREQ (temp, "exact"))
+ jflags |= JM_EXACT;
+ else if (STREQ (temp, "substring"))
+ jflags |= JM_SUBSTRING;
+ else
+ jflags |= JM_PREFIX;
+ job = get_job_by_name (words->word->word, jflags);
+ if (job != NO_JOB)
+ {
+ run_unwind_frame ("simple-command");
+ this_command_name = "fg";
+ last_shell_builtin = this_shell_builtin;
+ this_shell_builtin = builtin_address ("fg");
+
+ started_status = start_job (job, 1);
+ return ((started_status < 0) ? EXECUTION_FAILURE : started_status);
+ }
+ }
+#endif /* JOB_CONTROL */
+
+run_builtin:
+ /* Remember the name of this command globally. */
+ this_command_name = words->word->word;
+
+ QUIT;
+
+ /* This command could be a shell builtin or a user-defined function.
+ We have already found special builtins by this time, so we do not
+ set builtin_is_special. If this is a function or builtin, and we
+ have pipes, then fork a subshell in here. Otherwise, just execute
+ the command directly. */
+ if (func == 0 && builtin == 0)
+ builtin = find_shell_builtin (this_command_name);
+
+ last_shell_builtin = this_shell_builtin;
+ this_shell_builtin = builtin;
+
+ if (builtin || func)
+ {
+ if (builtin)
+ {
+ old_builtin = executing_builtin;
+ old_command_builtin = executing_command_builtin;
+ unwind_protect_int (executing_builtin); /* modified in execute_builtin */
+ unwind_protect_int (executing_command_builtin); /* ditto */
+ }
+ if (already_forked)
+ {
+ /* reset_terminating_signals (); */ /* XXX */
+ /* Reset the signal handlers in the child, but don't free the
+ trap strings. Set a flag noting that we have to free the
+ trap strings if we run trap to change a signal disposition. */
+ reset_signal_handlers ();
+ subshell_environment |= SUBSHELL_RESETTRAP;
+
+ if (async)
+ {
+ if ((simple_command->flags & CMD_STDIN_REDIR) &&
+ pipe_in == NO_PIPE &&
+ (stdin_redirects (simple_command->redirects) == 0))
+ async_redirect_stdin ();
+ setup_async_signals ();
+ }
+
+ subshell_level++;
+ execute_subshell_builtin_or_function
+ (words, simple_command->redirects, builtin, func,
+ pipe_in, pipe_out, async, fds_to_close,
+ simple_command->flags);
+ subshell_level--;
+ }
+ else
+ {
+ result = execute_builtin_or_function
+ (words, builtin, func, simple_command->redirects, fds_to_close,
+ simple_command->flags);
+ if (builtin)
+ {
+ if (result > EX_SHERRBASE)
+ {
+ switch (result)
+ {
+ case EX_REDIRFAIL:
+ case EX_BADASSIGN:
+ case EX_EXPFAIL:
+ /* These errors cause non-interactive posix mode shells to exit */
+ if (posixly_correct && builtin_is_special && interactive_shell == 0)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+ jump_to_top_level (ERREXIT);
+ }
+ }
+ result = builtin_status (result);
+ if (builtin_is_special)
+ special_builtin_failed = 1;
+ }
+ /* In POSIX mode, if there are assignment statements preceding
+ a special builtin, they persist after the builtin
+ completes. */
+ if (posixly_correct && builtin_is_special && temporary_env)
+ merge_temporary_env ();
+ }
+ else /* function */
+ {
+ if (result == EX_USAGE)
+ result = EX_BADUSAGE;
+ else if (result > EX_SHERRBASE)
+ result = EXECUTION_FAILURE;
+ }
+
+ set_pipestatus_from_exit (result);
+
+ goto return_result;
+ }
+ }
+
+ if (autocd && interactive && words->word && is_dirname (words->word->word))
+ {
+ words = make_word_list (make_word ("cd"), words);
+ xtrace_print_word_list (words, 0);
+ goto run_builtin;
+ }
+
+ if (command_line == 0)
+ command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : "");
+
+#if defined (PROCESS_SUBSTITUTION)
+ if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0)
+ simple_command->flags &= ~CMD_NO_FORK;
+#endif
+
+ result = execute_disk_command (words, simple_command->redirects, command_line,
+ pipe_in, pipe_out, async, fds_to_close,
+ simple_command->flags);
+
+ return_result:
+ bind_lastarg (lastarg);
+ FREE (command_line);
+ dispose_words (words);
+ if (builtin)
+ {
+ executing_builtin = old_builtin;
+ executing_command_builtin = old_command_builtin;
+ }
+ discard_unwind_frame ("simple-command");
+ this_command_name = (char *)NULL; /* points to freed memory now */
+ return (result);
+}
+
+/* Translate the special builtin exit statuses. We don't really need a
+ function for this; it's a placeholder for future work. */
+static int
+builtin_status (result)
+ int result;
+{
+ int r;
+
+ switch (result)
+ {
+ case EX_USAGE:
+ r = EX_BADUSAGE;
+ break;
+ case EX_REDIRFAIL:
+ case EX_BADSYNTAX:
+ case EX_BADASSIGN:
+ case EX_EXPFAIL:
+ r = EXECUTION_FAILURE;
+ break;
+ default:
+ r = EXECUTION_SUCCESS;
+ break;
+ }
+ return (r);
+}
+
+static int
+execute_builtin (builtin, words, flags, subshell)
+ sh_builtin_func_t *builtin;
+ WORD_LIST *words;
+ int flags, subshell;
+{
+ int old_e_flag, result, eval_unwind;
+ int isbltinenv;
+ char *error_trap;
+
+ error_trap = 0;
+ old_e_flag = exit_immediately_on_error;
+
+ /* The eval builtin calls parse_and_execute, which does not know about
+ the setting of flags, and always calls the execution functions with
+ flags that will exit the shell on an error if -e is set. If the
+ eval builtin is being called, and we're supposed to ignore the exit
+ value of the command, we turn the -e flag off ourselves and disable
+ the ERR trap, then restore them when the command completes. This is
+ also a problem (as below) for the command and source/. builtins. */
+ if (subshell == 0 && (flags & CMD_IGNORE_RETURN) &&
+ (builtin == eval_builtin || builtin == command_builtin || builtin == source_builtin))
+ {
+ begin_unwind_frame ("eval_builtin");
+ unwind_protect_int (exit_immediately_on_error);
+ unwind_protect_int (builtin_ignoring_errexit);
+ error_trap = TRAP_STRING (ERROR_TRAP);
+ if (error_trap)
+ {
+ error_trap = savestring (error_trap);
+ add_unwind_protect (xfree, error_trap);
+ add_unwind_protect (set_error_trap, error_trap);
+ restore_default_signal (ERROR_TRAP);
+ }
+ exit_immediately_on_error = 0;
+ builtin_ignoring_errexit = 1;
+ eval_unwind = 1;
+ }
+ else
+ eval_unwind = 0;
+
+ /* The temporary environment for a builtin is supposed to apply to
+ all commands executed by that builtin. Currently, this is a
+ problem only with the `unset', `source' and `eval' builtins.
+ `mapfile' is a special case because it uses evalstring (same as
+ eval or source) to run its callbacks. */
+ isbltinenv = (builtin == source_builtin || builtin == eval_builtin || builtin == unset_builtin || builtin == mapfile_builtin);
+
+ if (isbltinenv)
+ {
+ if (subshell == 0)
+ begin_unwind_frame ("builtin_env");
+
+ if (temporary_env)
+ {
+ push_scope (VC_BLTNENV, temporary_env);
+ if (subshell == 0)
+ add_unwind_protect (pop_scope, (flags & CMD_COMMAND_BUILTIN) ? 0 : "1");
+ temporary_env = (HASH_TABLE *)NULL;
+ }
+ }
+
+ /* `return' does a longjmp() back to a saved environment in execute_function.
+ If a variable assignment list preceded the command, and the shell is
+ running in POSIX mode, we need to merge that into the shell_variables
+ table, since `return' is a POSIX special builtin. */
+ if (posixly_correct && subshell == 0 && builtin == return_builtin && temporary_env)
+ {
+ begin_unwind_frame ("return_temp_env");
+ add_unwind_protect (merge_temporary_env, (char *)NULL);
+ }
+
+ executing_builtin++;
+ executing_command_builtin |= builtin == command_builtin;
+ result = ((*builtin) (words->next));
+
+ /* This shouldn't happen, but in case `return' comes back instead of
+ longjmp'ing, we need to unwind. */
+ if (posixly_correct && subshell == 0 && builtin == return_builtin && temporary_env)
+ discard_unwind_frame ("return_temp_env");
+
+ if (subshell == 0 && isbltinenv)
+ run_unwind_frame ("builtin_env");
+
+ if (eval_unwind)
+ {
+ exit_immediately_on_error = errexit_flag;
+ builtin_ignoring_errexit = 0;
+ if (error_trap)
+ {
+ set_error_trap (error_trap);
+ xfree (error_trap);
+ }
+ discard_unwind_frame ("eval_builtin");
+ }
+
+ return (result);
+}
+
+static int
+execute_function (var, words, flags, fds_to_close, async, subshell)
+ SHELL_VAR *var;
+ WORD_LIST *words;
+ int flags;
+ struct fd_bitmap *fds_to_close;
+ int async, subshell;
+{
+ int return_val, result;
+ COMMAND *tc, *fc, *save_current;
+ char *debug_trap, *error_trap, *return_trap;
+#if defined (ARRAY_VARS)
+ SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v;
+ ARRAY *funcname_a;
+ volatile ARRAY *bash_source_a;
+ volatile ARRAY *bash_lineno_a;
+#endif
+ FUNCTION_DEF *shell_fn;
+ char *sfile, *t;
+
+ USE_VAR(fc);
+
+ if (funcnest_max > 0 && funcnest >= funcnest_max)
+ {
+ internal_error (_("%s: maximum function nesting level exceeded (%d)"), var->name, funcnest);
+ funcnest = 0; /* XXX - should we reset it somewhere else? */
+ jump_to_top_level (DISCARD);
+ }
+
+#if defined (ARRAY_VARS)
+ GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a);
+ GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a);
+ GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a);
+#endif
+
+ tc = (COMMAND *)copy_command (function_cell (var));
+ if (tc && (flags & CMD_IGNORE_RETURN))
+ tc->flags |= CMD_IGNORE_RETURN;
+
+ if (subshell == 0)
+ {
+ begin_unwind_frame ("function_calling");
+ push_context (var->name, subshell, temporary_env);
+ add_unwind_protect (pop_context, (char *)NULL);
+ unwind_protect_int (line_number);
+ unwind_protect_int (return_catch_flag);
+ unwind_protect_jmp_buf (return_catch);
+ add_unwind_protect (dispose_command, (char *)tc);
+ unwind_protect_pointer (this_shell_function);
+ unwind_protect_int (loop_level);
+ unwind_protect_int (funcnest);
+ }
+ else
+ push_context (var->name, subshell, temporary_env); /* don't unwind-protect for subshells */
+
+ temporary_env = (HASH_TABLE *)NULL;
+
+ this_shell_function = var;
+ make_funcname_visible (1);
+
+ debug_trap = TRAP_STRING(DEBUG_TRAP);
+ error_trap = TRAP_STRING(ERROR_TRAP);
+ return_trap = TRAP_STRING(RETURN_TRAP);
+
+ /* The order of the unwind protects for debug_trap, error_trap and
+ return_trap is important here! unwind-protect commands are run
+ in reverse order of registration. If this causes problems, take
+ out the xfree unwind-protect calls and live with the small memory leak. */
+
+ /* function_trace_mode != 0 means that all functions inherit the DEBUG trap.
+ if the function has the trace attribute set, it inherits the DEBUG trap */
+ if (debug_trap && ((trace_p (var) == 0) && function_trace_mode == 0))
+ {
+ if (subshell == 0)
+ {
+ debug_trap = savestring (debug_trap);
+ add_unwind_protect (xfree, debug_trap);
+ add_unwind_protect (set_debug_trap, debug_trap);
+ }
+ restore_default_signal (DEBUG_TRAP);
+ }
+
+ /* error_trace_mode != 0 means that functions inherit the ERR trap. */
+ if (error_trap && error_trace_mode == 0)
+ {
+ if (subshell == 0)
+ {
+ error_trap = savestring (error_trap);
+ add_unwind_protect (xfree, error_trap);
+ add_unwind_protect (set_error_trap, error_trap);
+ }
+ restore_default_signal (ERROR_TRAP);
+ }
+
+ /* Shell functions inherit the RETURN trap if function tracing is on
+ globally or on individually for this function. */
+#if 0
+ if (return_trap && ((trace_p (var) == 0) && function_trace_mode == 0))
+#else
+ if (return_trap && (signal_in_progress (DEBUG_TRAP) || ((trace_p (var) == 0) && function_trace_mode == 0)))
+#endif
+ {
+ if (subshell == 0)
+ {
+ return_trap = savestring (return_trap);
+ add_unwind_protect (xfree, return_trap);
+ add_unwind_protect (set_return_trap, return_trap);
+ }
+ restore_default_signal (RETURN_TRAP);
+ }
+
+ funcnest++;
+#if defined (ARRAY_VARS)
+ /* This is quite similar to the code in shell.c and elsewhere. */
+ shell_fn = find_function_def (this_shell_function->name);
+ sfile = shell_fn ? shell_fn->source_file : "";
+ array_push ((ARRAY *)funcname_a, this_shell_function->name);
+
+ array_push ((ARRAY *)bash_source_a, sfile);
+ t = itos (executing_line_number ());
+ array_push ((ARRAY *)bash_lineno_a, t);
+ free (t);
+#endif
+
+ /* The temporary environment for a function is supposed to apply to
+ all commands executed within the function body. */
+
+ remember_args (words->next, 1);
+
+ /* Update BASH_ARGV and BASH_ARGC */
+ if (debugging_mode)
+ push_args (words->next);
+
+ /* Number of the line on which the function body starts. */
+ line_number = function_line_number = tc->line;
+
+#if defined (JOB_CONTROL)
+ if (subshell)
+ stop_pipeline (async, (COMMAND *)NULL);
+#endif
+
+ fc = tc;
+
+ return_catch_flag++;
+ return_val = setjmp_nosigs (return_catch);
+
+ if (return_val)
+ {
+ result = return_catch_value;
+ /* Run the RETURN trap in the function's context. */
+ save_current = currently_executing_command;
+ run_return_trap ();
+ currently_executing_command = save_current;
+ }
+ else
+ {
+ /* Run the debug trap here so we can trap at the start of a function's
+ execution rather than the execution of the body's first command. */
+ showing_function_line = 1;
+ save_current = currently_executing_command;
+ result = run_debug_trap ();
+#if defined (DEBUGGER)
+ /* In debugging mode, if the DEBUG trap returns a non-zero status, we
+ skip the command. */
+ if (debugging_mode == 0 || result == EXECUTION_SUCCESS)
+ {
+ showing_function_line = 0;
+ currently_executing_command = save_current;
+ result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close);
+
+ /* Run the RETURN trap in the function's context */
+ save_current = currently_executing_command;
+ run_return_trap ();
+ currently_executing_command = save_current;
+ }
+#else
+ result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close);
+
+ save_current = currently_executing_command;
+ run_return_trap ();
+ currently_executing_command = save_current;
+#endif
+ showing_function_line = 0;
+ }
+
+ /* Restore BASH_ARGC and BASH_ARGV */
+ if (debugging_mode)
+ pop_args ();
+
+ if (subshell == 0)
+ run_unwind_frame ("function_calling");
+
+#if defined (ARRAY_VARS)
+ /* These two variables cannot be unset, and cannot be affected by the
+ function. */
+ array_pop ((ARRAY *)bash_source_a);
+ array_pop ((ARRAY *)bash_lineno_a);
+
+ /* FUNCNAME can be unset, and so can potentially be changed by the
+ function. */
+ GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a);
+ if (nfv == funcname_v)
+ array_pop (funcname_a);
+#endif
+
+ if (variable_context == 0 || this_shell_function == 0)
+ {
+ make_funcname_visible (0);
+#if defined (PROCESS_SUBSTITUTION)
+ unlink_fifo_list ();
+#endif
+ }
+
+ return (result);
+}
+
+/* A convenience routine for use by other parts of the shell to execute
+ a particular shell function. */
+int
+execute_shell_function (var, words)
+ SHELL_VAR *var;
+ WORD_LIST *words;
+{
+ int ret;
+ struct fd_bitmap *bitmap;
+
+ bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE);
+ begin_unwind_frame ("execute-shell-function");
+ add_unwind_protect (dispose_fd_bitmap, (char *)bitmap);
+
+ ret = execute_function (var, words, 0, bitmap, 0, 0);
+
+ dispose_fd_bitmap (bitmap);
+ discard_unwind_frame ("execute-shell-function");
+
+ return ret;
+}
+
+/* Execute a shell builtin or function in a subshell environment. This
+ routine does not return; it only calls exit(). If BUILTIN is non-null,
+ it points to a function to call to execute a shell builtin; otherwise
+ VAR points at the body of a function to execute. WORDS is the arguments
+ to the command, REDIRECTS specifies redirections to perform before the
+ command is executed. */
+static void
+execute_subshell_builtin_or_function (words, redirects, builtin, var,
+ pipe_in, pipe_out, async, fds_to_close,
+ flags)
+ WORD_LIST *words;
+ REDIRECT *redirects;
+ sh_builtin_func_t *builtin;
+ SHELL_VAR *var;
+ int pipe_in, pipe_out, async;
+ struct fd_bitmap *fds_to_close;
+ int flags;
+{
+ int result, r, funcvalue;
+#if defined (JOB_CONTROL)
+ int jobs_hack;
+
+ jobs_hack = (builtin == jobs_builtin) &&
+ ((subshell_environment & SUBSHELL_ASYNC) == 0 || pipe_out != NO_PIPE);
+#endif
+
+ /* A subshell is neither a login shell nor interactive. */
+ login_shell = interactive = 0;
+
+ if (async)
+ subshell_environment |= SUBSHELL_ASYNC;
+ if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
+ subshell_environment |= SUBSHELL_PIPE;
+
+ maybe_make_export_env (); /* XXX - is this needed? */
+
+#if defined (JOB_CONTROL)
+ /* Eradicate all traces of job control after we fork the subshell, so
+ all jobs begun by this subshell are in the same process group as
+ the shell itself. */
+
+ /* Allow the output of `jobs' to be piped. */
+ if (jobs_hack)
+ kill_current_pipeline ();
+ else
+ without_job_control ();
+
+ set_sigchld_handler ();
+#endif /* JOB_CONTROL */
+
+ set_sigint_handler ();
+
+ if (fds_to_close)
+ close_fd_bitmap (fds_to_close);
+
+ do_piping (pipe_in, pipe_out);
+
+ if (do_redirections (redirects, RX_ACTIVE) != 0)
+ exit (EXECUTION_FAILURE);
+
+ if (builtin)
+ {
+ /* Give builtins a place to jump back to on failure,
+ so we don't go back up to main(). */
+ result = setjmp_nosigs (top_level);
+
+ /* Give the return builtin a place to jump to when executed in a subshell
+ or pipeline */
+ funcvalue = 0;
+ if (return_catch_flag && builtin == return_builtin)
+ funcvalue = setjmp_nosigs (return_catch);
+
+ if (result == EXITPROG)
+ exit (last_command_exit_value);
+ else if (result)
+ exit (EXECUTION_FAILURE);
+ else if (funcvalue)
+ exit (return_catch_value);
+ else
+ {
+ r = execute_builtin (builtin, words, flags, 1);
+ fflush (stdout);
+ if (r == EX_USAGE)
+ r = EX_BADUSAGE;
+ exit (r);
+ }
+ }
+ else
+ {
+ r = execute_function (var, words, flags, fds_to_close, async, 1);
+ fflush (stdout);
+ exit (r);
+ }
+}
+
+/* Execute a builtin or function in the current shell context. If BUILTIN
+ is non-null, it is the builtin command to execute, otherwise VAR points
+ to the body of a function. WORDS are the command's arguments, REDIRECTS
+ are the redirections to perform. FDS_TO_CLOSE is the usual bitmap of
+ file descriptors to close.
+
+ If BUILTIN is exec_builtin, the redirections specified in REDIRECTS are
+ not undone before this function returns. */
+static int
+execute_builtin_or_function (words, builtin, var, redirects,
+ fds_to_close, flags)
+ WORD_LIST *words;
+ sh_builtin_func_t *builtin;
+ SHELL_VAR *var;
+ REDIRECT *redirects;
+ struct fd_bitmap *fds_to_close;
+ int flags;
+{
+ int result;
+ REDIRECT *saved_undo_list;
+#if defined (PROCESS_SUBSTITUTION)
+ int ofifo, nfifo, osize;
+ char *ofifo_list;
+#endif
+
+
+#if defined (PROCESS_SUBSTITUTION)
+ ofifo = num_fifos ();
+ ofifo_list = copy_fifo_list (&osize);
+#endif
+
+ if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
+ {
+ cleanup_redirects (redirection_undo_list);
+ redirection_undo_list = (REDIRECT *)NULL;
+ dispose_exec_redirects ();
+#if defined (PROCESS_SUBSTITUTION)
+ free (ofifo_list);
+#endif
+ return (EX_REDIRFAIL); /* was EXECUTION_FAILURE */
+ }
+
+ saved_undo_list = redirection_undo_list;
+
+ /* Calling the "exec" builtin changes redirections forever. */
+ if (builtin == exec_builtin)
+ {
+ dispose_redirects (saved_undo_list);
+ saved_undo_list = exec_redirection_undo_list;
+ exec_redirection_undo_list = (REDIRECT *)NULL;
+ }
+ else
+ dispose_exec_redirects ();
+
+ if (saved_undo_list)
+ {
+ begin_unwind_frame ("saved redirects");
+ add_unwind_protect (cleanup_redirects, (char *)saved_undo_list);
+ }
+
+ redirection_undo_list = (REDIRECT *)NULL;
+
+ if (builtin)
+ result = execute_builtin (builtin, words, flags, 0);
+ else
+ result = execute_function (var, words, flags, fds_to_close, 0, 0);
+
+ /* We do this before undoing the effects of any redirections. */
+ fflush (stdout);
+ fpurge (stdout);
+ if (ferror (stdout))
+ clearerr (stdout);
+
+ /* If we are executing the `command' builtin, but this_shell_builtin is
+ set to `exec_builtin', we know that we have something like
+ `command exec [redirection]', since otherwise `exec' would have
+ overwritten the shell and we wouldn't get here. In this case, we
+ want to behave as if the `command' builtin had not been specified
+ and preserve the redirections. */
+ if (builtin == command_builtin && this_shell_builtin == exec_builtin)
+ {
+ int discard;
+
+ discard = 0;
+ if (saved_undo_list)
+ {
+ dispose_redirects (saved_undo_list);
+ discard = 1;
+ }
+ redirection_undo_list = exec_redirection_undo_list;
+ saved_undo_list = exec_redirection_undo_list = (REDIRECT *)NULL;
+ if (discard)
+ discard_unwind_frame ("saved redirects");
+ }
+
+ if (saved_undo_list)
+ {
+ redirection_undo_list = saved_undo_list;
+ discard_unwind_frame ("saved redirects");
+ }
+
+ if (redirection_undo_list)
+ {
+ cleanup_redirects (redirection_undo_list);
+ redirection_undo_list = (REDIRECT *)NULL;
+ }
+
+#if defined (PROCESS_SUBSTITUTION)
+ /* Close any FIFOs created by this builtin or function. */
+ nfifo = num_fifos ();
+ if (nfifo > ofifo)
+ close_new_fifos (ofifo_list, osize);
+ free (ofifo_list);
+#endif
+
+ return (result);
+}
+
+void
+setup_async_signals ()
+{
+#if defined (__BEOS__)
+ set_signal_handler (SIGHUP, SIG_IGN); /* they want csh-like behavior */
+#endif
+
+#if defined (JOB_CONTROL)
+ if (job_control == 0)
+#endif
+ {
+ /* Make sure we get the original signal dispositions now so we don't
+ confuse the trap builtin later if the subshell tries to use it to
+ reset SIGINT/SIGQUIT. Don't call set_signal_ignored; that sets
+ the value of original_signals to SIG_IGN. Posix interpretation 751. */
+ get_original_signal (SIGINT);
+ set_signal_handler (SIGINT, SIG_IGN);
+
+ get_original_signal (SIGQUIT);
+ set_signal_handler (SIGQUIT, SIG_IGN);
+ }
+}
+
+/* Execute a simple command that is hopefully defined in a disk file
+ somewhere.
+
+ 1) fork ()
+ 2) connect pipes
+ 3) look up the command
+ 4) do redirections
+ 5) execve ()
+ 6) If the execve failed, see if the file has executable mode set.
+ If so, and it isn't a directory, then execute its contents as
+ a shell script.
+
+ Note that the filename hashing stuff has to take place up here,
+ in the parent. This is probably why the Bourne style shells
+ don't handle it, since that would require them to go through
+ this gnarly hair, for no good reason.
+
+ NOTE: callers expect this to fork or exit(). */
+
+/* Name of a shell function to call when a command name is not found. */
+#ifndef NOTFOUND_HOOK
+# define NOTFOUND_HOOK "command_not_found_handle"
+#endif
+
+static int
+execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
+ async, fds_to_close, cmdflags)
+ WORD_LIST *words;
+ REDIRECT *redirects;
+ char *command_line;
+ int pipe_in, pipe_out, async;
+ struct fd_bitmap *fds_to_close;
+ int cmdflags;
+{
+ char *pathname, *command, **args;
+ int nofork, result;
+ pid_t pid;
+ SHELL_VAR *hookf;
+ WORD_LIST *wl;
+
+ nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */
+ pathname = words->word->word;
+
+ result = EXECUTION_SUCCESS;
+#if defined (RESTRICTED_SHELL)
+ command = (char *)NULL;
+ if (restricted && mbschr (pathname, '/'))
+ {
+ internal_error (_("%s: restricted: cannot specify `/' in command names"),
+ pathname);
+ result = last_command_exit_value = EXECUTION_FAILURE;
+
+ /* If we're not going to fork below, we must already be in a child
+ process or a context in which it's safe to call exit(2). */
+ if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
+ exit (last_command_exit_value);
+ else
+ goto parent_return;
+ }
+#endif /* RESTRICTED_SHELL */
+
+ command = search_for_command (pathname, 1);
+
+ if (command)
+ {
+ maybe_make_export_env ();
+ put_command_name_into_env (command);
+ }
+
+ /* We have to make the child before we check for the non-existence
+ of COMMAND, since we want the error messages to be redirected. */
+ /* If we can get away without forking and there are no pipes to deal with,
+ don't bother to fork, just directly exec the command. */
+ if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
+ pid = 0;
+ else
+ pid = make_child (savestring (command_line), async);
+
+ if (pid == 0)
+ {
+ int old_interactive;
+
+ reset_terminating_signals (); /* XXX */
+ /* Cancel traps, in trap.c. */
+ restore_original_signals ();
+
+ CHECK_SIGTERM;
+
+ /* restore_original_signals may have undone the work done
+ by make_child to ensure that SIGINT and SIGQUIT are ignored
+ in asynchronous children. */
+ if (async)
+ {
+ if ((cmdflags & CMD_STDIN_REDIR) &&
+ pipe_in == NO_PIPE &&
+ (stdin_redirects (redirects) == 0))
+ async_redirect_stdin ();
+ setup_async_signals ();
+ }
+
+ /* This functionality is now provided by close-on-exec of the
+ file descriptors manipulated by redirection and piping.
+ Some file descriptors still need to be closed in all children
+ because of the way bash does pipes; fds_to_close is a
+ bitmap of all such file descriptors. */
+ if (fds_to_close)
+ close_fd_bitmap (fds_to_close);
+
+ do_piping (pipe_in, pipe_out);
+
+ old_interactive = interactive;
+ if (async)
+ interactive = 0;
+
+ subshell_environment = SUBSHELL_FORK;
+
+ if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0))
+ {
+#if defined (PROCESS_SUBSTITUTION)
+ /* Try to remove named pipes that may have been created as the
+ result of redirections. */
+ unlink_fifo_list ();
+#endif /* PROCESS_SUBSTITUTION */
+ exit (EXECUTION_FAILURE);
+ }
+
+ if (async)
+ interactive = old_interactive;
+
+ if (command == 0)
+ {
+ hookf = find_function (NOTFOUND_HOOK);
+ if (hookf == 0)
+ {
+ /* Make sure filenames are displayed using printable characters */
+ if (ansic_shouldquote (pathname))
+ pathname = ansic_quote (pathname, 0, NULL);
+ internal_error (_("%s: command not found"), pathname);
+ exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */
+ }
+
+#if defined (JOB_CONTROL)
+ /* May need to reinitialize more of the job control state here. */
+ kill_current_pipeline ();
+#endif
+
+ wl = make_word_list (make_word (NOTFOUND_HOOK), words);
+ exit (execute_shell_function (hookf, wl));
+ }
+
+ CHECK_SIGTERM;
+
+ /* Execve expects the command name to be in args[0]. So we
+ leave it there, in the same format that the user used to
+ type it in. */
+ args = strvec_from_word_list (words, 0, 0, (int *)NULL);
+ exit (shell_execve (command, args, export_env));
+ }
+ else
+ {
+parent_return:
+ QUIT;
+
+ /* Make sure that the pipes are closed in the parent. */
+ close_pipes (pipe_in, pipe_out);
+#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+ if (variable_context == 0)
+ unlink_fifo_list ();
+#endif
+ FREE (command);
+ return (result);
+ }
+}
+
+/* CPP defines to decide whether a particular index into the #! line
+ corresponds to a valid interpreter name or argument character, or
+ whitespace. The MSDOS define is to allow \r to be treated the same
+ as \n. */
+
+#if !defined (MSDOS)
+# define STRINGCHAR(ind) \
+ (ind < sample_len && !whitespace (sample[ind]) && sample[ind] != '\n')
+# define WHITECHAR(ind) \
+ (ind < sample_len && whitespace (sample[ind]))
+#else /* MSDOS */
+# define STRINGCHAR(ind) \
+ (ind < sample_len && !whitespace (sample[ind]) && sample[ind] != '\n' && sample[ind] != '\r')
+# define WHITECHAR(ind) \
+ (ind < sample_len && whitespace (sample[ind]))
+#endif /* MSDOS */
+
+static char *
+getinterp (sample, sample_len, endp)
+ char *sample;
+ int sample_len, *endp;
+{
+ register int i;
+ char *execname;
+ int start;
+
+ /* Find the name of the interpreter to exec. */
+ for (i = 2; i < sample_len && whitespace (sample[i]); i++)
+ ;
+
+ for (start = i; STRINGCHAR(i); i++)
+ ;
+
+ execname = substring (sample, start, i);
+
+ if (endp)
+ *endp = i;
+ return execname;
+}
+
+#if !defined (HAVE_HASH_BANG_EXEC)
+/* If the operating system on which we're running does not handle
+ the #! executable format, then help out. SAMPLE is the text read
+ from the file, SAMPLE_LEN characters. COMMAND is the name of
+ the script; it and ARGS, the arguments given by the user, will
+ become arguments to the specified interpreter. ENV is the environment
+ to pass to the interpreter.
+
+ The word immediately following the #! is the interpreter to execute.
+ A single argument to the interpreter is allowed. */
+
+static int
+execute_shell_script (sample, sample_len, command, args, env)
+ char *sample;
+ int sample_len;
+ char *command;
+ char **args, **env;
+{
+ char *execname, *firstarg;
+ int i, start, size_increment, larry;
+
+ /* Find the name of the interpreter to exec. */
+ execname = getinterp (sample, sample_len, &i);
+ size_increment = 1;
+
+ /* Now the argument, if any. */
+ for (firstarg = (char *)NULL, start = i; WHITECHAR(i); i++)
+ ;
+
+ /* If there is more text on the line, then it is an argument for the
+ interpreter. */
+
+ if (STRINGCHAR(i))
+ {
+ for (start = i; STRINGCHAR(i); i++)
+ ;
+ firstarg = substring ((char *)sample, start, i);
+ size_increment = 2;
+ }
+
+ larry = strvec_len (args) + size_increment;
+ args = strvec_resize (args, larry + 1);
+
+ for (i = larry - 1; i; i--)
+ args[i] = args[i - size_increment];
+
+ args[0] = execname;
+ if (firstarg)
+ {
+ args[1] = firstarg;
+ args[2] = command;
+ }
+ else
+ args[1] = command;
+
+ args[larry] = (char *)NULL;
+
+ return (shell_execve (execname, args, env));
+}
+#undef STRINGCHAR
+#undef WHITECHAR
+
+#endif /* !HAVE_HASH_BANG_EXEC */
+
+static void
+initialize_subshell ()
+{
+#if defined (ALIAS)
+ /* Forget about any aliases that we knew of. We are in a subshell. */
+ delete_all_aliases ();
+#endif /* ALIAS */
+
+#if defined (HISTORY)
+ /* Forget about the history lines we have read. This is a non-interactive
+ subshell. */
+ history_lines_this_session = 0;
+#endif
+
+#if defined (JOB_CONTROL)
+ /* Forget about the way job control was working. We are in a subshell. */
+ without_job_control ();
+ set_sigchld_handler ();
+ init_job_stats ();
+#endif /* JOB_CONTROL */
+
+ /* Reset the values of the shell flags and options. */
+ reset_shell_flags ();
+ reset_shell_options ();
+ reset_shopt_options ();
+
+ /* Zero out builtin_env, since this could be a shell script run from a
+ sourced file with a temporary environment supplied to the `source/.'
+ builtin. Such variables are not supposed to be exported (empirical
+ testing with sh and ksh). Just throw it away; don't worry about a
+ memory leak. */
+ if (vc_isbltnenv (shell_variables))
+ shell_variables = shell_variables->down;
+
+ clear_unwind_protect_list (0);
+ /* XXX -- are there other things we should be resetting here? */
+ parse_and_execute_level = 0; /* nothing left to restore it */
+
+ /* We're no longer inside a shell function. */
+ variable_context = return_catch_flag = funcnest = 0;
+
+ executing_list = 0; /* XXX */
+
+ /* If we're not interactive, close the file descriptor from which we're
+ reading the current shell script. */
+ if (interactive_shell == 0)
+ unset_bash_input (0);
+}
+
+#if defined (HAVE_SETOSTYPE) && defined (_POSIX_SOURCE)
+# define SETOSTYPE(x) __setostype(x)
+#else
+# define SETOSTYPE(x)
+#endif
+
+#define READ_SAMPLE_BUF(file, buf, len) \
+ do \
+ { \
+ fd = open(file, O_RDONLY); \
+ if (fd >= 0) \
+ { \
+ len = read (fd, buf, 80); \
+ close (fd); \
+ } \
+ else \
+ len = -1; \
+ } \
+ while (0)
+
+/* Call execve (), handling interpreting shell scripts, and handling
+ exec failures. */
+int
+shell_execve (command, args, env)
+ char *command;
+ char **args, **env;
+{
+ int larray, i, fd;
+ char sample[80];
+ int sample_len;
+
+ SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */
+ execve (command, args, env);
+ i = errno; /* error from execve() */
+ CHECK_TERMSIG;
+ SETOSTYPE (1);
+
+ /* If we get to this point, then start checking out the file.
+ Maybe it is something we can hack ourselves. */
+ if (i != ENOEXEC)
+ {
+ if (file_isdir (command))
+#if defined (EISDIR)
+ internal_error (_("%s: %s"), command, strerror (EISDIR));
+#else
+ internal_error (_("%s: is a directory"), command);
+#endif
+ else if (executable_file (command) == 0)
+ {
+ errno = i;
+ file_error (command);
+ }
+ /* errors not involving the path argument to execve. */
+ else if (i == E2BIG || i == ENOMEM)
+ {
+ errno = i;
+ file_error (command);
+ }
+ else
+ {
+ /* The file has the execute bits set, but the kernel refuses to
+ run it for some reason. See why. */
+#if defined (HAVE_HASH_BANG_EXEC)
+ READ_SAMPLE_BUF (command, sample, sample_len);
+ sample[sample_len - 1] = '\0';
+ if (sample_len > 2 && sample[0] == '#' && sample[1] == '!')
+ {
+ char *interp;
+ int ilen;
+
+ interp = getinterp (sample, sample_len, (int *)NULL);
+ ilen = strlen (interp);
+ errno = i;
+ if (interp[ilen - 1] == '\r')
+ {
+ interp = xrealloc (interp, ilen + 2);
+ interp[ilen - 1] = '^';
+ interp[ilen] = 'M';
+ interp[ilen + 1] = '\0';
+ }
+ sys_error (_("%s: %s: bad interpreter"), command, interp ? interp : "");
+ FREE (interp);
+ return (EX_NOEXEC);
+ }
+#endif
+ errno = i;
+ file_error (command);
+ }
+ return ((i == ENOENT) ? EX_NOTFOUND : EX_NOEXEC); /* XXX Posix.2 says that exit status is 126 */
+ }
+
+ /* This file is executable.
+ If it begins with #!, then help out people with losing operating
+ systems. Otherwise, check to see if it is a binary file by seeing
+ if the contents of the first line (or up to 80 characters) are in the
+ ASCII set. If it's a text file, execute the contents as shell commands,
+ otherwise return 126 (EX_BINARY_FILE). */
+ READ_SAMPLE_BUF (command, sample, sample_len);
+
+ if (sample_len == 0)
+ return (EXECUTION_SUCCESS);
+
+ /* Is this supposed to be an executable script?
+ If so, the format of the line is "#! interpreter [argument]".
+ A single argument is allowed. The BSD kernel restricts
+ the length of the entire line to 32 characters (32 bytes
+ being the size of the BSD exec header), but we allow 80
+ characters. */
+ if (sample_len > 0)
+ {
+#if !defined (HAVE_HASH_BANG_EXEC)
+ if (sample_len > 2 && sample[0] == '#' && sample[1] == '!')
+ return (execute_shell_script (sample, sample_len, command, args, env));
+ else
+#endif
+ if (check_binary_file (sample, sample_len))
+ {
+ internal_error (_("%s: cannot execute binary file: %s"), command, strerror (i));
+ return (EX_BINARY_FILE);
+ }
+ }
+
+ /* We have committed to attempting to execute the contents of this file
+ as shell commands. */
+
+ initialize_subshell ();
+
+ set_sigint_handler ();
+
+ /* Insert the name of this shell into the argument list. */
+ larray = strvec_len (args) + 1;
+ args = strvec_resize (args, larray + 1);
+
+ for (i = larray - 1; i; i--)
+ args[i] = args[i - 1];
+
+ args[0] = shell_name;
+ args[1] = command;
+ args[larray] = (char *)NULL;
+
+ if (args[0][0] == '-')
+ args[0]++;
+
+#if defined (RESTRICTED_SHELL)
+ if (restricted)
+ change_flag ('r', FLAG_OFF);
+#endif
+
+ if (subshell_argv)
+ {
+ /* Can't free subshell_argv[0]; that is shell_name. */
+ for (i = 1; i < subshell_argc; i++)
+ free (subshell_argv[i]);
+ free (subshell_argv);
+ }
+
+ dispose_command (currently_executing_command); /* XXX */
+ currently_executing_command = (COMMAND *)NULL;
+
+ subshell_argc = larray;
+ subshell_argv = args;
+ subshell_envp = env;
+
+ unbind_args (); /* remove the positional parameters */
+
+ longjmp (subshell_top_level, 1);
+ /*NOTREACHED*/
+}
+
+static int
+execute_intern_function (name, funcdef)
+ WORD_DESC *name;
+ FUNCTION_DEF *funcdef;
+{
+ SHELL_VAR *var;
+
+ if (check_identifier (name, posixly_correct) == 0)
+ {
+ if (posixly_correct && interactive_shell == 0)
+ {
+ last_command_exit_value = EX_BADUSAGE;
+ jump_to_top_level (ERREXIT);
+ }
+ return (EXECUTION_FAILURE);
+ }
+
+ /* Posix interpretation 383 */
+ if (posixly_correct && find_special_builtin (name->word))
+ {
+ internal_error (_("`%s': is a special builtin"), name->word);
+ last_command_exit_value = EX_BADUSAGE;
+ jump_to_top_level (ERREXIT);
+ }
+
+ var = find_function (name->word);
+ if (var && (readonly_p (var) || noassign_p (var)))
+ {
+ if (readonly_p (var))
+ internal_error (_("%s: readonly function"), var->name);
+ return (EXECUTION_FAILURE);
+ }
+
+#if defined (DEBUGGER)
+ bind_function_def (name->word, funcdef);
+#endif
+
+ bind_function (name->word, funcdef->command);
+ return (EXECUTION_SUCCESS);
+}
+
+#if defined (INCLUDE_UNUSED)
+#if defined (PROCESS_SUBSTITUTION)
+void
+close_all_files ()
+{
+ register int i, fd_table_size;
+
+ fd_table_size = getdtablesize ();
+ if (fd_table_size > 256) /* clamp to a reasonable value */
+ fd_table_size = 256;
+
+ for (i = 3; i < fd_table_size; i++)
+ close (i);
+}
+#endif /* PROCESS_SUBSTITUTION */
+#endif
+
+static void
+close_pipes (in, out)
+ int in, out;
+{
+ if (in >= 0)
+ close (in);
+ if (out >= 0)
+ close (out);
+}
+
+static void
+dup_error (oldd, newd)
+ int oldd, newd;
+{
+ sys_error (_("cannot duplicate fd %d to fd %d"), oldd, newd);
+}
+
+/* Redirect input and output to be from and to the specified pipes.
+ NO_PIPE and REDIRECT_BOTH are handled correctly. */
+static void
+do_piping (pipe_in, pipe_out)
+ int pipe_in, pipe_out;
+{
+ if (pipe_in != NO_PIPE)
+ {
+ if (dup2 (pipe_in, 0) < 0)
+ dup_error (pipe_in, 0);
+ if (pipe_in > 0)
+ close (pipe_in);
+#ifdef __CYGWIN__
+ /* Let stdio know the fd may have changed from text to binary mode. */
+ freopen (NULL, "r", stdin);
+#endif /* __CYGWIN__ */
+ }
+ if (pipe_out != NO_PIPE)
+ {
+ if (pipe_out != REDIRECT_BOTH)
+ {
+ if (dup2 (pipe_out, 1) < 0)
+ dup_error (pipe_out, 1);
+ if (pipe_out == 0 || pipe_out > 1)
+ close (pipe_out);
+ }
+ else
+ {
+ if (dup2 (1, 2) < 0)
+ dup_error (1, 2);
+ }
+#ifdef __CYGWIN__
+ /* Let stdio know the fd may have changed from text to binary mode, and
+ make sure to preserve stdout line buffering. */
+ freopen (NULL, "w", stdout);
+ sh_setlinebuf (stdout);
+#endif /* __CYGWIN__ */
+ }
+}
diff --git a/jobs.c b/jobs.c
index 2452779c..49820190 100644
--- a/jobs.c
+++ b/jobs.c
@@ -4374,7 +4374,7 @@ without_job_control ()
void
end_job_control ()
{
- if (interactive_shell) /* XXX - should it be interactive? */
+ if (interactive_shell || job_control) /* XXX - should it be just job_control? */
{
terminate_stopped_jobs ();
diff --git a/jobs.c~ b/jobs.c~
new file mode 100644
index 00000000..cca86bb1
--- /dev/null
+++ b/jobs.c~
@@ -0,0 +1,4476 @@
+/* jobs.c - functions that make children, remember them, and handle their termination. */
+
+/* This file works with both POSIX and BSD systems. It implements job
+ control. */
+
+/* Copyright (C) 1989-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 <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#include "bashtypes.h"
+#include "trap.h"
+#include <stdio.h>
+#include <signal.h>
+#include <errno.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include "posixtime.h"
+
+#if defined (HAVE_SYS_RESOURCE_H) && defined (HAVE_WAIT3) && !defined (_POSIX_VERSION) && !defined (RLIMTYPE)
+# include <sys/resource.h>
+#endif /* !_POSIX_VERSION && HAVE_SYS_RESOURCE_H && HAVE_WAIT3 && !RLIMTYPE */
+
+#if defined (HAVE_SYS_FILE_H)
+# include <sys/file.h>
+#endif
+
+#include "filecntl.h"
+#include <sys/ioctl.h>
+#if defined (HAVE_SYS_PARAM_H)
+#include <sys/param.h>
+#endif
+
+#if defined (BUFFERED_INPUT)
+# include "input.h"
+#endif
+
+/* Need to include this up here for *_TTY_DRIVER definitions. */
+#include "shtty.h"
+
+/* Define this if your output is getting swallowed. It's a no-op on
+ machines with the termio or termios tty drivers. */
+/* #define DRAIN_OUTPUT */
+
+/* For the TIOCGPGRP and TIOCSPGRP ioctl parameters on HP-UX */
+#if defined (hpux) && !defined (TERMIOS_TTY_DRIVER)
+# include <bsdtty.h>
+#endif /* hpux && !TERMIOS_TTY_DRIVER */
+
+#include "bashansi.h"
+#include "bashintl.h"
+#include "shell.h"
+#include "jobs.h"
+#include "execute_cmd.h"
+#include "flags.h"
+
+#include "builtins/builtext.h"
+#include "builtins/common.h"
+
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+#if !defined (HAVE_KILLPG)
+extern int killpg __P((pid_t, int));
+#endif
+
+#if !DEFAULT_CHILD_MAX
+# define DEFAULT_CHILD_MAX 32
+#endif
+
+#if !MAX_CHILD_MAX
+# define MAX_CHILD_MAX 8192
+#endif
+
+#if !defined (DEBUG)
+#define MAX_JOBS_IN_ARRAY 4096 /* production */
+#else
+#define MAX_JOBS_IN_ARRAY 128 /* testing */
+#endif
+
+/* Flag values for second argument to delete_job */
+#define DEL_WARNSTOPPED 1 /* warn about deleting stopped jobs */
+#define DEL_NOBGPID 2 /* don't add pgrp leader to bgpids */
+
+/* Take care of system dependencies that must be handled when waiting for
+ children. The arguments to the WAITPID macro match those to the Posix.1
+ waitpid() function. */
+
+#if defined (ultrix) && defined (mips) && defined (_POSIX_VERSION)
+# define WAITPID(pid, statusp, options) \
+ wait3 ((union wait *)statusp, options, (struct rusage *)0)
+#else
+# if defined (_POSIX_VERSION) || defined (HAVE_WAITPID)
+# define WAITPID(pid, statusp, options) \
+ waitpid ((pid_t)pid, statusp, options)
+# else
+# if defined (HAVE_WAIT3)
+# define WAITPID(pid, statusp, options) \
+ wait3 (statusp, options, (struct rusage *)0)
+# else
+# define WAITPID(pid, statusp, options) \
+ wait3 (statusp, options, (int *)0)
+# endif /* HAVE_WAIT3 */
+# endif /* !_POSIX_VERSION && !HAVE_WAITPID*/
+#endif /* !(Ultrix && mips && _POSIX_VERSION) */
+
+/* getpgrp () varies between systems. Even systems that claim to be
+ Posix.1 compatible lie sometimes (Ultrix, SunOS4, apollo). */
+#if defined (GETPGRP_VOID)
+# define getpgid(p) getpgrp ()
+#else
+# define getpgid(p) getpgrp (p)
+#endif /* !GETPGRP_VOID */
+
+/* If the system needs it, REINSTALL_SIGCHLD_HANDLER will reinstall the
+ handler for SIGCHLD. */
+#if defined (MUST_REINSTALL_SIGHANDLERS)
+# define REINSTALL_SIGCHLD_HANDLER signal (SIGCHLD, sigchld_handler)
+#else
+# define REINSTALL_SIGCHLD_HANDLER
+#endif /* !MUST_REINSTALL_SIGHANDLERS */
+
+/* Some systems let waitpid(2) tell callers about stopped children. */
+#if !defined (WCONTINUED) || defined (WCONTINUED_BROKEN)
+# undef WCONTINUED
+# define WCONTINUED 0
+#endif
+#if !defined (WIFCONTINUED)
+# define WIFCONTINUED(s) (0)
+#endif
+
+/* The number of additional slots to allocate when we run out. */
+#define JOB_SLOTS 8
+
+typedef int sh_job_map_func_t __P((JOB *, int, int, int));
+
+/* Variables used here but defined in other files. */
+extern int subshell_environment, line_number;
+extern int posixly_correct, shell_level;
+extern int last_command_exit_value, last_command_exit_signal;
+extern int loop_level, breaking;
+extern int executing_list;
+extern int sourcelevel;
+extern int running_trap;
+extern sh_builtin_func_t *this_shell_builtin;
+extern char *shell_name, *this_command_name;
+extern sigset_t top_level_mask;
+extern procenv_t wait_intr_buf;
+extern int wait_signal_received;
+extern WORD_LIST *subst_assign_varlist;
+
+static struct jobstats zerojs = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 };
+struct jobstats js = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 };
+
+struct bgpids bgpids = { 0, 0, 0 };
+
+/* The array of known jobs. */
+JOB **jobs = (JOB **)NULL;
+
+#if 0
+/* The number of slots currently allocated to JOBS. */
+int job_slots = 0;
+#endif
+
+/* The controlling tty for this shell. */
+int shell_tty = -1;
+
+/* The shell's process group. */
+pid_t shell_pgrp = NO_PID;
+
+/* The terminal's process group. */
+pid_t terminal_pgrp = NO_PID;
+
+/* The process group of the shell's parent. */
+pid_t original_pgrp = NO_PID;
+
+/* The process group of the pipeline currently being made. */
+pid_t pipeline_pgrp = (pid_t)0;
+
+#if defined (PGRP_PIPE)
+/* Pipes which each shell uses to communicate with the process group leader
+ until all of the processes in a pipeline have been started. Then the
+ process leader is allowed to continue. */
+int pgrp_pipe[2] = { -1, -1 };
+#endif
+
+#if 0
+/* The job which is current; i.e. the one that `%+' stands for. */
+int current_job = NO_JOB;
+
+/* The previous job; i.e. the one that `%-' stands for. */
+int previous_job = NO_JOB;
+#endif
+
+/* Last child made by the shell. */
+volatile pid_t last_made_pid = NO_PID;
+
+/* Pid of the last asynchronous child. */
+volatile pid_t last_asynchronous_pid = NO_PID;
+
+/* The pipeline currently being built. */
+PROCESS *the_pipeline = (PROCESS *)NULL;
+
+/* If this is non-zero, do job control. */
+int job_control = 1;
+
+/* Call this when you start making children. */
+int already_making_children = 0;
+
+/* If this is non-zero, $LINES and $COLUMNS are reset after every process
+ exits from get_tty_state(). */
+int check_window_size = CHECKWINSIZE_DEFAULT;
+
+/* Functions local to this file. */
+
+static sighandler wait_sigint_handler __P((int));
+static sighandler sigchld_handler __P((int));
+static sighandler sigcont_sighandler __P((int));
+static sighandler sigstop_sighandler __P((int));
+
+static int waitchld __P((pid_t, int));
+
+static PROCESS *find_pipeline __P((pid_t, int, int *));
+static PROCESS *find_process __P((pid_t, int, int *));
+
+static char *current_working_directory __P((void));
+static char *job_working_directory __P((void));
+static char *j_strsignal __P((int));
+static char *printable_job_status __P((int, PROCESS *, int));
+
+static PROCESS *find_last_proc __P((int, int));
+static pid_t find_last_pid __P((int, int));
+
+static int set_new_line_discipline __P((int));
+static int map_over_jobs __P((sh_job_map_func_t *, int, int));
+static int job_last_stopped __P((int));
+static int job_last_running __P((int));
+static int most_recent_job_in_state __P((int, JOB_STATE));
+static int find_job __P((pid_t, int, PROCESS **));
+static int print_job __P((JOB *, int, int, int));
+static int process_exit_status __P((WAIT));
+static int process_exit_signal __P((WAIT));
+static int set_job_status_and_cleanup __P((int));
+
+static WAIT job_signal_status __P((int));
+static WAIT raw_job_exit_status __P((int));
+
+static void notify_of_job_status __P((void));
+static void reset_job_indices __P((void));
+static void cleanup_dead_jobs __P((void));
+static int processes_in_job __P((int));
+static void realloc_jobs_list __P((void));
+static int compact_jobs_list __P((int));
+static int discard_pipeline __P((PROCESS *));
+static void add_process __P((char *, pid_t));
+static void print_pipeline __P((PROCESS *, int, int, FILE *));
+static void pretty_print_job __P((int, int, FILE *));
+static void set_current_job __P((int));
+static void reset_current __P((void));
+static void set_job_running __P((int));
+static void setjstatus __P((int));
+static int maybe_give_terminal_to __P((pid_t, pid_t, int));
+static void mark_all_jobs_as_dead __P((void));
+static void mark_dead_jobs_as_notified __P((int));
+static void restore_sigint_handler __P((void));
+#if defined (PGRP_PIPE)
+static void pipe_read __P((int *));
+#endif
+
+static struct pidstat *bgp_alloc __P((pid_t, int));
+static struct pidstat *bgp_add __P((pid_t, int));
+static int bgp_delete __P((pid_t));
+static void bgp_clear __P((void));
+static int bgp_search __P((pid_t));
+static void bgp_prune __P((void));
+
+#if defined (ARRAY_VARS)
+static int *pstatuses; /* list of pipeline statuses */
+static int statsize;
+#endif
+
+/* Used to synchronize between wait_for and other functions and the SIGCHLD
+ signal handler. */
+static int sigchld;
+static int queue_sigchld;
+
+#define QUEUE_SIGCHLD(os) (os) = sigchld, queue_sigchld++
+
+#define UNQUEUE_SIGCHLD(os) \
+ do { \
+ queue_sigchld--; \
+ if (queue_sigchld == 0 && os != sigchld) \
+ waitchld (-1, 0); \
+ } while (0)
+
+static SigHandler *old_tstp, *old_ttou, *old_ttin;
+static SigHandler *old_cont = (SigHandler *)SIG_DFL;
+
+/* A place to temporarily save the current pipeline. */
+static PROCESS *saved_pipeline;
+static int saved_already_making_children;
+
+/* Set this to non-zero whenever you don't want the jobs list to change at
+ all: no jobs deleted and no status change notifications. This is used,
+ for example, when executing SIGCHLD traps, which may run arbitrary
+ commands. */
+static int jobs_list_frozen;
+
+static char retcode_name_buffer[64];
+
+#if !defined (_POSIX_VERSION)
+
+/* These are definitions to map POSIX 1003.1 functions onto existing BSD
+ library functions and system calls. */
+#define setpgid(pid, pgrp) setpgrp (pid, pgrp)
+#define tcsetpgrp(fd, pgrp) ioctl ((fd), TIOCSPGRP, &(pgrp))
+
+pid_t
+tcgetpgrp (fd)
+ int fd;
+{
+ pid_t pgrp;
+
+ /* ioctl will handle setting errno correctly. */
+ if (ioctl (fd, TIOCGPGRP, &pgrp) < 0)
+ return (-1);
+ return (pgrp);
+}
+
+#endif /* !_POSIX_VERSION */
+
+/* Initialize the global job stats structure and other bookkeeping variables */
+void
+init_job_stats ()
+{
+ js = zerojs;
+}
+
+/* Return the working directory for the current process. Unlike
+ job_working_directory, this does not call malloc (), nor do any
+ of the functions it calls. This is so that it can safely be called
+ from a signal handler. */
+static char *
+current_working_directory ()
+{
+ char *dir;
+ static char d[PATH_MAX];
+
+ dir = get_string_value ("PWD");
+
+ if (dir == 0 && the_current_working_directory && no_symbolic_links)
+ dir = the_current_working_directory;
+
+ if (dir == 0)
+ {
+ dir = getcwd (d, sizeof(d));
+ if (dir)
+ dir = d;
+ }
+
+ return (dir == 0) ? "<unknown>" : dir;
+}
+
+/* Return the working directory for the current process. */
+static char *
+job_working_directory ()
+{
+ char *dir;
+
+ dir = get_string_value ("PWD");
+ if (dir)
+ return (savestring (dir));
+
+ dir = get_working_directory ("job-working-directory");
+ if (dir)
+ return (dir);
+
+ return (savestring ("<unknown>"));
+}
+
+void
+making_children ()
+{
+ if (already_making_children)
+ return;
+
+ already_making_children = 1;
+ start_pipeline ();
+}
+
+void
+stop_making_children ()
+{
+ already_making_children = 0;
+}
+
+void
+cleanup_the_pipeline ()
+{
+ PROCESS *disposer;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+ disposer = the_pipeline;
+ the_pipeline = (PROCESS *)NULL;
+ UNBLOCK_CHILD (oset);
+
+ if (disposer)
+ discard_pipeline (disposer);
+}
+
+void
+save_pipeline (clear)
+ int clear;
+{
+ saved_pipeline = the_pipeline;
+ if (clear)
+ the_pipeline = (PROCESS *)NULL;
+ saved_already_making_children = already_making_children;
+}
+
+void
+restore_pipeline (discard)
+ int discard;
+{
+ PROCESS *old_pipeline;
+
+ old_pipeline = the_pipeline;
+ the_pipeline = saved_pipeline;
+ already_making_children = saved_already_making_children;
+ if (discard && old_pipeline)
+ discard_pipeline (old_pipeline);
+}
+
+/* Start building a pipeline. */
+void
+start_pipeline ()
+{
+ if (the_pipeline)
+ {
+ cleanup_the_pipeline ();
+ pipeline_pgrp = 0;
+#if defined (PGRP_PIPE)
+ sh_closepipe (pgrp_pipe);
+#endif
+ }
+
+#if defined (PGRP_PIPE)
+ if (job_control)
+ {
+ if (pipe (pgrp_pipe) == -1)
+ sys_error (_("start_pipeline: pgrp pipe"));
+ }
+#endif
+}
+
+/* Stop building a pipeline. Install the process list in the job array.
+ This returns the index of the newly installed job.
+ DEFERRED is a command structure to be executed upon satisfactory
+ execution exit of this pipeline. */
+int
+stop_pipeline (async, deferred)
+ int async;
+ COMMAND *deferred;
+{
+ register int i, j;
+ JOB *newjob;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+
+#if defined (PGRP_PIPE)
+ /* The parent closes the process group synchronization pipe. */
+ sh_closepipe (pgrp_pipe);
+#endif
+
+ cleanup_dead_jobs ();
+
+ if (js.j_jobslots == 0)
+ {
+ js.j_jobslots = JOB_SLOTS;
+ jobs = (JOB **)xmalloc (js.j_jobslots * sizeof (JOB *));
+
+ /* Now blank out these new entries. */
+ for (i = 0; i < js.j_jobslots; i++)
+ jobs[i] = (JOB *)NULL;
+
+ js.j_firstj = js.j_lastj = js.j_njobs = 0;
+ }
+
+ /* Scan from the last slot backward, looking for the next free one. */
+ /* XXX - revisit this interactive assumption */
+ /* XXX - this way for now */
+ if (interactive)
+ {
+ for (i = js.j_jobslots; i; i--)
+ if (jobs[i - 1])
+ break;
+ }
+ else
+ {
+#if 0
+ /* This wraps around, but makes it inconvenient to extend the array */
+ for (i = js.j_lastj+1; i != js.j_lastj; i++)
+ {
+ if (i >= js.j_jobslots)
+ i = 0;
+ if (jobs[i] == 0)
+ break;
+ }
+ if (i == js.j_lastj)
+ i = js.j_jobslots;
+#else
+ /* This doesn't wrap around yet. */
+ for (i = js.j_lastj ? js.j_lastj + 1 : js.j_lastj; i < js.j_jobslots; i++)
+ if (jobs[i] == 0)
+ break;
+#endif
+ }
+
+ /* Do we need more room? */
+
+ /* First try compaction */
+ if ((interactive_shell == 0 || subshell_environment) && i == js.j_jobslots && js.j_jobslots >= MAX_JOBS_IN_ARRAY)
+ i = compact_jobs_list (0);
+
+ /* If we can't compact, reallocate */
+ if (i == js.j_jobslots)
+ {
+ js.j_jobslots += JOB_SLOTS;
+ jobs = (JOB **)xrealloc (jobs, (js.j_jobslots * sizeof (JOB *)));
+
+ for (j = i; j < js.j_jobslots; j++)
+ jobs[j] = (JOB *)NULL;
+ }
+
+ /* Add the current pipeline to the job list. */
+ if (the_pipeline)
+ {
+ register PROCESS *p;
+ int any_running, any_stopped, n;
+
+ newjob = (JOB *)xmalloc (sizeof (JOB));
+
+ for (n = 1, p = the_pipeline; p->next != the_pipeline; n++, p = p->next)
+ ;
+ p->next = (PROCESS *)NULL;
+ newjob->pipe = REVERSE_LIST (the_pipeline, PROCESS *);
+ for (p = newjob->pipe; p->next; p = p->next)
+ ;
+ p->next = newjob->pipe;
+
+ the_pipeline = (PROCESS *)NULL;
+ newjob->pgrp = pipeline_pgrp;
+ pipeline_pgrp = 0;
+
+ newjob->flags = 0;
+
+ /* Flag to see if in another pgrp. */
+ if (job_control)
+ newjob->flags |= J_JOBCONTROL;
+
+ /* Set the state of this pipeline. */
+ p = newjob->pipe;
+ any_running = any_stopped = 0;
+ do
+ {
+ any_running |= PRUNNING (p);
+ any_stopped |= PSTOPPED (p);
+ p = p->next;
+ }
+ while (p != newjob->pipe);
+
+ newjob->state = any_running ? JRUNNING : (any_stopped ? JSTOPPED : JDEAD);
+ newjob->wd = job_working_directory ();
+ newjob->deferred = deferred;
+
+ newjob->j_cleanup = (sh_vptrfunc_t *)NULL;
+ newjob->cleanarg = (PTR_T) NULL;
+
+ jobs[i] = newjob;
+ if (newjob->state == JDEAD && (newjob->flags & J_FOREGROUND))
+ setjstatus (i);
+ if (newjob->state == JDEAD)
+ {
+ js.c_reaped += n; /* wouldn't have been done since this was not part of a job */
+ js.j_ndead++;
+ }
+ js.c_injobs += n;
+
+ js.j_lastj = i;
+ js.j_njobs++;
+ }
+ else
+ newjob = (JOB *)NULL;
+
+ if (newjob)
+ js.j_lastmade = newjob;
+
+ if (async)
+ {
+ if (newjob)
+ {
+ newjob->flags &= ~J_FOREGROUND;
+ newjob->flags |= J_ASYNC;
+ js.j_lastasync = newjob;
+ }
+ reset_current ();
+ }
+ else
+ {
+ if (newjob)
+ {
+ newjob->flags |= J_FOREGROUND;
+ /*
+ * !!!!! NOTE !!!!! (chet@ins.cwru.edu)
+ *
+ * The currently-accepted job control wisdom says to set the
+ * terminal's process group n+1 times in an n-step pipeline:
+ * once in the parent and once in each child. This is where
+ * the parent gives it away.
+ *
+ * Don't give the terminal away if this shell is an asynchronous
+ * subshell.
+ *
+ */
+ if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
+ maybe_give_terminal_to (shell_pgrp, newjob->pgrp, 0);
+ }
+ }
+
+ stop_making_children ();
+ UNBLOCK_CHILD (oset);
+ return (newjob ? i : js.j_current);
+}
+
+/* Functions to manage the list of exited background pids whose status has
+ been saved. */
+
+static struct pidstat *
+bgp_alloc (pid, status)
+ pid_t pid;
+ int status;
+{
+ struct pidstat *ps;
+
+ ps = (struct pidstat *)xmalloc (sizeof (struct pidstat));
+ ps->pid = pid;
+ ps->status = status;
+ ps->next = (struct pidstat *)0;
+ return ps;
+}
+
+static struct pidstat *
+bgp_add (pid, status)
+ pid_t pid;
+ int status;
+{
+ struct pidstat *ps;
+
+ ps = bgp_alloc (pid, status);
+
+ if (bgpids.list == 0)
+ {
+ bgpids.list = bgpids.end = ps;
+ bgpids.npid = 0; /* just to make sure */
+ }
+ else
+ {
+ bgpids.end->next = ps;
+ bgpids.end = ps;
+ }
+ bgpids.npid++;
+
+ if (bgpids.npid > js.c_childmax)
+ bgp_prune ();
+
+ return ps;
+}
+
+static int
+bgp_delete (pid)
+ pid_t pid;
+{
+ struct pidstat *prev, *p;
+
+ for (prev = p = bgpids.list; p; prev = p, p = p->next)
+ if (p->pid == pid)
+ {
+ prev->next = p->next; /* remove from list */
+ break;
+ }
+
+ if (p == 0)
+ return 0; /* not found */
+
+#if defined (DEBUG)
+ itrace("bgp_delete: deleting %d", pid);
+#endif
+
+ /* Housekeeping in the border cases. */
+ if (p == bgpids.list)
+ bgpids.list = bgpids.list->next;
+ else if (p == bgpids.end)
+ bgpids.end = prev;
+
+ bgpids.npid--;
+ if (bgpids.npid == 0)
+ bgpids.list = bgpids.end = 0;
+ else if (bgpids.npid == 1)
+ bgpids.end = bgpids.list; /* just to make sure */
+
+ free (p);
+ return 1;
+}
+
+/* Clear out the list of saved statuses */
+static void
+bgp_clear ()
+{
+ struct pidstat *ps, *p;
+
+ for (ps = bgpids.list; ps; )
+ {
+ p = ps;
+ ps = ps->next;
+ free (p);
+ }
+ bgpids.list = bgpids.end = 0;
+ bgpids.npid = 0;
+}
+
+/* Search for PID in the list of saved background pids; return its status if
+ found. If not found, return -1. */
+static int
+bgp_search (pid)
+ pid_t pid;
+{
+ struct pidstat *ps;
+
+ for (ps = bgpids.list ; ps; ps = ps->next)
+ if (ps->pid == pid)
+ return ps->status;
+ return -1;
+}
+
+static void
+bgp_prune ()
+{
+ struct pidstat *ps;
+
+ while (bgpids.npid > js.c_childmax)
+ {
+ ps = bgpids.list;
+ bgpids.list = bgpids.list->next;
+ free (ps);
+ bgpids.npid--;
+ }
+}
+
+/* Reset the values of js.j_lastj and js.j_firstj after one or both have
+ been deleted. The caller should check whether js.j_njobs is 0 before
+ calling this. This wraps around, but the rest of the code does not. At
+ this point, it should not matter. */
+static void
+reset_job_indices ()
+{
+ int old;
+
+ if (jobs[js.j_firstj] == 0)
+ {
+ old = js.j_firstj++;
+ if (old >= js.j_jobslots)
+ old = js.j_jobslots - 1;
+ while (js.j_firstj != old)
+ {
+ if (js.j_firstj >= js.j_jobslots)
+ js.j_firstj = 0;
+ if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */
+ break;
+ js.j_firstj++;
+ }
+ if (js.j_firstj == old)
+ js.j_firstj = js.j_lastj = js.j_njobs = 0;
+ }
+ if (jobs[js.j_lastj] == 0)
+ {
+ old = js.j_lastj--;
+ if (old < 0)
+ old = 0;
+ while (js.j_lastj != old)
+ {
+ if (js.j_lastj < 0)
+ js.j_lastj = js.j_jobslots - 1;
+ if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */
+ break;
+ js.j_lastj--;
+ }
+ if (js.j_lastj == old)
+ js.j_firstj = js.j_lastj = js.j_njobs = 0;
+ }
+}
+
+/* Delete all DEAD jobs that the user had received notification about. */
+static void
+cleanup_dead_jobs ()
+{
+ register int i;
+ int os;
+
+ if (js.j_jobslots == 0 || jobs_list_frozen)
+ return;
+
+ QUEUE_SIGCHLD(os);
+
+ /* XXX could use js.j_firstj and js.j_lastj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+
+ if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i))
+ delete_job (i, 0);
+ }
+
+#if defined (COPROCESS_SUPPORT)
+ coproc_reap ();
+#endif
+
+ UNQUEUE_SIGCHLD(os);
+}
+
+static int
+processes_in_job (job)
+ int job;
+{
+ int nproc;
+ register PROCESS *p;
+
+ nproc = 0;
+ p = jobs[job]->pipe;
+ do
+ {
+ p = p->next;
+ nproc++;
+ }
+ while (p != jobs[job]->pipe);
+
+ return nproc;
+}
+
+static void
+delete_old_job (pid)
+ pid_t pid;
+{
+ PROCESS *p;
+ int job;
+
+ job = find_job (pid, 0, &p);
+ if (job != NO_JOB)
+ {
+#ifdef DEBUG
+ itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state);
+#endif
+ if (JOBSTATE (job) == JDEAD)
+ delete_job (job, DEL_NOBGPID);
+ else
+ {
+#ifdef DEBUG
+ internal_warning (_("forked pid %d appears in running job %d"), pid, job+1);
+#endif
+ if (p)
+ p->pid = 0;
+ }
+ }
+}
+
+/* Reallocate and compress the jobs list. This returns with a jobs array
+ whose size is a multiple of JOB_SLOTS and can hold the current number of
+ jobs. Heuristics are used to minimize the number of new reallocs. */
+static void
+realloc_jobs_list ()
+{
+ sigset_t set, oset;
+ int nsize, i, j, ncur, nprev;
+ JOB **nlist;
+
+ ncur = nprev = NO_JOB;
+ nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
+ nsize *= JOB_SLOTS;
+ i = js.j_njobs % JOB_SLOTS;
+ if (i == 0 || i > (JOB_SLOTS >> 1))
+ nsize += JOB_SLOTS;
+
+ BLOCK_CHILD (set, oset);
+ nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *));
+
+ js.c_reaped = js.j_ndead = 0;
+ for (i = j = 0; i < js.j_jobslots; i++)
+ if (jobs[i])
+ {
+ if (i == js.j_current)
+ ncur = j;
+ if (i == js.j_previous)
+ nprev = j;
+ nlist[j++] = jobs[i];
+ if (jobs[i]->state == JDEAD)
+ {
+ js.j_ndead++;
+ js.c_reaped += processes_in_job (i);
+ }
+ }
+
+#if 0
+ itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize);
+ itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0);
+ itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, j);
+ itrace ("realloc_jobs_list: js.j_ndead %d js.c_reaped %d", js.j_ndead, js.c_reaped);
+#endif
+
+ js.j_firstj = 0;
+ js.j_lastj = (j > 0) ? j - 1 : 0;
+ js.j_njobs = j;
+ js.j_jobslots = nsize;
+
+ /* Zero out remaining slots in new jobs list */
+ for ( ; j < nsize; j++)
+ nlist[j] = (JOB *)NULL;
+
+ if (jobs != nlist)
+ {
+ free (jobs);
+ jobs = nlist;
+ }
+
+ if (ncur != NO_JOB)
+ js.j_current = ncur;
+ if (nprev != NO_JOB)
+ js.j_previous = nprev;
+
+ /* Need to reset these */
+ if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj)
+ reset_current ();
+
+#if 0
+ itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous);
+#endif
+
+ UNBLOCK_CHILD (oset);
+}
+
+/* Compact the jobs list by removing dead jobs. Assume that we have filled
+ the jobs array to some predefined maximum. Called when the shell is not
+ the foreground process (subshell_environment != 0). Returns the first
+ available slot in the compacted list. If that value is js.j_jobslots, then
+ the list needs to be reallocated. The jobs array may be in new memory if
+ this returns > 0 and < js.j_jobslots. FLAGS is reserved for future use. */
+static int
+compact_jobs_list (flags)
+ int flags;
+{
+ if (js.j_jobslots == 0 || jobs_list_frozen)
+ return js.j_jobslots;
+
+ reap_dead_jobs ();
+ realloc_jobs_list ();
+
+#if 0
+ itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
+#endif
+
+ return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
+}
+
+/* Delete the job at INDEX from the job list. Must be called
+ with SIGCHLD blocked. */
+void
+delete_job (job_index, dflags)
+ int job_index, dflags;
+{
+ register JOB *temp;
+ PROCESS *proc;
+ int ndel;
+
+ if (js.j_jobslots == 0 || jobs_list_frozen)
+ return;
+
+ if ((dflags & DEL_WARNSTOPPED) && subshell_environment == 0 && STOPPED (job_index))
+ internal_warning (_("deleting stopped job %d with process group %ld"), job_index+1, (long)jobs[job_index]->pgrp);
+ temp = jobs[job_index];
+ if (temp == 0)
+ return;
+
+ if ((dflags & DEL_NOBGPID) == 0)
+ {
+ proc = find_last_proc (job_index, 0);
+ /* Could do this just for J_ASYNC jobs, but we save all. */
+ if (proc)
+ bgp_add (proc->pid, process_exit_status (proc->status));
+ }
+
+ jobs[job_index] = (JOB *)NULL;
+ if (temp == js.j_lastmade)
+ js.j_lastmade = 0;
+ else if (temp == js.j_lastasync)
+ js.j_lastasync = 0;
+
+ free (temp->wd);
+ ndel = discard_pipeline (temp->pipe);
+
+ js.c_injobs -= ndel;
+ if (temp->state == JDEAD)
+ {
+ js.c_reaped -= ndel;
+ js.j_ndead--;
+ if (js.c_reaped < 0)
+ {
+#ifdef DEBUG
+ itrace("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead);
+#endif
+ js.c_reaped = 0;
+ }
+ }
+
+ if (temp->deferred)
+ dispose_command (temp->deferred);
+
+ free (temp);
+
+ js.j_njobs--;
+ if (js.j_njobs == 0)
+ js.j_firstj = js.j_lastj = 0;
+ else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0)
+ reset_job_indices ();
+
+ if (job_index == js.j_current || job_index == js.j_previous)
+ reset_current ();
+}
+
+/* Must be called with SIGCHLD blocked. */
+void
+nohup_job (job_index)
+ int job_index;
+{
+ register JOB *temp;
+
+ if (js.j_jobslots == 0)
+ return;
+
+ if (temp = jobs[job_index])
+ temp->flags |= J_NOHUP;
+}
+
+/* Get rid of the data structure associated with a process chain. */
+static int
+discard_pipeline (chain)
+ register PROCESS *chain;
+{
+ register PROCESS *this, *next;
+ int n;
+
+ this = chain;
+ n = 0;
+ do
+ {
+ next = this->next;
+ FREE (this->command);
+ free (this);
+ n++;
+ this = next;
+ }
+ while (this != chain);
+
+ return n;
+}
+
+/* Add this process to the chain being built in the_pipeline.
+ NAME is the command string that will be exec'ed later.
+ PID is the process id of the child. */
+static void
+add_process (name, pid)
+ char *name;
+ pid_t pid;
+{
+ PROCESS *t, *p;
+
+#if defined (RECYCLES_PIDS)
+ int j;
+ p = find_process (pid, 0, &j);
+ if (p)
+ {
+# ifdef DEBUG
+ if (j == NO_JOB)
+ internal_warning (_("add_process: process %5ld (%s) in the_pipeline"), (long)p->pid, p->command);
+# endif
+ if (PALIVE (p))
+ internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command);
+ p->running = PS_RECYCLED; /* mark as recycled */
+ }
+#endif
+
+ t = (PROCESS *)xmalloc (sizeof (PROCESS));
+ t->next = the_pipeline;
+ t->pid = pid;
+ WSTATUS (t->status) = 0;
+ t->running = PS_RUNNING;
+ t->command = name;
+ the_pipeline = t;
+
+ if (t->next == 0)
+ t->next = t;
+ else
+ {
+ p = t->next;
+ while (p->next != t->next)
+ p = p->next;
+ p->next = t;
+ }
+}
+
+/* Create a (dummy) PROCESS with NAME, PID, and STATUS, and make it the last
+ process in jobs[JID]->pipe. Used by the lastpipe code. */
+void
+append_process (name, pid, status, jid)
+ char *name;
+ pid_t pid;
+ int status;
+ int jid;
+{
+ PROCESS *t, *p;
+
+ t = (PROCESS *)xmalloc (sizeof (PROCESS));
+ t->next = (PROCESS *)NULL;
+ t->pid = pid;
+ /* set process exit status using offset discovered by configure */
+ t->status = (status & 0xff) << WEXITSTATUS_OFFSET;
+ t->running = PS_DONE;
+ t->command = name;
+
+ js.c_reaped++; /* XXX */
+
+ for (p = jobs[jid]->pipe; p->next != jobs[jid]->pipe; p = p->next)
+ ;
+ p->next = t;
+ t->next = jobs[jid]->pipe;
+}
+
+#if 0
+/* Take the last job and make it the first job. Must be called with
+ SIGCHLD blocked. */
+int
+rotate_the_pipeline ()
+{
+ PROCESS *p;
+
+ if (the_pipeline->next == the_pipeline)
+ return;
+ for (p = the_pipeline; p->next != the_pipeline; p = p->next)
+ ;
+ the_pipeline = p;
+}
+
+/* Reverse the order of the processes in the_pipeline. Must be called with
+ SIGCHLD blocked. */
+int
+reverse_the_pipeline ()
+{
+ PROCESS *p, *n;
+
+ if (the_pipeline->next == the_pipeline)
+ return;
+
+ for (p = the_pipeline; p->next != the_pipeline; p = p->next)
+ ;
+ p->next = (PROCESS *)NULL;
+
+ n = REVERSE_LIST (the_pipeline, PROCESS *);
+
+ the_pipeline = n;
+ for (p = the_pipeline; p->next; p = p->next)
+ ;
+ p->next = the_pipeline;
+}
+#endif
+
+/* Map FUNC over the list of jobs. If FUNC returns non-zero,
+ then it is time to stop mapping, and that is the return value
+ for map_over_jobs. FUNC is called with a JOB, arg1, arg2,
+ and INDEX. */
+static int
+map_over_jobs (func, arg1, arg2)
+ sh_job_map_func_t *func;
+ int arg1, arg2;
+{
+ register int i;
+ int result;
+ sigset_t set, oset;
+
+ if (js.j_jobslots == 0)
+ return 0;
+
+ BLOCK_CHILD (set, oset);
+
+ /* XXX could use js.j_firstj here */
+ for (i = result = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ if (jobs[i])
+ {
+ result = (*func)(jobs[i], arg1, arg2, i);
+ if (result)
+ break;
+ }
+ }
+
+ UNBLOCK_CHILD (oset);
+
+ return (result);
+}
+
+/* Cause all the jobs in the current pipeline to exit. */
+void
+terminate_current_pipeline ()
+{
+ if (pipeline_pgrp && pipeline_pgrp != shell_pgrp)
+ {
+ killpg (pipeline_pgrp, SIGTERM);
+ killpg (pipeline_pgrp, SIGCONT);
+ }
+}
+
+/* Cause all stopped jobs to exit. */
+void
+terminate_stopped_jobs ()
+{
+ register int i;
+
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+ if (jobs[i] && STOPPED (i))
+ {
+ killpg (jobs[i]->pgrp, SIGTERM);
+ killpg (jobs[i]->pgrp, SIGCONT);
+ }
+ }
+}
+
+/* Cause all jobs, running or stopped, to receive a hangup signal. If
+ a job is marked J_NOHUP, don't send the SIGHUP. */
+void
+hangup_all_jobs ()
+{
+ register int i;
+
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+ if (jobs[i])
+ {
+ if (jobs[i]->flags & J_NOHUP)
+ continue;
+ killpg (jobs[i]->pgrp, SIGHUP);
+ if (STOPPED (i))
+ killpg (jobs[i]->pgrp, SIGCONT);
+ }
+ }
+}
+
+void
+kill_current_pipeline ()
+{
+ stop_making_children ();
+ start_pipeline ();
+}
+
+/* Return the pipeline that PID belongs to. Note that the pipeline
+ doesn't have to belong to a job. Must be called with SIGCHLD blocked.
+ If JOBP is non-null, return the index of the job containing PID. */
+static PROCESS *
+find_pipeline (pid, alive_only, jobp)
+ pid_t pid;
+ int alive_only;
+ int *jobp; /* index into jobs list or NO_JOB */
+{
+ int job;
+ PROCESS *p;
+
+ /* See if this process is in the pipeline that we are building. */
+ if (jobp)
+ *jobp = NO_JOB;
+ if (the_pipeline)
+ {
+ p = the_pipeline;
+ do
+ {
+ /* Return it if we found it. Don't ever return a recycled pid. */
+ if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p)))
+ return (p);
+
+ p = p->next;
+ }
+ while (p != the_pipeline);
+ }
+
+ job = find_job (pid, alive_only, &p);
+ if (jobp)
+ *jobp = job;
+ return (job == NO_JOB) ? (PROCESS *)NULL : jobs[job]->pipe;
+}
+
+/* Return the PROCESS * describing PID. If JOBP is non-null return the index
+ into the jobs array of the job containing PID. Must be called with
+ SIGCHLD blocked. */
+static PROCESS *
+find_process (pid, alive_only, jobp)
+ pid_t pid;
+ int alive_only;
+ int *jobp; /* index into jobs list or NO_JOB */
+{
+ PROCESS *p;
+
+ p = find_pipeline (pid, alive_only, jobp);
+ while (p && p->pid != pid)
+ p = p->next;
+ return p;
+}
+
+/* Return the job index that PID belongs to, or NO_JOB if it doesn't
+ belong to any job. Must be called with SIGCHLD blocked. */
+static int
+find_job (pid, alive_only, procp)
+ pid_t pid;
+ int alive_only;
+ PROCESS **procp;
+{
+ register int i;
+ PROCESS *p;
+
+ /* XXX could use js.j_firstj here, and should check js.j_lastj */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ if (jobs[i])
+ {
+ p = jobs[i]->pipe;
+
+ do
+ {
+ if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p)))
+ {
+ if (procp)
+ *procp = p;
+ return (i);
+ }
+
+ p = p->next;
+ }
+ while (p != jobs[i]->pipe);
+ }
+ }
+
+ return (NO_JOB);
+}
+
+/* Find a job given a PID. If BLOCK is non-zero, block SIGCHLD as
+ required by find_job. */
+int
+get_job_by_pid (pid, block)
+ pid_t pid;
+ int block;
+{
+ int job;
+ sigset_t set, oset;
+
+ if (block)
+ BLOCK_CHILD (set, oset);
+
+ job = find_job (pid, 0, NULL);
+
+ if (block)
+ UNBLOCK_CHILD (oset);
+
+ return job;
+}
+
+/* Print descriptive information about the job with leader pid PID. */
+void
+describe_pid (pid)
+ pid_t pid;
+{
+ int job;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+
+ job = find_job (pid, 0, NULL);
+
+ if (job != NO_JOB)
+ fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);
+ else
+ programming_error (_("describe_pid: %ld: no such pid"), (long)pid);
+
+ UNBLOCK_CHILD (oset);
+}
+
+static char *
+j_strsignal (s)
+ int s;
+{
+ char *x;
+
+ x = strsignal (s);
+ if (x == 0)
+ {
+ x = retcode_name_buffer;
+ sprintf (x, _("Signal %d"), s);
+ }
+ return x;
+}
+
+static char *
+printable_job_status (j, p, format)
+ int j;
+ PROCESS *p;
+ int format;
+{
+ static char *temp;
+ int es;
+
+ temp = _("Done");
+
+ if (STOPPED (j) && format == 0)
+ {
+ if (posixly_correct == 0 || p == 0 || (WIFSTOPPED (p->status) == 0))
+ temp = _("Stopped");
+ else
+ {
+ temp = retcode_name_buffer;
+ sprintf (temp, _("Stopped(%s)"), signal_name (WSTOPSIG (p->status)));
+ }
+ }
+ else if (RUNNING (j))
+ temp = _("Running");
+ else
+ {
+ if (WIFSTOPPED (p->status))
+ temp = j_strsignal (WSTOPSIG (p->status));
+ else if (WIFSIGNALED (p->status))
+ temp = j_strsignal (WTERMSIG (p->status));
+ else if (WIFEXITED (p->status))
+ {
+ temp = retcode_name_buffer;
+ es = WEXITSTATUS (p->status);
+ if (es == 0)
+ strcpy (temp, _("Done"));
+ else if (posixly_correct)
+ sprintf (temp, _("Done(%d)"), es);
+ else
+ sprintf (temp, _("Exit %d"), es);
+ }
+ else
+ temp = _("Unknown status");
+ }
+
+ return temp;
+}
+
+/* This is the way to print out information on a job if you
+ know the index. FORMAT is:
+
+ JLIST_NORMAL) [1]+ Running emacs
+ JLIST_LONG ) [1]+ 2378 Running emacs
+ -1 ) [1]+ 2378 emacs
+
+ JLIST_NORMAL) [1]+ Stopped ls | more
+ JLIST_LONG ) [1]+ 2369 Stopped ls
+ 2367 | more
+ JLIST_PID_ONLY)
+ Just list the pid of the process group leader (really
+ the process group).
+ JLIST_CHANGED_ONLY)
+ Use format JLIST_NORMAL, but list only jobs about which
+ the user has not been notified. */
+
+/* Print status for pipeline P. If JOB_INDEX is >= 0, it is the index into
+ the JOBS array corresponding to this pipeline. FORMAT is as described
+ above. Must be called with SIGCHLD blocked.
+
+ If you're printing a pipeline that's not in the jobs array, like the
+ current pipeline as it's being created, pass -1 for JOB_INDEX */
+static void
+print_pipeline (p, job_index, format, stream)
+ PROCESS *p;
+ int job_index, format;
+ FILE *stream;
+{
+ PROCESS *first, *last, *show;
+ int es, name_padding;
+ char *temp;
+
+ if (p == 0)
+ return;
+
+ first = last = p;
+ while (last->next != first)
+ last = last->next;
+
+ for (;;)
+ {
+ if (p != first)
+ fprintf (stream, format ? " " : " |");
+
+ if (format != JLIST_STANDARD)
+ fprintf (stream, "%5ld", (long)p->pid);
+
+ fprintf (stream, " ");
+
+ if (format > -1 && job_index >= 0)
+ {
+ show = format ? p : last;
+ temp = printable_job_status (job_index, show, format);
+
+ if (p != first)
+ {
+ if (format)
+ {
+ if (show->running == first->running &&
+ WSTATUS (show->status) == WSTATUS (first->status))
+ temp = "";
+ }
+ else
+ temp = (char *)NULL;
+ }
+
+ if (temp)
+ {
+ fprintf (stream, "%s", temp);
+
+ es = STRLEN (temp);
+ if (es == 0)
+ es = 2; /* strlen ("| ") */
+ name_padding = LONGEST_SIGNAL_DESC - es;
+
+ fprintf (stream, "%*s", name_padding, "");
+
+ if ((WIFSTOPPED (show->status) == 0) &&
+ (WIFCONTINUED (show->status) == 0) &&
+ WIFCORED (show->status))
+ fprintf (stream, _("(core dumped) "));
+ }
+ }
+
+ if (p != first && format)
+ fprintf (stream, "| ");
+
+ if (p->command)
+ fprintf (stream, "%s", p->command);
+
+ if (p == last && job_index >= 0)
+ {
+ temp = current_working_directory ();
+
+ if (RUNNING (job_index) && (IS_FOREGROUND (job_index) == 0))
+ fprintf (stream, " &");
+
+ if (strcmp (temp, jobs[job_index]->wd) != 0)
+ fprintf (stream,
+ _(" (wd: %s)"), polite_directory_format (jobs[job_index]->wd));
+ }
+
+ if (format || (p == last))
+ {
+ /* We need to add a CR only if this is an interactive shell, and
+ we're reporting the status of a completed job asynchronously.
+ We can't really check whether this particular job is being
+ reported asynchronously, so just add the CR if the shell is
+ currently interactive and asynchronous notification is enabled. */
+ if (asynchronous_notification && interactive)
+ fprintf (stream, "\r\n");
+ else
+ fprintf (stream, "\n");
+ }
+
+ if (p == last)
+ break;
+ p = p->next;
+ }
+ fflush (stream);
+}
+
+/* Print information to STREAM about jobs[JOB_INDEX] according to FORMAT.
+ Must be called with SIGCHLD blocked or queued with queue_sigchld */
+static void
+pretty_print_job (job_index, format, stream)
+ int job_index, format;
+ FILE *stream;
+{
+ register PROCESS *p;
+
+ /* Format only pid information about the process group leader? */
+ if (format == JLIST_PID_ONLY)
+ {
+ fprintf (stream, "%ld\n", (long)jobs[job_index]->pipe->pid);
+ return;
+ }
+
+ if (format == JLIST_CHANGED_ONLY)
+ {
+ if (IS_NOTIFIED (job_index))
+ return;
+ format = JLIST_STANDARD;
+ }
+
+ if (format != JLIST_NONINTERACTIVE)
+ fprintf (stream, "[%d]%c ", job_index + 1,
+ (job_index == js.j_current) ? '+':
+ (job_index == js.j_previous) ? '-' : ' ');
+
+ if (format == JLIST_NONINTERACTIVE)
+ format = JLIST_LONG;
+
+ p = jobs[job_index]->pipe;
+
+ print_pipeline (p, job_index, format, stream);
+
+ /* We have printed information about this job. When the job's
+ status changes, waitchld () sets the notification flag to 0. */
+ jobs[job_index]->flags |= J_NOTIFIED;
+}
+
+static int
+print_job (job, format, state, job_index)
+ JOB *job;
+ int format, state, job_index;
+{
+ if (state == -1 || (JOB_STATE)state == job->state)
+ pretty_print_job (job_index, format, stdout);
+ return (0);
+}
+
+void
+list_one_job (job, format, ignore, job_index)
+ JOB *job;
+ int format, ignore, job_index;
+{
+ pretty_print_job (job_index, format, stdout);
+}
+
+void
+list_stopped_jobs (format)
+ int format;
+{
+ cleanup_dead_jobs ();
+ map_over_jobs (print_job, format, (int)JSTOPPED);
+}
+
+void
+list_running_jobs (format)
+ int format;
+{
+ cleanup_dead_jobs ();
+ map_over_jobs (print_job, format, (int)JRUNNING);
+}
+
+/* List jobs. If FORMAT is non-zero, then the long form of the information
+ is printed, else just a short version. */
+void
+list_all_jobs (format)
+ int format;
+{
+ cleanup_dead_jobs ();
+ map_over_jobs (print_job, format, -1);
+}
+
+/* Fork, handling errors. Returns the pid of the newly made child, or 0.
+ COMMAND is just for remembering the name of the command; we don't do
+ anything else with it. ASYNC_P says what to do with the tty. If
+ non-zero, then don't give it away. */
+pid_t
+make_child (command, async_p)
+ char *command;
+ int async_p;
+{
+ int forksleep;
+ sigset_t set, oset;
+ pid_t pid;
+
+ /* XXX - block SIGTERM here and unblock in child after fork resets the
+ set of pending signals? */
+ sigemptyset (&set);
+ sigaddset (&set, SIGCHLD);
+ sigaddset (&set, SIGINT);
+ sigemptyset (&oset);
+ sigprocmask (SIG_BLOCK, &set, &oset);
+
+ making_children ();
+
+ forksleep = 1;
+
+#if defined (BUFFERED_INPUT)
+ /* If default_buffered_input is active, we are reading a script. If
+ the command is asynchronous, we have already duplicated /dev/null
+ as fd 0, but have not changed the buffered stream corresponding to
+ the old fd 0. We don't want to sync the stream in this case. */
+ if (default_buffered_input != -1 &&
+ (!async_p || default_buffered_input > 0))
+ sync_buffered_stream (default_buffered_input);
+#endif /* BUFFERED_INPUT */
+
+ RESET_SIGTERM;
+
+ /* Create the child, handle severe errors. Retry on EAGAIN. */
+ while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX)
+ {
+ /* bash-4.2 */
+ /* If we can't create any children, try to reap some dead ones. */
+ waitchld (-1, 0);
+
+ sys_error ("fork: retry");
+ RESET_SIGTERM;
+
+ if (sleep (forksleep) != 0)
+ break;
+ forksleep <<= 1;
+ }
+
+ if (pid != 0)
+ RESET_SIGTERM;
+
+ if (pid < 0)
+ {
+ sys_error ("fork");
+
+ /* Kill all of the processes in the current pipeline. */
+ terminate_current_pipeline ();
+
+ /* Discard the current pipeline, if any. */
+ if (the_pipeline)
+ kill_current_pipeline ();
+
+ last_command_exit_value = EX_NOEXEC;
+ throw_to_top_level (); /* Reset signals, etc. */
+ }
+
+ if (pid == 0)
+ {
+ /* In the child. Give this child the right process group, set the
+ signals to the default state for a new process. */
+ pid_t mypid;
+
+ mypid = getpid ();
+#if defined (BUFFERED_INPUT)
+ /* Close default_buffered_input if it's > 0. We don't close it if it's
+ 0 because that's the file descriptor used when redirecting input,
+ and it's wrong to close the file in that case. */
+ unset_bash_input (0);
+#endif /* BUFFERED_INPUT */
+
+ /* Restore top-level signal mask. */
+ sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
+
+ if (job_control)
+ {
+ /* All processes in this pipeline belong in the same
+ process group. */
+
+ if (pipeline_pgrp == 0) /* This is the first child. */
+ pipeline_pgrp = mypid;
+
+ /* Check for running command in backquotes. */
+ if (pipeline_pgrp == shell_pgrp)
+ ignore_tty_job_signals ();
+ else
+ default_tty_job_signals ();
+
+ /* Set the process group before trying to mess with the terminal's
+ process group. This is mandated by POSIX. */
+ /* This is in accordance with the Posix 1003.1 standard,
+ section B.7.2.4, which says that trying to set the terminal
+ process group with tcsetpgrp() to an unused pgrp value (like
+ this would have for the first child) is an error. Section
+ B.4.3.3, p. 237 also covers this, in the context of job control
+ shells. */
+ if (setpgid (mypid, pipeline_pgrp) < 0)
+ sys_error (_("child setpgid (%ld to %ld)"), (long)mypid, (long)pipeline_pgrp);
+
+ /* By convention (and assumption above), if
+ pipeline_pgrp == shell_pgrp, we are making a child for
+ command substitution.
+ In this case, we don't want to give the terminal to the
+ shell's process group (we could be in the middle of a
+ pipeline, for example). */
+ if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
+ give_terminal_to (pipeline_pgrp, 0);
+
+#if defined (PGRP_PIPE)
+ if (pipeline_pgrp == mypid)
+ pipe_read (pgrp_pipe);
+#endif
+ }
+ else /* Without job control... */
+ {
+ if (pipeline_pgrp == 0)
+ pipeline_pgrp = shell_pgrp;
+
+ /* If these signals are set to SIG_DFL, we encounter the curious
+ situation of an interactive ^Z to a running process *working*
+ and stopping the process, but being unable to do anything with
+ that process to change its state. On the other hand, if they
+ are set to SIG_IGN, jobs started from scripts do not stop when
+ the shell running the script gets a SIGTSTP and stops. */
+
+ default_tty_job_signals ();
+ }
+
+#if defined (PGRP_PIPE)
+ /* Release the process group pipe, since our call to setpgid ()
+ is done. The last call to sh_closepipe is done in stop_pipeline. */
+ sh_closepipe (pgrp_pipe);
+#endif /* PGRP_PIPE */
+
+#if 0
+ /* Don't set last_asynchronous_pid in the child */
+ if (async_p)
+ last_asynchronous_pid = mypid; /* XXX */
+ else
+#endif
+#if defined (RECYCLES_PIDS)
+ if (last_asynchronous_pid == mypid)
+ /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */
+ last_asynchronous_pid = 1;
+#endif
+ }
+ else
+ {
+ /* In the parent. Remember the pid of the child just created
+ as the proper pgrp if this is the first child. */
+
+ if (job_control)
+ {
+ if (pipeline_pgrp == 0)
+ {
+ pipeline_pgrp = pid;
+ /* Don't twiddle terminal pgrps in the parent! This is the bug,
+ not the good thing of twiddling them in the child! */
+ /* give_terminal_to (pipeline_pgrp, 0); */
+ }
+ /* This is done on the recommendation of the Rationale section of
+ the POSIX 1003.1 standard, where it discusses job control and
+ shells. It is done to avoid possible race conditions. (Ref.
+ 1003.1 Rationale, section B.4.3.3, page 236). */
+ setpgid (pid, pipeline_pgrp);
+ }
+ else
+ {
+ if (pipeline_pgrp == 0)
+ pipeline_pgrp = shell_pgrp;
+ }
+
+ /* Place all processes into the jobs array regardless of the
+ state of job_control. */
+ add_process (command, pid);
+
+ if (async_p)
+ last_asynchronous_pid = pid;
+#if defined (RECYCLES_PIDS)
+ else if (last_asynchronous_pid == pid)
+ /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */
+ last_asynchronous_pid = 1;
+#endif
+
+ /* Delete the saved status for any job containing this PID in case it's
+ been reused. */
+ delete_old_job (pid);
+
+ /* Perform the check for pid reuse unconditionally. Some systems reuse
+ PIDs before giving a process CHILD_MAX/_SC_CHILD_MAX unique ones. */
+ bgp_delete (pid); /* new process, discard any saved status */
+
+ last_made_pid = pid;
+
+ /* keep stats */
+ js.c_totforked++;
+ js.c_living++;
+
+ /* Unblock SIGINT and SIGCHLD unless creating a pipeline, in which case
+ SIGCHLD remains blocked until all commands in the pipeline have been
+ created. */
+ sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+ }
+
+ return (pid);
+}
+
+/* These two functions are called only in child processes. */
+void
+ignore_tty_job_signals ()
+{
+ set_signal_handler (SIGTSTP, SIG_IGN);
+ set_signal_handler (SIGTTIN, SIG_IGN);
+ set_signal_handler (SIGTTOU, SIG_IGN);
+}
+
+void
+default_tty_job_signals ()
+{
+ set_signal_handler (SIGTSTP, SIG_DFL);
+ set_signal_handler (SIGTTIN, SIG_DFL);
+ set_signal_handler (SIGTTOU, SIG_DFL);
+}
+
+/* When we end a job abnormally, or if we stop a job, we set the tty to the
+ state kept in here. When a job ends normally, we set the state in here
+ to the state of the tty. */
+
+static TTYSTRUCT shell_tty_info;
+
+#if defined (NEW_TTY_DRIVER)
+static struct tchars shell_tchars;
+static struct ltchars shell_ltchars;
+#endif /* NEW_TTY_DRIVER */
+
+#if defined (NEW_TTY_DRIVER) && defined (DRAIN_OUTPUT)
+/* Since the BSD tty driver does not allow us to change the tty modes
+ while simultaneously waiting for output to drain and preserving
+ typeahead, we have to drain the output ourselves before calling
+ ioctl. We cheat by finding the length of the output queue, and
+ using select to wait for an appropriate length of time. This is
+ a hack, and should be labeled as such (it's a hastily-adapted
+ mutation of a `usleep' implementation). It's only reason for
+ existing is the flaw in the BSD tty driver. */
+
+static int ttspeeds[] =
+{
+ 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200,
+ 1800, 2400, 4800, 9600, 19200, 38400
+};
+
+static void
+draino (fd, ospeed)
+ int fd, ospeed;
+{
+ register int delay = ttspeeds[ospeed];
+ int n;
+
+ if (!delay)
+ return;
+
+ while ((ioctl (fd, TIOCOUTQ, &n) == 0) && n)
+ {
+ if (n > (delay / 100))
+ {
+ struct timeval tv;
+
+ n *= 10; /* 2 bits more for conservativeness. */
+ tv.tv_sec = n / delay;
+ tv.tv_usec = ((n % delay) * 1000000) / delay;
+ select (fd, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv);
+ }
+ else
+ break;
+ }
+}
+#endif /* NEW_TTY_DRIVER && DRAIN_OUTPUT */
+
+/* Return the fd from which we are actually getting input. */
+#define input_tty() (shell_tty != -1) ? shell_tty : fileno (stderr)
+
+/* Fill the contents of shell_tty_info with the current tty info. */
+int
+get_tty_state ()
+{
+ int tty;
+
+ tty = input_tty ();
+ if (tty != -1)
+ {
+#if defined (NEW_TTY_DRIVER)
+ ioctl (tty, TIOCGETP, &shell_tty_info);
+ ioctl (tty, TIOCGETC, &shell_tchars);
+ ioctl (tty, TIOCGLTC, &shell_ltchars);
+#endif /* NEW_TTY_DRIVER */
+
+#if defined (TERMIO_TTY_DRIVER)
+ ioctl (tty, TCGETA, &shell_tty_info);
+#endif /* TERMIO_TTY_DRIVER */
+
+#if defined (TERMIOS_TTY_DRIVER)
+ if (tcgetattr (tty, &shell_tty_info) < 0)
+ {
+#if 0
+ /* Only print an error message if we're really interactive at
+ this time. */
+ if (interactive)
+ sys_error ("[%ld: %d (%d)] tcgetattr", (long)getpid (), shell_level, tty);
+#endif
+ return -1;
+ }
+#endif /* TERMIOS_TTY_DRIVER */
+ if (check_window_size)
+ get_new_window_size (0, (int *)0, (int *)0);
+ }
+ return 0;
+}
+
+/* Make the current tty use the state in shell_tty_info. */
+int
+set_tty_state ()
+{
+ int tty;
+
+ tty = input_tty ();
+ if (tty != -1)
+ {
+#if defined (NEW_TTY_DRIVER)
+# if defined (DRAIN_OUTPUT)
+ draino (tty, shell_tty_info.sg_ospeed);
+# endif /* DRAIN_OUTPUT */
+ ioctl (tty, TIOCSETN, &shell_tty_info);
+ ioctl (tty, TIOCSETC, &shell_tchars);
+ ioctl (tty, TIOCSLTC, &shell_ltchars);
+#endif /* NEW_TTY_DRIVER */
+
+#if defined (TERMIO_TTY_DRIVER)
+ ioctl (tty, TCSETAW, &shell_tty_info);
+#endif /* TERMIO_TTY_DRIVER */
+
+#if defined (TERMIOS_TTY_DRIVER)
+ if (tcsetattr (tty, TCSADRAIN, &shell_tty_info) < 0)
+ {
+ /* Only print an error message if we're really interactive at
+ this time. */
+ if (interactive)
+ sys_error ("[%ld: %d (%d)] tcsetattr", (long)getpid (), shell_level, tty);
+ return -1;
+ }
+#endif /* TERMIOS_TTY_DRIVER */
+ }
+ return 0;
+}
+
+/* Given an index into the jobs array JOB, return the PROCESS struct of the last
+ process in that job's pipeline. This is the one whose exit status
+ counts. Must be called with SIGCHLD blocked or queued. */
+static PROCESS *
+find_last_proc (job, block)
+ int job;
+ int block;
+{
+ register PROCESS *p;
+ sigset_t set, oset;
+
+ if (block)
+ BLOCK_CHILD (set, oset);
+
+ p = jobs[job]->pipe;
+ while (p && p->next != jobs[job]->pipe)
+ p = p->next;
+
+ if (block)
+ UNBLOCK_CHILD (oset);
+
+ return (p);
+}
+
+static pid_t
+find_last_pid (job, block)
+ int job;
+ int block;
+{
+ PROCESS *p;
+
+ p = find_last_proc (job, block);
+ /* Possible race condition here. */
+ return p->pid;
+}
+
+/* Wait for a particular child of the shell to finish executing.
+ This low-level function prints an error message if PID is not
+ a child of this shell. It returns -1 if it fails, or whatever
+ wait_for returns otherwise. If the child is not found in the
+ jobs table, it returns 127. */
+int
+wait_for_single_pid (pid)
+ pid_t pid;
+{
+ register PROCESS *child;
+ sigset_t set, oset;
+ int r, job;
+
+ BLOCK_CHILD (set, oset);
+ child = find_pipeline (pid, 0, (int *)NULL);
+ UNBLOCK_CHILD (oset);
+
+ if (child == 0)
+ {
+ r = bgp_search (pid);
+ if (r >= 0)
+ return r;
+ }
+
+ if (child == 0)
+ {
+ internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid);
+ return (127);
+ }
+
+ r = wait_for (pid);
+
+ /* POSIX.2: if we just waited for a job, we can remove it from the jobs
+ table. */
+ BLOCK_CHILD (set, oset);
+ job = find_job (pid, 0, NULL);
+ if (job != NO_JOB && jobs[job] && DEADJOB (job))
+ jobs[job]->flags |= J_NOTIFIED;
+ UNBLOCK_CHILD (oset);
+
+ /* If running in posix mode, remove the job from the jobs table immediately */
+ if (posixly_correct)
+ {
+ cleanup_dead_jobs ();
+ bgp_delete (pid);
+ }
+
+ return r;
+}
+
+/* Wait for all of the background processes started by this shell to finish. */
+void
+wait_for_background_pids ()
+{
+ register int i, r, waited_for;
+ sigset_t set, oset;
+ pid_t pid;
+
+ for (waited_for = 0;;)
+ {
+ BLOCK_CHILD (set, oset);
+
+ /* find first running job; if none running in foreground, break */
+ /* XXX could use js.j_firstj and js.j_lastj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0)
+ break;
+ }
+ if (i == js.j_jobslots)
+ {
+ UNBLOCK_CHILD (oset);
+ break;
+ }
+
+ /* now wait for the last pid in that job. */
+ pid = find_last_pid (i, 0);
+ UNBLOCK_CHILD (oset);
+ QUIT;
+ errno = 0; /* XXX */
+ r = wait_for_single_pid (pid);
+ if (r == -1)
+ {
+ /* If we're mistaken about job state, compensate. */
+ if (errno == ECHILD)
+ mark_all_jobs_as_dead ();
+ }
+ else
+ waited_for++;
+ }
+
+ /* POSIX.2 says the shell can discard the statuses of all completed jobs if
+ `wait' is called with no arguments. */
+ mark_dead_jobs_as_notified (1);
+ cleanup_dead_jobs ();
+ bgp_clear ();
+}
+
+/* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */
+#define INVALID_SIGNAL_HANDLER (SigHandler *)wait_for_background_pids
+static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;
+
+static int wait_sigint_received;
+static int child_caught_sigint;
+static int waiting_for_child;
+
+static void
+restore_sigint_handler ()
+{
+ if (old_sigint_handler != INVALID_SIGNAL_HANDLER)
+ {
+ set_signal_handler (SIGINT, old_sigint_handler);
+ old_sigint_handler = INVALID_SIGNAL_HANDLER;
+ waiting_for_child = 0;
+ }
+}
+
+/* Handle SIGINT while we are waiting for children in a script to exit.
+ The `wait' builtin should be interruptible, but all others should be
+ effectively ignored (i.e. not cause the shell to exit). */
+static sighandler
+wait_sigint_handler (sig)
+ int sig;
+{
+ SigHandler *sigint_handler;
+
+ if (interrupt_immediately ||
+ (this_shell_builtin && this_shell_builtin == wait_builtin))
+ {
+ last_command_exit_value = 128+SIGINT;
+ restore_sigint_handler ();
+ /* If we got a SIGINT while in `wait', and SIGINT is trapped, do
+ what POSIX.2 says (see builtins/wait.def for more info). */
+ if (this_shell_builtin && this_shell_builtin == wait_builtin &&
+ signal_is_trapped (SIGINT) &&
+ ((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler))
+ {
+ trap_handler (SIGINT); /* set pending_traps[SIGINT] */
+ wait_signal_received = SIGINT;
+ if (interrupt_immediately)
+ {
+ interrupt_immediately = 0;
+ longjmp (wait_intr_buf, 1);
+ }
+ else
+ /* Let CHECK_WAIT_INTR handle it in wait_for/waitchld */
+ SIGRETURN (0);
+ }
+ else if (interrupt_immediately)
+ {
+ ADDINTERRUPT;
+ QUIT;
+ }
+ else /* wait_builtin but signal not trapped, treat as interrupt */
+ kill (getpid (), SIGINT);
+ }
+
+ /* XXX - should this be interrupt_state? If it is, the shell will act
+ as if it got the SIGINT interrupt. */
+ if (waiting_for_child)
+ wait_sigint_received = 1;
+ else
+ {
+ last_command_exit_value = 128+SIGINT;
+ restore_sigint_handler ();
+ kill (getpid (), SIGINT);
+ }
+
+ /* Otherwise effectively ignore the SIGINT and allow the running job to
+ be killed. */
+ SIGRETURN (0);
+}
+
+static int
+process_exit_signal (status)
+ WAIT status;
+{
+ return (WIFSIGNALED (status) ? WTERMSIG (status) : 0);
+}
+
+static int
+process_exit_status (status)
+ WAIT status;
+{
+ if (WIFSIGNALED (status))
+ return (128 + WTERMSIG (status));
+ else if (WIFSTOPPED (status) == 0)
+ return (WEXITSTATUS (status));
+ else
+ return (EXECUTION_SUCCESS);
+}
+
+static WAIT
+job_signal_status (job)
+ int job;
+{
+ register PROCESS *p;
+ WAIT s;
+
+ p = jobs[job]->pipe;
+ do
+ {
+ s = p->status;
+ if (WIFSIGNALED(s) || WIFSTOPPED(s))
+ break;
+ p = p->next;
+ }
+ while (p != jobs[job]->pipe);
+
+ return s;
+}
+
+/* Return the exit status of the last process in the pipeline for job JOB.
+ This is the exit status of the entire job. */
+static WAIT
+raw_job_exit_status (job)
+ int job;
+{
+ register PROCESS *p;
+ int fail;
+ WAIT ret;
+
+ if (pipefail_opt)
+ {
+ fail = 0;
+ p = jobs[job]->pipe;
+ do
+ {
+ if (WSTATUS (p->status) != EXECUTION_SUCCESS)
+ fail = WSTATUS(p->status);
+ p = p->next;
+ }
+ while (p != jobs[job]->pipe);
+ WSTATUS (ret) = fail;
+ return ret;
+ }
+
+ for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next)
+ ;
+ return (p->status);
+}
+
+/* Return the exit status of job JOB. This is the exit status of the last
+ (rightmost) process in the job's pipeline, modified if the job was killed
+ by a signal or stopped. */
+int
+job_exit_status (job)
+ int job;
+{
+ return (process_exit_status (raw_job_exit_status (job)));
+}
+
+int
+job_exit_signal (job)
+ int job;
+{
+ return (process_exit_signal (raw_job_exit_status (job)));
+}
+
+#define FIND_CHILD(pid, child) \
+ do \
+ { \
+ child = find_pipeline (pid, 0, (int *)NULL); \
+ if (child == 0) \
+ { \
+ give_terminal_to (shell_pgrp, 0); \
+ UNBLOCK_CHILD (oset); \
+ internal_error (_("wait_for: No record of process %ld"), (long)pid); \
+ restore_sigint_handler (); \
+ return (termination_state = 127); \
+ } \
+ } \
+ while (0)
+
+/* Wait for pid (one of our children) to terminate, then
+ return the termination state. Returns 127 if PID is not found in
+ the jobs table. Returns -1 if waitchld() returns -1, indicating
+ that there are no unwaited-for child processes. */
+int
+wait_for (pid)
+ pid_t pid;
+{
+ int job, termination_state, r;
+ WAIT s;
+ register PROCESS *child;
+ sigset_t set, oset;
+
+ /* In the case that this code is interrupted, and we longjmp () out of it,
+ we are relying on the code in throw_to_top_level () to restore the
+ top-level signal mask. */
+ child = 0;
+ BLOCK_CHILD (set, oset);
+
+ /* Ignore interrupts while waiting for a job run without job control
+ to finish. We don't want the shell to exit if an interrupt is
+ received, only if one of the jobs run is killed via SIGINT. If
+ job control is not set, the job will be run in the same pgrp as
+ the shell, and the shell will see any signals the job gets. In
+ fact, we want this set every time the waiting shell and the waited-
+ for process are in the same process group, including command
+ substitution. */
+
+ /* This is possibly a race condition -- should it go in stop_pipeline? */
+ wait_sigint_received = child_caught_sigint = 0;
+ if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
+ {
+ old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+ waiting_for_child = 0;
+ if (old_sigint_handler == SIG_IGN)
+ set_signal_handler (SIGINT, old_sigint_handler);
+ }
+
+ termination_state = last_command_exit_value;
+
+ if (interactive && job_control == 0)
+ QUIT;
+ /* Check for terminating signals and exit the shell if we receive one */
+ CHECK_TERMSIG;
+
+ /* Check for a trapped signal interrupting the wait builtin and jump out */
+ CHECK_WAIT_INTR;
+
+ /* If we say wait_for (), then we have a record of this child somewhere.
+ If it and none of its peers are running, don't call waitchld(). */
+
+ job = NO_JOB;
+ do
+ {
+ if (pid != ANY_PID)
+ FIND_CHILD (pid, child);
+
+ /* If this child is part of a job, then we are really waiting for the
+ job to finish. Otherwise, we are waiting for the child to finish.
+ We check for JDEAD in case the job state has been set by waitchld
+ after receipt of a SIGCHLD. */
+ if (job == NO_JOB)
+ job = find_job (pid, 0, NULL);
+
+ /* waitchld() takes care of setting the state of the job. If the job
+ has already exited before this is called, sigchld_handler will have
+ called waitchld and the state will be set to JDEAD. */
+
+ if (pid == ANY_PID || PRUNNING(child) || (job != NO_JOB && RUNNING (job)))
+ {
+#if defined (WAITPID_BROKEN) /* SCOv4 */
+ sigset_t suspend_set;
+ sigemptyset (&suspend_set);
+ sigsuspend (&suspend_set);
+#else /* !WAITPID_BROKEN */
+# if defined (MUST_UNBLOCK_CHLD)
+ struct sigaction act, oact;
+ sigset_t nullset, chldset;
+
+ sigemptyset (&nullset);
+ sigemptyset (&chldset);
+ sigprocmask (SIG_SETMASK, &nullset, &chldset);
+ act.sa_handler = SIG_DFL;
+ sigemptyset (&act.sa_mask);
+ sigemptyset (&oact.sa_mask);
+ act.sa_flags = 0;
+# if defined (SA_RESTART)
+ act.sa_flags |= SA_RESTART;
+# endif
+ sigaction (SIGCHLD, &act, &oact);
+# endif /* MUST_UNBLOCK_CHLD */
+ queue_sigchld = 1;
+ waiting_for_child++;
+ r = waitchld (pid, 1); /* XXX */
+ waiting_for_child--;
+#if 0
+itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, child);
+#endif
+# if defined (MUST_UNBLOCK_CHLD)
+ sigaction (SIGCHLD, &oact, (struct sigaction *)NULL);
+ sigprocmask (SIG_SETMASK, &chldset, (sigset_t *)NULL);
+# endif
+ queue_sigchld = 0;
+ if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin)
+ {
+ termination_state = -1;
+ /* XXX - restore sigint handler here? */
+ goto wait_for_return;
+ }
+
+ /* If child is marked as running, but waitpid() returns -1/ECHILD,
+ there is something wrong. Somewhere, wait should have returned
+ that child's pid. Mark the child as not running and the job,
+ if it exists, as JDEAD. */
+ if (r == -1 && errno == ECHILD)
+ {
+ if (child)
+ {
+ child->running = PS_DONE;
+ WSTATUS (child->status) = 0; /* XXX -- can't find true status */
+ }
+ js.c_living = 0; /* no living child processes */
+ if (job != NO_JOB)
+ {
+ jobs[job]->state = JDEAD;
+ js.c_reaped++;
+ js.j_ndead++;
+ }
+ if (pid == ANY_PID)
+ {
+ termination_state = -1;
+ break;
+ }
+ }
+#endif /* WAITPID_BROKEN */
+ }
+
+ /* If the shell is interactive, and job control is disabled, see
+ if the foreground process has died due to SIGINT and jump out
+ of the wait loop if it has. waitchld has already restored the
+ old SIGINT signal handler. */
+ if (interactive && job_control == 0)
+ QUIT;
+ /* Check for terminating signals and exit the shell if we receive one */
+ CHECK_TERMSIG;
+
+ /* Check for a trapped signal interrupting the wait builtin and jump out */
+ CHECK_WAIT_INTR;
+
+ if (pid == ANY_PID)
+ /* XXX - could set child but we don't have a handle on what waitchld
+ reaps. Leave termination_state alone. */
+ goto wait_for_return;
+ }
+ while (PRUNNING (child) || (job != NO_JOB && RUNNING (job)));
+
+ /* Restore the original SIGINT signal handler before we return. */
+ restore_sigint_handler ();
+
+ /* The exit state of the command is either the termination state of the
+ child, or the termination state of the job. If a job, the status
+ of the last child in the pipeline is the significant one. If the command
+ or job was terminated by a signal, note that value also. */
+ termination_state = (job != NO_JOB) ? job_exit_status (job)
+ : process_exit_status (child->status);
+ last_command_exit_signal = (job != NO_JOB) ? job_exit_signal (job)
+ : process_exit_signal (child->status);
+
+ /* XXX */
+ if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || WIFSTOPPED (child->status))
+ termination_state = 128 + WSTOPSIG (child->status);
+
+ if (job == NO_JOB || IS_JOBCONTROL (job))
+ {
+ /* XXX - under what circumstances is a job not present in the jobs
+ table (job == NO_JOB)?
+ 1. command substitution
+
+ In the case of command substitution, at least, it's probably not
+ the right thing to give the terminal to the shell's process group,
+ even though there is code in subst.c:command_substitute to work
+ around it.
+
+ Things that don't:
+ $PROMPT_COMMAND execution
+ process substitution
+ */
+#if 0
+if (job == NO_JOB)
+ itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)", (long)shell_pgrp);
+#endif
+ give_terminal_to (shell_pgrp, 0);
+ }
+
+ /* If the command did not exit cleanly, or the job is just
+ being stopped, then reset the tty state back to what it
+ was before this command. Reset the tty state and notify
+ the user of the job termination only if the shell is
+ interactive. Clean up any dead jobs in either case. */
+ if (job != NO_JOB)
+ {
+ if (interactive_shell && subshell_environment == 0)
+ {
+ /* This used to use `child->status'. That's wrong, however, for
+ pipelines. `child' is the first process in the pipeline. It's
+ likely that the process we want to check for abnormal termination
+ or stopping is the last process in the pipeline, especially if
+ it's long-lived and the first process is short-lived. Since we
+ know we have a job here, we can check all the processes in this
+ job's pipeline and see if one of them stopped or terminated due
+ to a signal. We might want to change this later to just check
+ the last process in the pipeline. If no process exits due to a
+ signal, S is left as the status of the last job in the pipeline. */
+ s = job_signal_status (job);
+
+ if (WIFSIGNALED (s) || WIFSTOPPED (s))
+ {
+ set_tty_state ();
+
+ /* If the current job was stopped or killed by a signal, and
+ the user has requested it, get a possibly new window size */
+ if (check_window_size && (job == js.j_current || IS_FOREGROUND (job)))
+ get_new_window_size (0, (int *)0, (int *)0);
+ }
+ else
+ get_tty_state ();
+
+ /* If job control is enabled, the job was started with job
+ control, the job was the foreground job, and it was killed
+ by SIGINT, then print a newline to compensate for the kernel
+ printing the ^C without a trailing newline. */
+ if (job_control && IS_JOBCONTROL (job) && IS_FOREGROUND (job) &&
+ WIFSIGNALED (s) && WTERMSIG (s) == SIGINT)
+ {
+ /* If SIGINT is not trapped and the shell is in a for, while,
+ or until loop, act as if the shell received SIGINT as
+ well, so the loop can be broken. This doesn't call the
+ SIGINT signal handler; maybe it should. */
+ if (signal_is_trapped (SIGINT) == 0 && (loop_level || (shell_compatibility_level > 32 && executing_list)))
+ ADDINTERRUPT;
+ else
+ {
+ putchar ('\n');
+ fflush (stdout);
+ }
+ }
+ }
+ else if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PIPE)) && wait_sigint_received)
+ {
+ /* If waiting for a job in a subshell started to do command
+ substitution or to run a pipeline element that consists of
+ something like a while loop or a for loop, simulate getting
+ and being killed by the SIGINT to pass the status back to our
+ parent. */
+ s = job_signal_status (job);
+
+ if (child_caught_sigint == 0 && signal_is_trapped (SIGINT) == 0)
+ {
+ UNBLOCK_CHILD (oset);
+ old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL);
+ if (old_sigint_handler == SIG_IGN)
+ restore_sigint_handler ();
+ else
+ kill (getpid (), SIGINT);
+ }
+ }
+ else if (interactive_shell == 0 && IS_FOREGROUND (job) && check_window_size)
+ get_new_window_size (0, (int *)0, (int *)0);
+
+ /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
+ signal handler path */
+ if (DEADJOB (job) && IS_FOREGROUND (job) /*&& subshell_environment == 0*/)
+ setjstatus (job);
+
+ /* If this job is dead, notify the user of the status. If the shell
+ is interactive, this will display a message on the terminal. If
+ the shell is not interactive, make sure we turn on the notify bit
+ so we don't get an unwanted message about the job's termination,
+ and so delete_job really clears the slot in the jobs table. */
+ notify_and_cleanup ();
+ }
+
+wait_for_return:
+
+ UNBLOCK_CHILD (oset);
+
+ return (termination_state);
+}
+
+/* Wait for the last process in the pipeline for JOB. Returns whatever
+ wait_for returns: the last process's termination state or -1 if there
+ are no unwaited-for child processes or an error occurs. */
+int
+wait_for_job (job)
+ int job;
+{
+ pid_t pid;
+ int r;
+ sigset_t set, oset;
+
+ BLOCK_CHILD(set, oset);
+ if (JOBSTATE (job) == JSTOPPED)
+ internal_warning (_("wait_for_job: job %d is stopped"), job+1);
+
+ pid = find_last_pid (job, 0);
+ UNBLOCK_CHILD(oset);
+ r = wait_for (pid);
+
+ /* POSIX.2: we can remove the job from the jobs table if we just waited
+ for it. */
+ BLOCK_CHILD (set, oset);
+ if (job != NO_JOB && jobs[job] && DEADJOB (job))
+ jobs[job]->flags |= J_NOTIFIED;
+ UNBLOCK_CHILD (oset);
+
+ return r;
+}
+
+/* Wait for any background job started by this shell to finish. Very
+ similar to wait_for_background_pids(). Returns the exit status of
+ the next exiting job, -1 if there are no background jobs. The caller
+ is responsible for translating -1 into the right return value. */
+int
+wait_for_any_job ()
+{
+ pid_t pid;
+ int i, r, waited_for;
+ sigset_t set, oset;
+
+ if (jobs_list_frozen)
+ return -1;
+
+ /* First see if there are any unnotified dead jobs that we can report on */
+ BLOCK_CHILD (set, oset);
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+ if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i) == 0)
+ {
+return_job:
+ r = job_exit_status (i);
+ notify_of_job_status (); /* XXX */
+ delete_job (i, 0);
+#if defined (COPROCESS_SUPPORT)
+ coproc_reap ();
+#endif
+ UNBLOCK_CHILD (oset);
+ return r;
+ }
+ }
+ UNBLOCK_CHILD (oset);
+
+ /* At this point, we have no dead jobs in the jobs table. Wait until we
+ get one, even if it takes multiple pids exiting. */
+ for (waited_for = 0;;)
+ {
+ /* Make sure there is a background job to wait for */
+ BLOCK_CHILD (set, oset);
+ for (i = 0; i < js.j_jobslots; i++)
+ if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0)
+ break;
+ if (i == js.j_jobslots)
+ {
+ UNBLOCK_CHILD (oset);
+ return -1;
+ }
+
+ UNBLOCK_CHILD (oset);
+
+ QUIT;
+ CHECK_TERMSIG;
+ CHECK_WAIT_INTR;
+
+ errno = 0;
+ r = wait_for (ANY_PID); /* special sentinel value for wait_for */
+ if (r == -1 && errno == ECHILD)
+ mark_all_jobs_as_dead ();
+
+ /* Now we see if we have any dead jobs and return the first one */
+ BLOCK_CHILD (set, oset);
+ for (i = 0; i < js.j_jobslots; i++)
+ if (jobs[i] && DEADJOB (i))
+ goto return_job;
+ UNBLOCK_CHILD (oset);
+ }
+
+ return -1;
+}
+
+/* Print info about dead jobs, and then delete them from the list
+ of known jobs. This does not actually delete jobs when the
+ shell is not interactive, because the dead jobs are not marked
+ as notified. */
+void
+notify_and_cleanup ()
+{
+ if (jobs_list_frozen)
+ return;
+
+ if (interactive || interactive_shell == 0 || sourcelevel)
+ notify_of_job_status ();
+
+ cleanup_dead_jobs ();
+}
+
+/* Make dead jobs disappear from the jobs array without notification.
+ This is used when the shell is not interactive. */
+void
+reap_dead_jobs ()
+{
+ mark_dead_jobs_as_notified (0);
+ cleanup_dead_jobs ();
+}
+
+/* Return the next closest (chronologically) job to JOB which is in
+ STATE. STATE can be JSTOPPED, JRUNNING. NO_JOB is returned if
+ there is no next recent job. */
+static int
+most_recent_job_in_state (job, state)
+ int job;
+ JOB_STATE state;
+{
+ register int i, result;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+
+ for (result = NO_JOB, i = job - 1; i >= 0; i--)
+ {
+ if (jobs[i] && (JOBSTATE (i) == state))
+ {
+ result = i;
+ break;
+ }
+ }
+
+ UNBLOCK_CHILD (oset);
+
+ return (result);
+}
+
+/* Return the newest *stopped* job older than JOB, or NO_JOB if not
+ found. */
+static int
+job_last_stopped (job)
+ int job;
+{
+ return (most_recent_job_in_state (job, JSTOPPED));
+}
+
+/* Return the newest *running* job older than JOB, or NO_JOB if not
+ found. */
+static int
+job_last_running (job)
+ int job;
+{
+ return (most_recent_job_in_state (job, JRUNNING));
+}
+
+/* Make JOB be the current job, and make previous be useful. Must be
+ called with SIGCHLD blocked. */
+static void
+set_current_job (job)
+ int job;
+{
+ int candidate;
+
+ if (js.j_current != job)
+ {
+ js.j_previous = js.j_current;
+ js.j_current = job;
+ }
+
+ /* First choice for previous job is the old current job. */
+ if (js.j_previous != js.j_current &&
+ js.j_previous != NO_JOB &&
+ jobs[js.j_previous] &&
+ STOPPED (js.j_previous))
+ return;
+
+ /* Second choice: Newest stopped job that is older than
+ the current job. */
+ candidate = NO_JOB;
+ if (STOPPED (js.j_current))
+ {
+ candidate = job_last_stopped (js.j_current);
+
+ if (candidate != NO_JOB)
+ {
+ js.j_previous = candidate;
+ return;
+ }
+ }
+
+ /* If we get here, there is either only one stopped job, in which case it is
+ the current job and the previous job should be set to the newest running
+ job, or there are only running jobs and the previous job should be set to
+ the newest running job older than the current job. We decide on which
+ alternative to use based on whether or not JOBSTATE(js.j_current) is
+ JSTOPPED. */
+
+ candidate = RUNNING (js.j_current) ? job_last_running (js.j_current)
+ : job_last_running (js.j_jobslots);
+
+ if (candidate != NO_JOB)
+ {
+ js.j_previous = candidate;
+ return;
+ }
+
+ /* There is only a single job, and it is both `+' and `-'. */
+ js.j_previous = js.j_current;
+}
+
+/* Make current_job be something useful, if it isn't already. */
+
+/* Here's the deal: The newest non-running job should be `+', and the
+ next-newest non-running job should be `-'. If there is only a single
+ stopped job, the js.j_previous is the newest non-running job. If there
+ are only running jobs, the newest running job is `+' and the
+ next-newest running job is `-'. Must be called with SIGCHLD blocked. */
+
+static void
+reset_current ()
+{
+ int candidate;
+
+ if (js.j_jobslots && js.j_current != NO_JOB && jobs[js.j_current] && STOPPED (js.j_current))
+ candidate = js.j_current;
+ else
+ {
+ candidate = NO_JOB;
+
+ /* First choice: the previous job. */
+ if (js.j_previous != NO_JOB && jobs[js.j_previous] && STOPPED (js.j_previous))
+ candidate = js.j_previous;
+
+ /* Second choice: the most recently stopped job. */
+ if (candidate == NO_JOB)
+ candidate = job_last_stopped (js.j_jobslots);
+
+ /* Third choice: the newest running job. */
+ if (candidate == NO_JOB)
+ candidate = job_last_running (js.j_jobslots);
+ }
+
+ /* If we found a job to use, then use it. Otherwise, there
+ are no jobs period. */
+ if (candidate != NO_JOB)
+ set_current_job (candidate);
+ else
+ js.j_current = js.j_previous = NO_JOB;
+}
+
+/* Set up the job structures so we know the job and its processes are
+ all running. */
+static void
+set_job_running (job)
+ int job;
+{
+ register PROCESS *p;
+
+ /* Each member of the pipeline is now running. */
+ p = jobs[job]->pipe;
+
+ do
+ {
+ if (WIFSTOPPED (p->status))
+ p->running = PS_RUNNING; /* XXX - could be PS_STOPPED */
+ p = p->next;
+ }
+ while (p != jobs[job]->pipe);
+
+ /* This means that the job is running. */
+ JOBSTATE (job) = JRUNNING;
+}
+
+/* Start a job. FOREGROUND if non-zero says to do that. Otherwise,
+ start the job in the background. JOB is a zero-based index into
+ JOBS. Returns -1 if it is unable to start a job, and the return
+ status of the job otherwise. */
+int
+start_job (job, foreground)
+ int job, foreground;
+{
+ register PROCESS *p;
+ int already_running;
+ sigset_t set, oset;
+ char *wd, *s;
+ static TTYSTRUCT save_stty;
+
+ BLOCK_CHILD (set, oset);
+
+ if (DEADJOB (job))
+ {
+ internal_error (_("%s: job has terminated"), this_command_name);
+ UNBLOCK_CHILD (oset);
+ return (-1);
+ }
+
+ already_running = RUNNING (job);
+
+ if (foreground == 0 && already_running)
+ {
+ internal_error (_("%s: job %d already in background"), this_command_name, job + 1);
+ UNBLOCK_CHILD (oset);
+ return (0); /* XPG6/SUSv3 says this is not an error */
+ }
+
+ wd = current_working_directory ();
+
+ /* You don't know about the state of this job. Do you? */
+ jobs[job]->flags &= ~J_NOTIFIED;
+
+ if (foreground)
+ {
+ set_current_job (job);
+ jobs[job]->flags |= J_FOREGROUND;
+ }
+
+ /* Tell the outside world what we're doing. */
+ p = jobs[job]->pipe;
+
+ if (foreground == 0)
+ {
+ /* POSIX.2 says `bg' doesn't give any indication about current or
+ previous job. */
+ if (posixly_correct == 0)
+ s = (job == js.j_current) ? "+ ": ((job == js.j_previous) ? "- " : " ");
+ else
+ s = " ";
+ printf ("[%d]%s", job + 1, s);
+ }
+
+ do
+ {
+ printf ("%s%s",
+ p->command ? p->command : "",
+ p->next != jobs[job]->pipe? " | " : "");
+ p = p->next;
+ }
+ while (p != jobs[job]->pipe);
+
+ if (foreground == 0)
+ printf (" &");
+
+ if (strcmp (wd, jobs[job]->wd) != 0)
+ printf (" (wd: %s)", polite_directory_format (jobs[job]->wd));
+
+ printf ("\n");
+
+ /* Run the job. */
+ if (already_running == 0)
+ set_job_running (job);
+
+ /* Save the tty settings before we start the job in the foreground. */
+ if (foreground)
+ {
+ get_tty_state ();
+ save_stty = shell_tty_info;
+ /* Give the terminal to this job. */
+ if (IS_JOBCONTROL (job))
+ give_terminal_to (jobs[job]->pgrp, 0);
+ }
+ else
+ jobs[job]->flags &= ~J_FOREGROUND;
+
+ /* If the job is already running, then don't bother jump-starting it. */
+ if (already_running == 0)
+ {
+ jobs[job]->flags |= J_NOTIFIED;
+ killpg (jobs[job]->pgrp, SIGCONT);
+ }
+
+ if (foreground)
+ {
+ pid_t pid;
+ int st;
+
+ pid = find_last_pid (job, 0);
+ UNBLOCK_CHILD (oset);
+ st = wait_for (pid);
+ shell_tty_info = save_stty;
+ set_tty_state ();
+ return (st);
+ }
+ else
+ {
+ reset_current ();
+ UNBLOCK_CHILD (oset);
+ return (0);
+ }
+}
+
+/* Give PID SIGNAL. This determines what job the pid belongs to (if any).
+ If PID does belong to a job, and the job is stopped, then CONTinue the
+ job after giving it SIGNAL. Returns -1 on failure. If GROUP is non-null,
+ then kill the process group associated with PID. */
+int
+kill_pid (pid, sig, group)
+ pid_t pid;
+ int sig, group;
+{
+ register PROCESS *p;
+ int job, result, negative;
+ sigset_t set, oset;
+
+ if (pid < -1)
+ {
+ pid = -pid;
+ group = negative = 1;
+ }
+ else
+ negative = 0;
+
+ result = EXECUTION_SUCCESS;
+ if (group)
+ {
+ BLOCK_CHILD (set, oset);
+ p = find_pipeline (pid, 0, &job);
+
+ if (job != NO_JOB)
+ {
+ jobs[job]->flags &= ~J_NOTIFIED;
+
+ /* Kill process in backquotes or one started without job control? */
+
+ /* If we're passed a pid < -1, just call killpg and see what happens */
+ if (negative && jobs[job]->pgrp == shell_pgrp)
+ result = killpg (pid, sig);
+ /* If we're killing using job control notification, for example,
+ without job control active, we have to do things ourselves. */
+ else if (jobs[job]->pgrp == shell_pgrp)
+ {
+ p = jobs[job]->pipe;
+ do
+ {
+ if (PALIVE (p) == 0)
+ continue; /* avoid pid recycling problem */
+ kill (p->pid, sig);
+ if (PEXITED (p) && (sig == SIGTERM || sig == SIGHUP))
+ kill (p->pid, SIGCONT);
+ p = p->next;
+ }
+ while (p != jobs[job]->pipe);
+ }
+ else
+ {
+ result = killpg (jobs[job]->pgrp, sig);
+ if (p && STOPPED (job) && (sig == SIGTERM || sig == SIGHUP))
+ killpg (jobs[job]->pgrp, SIGCONT);
+ /* If we're continuing a stopped job via kill rather than bg or
+ fg, emulate the `bg' behavior. */
+ if (p && STOPPED (job) && (sig == SIGCONT))
+ {
+ set_job_running (job);
+ jobs[job]->flags &= ~J_FOREGROUND;
+ jobs[job]->flags |= J_NOTIFIED;
+ }
+ }
+ }
+ else
+ result = killpg (pid, sig);
+
+ UNBLOCK_CHILD (oset);
+ }
+ else
+ result = kill (pid, sig);
+
+ return (result);
+}
+
+/* sigchld_handler () flushes at least one of the children that we are
+ waiting for. It gets run when we have gotten a SIGCHLD signal. */
+static sighandler
+sigchld_handler (sig)
+ int sig;
+{
+ int n, oerrno;
+
+ oerrno = errno;
+ REINSTALL_SIGCHLD_HANDLER;
+ sigchld++;
+ n = 0;
+ if (queue_sigchld == 0)
+ n = waitchld (-1, 0);
+ errno = oerrno;
+ SIGRETURN (n);
+}
+
+/* waitchld() reaps dead or stopped children. It's called by wait_for and
+ sigchld_handler, and runs until there aren't any children terminating any
+ more.
+ If BLOCK is 1, this is to be a blocking wait for a single child, although
+ an arriving SIGCHLD could cause the wait to be non-blocking. It returns
+ the number of children reaped, or -1 if there are no unwaited-for child
+ processes. */
+static int
+waitchld (wpid, block)
+ pid_t wpid;
+ int block;
+{
+ WAIT status;
+ PROCESS *child;
+ pid_t pid;
+
+ int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
+ static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */
+
+ call_set_current = children_exited = 0;
+ last_stopped_job = NO_JOB;
+
+ do
+ {
+ /* We don't want to be notified about jobs stopping if job control
+ is not active. XXX - was interactive_shell instead of job_control */
+ waitpid_flags = (job_control && subshell_environment == 0)
+ ? (WUNTRACED|wcontinued)
+ : 0;
+ if (sigchld || block == 0)
+ waitpid_flags |= WNOHANG;
+
+ /* Check for terminating signals and exit the shell if we receive one */
+ CHECK_TERMSIG;
+ /* Check for a trapped signal interrupting the wait builtin and jump out */
+ CHECK_WAIT_INTR;
+
+ if (block == 1 && queue_sigchld == 0 && (waitpid_flags & WNOHANG) == 0)
+ {
+ internal_warning (_("waitchld: turning on WNOHANG to avoid indefinite block"));
+ waitpid_flags |= WNOHANG;
+ }
+
+ pid = WAITPID (-1, &status, waitpid_flags);
+
+#if 0
+if (wpid != -1 && block)
+ itrace("waitchld: blocking waitpid returns %d", pid);
+#endif
+ /* WCONTINUED may be rejected by waitpid as invalid even when defined */
+ if (wcontinued && pid < 0 && errno == EINVAL)
+ {
+ wcontinued = 0;
+ continue; /* jump back to the test and retry without WCONTINUED */
+ }
+
+ /* The check for WNOHANG is to make sure we decrement sigchld only
+ if it was non-zero before we called waitpid. */
+ if (sigchld > 0 && (waitpid_flags & WNOHANG))
+ sigchld--;
+
+ /* If waitpid returns -1 with errno == ECHILD, there are no more
+ unwaited-for child processes of this shell. */
+ if (pid < 0 && errno == ECHILD)
+ {
+ if (children_exited == 0)
+ return -1;
+ else
+ break;
+ }
+
+#if 0
+itrace("waitchld: waitpid returns %d block = %d", pid, block);
+#endif
+ /* If waitpid returns 0, there are running children. If it returns -1,
+ the only other error POSIX says it can return is EINTR. */
+ CHECK_TERMSIG;
+ CHECK_WAIT_INTR;
+
+ /* If waitpid returns -1/EINTR and the shell saw a SIGINT, then we
+ assume the child has blocked or handled SIGINT. In that case, we
+ require the child to actually die due to SIGINT to act on the
+ SIGINT we received; otherwise we assume the child handled it and
+ let it go. */
+ if (pid < 0 && errno == EINTR && wait_sigint_received)
+ child_caught_sigint = 1;
+
+ if (pid <= 0)
+ continue; /* jumps right to the test */
+
+ /* If the child process did die due to SIGINT, forget our assumption
+ that it caught or otherwise handled it. */
+ if (WIFSIGNALED (status) && WTERMSIG (status) == SIGINT)
+ child_caught_sigint = 0;
+
+ /* children_exited is used to run traps on SIGCHLD. We don't want to
+ run the trap if a process is just being continued. */
+ if (WIFCONTINUED(status) == 0)
+ {
+ children_exited++;
+ js.c_living--;
+ }
+
+ /* Locate our PROCESS for this pid. */
+ child = find_process (pid, 1, &job); /* want living procs only */
+
+#if defined (COPROCESS_SUPPORT)
+ coproc_pidchk (pid, WSTATUS(status));
+#endif
+
+ /* It is not an error to have a child terminate that we did
+ not have a record of. This child could have been part of
+ a pipeline in backquote substitution. Even so, I'm not
+ sure child is ever non-zero. */
+ if (child == 0)
+ {
+ if (WIFEXITED (status) || WIFSIGNALED (status))
+ js.c_reaped++;
+ continue;
+ }
+
+ /* Remember status, and whether or not the process is running. */
+ child->status = status;
+ child->running = WIFCONTINUED(status) ? PS_RUNNING : PS_DONE;
+
+ if (PEXITED (child))
+ {
+ js.c_totreaped++;
+ if (job != NO_JOB)
+ js.c_reaped++;
+ }
+
+ if (job == NO_JOB)
+ continue;
+
+ call_set_current += set_job_status_and_cleanup (job);
+
+ if (STOPPED (job))
+ last_stopped_job = job;
+ else if (DEADJOB (job) && last_stopped_job == job)
+ last_stopped_job = NO_JOB;
+ }
+ while ((sigchld || block == 0) && pid > (pid_t)0);
+
+ /* If a job was running and became stopped, then set the current
+ job. Otherwise, don't change a thing. */
+ if (call_set_current)
+ {
+ if (last_stopped_job != NO_JOB)
+ set_current_job (last_stopped_job);
+ else
+ reset_current ();
+ }
+
+ /* Call a SIGCHLD trap handler for each child that exits, if one is set. */
+ if (job_control && signal_is_trapped (SIGCHLD) && children_exited &&
+ trap_list[SIGCHLD] != (char *)IGNORE_SIG)
+ {
+ if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin)
+ {
+ interrupt_immediately = 0;
+ trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */
+ wait_signal_received = SIGCHLD;
+ /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
+ run_pending_traps will call run_sigchld_trap later */
+ if (sigchld == 0)
+ longjmp (wait_intr_buf, 1);
+ }
+ /* If not in posix mode and not executing the wait builtin, queue the
+ signal for later handling. Run the trap immediately if we are
+ executing the wait builtin, but don't break out of `wait'. */
+ else if (sigchld) /* called from signal handler */
+ queue_sigchld_trap (children_exited);
+ else if (running_trap)
+ queue_sigchld_trap (children_exited);
+ else if (this_shell_builtin == wait_builtin)
+ run_sigchld_trap (children_exited); /* XXX */
+ else
+ queue_sigchld_trap (children_exited);
+ }
+
+ /* We have successfully recorded the useful information about this process
+ that has just changed state. If we notify asynchronously, and the job
+ that this process belongs to is no longer running, then notify the user
+ of that fact now. */
+ if (asynchronous_notification && interactive)
+ notify_of_job_status ();
+
+ return (children_exited);
+}
+
+/* Set the status of JOB and perform any necessary cleanup if the job is
+ marked as JDEAD.
+
+ Currently, the cleanup activity is restricted to handling any SIGINT
+ received while waiting for a foreground job to finish. */
+static int
+set_job_status_and_cleanup (job)
+ int job;
+{
+ PROCESS *child;
+ int tstatus, job_state, any_stopped, any_tstped, call_set_current;
+ SigHandler *temp_handler;
+
+ child = jobs[job]->pipe;
+ jobs[job]->flags &= ~J_NOTIFIED;
+
+ call_set_current = 0;
+
+ /*
+ * COMPUTE JOB STATUS
+ */
+
+ /* If all children are not running, but any of them is stopped, then
+ the job is stopped, not dead. */
+ job_state = any_stopped = any_tstped = 0;
+ do
+ {
+ job_state |= PRUNNING (child);
+#if 0
+ if (PEXITED (child) && (WIFSTOPPED (child->status)))
+#else
+ /* Only checking for WIFSTOPPED now, not for PS_DONE */
+ if (PSTOPPED (child))
+#endif
+ {
+ any_stopped = 1;
+ any_tstped |= job_control && (WSTOPSIG (child->status) == SIGTSTP);
+ }
+ child = child->next;
+ }
+ while (child != jobs[job]->pipe);
+
+ /* If job_state != 0, the job is still running, so don't bother with
+ setting the process exit status and job state unless we're
+ transitioning from stopped to running. */
+ if (job_state != 0 && JOBSTATE(job) != JSTOPPED)
+ return 0;
+
+ /*
+ * SET JOB STATUS
+ */
+
+ /* The job is either stopped or dead. Set the state of the job accordingly. */
+ if (any_stopped)
+ {
+ jobs[job]->state = JSTOPPED;
+ jobs[job]->flags &= ~J_FOREGROUND;
+ call_set_current++;
+ /* Suspending a job with SIGTSTP breaks all active loops. */
+ if (any_tstped && loop_level)
+ breaking = loop_level;
+ }
+ else if (job_state != 0) /* was stopped, now running */
+ {
+ jobs[job]->state = JRUNNING;
+ call_set_current++;
+ }
+ else
+ {
+ jobs[job]->state = JDEAD;
+ js.j_ndead++;
+
+#if 0
+ if (IS_FOREGROUND (job))
+ setjstatus (job);
+#endif
+
+ /* If this job has a cleanup function associated with it, call it
+ with `cleanarg' as the single argument, then set the function
+ pointer to NULL so it is not inadvertently called twice. The
+ cleanup function is responsible for deallocating cleanarg. */
+ if (jobs[job]->j_cleanup)
+ {
+ (*jobs[job]->j_cleanup) (jobs[job]->cleanarg);
+ jobs[job]->j_cleanup = (sh_vptrfunc_t *)NULL;
+ }
+ }
+
+ /*
+ * CLEANUP
+ *
+ * Currently, we just do special things if we got a SIGINT while waiting
+ * for a foreground job to complete
+ */
+
+ if (JOBSTATE (job) == JDEAD)
+ {
+ /* If we're running a shell script and we get a SIGINT with a
+ SIGINT trap handler, but the foreground job handles it and
+ does not exit due to SIGINT, run the trap handler but do not
+ otherwise act as if we got the interrupt. */
+ if (wait_sigint_received && interactive_shell == 0 &&
+ child_caught_sigint && IS_FOREGROUND (job) &&
+ signal_is_trapped (SIGINT))
+ {
+ int old_frozen;
+ wait_sigint_received = 0;
+ last_command_exit_value = process_exit_status (child->status);
+
+ old_frozen = jobs_list_frozen;
+ jobs_list_frozen = 1;
+ tstatus = maybe_call_trap_handler (SIGINT);
+ jobs_list_frozen = old_frozen;
+ }
+
+ /* If the foreground job is killed by SIGINT when job control is not
+ active, we need to perform some special handling.
+
+ The check of wait_sigint_received is a way to determine if the
+ SIGINT came from the keyboard (in which case the shell has already
+ seen it, and wait_sigint_received is non-zero, because keyboard
+ signals are sent to process groups) or via kill(2) to the foreground
+ process by another process (or itself). If the shell did receive the
+ SIGINT, it needs to perform normal SIGINT processing. */
+ else if (wait_sigint_received &&
+ child_caught_sigint == 0 &&
+ IS_FOREGROUND (job) && IS_JOBCONTROL (job) == 0)
+ {
+ int old_frozen;
+
+ wait_sigint_received = 0;
+
+ /* If SIGINT is trapped, set the exit status so that the trap
+ handler can see it. */
+ if (signal_is_trapped (SIGINT))
+ last_command_exit_value = process_exit_status (child->status);
+
+ /* If the signal is trapped, let the trap handler get it no matter
+ what and simply return if the trap handler returns.
+ maybe_call_trap_handler() may cause dead jobs to be removed from
+ the job table because of a call to execute_command. We work
+ around this by setting JOBS_LIST_FROZEN. */
+ old_frozen = jobs_list_frozen;
+ jobs_list_frozen = 1;
+ tstatus = maybe_call_trap_handler (SIGINT);
+ jobs_list_frozen = old_frozen;
+ if (tstatus == 0 && old_sigint_handler != INVALID_SIGNAL_HANDLER)
+ {
+ /* wait_sigint_handler () has already seen SIGINT and
+ allowed the wait builtin to jump out. We need to
+ call the original SIGINT handler, if necessary. If
+ the original handler is SIG_DFL, we need to resend
+ the signal to ourselves. */
+
+ temp_handler = old_sigint_handler;
+
+ /* Bogus. If we've reset the signal handler as the result
+ of a trap caught on SIGINT, then old_sigint_handler
+ will point to trap_handler, which now knows nothing about
+ SIGINT (if we reset the sighandler to the default).
+ In this case, we have to fix things up. What a crock. */
+ if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0)
+ temp_handler = trap_to_sighandler (SIGINT);
+ restore_sigint_handler ();
+ if (temp_handler == SIG_DFL)
+ termsig_handler (SIGINT); /* XXX */
+ else if (temp_handler != SIG_IGN)
+ (*temp_handler) (SIGINT);
+ }
+ }
+ }
+
+ return call_set_current;
+}
+
+/* Build the array of values for the $PIPESTATUS variable from the set of
+ exit statuses of all processes in the job J. */
+static void
+setjstatus (j)
+ int j;
+{
+#if defined (ARRAY_VARS)
+ register int i;
+ register PROCESS *p;
+
+ for (i = 1, p = jobs[j]->pipe; p->next != jobs[j]->pipe; p = p->next, i++)
+ ;
+ i++;
+ if (statsize < i)
+ {
+ pstatuses = (int *)xrealloc (pstatuses, i * sizeof (int));
+ statsize = i;
+ }
+ i = 0;
+ p = jobs[j]->pipe;
+ do
+ {
+ pstatuses[i++] = process_exit_status (p->status);
+ p = p->next;
+ }
+ while (p != jobs[j]->pipe);
+
+ pstatuses[i] = -1; /* sentinel */
+ set_pipestatus_array (pstatuses, i);
+#endif
+}
+
+void
+run_sigchld_trap (nchild)
+ int nchild;
+{
+ char *trap_command;
+ int i;
+
+ /* Turn off the trap list during the call to parse_and_execute ()
+ to avoid potentially infinite recursive calls. Preserve the
+ values of last_command_exit_value, last_made_pid, and the_pipeline
+ around the execution of the trap commands. */
+ trap_command = savestring (trap_list[SIGCHLD]);
+
+ begin_unwind_frame ("SIGCHLD trap");
+ unwind_protect_int (last_command_exit_value);
+ unwind_protect_int (last_command_exit_signal);
+ unwind_protect_var (last_made_pid);
+ unwind_protect_int (interrupt_immediately);
+ unwind_protect_int (jobs_list_frozen);
+ unwind_protect_pointer (the_pipeline);
+ unwind_protect_pointer (subst_assign_varlist);
+
+ /* We have to add the commands this way because they will be run
+ in reverse order of adding. We don't want maybe_set_sigchld_trap ()
+ to reference freed memory. */
+ add_unwind_protect (xfree, trap_command);
+ add_unwind_protect (maybe_set_sigchld_trap, trap_command);
+
+ subst_assign_varlist = (WORD_LIST *)NULL;
+ the_pipeline = (PROCESS *)NULL;
+
+ running_trap = SIGCHLD + 1;
+
+ set_impossible_sigchld_trap ();
+ jobs_list_frozen = 1;
+ for (i = 0; i < nchild; i++)
+ {
+#if 0
+ interrupt_immediately = 1;
+#endif
+ parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE);
+ }
+
+ run_unwind_frame ("SIGCHLD trap");
+ running_trap = 0;
+}
+
+/* Function to call when you want to notify people of changes
+ in job status. This prints out all jobs which are pending
+ notification to stderr, and marks those printed as already
+ notified, thus making them candidates for cleanup. */
+static void
+notify_of_job_status ()
+{
+ register int job, termsig;
+ char *dir;
+ sigset_t set, oset;
+ WAIT s;
+
+ if (jobs == 0 || js.j_jobslots == 0)
+ return;
+
+ if (old_ttou != 0)
+ {
+ sigemptyset (&set);
+ sigaddset (&set, SIGCHLD);
+ sigaddset (&set, SIGTTOU);
+ sigemptyset (&oset);
+ sigprocmask (SIG_BLOCK, &set, &oset);
+ }
+ else
+ queue_sigchld++;
+
+ /* XXX could use js.j_firstj here */
+ for (job = 0, dir = (char *)NULL; job < js.j_jobslots; job++)
+ {
+ if (jobs[job] && IS_NOTIFIED (job) == 0)
+ {
+ s = raw_job_exit_status (job);
+ termsig = WTERMSIG (s);
+
+ /* POSIX.2 says we have to hang onto the statuses of at most the
+ last CHILD_MAX background processes if the shell is running a
+ script. If the shell is running a script, either from a file
+ or standard input, don't print anything unless the job was
+ killed by a signal. */
+ if (startup_state == 0 && WIFSIGNALED (s) == 0 &&
+ ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job)))
+ continue;
+
+#if 0
+ /* If job control is disabled, don't print the status messages.
+ Mark dead jobs as notified so that they get cleaned up. If
+ startup_state == 2, we were started to run `-c command', so
+ don't print anything. */
+ if ((job_control == 0 && interactive_shell) || startup_state == 2)
+#else
+ /* If job control is disabled, don't print the status messages.
+ Mark dead jobs as notified so that they get cleaned up. If
+ startup_state == 2 and subshell_environment has the
+ SUBSHELL_COMSUB bit turned on, we were started to run a command
+ substitution, so don't print anything. */
+ if ((job_control == 0 && interactive_shell) ||
+ (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)))
+#endif
+ {
+ /* POSIX.2 compatibility: if the shell is not interactive,
+ hang onto the job corresponding to the last asynchronous
+ pid until the user has been notified of its status or does
+ a `wait'. */
+ if (DEADJOB (job) && (interactive_shell || (find_last_pid (job, 0) != last_asynchronous_pid)))
+ jobs[job]->flags |= J_NOTIFIED;
+ continue;
+ }
+
+ /* Print info on jobs that are running in the background,
+ and on foreground jobs that were killed by anything
+ except SIGINT (and possibly SIGPIPE). */
+ switch (JOBSTATE (job))
+ {
+ case JDEAD:
+ if (interactive_shell == 0 && termsig && WIFSIGNALED (s) &&
+ termsig != SIGINT &&
+#if defined (DONT_REPORT_SIGTERM)
+ termsig != SIGTERM &&
+#endif
+#if defined (DONT_REPORT_SIGPIPE)
+ termsig != SIGPIPE &&
+#endif
+ signal_is_trapped (termsig) == 0)
+ {
+ /* Don't print `0' for a line number. */
+ fprintf (stderr, _("%s: line %d: "), get_name_for_error (), (line_number == 0) ? 1 : line_number);
+ pretty_print_job (job, JLIST_NONINTERACTIVE, stderr);
+ }
+ else if (IS_FOREGROUND (job))
+ {
+#if !defined (DONT_REPORT_SIGPIPE)
+ if (termsig && WIFSIGNALED (s) && termsig != SIGINT)
+#else
+ if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE)
+#endif
+ {
+ fprintf (stderr, "%s", j_strsignal (termsig));
+
+ if (WIFCORED (s))
+ fprintf (stderr, _(" (core dumped)"));
+
+ fprintf (stderr, "\n");
+ }
+ }
+ else if (job_control) /* XXX job control test added */
+ {
+ if (dir == 0)
+ dir = current_working_directory ();
+ pretty_print_job (job, JLIST_STANDARD, stderr);
+ if (dir && strcmp (dir, jobs[job]->wd) != 0)
+ fprintf (stderr,
+ _("(wd now: %s)\n"), polite_directory_format (dir));
+ }
+
+ jobs[job]->flags |= J_NOTIFIED;
+ break;
+
+ case JSTOPPED:
+ fprintf (stderr, "\n");
+ if (dir == 0)
+ dir = current_working_directory ();
+ pretty_print_job (job, JLIST_STANDARD, stderr);
+ if (dir && (strcmp (dir, jobs[job]->wd) != 0))
+ fprintf (stderr,
+ _("(wd now: %s)\n"), polite_directory_format (dir));
+ jobs[job]->flags |= J_NOTIFIED;
+ break;
+
+ case JRUNNING:
+ case JMIXED:
+ break;
+
+ default:
+ programming_error ("notify_of_job_status");
+ }
+ }
+ }
+ if (old_ttou != 0)
+ sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+ else
+ queue_sigchld--;
+}
+
+/* Initialize the job control mechanism, and set up the tty stuff. */
+int
+initialize_job_control (force)
+ int force;
+{
+ pid_t t;
+ int t_errno;
+
+ t_errno = -1;
+ shell_pgrp = getpgid (0);
+
+ if (shell_pgrp == -1)
+ {
+ sys_error (_("initialize_job_control: getpgrp failed"));
+ exit (1);
+ }
+
+ /* We can only have job control if we are interactive unless we force it. */
+ if (interactive == 0 && force == 0)
+ {
+ job_control = 0;
+ original_pgrp = NO_PID;
+ shell_tty = fileno (stderr);
+ }
+ else
+ {
+ shell_tty = -1;
+
+ /* If forced_interactive is set, we skip the normal check that stderr
+ is attached to a tty, so we need to check here. If it's not, we
+ need to see whether we have a controlling tty by opening /dev/tty,
+ since trying to use job control tty pgrp manipulations on a non-tty
+ is going to fail. */
+ if (forced_interactive && isatty (fileno (stderr)) == 0)
+ shell_tty = open ("/dev/tty", O_RDWR|O_NONBLOCK);
+
+ /* Get our controlling terminal. If job_control is set, or
+ interactive is set, then this is an interactive shell no
+ matter where fd 2 is directed. */
+ if (shell_tty == -1)
+ shell_tty = dup (fileno (stderr)); /* fd 2 */
+
+ if (shell_tty != -1)
+ shell_tty = move_to_high_fd (shell_tty, 1, -1);
+
+ /* Compensate for a bug in systems that compiled the BSD
+ rlogind with DEBUG defined, like NeXT and Alliant. */
+ if (shell_pgrp == 0)
+ {
+ shell_pgrp = getpid ();
+ setpgid (0, shell_pgrp);
+ tcsetpgrp (shell_tty, shell_pgrp);
+ }
+
+ while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1)
+ {
+ if (shell_pgrp != terminal_pgrp)
+ {
+ SigHandler *ottin;
+
+itrace("initialize_job_control: shell_pgrp (%d) != terminal_pgrp (%d)", shell_pgrp, terminal_pgrp);
+ ottin = set_signal_handler(SIGTTIN, SIG_DFL);
+ kill (0, SIGTTIN);
+ set_signal_handler (SIGTTIN, ottin);
+ continue;
+ }
+ break;
+ }
+
+ if (terminal_pgrp == -1)
+ t_errno = errno;
+
+ /* Make sure that we are using the new line discipline. */
+ if (set_new_line_discipline (shell_tty) < 0)
+ {
+ sys_error (_("initialize_job_control: line discipline"));
+ job_control = 0;
+ }
+ else
+ {
+ original_pgrp = shell_pgrp;
+ shell_pgrp = getpid ();
+
+ if ((original_pgrp != shell_pgrp) && (setpgid (0, shell_pgrp) < 0))
+ {
+ sys_error (_("initialize_job_control: setpgid"));
+ shell_pgrp = original_pgrp;
+ }
+
+ job_control = 1;
+
+ /* If (and only if) we just set our process group to our pid,
+ thereby becoming a process group leader, and the terminal
+ is not in the same process group as our (new) process group,
+ then set the terminal's process group to our (new) process
+ group. If that fails, set our process group back to what it
+ was originally (so we can still read from the terminal) and
+ turn off job control. */
+ if (shell_pgrp != original_pgrp && shell_pgrp != terminal_pgrp)
+ {
+ if (give_terminal_to (shell_pgrp, 0) < 0)
+ {
+ t_errno = errno;
+ setpgid (0, original_pgrp);
+ shell_pgrp = original_pgrp;
+ errno = t_errno;
+ sys_error (_("cannot set terminal process group (%d)"), shell_pgrp);
+ job_control = 0;
+ }
+ }
+
+ if (job_control && ((t = tcgetpgrp (shell_tty)) == -1 || t != shell_pgrp))
+ {
+ if (t_errno != -1)
+ errno = t_errno;
+ sys_error (_("cannot set terminal process group (%d)"), t);
+ job_control = 0;
+ }
+ }
+ if (job_control == 0)
+ internal_error (_("no job control in this shell"));
+ }
+
+ if (shell_tty != fileno (stderr))
+ SET_CLOSE_ON_EXEC (shell_tty);
+
+ set_signal_handler (SIGCHLD, sigchld_handler);
+
+ change_flag ('m', job_control ? '-' : '+');
+
+ if (interactive)
+ get_tty_state ();
+
+ if (js.c_childmax < 0)
+ js.c_childmax = getmaxchild ();
+ if (js.c_childmax < 0)
+ js.c_childmax = DEFAULT_CHILD_MAX;
+
+ return job_control;
+}
+
+#ifdef DEBUG
+void
+debug_print_pgrps ()
+{
+ itrace("original_pgrp = %ld shell_pgrp = %ld terminal_pgrp = %ld",
+ (long)original_pgrp, (long)shell_pgrp, (long)terminal_pgrp);
+ itrace("tcgetpgrp(%d) -> %ld, getpgid(0) -> %ld",
+ shell_tty, (long)tcgetpgrp (shell_tty), (long)getpgid(0));
+}
+#endif
+
+/* Set the line discipline to the best this system has to offer.
+ Return -1 if this is not possible. */
+static int
+set_new_line_discipline (tty)
+ int tty;
+{
+#if defined (NEW_TTY_DRIVER)
+ int ldisc;
+
+ if (ioctl (tty, TIOCGETD, &ldisc) < 0)
+ return (-1);
+
+ if (ldisc != NTTYDISC)
+ {
+ ldisc = NTTYDISC;
+
+ if (ioctl (tty, TIOCSETD, &ldisc) < 0)
+ return (-1);
+ }
+ return (0);
+#endif /* NEW_TTY_DRIVER */
+
+#if defined (TERMIO_TTY_DRIVER)
+# if defined (TERMIO_LDISC) && (NTTYDISC)
+ if (ioctl (tty, TCGETA, &shell_tty_info) < 0)
+ return (-1);
+
+ if (shell_tty_info.c_line != NTTYDISC)
+ {
+ shell_tty_info.c_line = NTTYDISC;
+ if (ioctl (tty, TCSETAW, &shell_tty_info) < 0)
+ return (-1);
+ }
+# endif /* TERMIO_LDISC && NTTYDISC */
+ return (0);
+#endif /* TERMIO_TTY_DRIVER */
+
+#if defined (TERMIOS_TTY_DRIVER)
+# if defined (TERMIOS_LDISC) && defined (NTTYDISC)
+ if (tcgetattr (tty, &shell_tty_info) < 0)
+ return (-1);
+
+ if (shell_tty_info.c_line != NTTYDISC)
+ {
+ shell_tty_info.c_line = NTTYDISC;
+ if (tcsetattr (tty, TCSADRAIN, &shell_tty_info) < 0)
+ return (-1);
+ }
+# endif /* TERMIOS_LDISC && NTTYDISC */
+ return (0);
+#endif /* TERMIOS_TTY_DRIVER */
+
+#if !defined (NEW_TTY_DRIVER) && !defined (TERMIO_TTY_DRIVER) && !defined (TERMIOS_TTY_DRIVER)
+ return (-1);
+#endif
+}
+
+/* Setup this shell to handle C-C, etc. */
+void
+initialize_job_signals ()
+{
+ if (interactive)
+ {
+ set_signal_handler (SIGINT, sigint_sighandler);
+ set_signal_handler (SIGTSTP, SIG_IGN);
+ set_signal_handler (SIGTTOU, SIG_IGN);
+ set_signal_handler (SIGTTIN, SIG_IGN);
+ }
+ else if (job_control)
+ {
+ old_tstp = set_signal_handler (SIGTSTP, sigstop_sighandler);
+ old_ttin = set_signal_handler (SIGTTIN, sigstop_sighandler);
+ old_ttou = set_signal_handler (SIGTTOU, sigstop_sighandler);
+ }
+ /* Leave these things alone for non-interactive shells without job
+ control. */
+}
+
+/* Here we handle CONT signals. */
+static sighandler
+sigcont_sighandler (sig)
+ int sig;
+{
+ initialize_job_signals ();
+ set_signal_handler (SIGCONT, old_cont);
+ kill (getpid (), SIGCONT);
+
+ SIGRETURN (0);
+}
+
+/* Here we handle stop signals while we are running not as a login shell. */
+static sighandler
+sigstop_sighandler (sig)
+ int sig;
+{
+ set_signal_handler (SIGTSTP, old_tstp);
+ set_signal_handler (SIGTTOU, old_ttou);
+ set_signal_handler (SIGTTIN, old_ttin);
+
+ old_cont = set_signal_handler (SIGCONT, sigcont_sighandler);
+
+ give_terminal_to (shell_pgrp, 0);
+
+ kill (getpid (), sig);
+
+ SIGRETURN (0);
+}
+
+/* Give the terminal to PGRP. */
+int
+give_terminal_to (pgrp, force)
+ pid_t pgrp;
+ int force;
+{
+ sigset_t set, oset;
+ int r, e;
+
+ r = 0;
+ if (job_control || force)
+ {
+ sigemptyset (&set);
+ sigaddset (&set, SIGTTOU);
+ sigaddset (&set, SIGTTIN);
+ sigaddset (&set, SIGTSTP);
+ sigaddset (&set, SIGCHLD);
+ sigemptyset (&oset);
+ sigprocmask (SIG_BLOCK, &set, &oset);
+
+ if (tcsetpgrp (shell_tty, pgrp) < 0)
+ {
+ /* Maybe we should print an error message? */
+#if 0
+ sys_error ("tcsetpgrp(%d) failed: pid %ld to pgrp %ld",
+ shell_tty, (long)getpid(), (long)pgrp);
+#endif
+ r = -1;
+ e = errno;
+ }
+ else
+ terminal_pgrp = pgrp;
+ sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+ }
+
+ if (r == -1)
+ errno = e;
+
+ return r;
+}
+
+/* Give terminal to NPGRP iff it's currently owned by OPGRP. FLAGS are the
+ flags to pass to give_terminal_to(). */
+static int
+maybe_give_terminal_to (opgrp, npgrp, flags)
+ pid_t opgrp, npgrp;
+ int flags;
+{
+ int tpgrp;
+
+ tpgrp = tcgetpgrp (shell_tty);
+ if (tpgrp < 0 && errno == ENOTTY)
+ return -1;
+ if (tpgrp == npgrp)
+ {
+ terminal_pgrp = npgrp;
+ return 0;
+ }
+ else if (tpgrp != opgrp)
+ {
+#if defined (DEBUG)
+ internal_warning ("maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d", tpgrp, opgrp, npgrp);
+#endif
+ return -1;
+ }
+ else
+ return (give_terminal_to (npgrp, flags));
+}
+
+/* Clear out any jobs in the job array. This is intended to be used by
+ children of the shell, who should not have any job structures as baggage
+ when they start executing (forking subshells for parenthesized execution
+ and functions with pipes are the two that spring to mind). If RUNNING_ONLY
+ is nonzero, only running jobs are removed from the table. */
+void
+delete_all_jobs (running_only)
+ int running_only;
+{
+ register int i;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+
+ /* XXX - need to set j_lastj, j_firstj appropriately if running_only != 0. */
+ if (js.j_jobslots)
+ {
+ js.j_current = js.j_previous = NO_JOB;
+
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i))))
+ delete_job (i, DEL_WARNSTOPPED);
+ }
+ if (running_only == 0)
+ {
+ free ((char *)jobs);
+ js.j_jobslots = 0;
+ js.j_firstj = js.j_lastj = js.j_njobs = 0;
+ }
+ }
+
+ if (running_only == 0)
+ bgp_clear ();
+
+ UNBLOCK_CHILD (oset);
+}
+
+/* Mark all jobs in the job array so that they don't get a SIGHUP when the
+ shell gets one. If RUNNING_ONLY is nonzero, mark only running jobs. */
+void
+nohup_all_jobs (running_only)
+ int running_only;
+{
+ register int i;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+
+ if (js.j_jobslots)
+ {
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i))))
+ nohup_job (i);
+ }
+
+ UNBLOCK_CHILD (oset);
+}
+
+int
+count_all_jobs ()
+{
+ int i, n;
+ sigset_t set, oset;
+
+ /* This really counts all non-dead jobs. */
+ BLOCK_CHILD (set, oset);
+ /* XXX could use js.j_firstj here */
+ for (i = n = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ if (jobs[i] && DEADJOB(i) == 0)
+ n++;
+ }
+ UNBLOCK_CHILD (oset);
+ return n;
+}
+
+static void
+mark_all_jobs_as_dead ()
+{
+ register int i;
+ sigset_t set, oset;
+
+ if (js.j_jobslots == 0)
+ return;
+
+ BLOCK_CHILD (set, oset);
+
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ if (jobs[i])
+ {
+ jobs[i]->state = JDEAD;
+ js.j_ndead++;
+ }
+
+ UNBLOCK_CHILD (oset);
+}
+
+/* Mark all dead jobs as notified, so delete_job () cleans them out
+ of the job table properly. POSIX.2 says we need to save the
+ status of the last CHILD_MAX jobs, so we count the number of dead
+ jobs and mark only enough as notified to save CHILD_MAX statuses. */
+static void
+mark_dead_jobs_as_notified (force)
+ int force;
+{
+ register int i, ndead, ndeadproc;
+ sigset_t set, oset;
+
+ if (js.j_jobslots == 0)
+ return;
+
+ BLOCK_CHILD (set, oset);
+
+ /* If FORCE is non-zero, we don't have to keep CHILD_MAX statuses
+ around; just run through the array. */
+ if (force)
+ {
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+ if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid)))
+ jobs[i]->flags |= J_NOTIFIED;
+ }
+ UNBLOCK_CHILD (oset);
+ return;
+ }
+
+ /* Mark enough dead jobs as notified to keep CHILD_MAX processes left in the
+ array with the corresponding not marked as notified. This is a better
+ way to avoid pid aliasing and reuse problems than keeping the POSIX-
+ mandated CHILD_MAX jobs around. delete_job() takes care of keeping the
+ bgpids list regulated. */
+
+ /* Count the number of dead jobs */
+ /* XXX could use js.j_firstj here */
+ for (i = ndead = ndeadproc = 0; i < js.j_jobslots; i++)
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ if (jobs[i] && DEADJOB (i))
+ {
+ ndead++;
+ ndeadproc += processes_in_job (i);
+ }
+ }
+
+#ifdef DEBUG
+# if 0
+ if (ndeadproc != js.c_reaped)
+ itrace("mark_dead_jobs_as_notified: ndeadproc (%d) != js.c_reaped (%d)", ndeadproc, js.c_reaped);
+# endif
+ if (ndead != js.j_ndead)
+ itrace("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead);
+#endif
+
+ if (js.c_childmax < 0)
+ js.c_childmax = getmaxchild ();
+ if (js.c_childmax < 0)
+ js.c_childmax = DEFAULT_CHILD_MAX;
+
+ /* Don't do anything if the number of dead processes is less than CHILD_MAX
+ and we're not forcing a cleanup. */
+ if (ndeadproc <= js.c_childmax)
+ {
+ UNBLOCK_CHILD (oset);
+ return;
+ }
+
+#if 0
+itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", js.c_childmax, ndead, ndeadproc);
+#endif
+
+ /* Mark enough dead jobs as notified that we keep CHILD_MAX jobs in
+ the list. This isn't exactly right yet; changes need to be made
+ to stop_pipeline so we don't mark the newer jobs after we've
+ created CHILD_MAX slots in the jobs array. This needs to be
+ integrated with a way to keep the jobs array from growing without
+ bound. Maybe we wrap back around to 0 after we reach some max
+ limit, and there are sufficient job slots free (keep track of total
+ size of jobs array (js.j_jobslots) and running count of number of jobs
+ in jobs array. Then keep a job index corresponding to the `oldest job'
+ and start this loop there, wrapping around as necessary. In effect,
+ we turn the list into a circular buffer. */
+ /* XXX could use js.j_firstj here */
+ for (i = 0; i < js.j_jobslots; i++)
+ {
+ if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid)))
+ {
+#if defined (DEBUG)
+ if (i < js.j_firstj && jobs[i])
+ itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ if (i > js.j_lastj && jobs[i])
+ itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
+#endif
+ /* If marking this job as notified would drop us down below
+ child_max, don't mark it so we can keep at least child_max
+ statuses. XXX -- need to check what Posix actually says
+ about keeping statuses. */
+ if ((ndeadproc -= processes_in_job (i)) <= js.c_childmax)
+ break;
+ jobs[i]->flags |= J_NOTIFIED;
+ }
+ }
+
+ UNBLOCK_CHILD (oset);
+}
+
+/* Here to allow other parts of the shell (like the trap stuff) to
+ freeze and unfreeze the jobs list. */
+void
+freeze_jobs_list ()
+{
+ jobs_list_frozen = 1;
+}
+
+void
+unfreeze_jobs_list ()
+{
+ jobs_list_frozen = 0;
+}
+
+/* Allow or disallow job control to take place. Returns the old value
+ of job_control. */
+int
+set_job_control (arg)
+ int arg;
+{
+ int old;
+
+ old = job_control;
+ job_control = arg;
+
+ /* If we're turning on job control, reset pipeline_pgrp so make_child will
+ put new child processes into the right pgrp */
+ if (job_control != old && job_control)
+ pipeline_pgrp = 0;
+
+ return (old);
+}
+
+/* Turn off all traces of job control. This is run by children of the shell
+ which are going to do shellsy things, like wait (), etc. */
+void
+without_job_control ()
+{
+ stop_making_children ();
+ start_pipeline ();
+#if defined (PGRP_PIPE)
+ sh_closepipe (pgrp_pipe);
+#endif
+ delete_all_jobs (0);
+ set_job_control (0);
+}
+
+/* If this shell is interactive, terminate all stopped jobs and
+ restore the original terminal process group. This is done
+ before the `exec' builtin calls shell_execve. */
+void
+end_job_control ()
+{
+ if (interactive_shell || job_control) /* XXX - should it be just job_control? */
+ {
+ terminate_stopped_jobs ();
+
+ if (original_pgrp >= 0)
+ give_terminal_to (original_pgrp, 1);
+ }
+
+ if (original_pgrp >= 0)
+ setpgid (0, original_pgrp);
+}
+
+/* Restart job control by closing shell tty and reinitializing. This is
+ called after an exec fails in an interactive shell and we do not exit. */
+void
+restart_job_control ()
+{
+ if (shell_tty != -1)
+ close (shell_tty);
+ initialize_job_control (0);
+}
+
+void
+set_maxchild (nchild)
+ int nchild;
+{
+ static int lmaxchild = -1;
+
+ if (lmaxchild < 0)
+ lmaxchild = getmaxchild ();
+ if (lmaxchild < 0)
+ lmaxchild = DEFAULT_CHILD_MAX;
+
+ /* Clamp value we set. Minimum is what Posix requires, maximum is defined
+ above as MAX_CHILD_MAX. */
+ if (nchild < lmaxchild)
+ nchild = lmaxchild;
+ else if (nchild > MAX_CHILD_MAX)
+ nchild = MAX_CHILD_MAX;
+
+ js.c_childmax = nchild;
+}
+
+/* Set the handler to run when the shell receives a SIGCHLD signal. */
+void
+set_sigchld_handler ()
+{
+ set_signal_handler (SIGCHLD, sigchld_handler);
+}
+
+#if defined (PGRP_PIPE)
+/* Read from the read end of a pipe. This is how the process group leader
+ blocks until all of the processes in a pipeline have been made. */
+static void
+pipe_read (pp)
+ int *pp;
+{
+ char ch;
+
+ if (pp[1] >= 0)
+ {
+ close (pp[1]);
+ pp[1] = -1;
+ }
+
+ if (pp[0] >= 0)
+ {
+ while (read (pp[0], &ch, 1) == -1 && errno == EINTR)
+ ;
+ }
+}
+
+/* Functional interface closes our local-to-job-control pipes. */
+void
+close_pgrp_pipe ()
+{
+ sh_closepipe (pgrp_pipe);
+}
+
+void
+save_pgrp_pipe (p, clear)
+ int *p;
+ int clear;
+{
+ p[0] = pgrp_pipe[0];
+ p[1] = pgrp_pipe[1];
+ if (clear)
+ pgrp_pipe[0] = pgrp_pipe[1] = -1;
+}
+
+void
+restore_pgrp_pipe (p)
+ int *p;
+{
+ pgrp_pipe[0] = p[0];
+ pgrp_pipe[1] = p[1];
+}
+
+#endif /* PGRP_PIPE */
diff --git a/po/pl.po b/po/pl.po
index 8e5b18bf..d539b36c 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,16 +8,15 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.3-rc2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-02-11 11:19-0500\n"
-"PO-Revision-Date: 2014-01-30 20:40+0100\n"
+"POT-Creation-Date: 2014-01-23 16:04-0500\n"
+"PO-Revision-Date: 2014-02-27 04:02+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: arrayfunc.c:51
msgid "bad array subscript"
@@ -49,22 +48,21 @@ msgid "%s: cannot create: %s"
msgstr "%s: nie można utworzyć: %s"
# ???
-#: bashline.c:3982
+#: bashline.c:3971
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-"bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia"
+msgstr "bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia"
-#: bashline.c:4069
+#: bashline.c:4058
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'"
-#: bashline.c:4098
+#: bashline.c:4087
#, c-format
msgid "no closing `%c' in %s"
msgstr "brak zamykajÄ…cego `%c' w %s"
-#: bashline.c:4132
+#: bashline.c:4121
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: brak separujÄ…cego dwukropka"
@@ -77,9 +75,7 @@ msgstr "rozwijanie nawiasów: nie można przydzielić pamięci dla %s"
#: braces.c:413
#, c-format
msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr ""
-"rozwijanie nawiasów: nie udało się przydzielić pamięci dla elementów w "
-"liczbie %d"
+msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla elementów w liczbie %d"
#: braces.c:452
#, c-format
@@ -149,7 +145,7 @@ msgstr ""
msgid "HOME not set"
msgstr "Nie ustawiono HOME"
-#: builtins/cd.def:327 builtins/common.c:166 test.c:876
+#: builtins/cd.def:327 builtins/common.c:166 test.c:855
msgid "too many arguments"
msgstr "za dużo argumentów"
@@ -197,7 +193,7 @@ msgstr "%s: nieprawidłowa opcja"
msgid "%s: invalid option name"
msgstr "%s: nieprawidłowa nazwa opcji"
-#: builtins/common.c:228 general.c:235 general.c:240
+#: builtins/common.c:228 general.c:234 general.c:239
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': nieprawidłowy identyfikator"
@@ -337,7 +333,7 @@ msgstr "%s: zmienna referencyjna nie może wskazywać na siebie"
msgid "cannot use `-f' to make functions"
msgstr "nie można używać `-f' do tworzenia funkcji"
-#: builtins/declare.def:410 execute_cmd.c:5361
+#: builtins/declare.def:410 execute_cmd.c:5349
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkcja tylko do odczytu"
@@ -376,7 +372,7 @@ msgstr "%s: nie jest Å‚adowany dynamicznie"
msgid "%s: cannot delete: %s"
msgstr "%s: nie można usunąć: %s"
-#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208
+#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5196
#: shell.c:1481
#, c-format
msgid "%s: is a directory"
@@ -477,8 +473,7 @@ msgstr[2] "Polecenia powłoki pasujące do słów kluczowych `"
#: builtins/help.def:182
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
"żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n"
"lub `info %s'."
@@ -503,8 +498,7 @@ msgstr ""
"zobaczyć listę.\n"
"Napisz `help nazwa', aby otrzymać więcej informacji o funkcji `nazwa'.\n"
"Użyj `info bash', aby otrzymać więcej informacji ogólnych o powłoce.\n"
-"Użyj `man -k' lub `info', aby otrzymać więcej informacji o poleceniach z "
-"tej\n"
+"Użyj `man -k' lub `info', aby otrzymać więcej informacji o poleceniach z tej\n"
"listy.\n"
"\n"
"Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n"
@@ -653,12 +647,10 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Wypisanie listy aktualnie pamiętanych katalogów. Katalogi umieszczane są\n"
@@ -666,8 +658,7 @@ msgstr ""
" za pomocÄ… polecenia `popd'.\n"
" \n"
" Opcje:\n"
-" -c\twyczyszczenie stosu katalogów poprzez usunięcie wszystkich "
-"elementów\n"
+" -c\twyczyszczenie stosu katalogów poprzez usunięcie wszystkich elementów\n"
" -l\tniewypisywanie katalogów względem kat. domowego użytkownika\n"
" \tw postaci skróconej z tyldą\n"
" -p\twypisanie stosu katalogów po jednym wpisie w linii\n"
@@ -954,42 +945,42 @@ msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący"
msgid "pipe error"
msgstr "błąd potoku"
-#: execute_cmd.c:4386
+#: execute_cmd.c:4374
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)"
-#: execute_cmd.c:4884
+#: execute_cmd.c:4872
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń"
-#: execute_cmd.c:4973
+#: execute_cmd.c:4961
#, c-format
msgid "%s: command not found"
msgstr "%s: nie znaleziono polecenia"
-#: execute_cmd.c:5206
+#: execute_cmd.c:5194
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5243
+#: execute_cmd.c:5231
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: zły interpreter"
-#: execute_cmd.c:5280
+#: execute_cmd.c:5268
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: nie można uruchomić pliku binarnego: %s"
-#: execute_cmd.c:5352
+#: execute_cmd.c:5340
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s' jest specjalnym poleceniem wewnętrznym"
-#: execute_cmd.c:5404
+#: execute_cmd.c:5392
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nie można skopiować deskryptora pliku %d do %d"
@@ -1029,8 +1020,7 @@ msgstr "wykładnik mniejszy niż 0"
#: expr.c:976
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-"spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji"
+msgstr "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji"
#: expr.c:1002
msgid "missing `)'"
@@ -1062,7 +1052,7 @@ msgstr "wartość za duża na podstawę"
msgid "%s: expression error\n"
msgstr "%s: błąd w wyrażeniu\n"
-#: general.c:62
+#: general.c:61
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych"
@@ -1071,12 +1061,12 @@ msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych"
msgid "cannot reset nodelay mode for fd %d"
msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d"
-#: input.c:271
+#: input.c:269
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
msgstr "nie można przydzielić nowego deskryptora pliku dla wejścia basha z %d"
-#: input.c:279
+#: input.c:277
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje"
@@ -1189,8 +1179,7 @@ msgstr "%s: zadanie %d już pracuje w tle"
#: jobs.c:3220
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
-"waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania"
+msgstr "waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania"
#: jobs.c:3711
#, c-format
@@ -1371,107 +1360,106 @@ msgstr "make_here_document: zły rodzaj instrukcji %d"
#: make_cmd.c:662
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-"dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')"
+msgstr "dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')"
#: make_cmd.c:759
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem"
-#: parse.y:3278 parse.y:3561
+#: parse.y:3273 parse.y:3556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `%c'"
-#: parse.y:4170
+#: parse.y:4163
msgid "unexpected EOF while looking for `]]'"
msgstr "nieoczekiwany EOF podczas poszukiwania `]]'"
-#: parse.y:4175
+#: parse.y:4168
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "błąd składni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'"
-#: parse.y:4179
+#: parse.y:4172
msgid "syntax error in conditional expression"
msgstr "błąd składni w wyrażeniu warunkowym"
-#: parse.y:4257
+#: parse.y:4250
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'"
-#: parse.y:4261
+#: parse.y:4254
msgid "expected `)'"
msgstr "oczekiwano `)'"
-#: parse.y:4289
+#: parse.y:4282
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego"
-#: parse.y:4293
+#: parse.y:4286
msgid "unexpected argument to conditional unary operator"
msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego"
-#: parse.y:4339
+#: parse.y:4332
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego"
-#: parse.y:4343
+#: parse.y:4336
msgid "conditional binary operator expected"
msgstr "oczekiwano dwuargumentowego operatora warunkowego"
-#: parse.y:4365
+#: parse.y:4358
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego"
-#: parse.y:4369
+#: parse.y:4362
msgid "unexpected argument to conditional binary operator"
msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego"
-#: parse.y:4380
+#: parse.y:4373
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym"
-#: parse.y:4383
+#: parse.y:4376
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym"
-#: parse.y:4387
+#: parse.y:4380
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym"
-#: parse.y:5737
+#: parse.y:5730
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'"
-#: parse.y:5755
+#: parse.y:5748
#, c-format
msgid "syntax error near `%s'"
msgstr "błąd składni przy `%s'"
-#: parse.y:5765
+#: parse.y:5758
msgid "syntax error: unexpected end of file"
msgstr "błąd składni: nieoczekiwany koniec pliku"
-#: parse.y:5765
+#: parse.y:5758
msgid "syntax error"
msgstr "błąd składni"
-#: parse.y:5827
+#: parse.y:5820
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n"
-#: parse.y:5989
+#: parse.y:5982
msgid "unexpected EOF while looking for matching `)'"
msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `)'"
@@ -1597,9 +1585,7 @@ msgstr "\t-%s lub -o opcja\n"
#: shell.c:1856
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set"
-"\"'.\n"
+msgstr "Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set\"'.\n"
#: shell.c:1857
#, c-format
@@ -1858,12 +1844,8 @@ msgid "$%s: cannot assign in this way"
msgstr "$%s: nie można przypisywać w ten sposób"
#: subst.c:7917
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie "
-"arytmetyczne"
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie arytmetyczne"
#: subst.c:8421
#, c-format
@@ -1893,17 +1875,17 @@ msgstr "oczekiwano `)'"
msgid "`)' expected, found %s"
msgstr "oczekiwano `)', znaleziono %s"
-#: test.c:281 test.c:742 test.c:745
+#: test.c:281 test.c:721 test.c:724
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: oczekiwano operatora jednoargumentowego"
-#: test.c:468 test.c:785
+#: test.c:468 test.c:764
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oczekiwano operatora dwuargumentowego"
-#: test.c:860
+#: test.c:839
msgid "missing `]'"
msgstr "brakujÄ…cy `]'"
@@ -1918,11 +1900,8 @@ msgstr "run_pending_traps: zła wartość trap_list[%d]: %p"
#: trap.c:375
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d "
-"(%s) do siebie"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d (%s) do siebie"
#: trap.c:428
#, c-format
@@ -1982,8 +1961,7 @@ msgstr "pop_var_context: brak kontekstu global_variables"
#: variables.c:4431
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-"pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska"
+msgstr "pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska"
#: variables.c:5257
#, c-format
@@ -2005,12 +1983,8 @@ msgid "Copyright (C) 2013 Free Software Foundation, Inc."
msgstr "Copyright (C) 2013 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Licencja GPLv3+: GNU GPL wersja 3 lub późniejsza <http://gnu.org/licenses/"
-"gpl.html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Licencja GPLv3+: GNU GPL wersja 3 lub późniejsza <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2019,9 +1993,7 @@ msgstr "GNU bash, wersja %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
-"To oprogramowanie jest wolnodostępne; można je swobodnie zmieniać i "
-"rozpowszechniać."
+msgstr "To oprogramowanie jest wolnodostępne; można je swobodnie zmieniać i rozpowszechniać."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
@@ -2060,13 +2032,8 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] nazwa [nazwa ...]"
#: builtins.c:51
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpvsPVSX] [-m mapa] [-f plik] [-q nazwa] [-u nazwa] [-r sekwencja] [-"
-"x sekwencja:polecenie-powłoki] [sekwencja:funkcja-readline lub polecenie-"
-"readline]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpvsPVSX] [-m mapa] [-f plik] [-q nazwa] [-u nazwa] [-r sekwencja] [-x sekwencja:polecenie-powłoki] [sekwencja:funkcja-readline lub polecenie-readline]"
#: builtins.c:54
msgid "break [n]"
@@ -2154,8 +2121,7 @@ msgstr "logout [n]"
#: builtins.c:103
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr ""
-"fc [-e nazwa-ed] [-lnr] [pierwszy] [ostatni] lub fc -s [wz=zam] [polecenie]"
+msgstr "fc [-e nazwa-ed] [-lnr] [pierwszy] [ostatni] lub fc -s [wz=zam] [polecenie]"
#: builtins.c:107
msgid "fg [job_spec]"
@@ -2174,12 +2140,8 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [wzorzec ...]"
#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d offset] [n] lub history -anrw [plik] lub history -ps arg "
-"[arg ...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d offset] [n] lub history -anrw [plik] lub history -ps arg [arg ...]"
#: builtins.c:125
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2190,24 +2152,16 @@ msgid "disown [-h] [-ar] [jobspec ...]"
msgstr "disown [-h] [-ar] [zadanie ...]"
#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s sygnał | -n numer-sygnału | -sygnał] pid | zadanie ... lub kill -l "
-"[sygnał]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s sygnał | -n numer-sygnału | -sygnał] pid | zadanie ... lub kill -l [sygnał]"
#: builtins.c:134
msgid "let arg [arg ...]"
msgstr "let arg [arg ...]"
#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a tablica] [-d separator] [-i tekst] [-n liczba] [-N liczba] [-"
-"p zachęta] [-t czas] [-u fd] [nazwa ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a tablica] [-d separator] [-i tekst] [-n liczba] [-N liczba] [-p zachęta] [-t czas] [-u fd] [nazwa ...]"
#: builtins.c:138
msgid "return [n]"
@@ -2302,12 +2256,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case SÅOWO in [WZORZEC [| WZORZEC]...) POLECENIA ;;]... esac"
#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if POLECENIA; then POLECENIA; [ elif POLECENIA; then POLECENIA; ]... [ else "
-"POLECENIA; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if POLECENIA; then POLECENIA; [ elif POLECENIA; then POLECENIA; ]... [ else POLECENIA; ] fi"
#: builtins.c:194
msgid "while COMMANDS; do COMMANDS; done"
@@ -2366,43 +2316,24 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [argumenty]"
#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o opcja] [-A akcja] [-G wzorzec-glob] "
-"[-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P "
-"przedrostek] [-S przyrostek] [nazwa ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DE] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek] [-S przyrostek] [nazwa ...]"
#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-"
-"słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek ] [-S "
-"przyrostek] [słowo]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek ] [-S przyrostek] [słowo]"
#: builtins.c:237
msgid "compopt [-o|+o option] [-DE] [name ...]"
msgstr "compopt [-o|+o opcja] [-DE] [nazwa ...]"
#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"mapfile [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] [-"
-"c co-ile] [tablica]"
+msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] [-c co-ile] [tablica]"
#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"readarray [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] "
-"[-c co-ile] [tablica]"
+msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] [-c co-ile] [tablica]"
#: builtins.c:254
msgid ""
@@ -2419,8 +2350,7 @@ msgid ""
" -p\tPrint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
"Definiowanie i wyświetlanie aliasów.\n"
@@ -2428,10 +2358,8 @@ msgstr ""
" Bez argumentów `alias' wypisuje na standardowym wyjściu listę aliasów\n"
" w postaci alias NAZWA=WARTOŚĆ.\n"
" \n"
-" W przeciwnym przypadku definiowany jest alias dla każdej NAZWY, dla "
-"której\n"
-" podano WARTOŚĆ. Spacja na końcu WARTOŚCI powoduje, że podczas "
-"rozwijania\n"
+" W przeciwnym przypadku definiowany jest alias dla każdej NAZWY, dla której\n"
+" podano WARTOŚĆ. Spacja na końcu WARTOŚCI powoduje, że podczas rozwijania\n"
" tego aliasu podstawienie aliasów będzie przeprowadzone także dla\n"
" następnego słowa.\n"
" \n"
@@ -2471,24 +2399,20 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
@@ -2503,46 +2427,35 @@ msgstr ""
" \n"
" Przypisanie sekwencji klawiszy do funkcji Readline lub makra albo\n"
" ustawienie zmiennej Readline. Składnia pozbawiona opcji jest równoważna\n"
-" stosowanej w ~/.inputrc, ale musi być przekazana jako jeden argument, "
-"np.:\n"
+" stosowanej w ~/.inputrc, ale musi być przekazana jako jeden argument, np.:\n"
" bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
" \n"
" Opcje:\n"
" -m MAPA Użycie MAPY jako mapy klawiatury na czas tego\n"
-" polecenia. Dozwolone nazwy map klawiatury to "
-"emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" polecenia. Dozwolone nazwy map klawiatury to emacs,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command i vi-insert.\n"
" -l Wypisanie nazw funkcji.\n"
" -P Wypisanie nazw funkcji i dowiązań.\n"
-" -p Wypisanie funkcji i dowiązań w postaci nadającej "
-"siÄ™\n"
+" -p Wypisanie funkcji i dowiązań w postaci nadającej się\n"
" do użycia jako dane wejściowe.\n"
-" -S Wypisanie sekwencji klawiszy wywołujących makra "
-"oraz\n"
+" -S Wypisanie sekwencji klawiszy wywołujących makra oraz\n"
" ich wartości.\n"
-" -s Wypisanie sekwencji klawiszy wywołujących makra "
-"oraz\n"
-" ich wartości w postaci nadającej się do użycia "
-"jako\n"
+" -s Wypisanie sekwencji klawiszy wywołujących makra oraz\n"
+" ich wartości w postaci nadającej się do użycia jako\n"
" dane wejściowe.\n"
" -V Wypisanie nazw zmiennych i ich wartości.\n"
" -v Wypisanie nazw zmiennych i ich wartości w postaci\n"
" nadającej się do użycia jako dane wejściowe.\n"
-" -q nazwa-funkcji Określenie, które klawisze wywołują zadaną "
-"funkcjÄ™.\n"
+" -q nazwa-funkcji Określenie, które klawisze wywołują zadaną funkcję.\n"
" -u nazwa-funkcji Anulowanie wszystkich dowiązań dla klawiszy\n"
" przypisanych do funkcji o podanej nazwie.\n"
" -r sekwencja Usunięcie dowiązania dla SEKWENCJI klawiszy.\n"
" -f plik Odczyt dowiązań dla klawiszy z podanego PLIKU.\n"
-" -x sekwencja:polecenie-powłoki\tPowoduje uruchomienie POLECENIA-"
-"POWÅOKI\n"
+" -x sekwencja:polecenie-powÅ‚oki\tPowoduje uruchomienie POLECENIA-POWÅOKI\n"
" \t\t\t\tgdy wprowadzona zostanie podana SEKWENCJA klawiszy.\n"
-" -X Lista sekwencji klawiszy przypisanych przez -x "
-"oraz\n"
-" powiÄ…zane polecenia w postaci nadajÄ…cej siÄ™ do "
-"użycia\n"
+" -X Lista sekwencji klawiszy przypisanych przez -x oraz\n"
+" powiązane polecenia w postaci nadającej się do użycia\n"
" jako dane wejściowe.\n"
" \n"
" Stan wyjściowy:\n"
@@ -2560,8 +2473,7 @@ msgid ""
msgstr ""
"Wyjście z pętli for, while lub until.\n"
" \n"
-" Wyjście z pętli FOR, WHILE lub UNTIL. Jeśli podano N, sterowanie "
-"wychodzi\n"
+" Wyjście z pętli FOR, WHILE lub UNTIL. Jeśli podano N, sterowanie wychodzi\n"
" za N-tą zagnieżdżoną pętlę.\n"
" \n"
" Stan wyjściowy:\n"
@@ -2591,8 +2503,7 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2602,8 +2513,7 @@ msgstr ""
" \n"
" Wywołanie POLECENIA-WBUDOWANEGO z argumentami ARG bez wykonywania\n"
" wyszukiwania polecenia. Jest to przydatne w przypadku ponownego\n"
-" implementowania polecenia wbudowanego jako funkcji powłoki i "
-"wywoływania\n"
+" implementowania polecenia wbudowanego jako funkcji powłoki i wywoływania\n"
" polecenia wbudowanego z wewnÄ…trz tej funkcji.\n"
" \n"
" Stan wyjściowy:\n"
@@ -2627,10 +2537,8 @@ msgid ""
msgstr ""
"Zwrócenie kontekstu wywołania bieżącej procedury.\n"
" \n"
-" Bez WYRAŻENIA zwracane jest \"$linia $plik\". Z WYRAŻENIEM zwracane "
-"jest\n"
-" \"$linia $procedura $plik\"; dodatkowe informacje służą do "
-"udostępnienia\n"
+" Bez WYRAŻENIA zwracane jest \"$linia $plik\". Z WYRAŻENIEM zwracane jest\n"
+" \"$linia $procedura $plik\"; dodatkowe informacje służą do udostępnienia\n"
" śladu stosu.\n"
" \n"
" Wartość WYRAŻENIA określa o ile ramek wywołań względem bieżącej ramki\n"
@@ -2644,22 +2552,16 @@ msgstr ""
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2670,18 +2572,15 @@ msgid ""
" \tof `..'\n"
" -e\tif the -P option is supplied, and the current working directory\n"
" \tcannot be determined successfully, exit with a non-zero status\n"
-" -@ on systems that support it, present a file with extended "
-"attributes\n"
+" -@ on systems that support it, present a file with extended attributes\n"
" as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Zmiana bieżącego katalogu powłoki.\n"
@@ -2690,15 +2589,13 @@ msgstr ""
" zmiennej powłoki HOME.\n"
" \n"
" Zmienna CDPATH określa ścieżkę przeszukiwania w poszukiwaniu katalogu\n"
-" zawierającego KATALOG. Alternatywne nazwy katalogów są w CDPATH "
-"rozdzielone\n"
+" zawierającego KATALOG. Alternatywne nazwy katalogów są w CDPATH rozdzielone\n"
" dwukropkami (:). Pusta nazwa katalogu oznacza to samo, co katalog\n"
" bieżący. Jeśli KATALOG zaczyna się od ukośnika (/), to CDPATH nie\n"
" nie jest używane.\n"
" \n"
" Gdy katalog nie zostanie znaleziony, a ustawiona jest zmienna powłoki\n"
-" `cdable_vars', to następuje próba użycia podanej nazwy jako nazwy "
-"zmiennej.\n"
+" `cdable_vars', to następuje próba użycia podanej nazwy jako nazwy zmiennej.\n"
" Jeśli zmienna ta ma wartość, to jako KATALOG jest używana jej wartość.\n"
" \n"
" Opcje:\n"
@@ -2793,8 +2690,7 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2809,8 +2705,7 @@ msgstr ""
"Wywołanie prostego polecenia lub wyświetlenie informacji o poleceniach.\n"
" \n"
" Uruchomienie POLECENIA z ARGUMENTAMI z pominięciem wyszukiwania funkcji\n"
-" powłoki lub wyświetlenie informacji o podanych POLECENIACH. Może być "
-"użyte\n"
+" powłoki lub wyświetlenie informacji o podanych POLECENIACH. Może być użyte\n"
" do wywołania poleceń z dysku jeśli już istnieje funkcja o danej nazwie.\n"
" \n"
" Opcje:\n"
@@ -2854,8 +2749,7 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -2880,8 +2774,7 @@ msgstr ""
" -A\tczyni NAZWĘ tablicą asocjacyjną (jeśli są one obsługiwane)\n"
" -i\tnadaje NAZWIE atrybut `integer' (zmiennej całkowitej)\n"
" -l\tprzekształca NAZWĘ na małe litery przy przypisaniu\n"
-" -n\tczyni NAZWĘ odwołaniem do zmiennej o nazwie wskazanej przez "
-"wartość\n"
+" -n\tczyni NAZWĘ odwołaniem do zmiennej o nazwie wskazanej przez wartość\n"
" -r\tczyni NAZWĘ tylko do odczytu\n"
" -t\tnadaje NAZWIE atrybut `trace'\n"
" -u\tprzekształca NAZWĘ na wielkie litery przy przypisaniu\n"
@@ -2938,8 +2831,7 @@ msgstr ""
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -2969,8 +2861,7 @@ msgid ""
msgstr ""
"Wypisanie argumentów na standardowym wyjściu.\n"
" \n"
-" Wypisanie na standardowym wyjściu argumentów ARG oddzielonych "
-"pojedynczymi\n"
+" Wypisanie na standardowym wyjściu argumentów ARG oddzielonych pojedynczymi\n"
" spacjami oraz znaku końca linii.\n"
" \n"
" Opcje:\n"
@@ -3055,16 +2946,13 @@ msgstr ""
" wbudowane bez używania pełnej ścieżki.\n"
" \n"
" Opcje:\n"
-" -a\twypisanie listy poleceń wbudowanych z informacją, które są "
-"włączone\n"
+" -a\twypisanie listy poleceń wbudowanych z informacją, które są włączone\n"
" -n\twyłączenie każdej NAZWY lub wypisanie listy wyłączonych poleceń\n"
" -p\twypisanie listy poleceń w formacie do ponownego użycia\n"
-" -s\twypisanie tylko nazw posiksowych \"specjalnych\" poleceń "
-"wbudowanych\n"
+" -s\twypisanie tylko nazw posiksowych \"specjalnych\" poleceń wbudowanych\n"
" \n"
" Opcje sterujÄ…ce dynamicznym Å‚adowaniem:\n"
-" -f\tWczytanie polecenia wbudowanego NAZWA z obiektu współdzielonego "
-"PLIK\n"
+" -f\tWczytanie polecenia wbudowanego NAZWA z obiektu współdzielonego PLIK\n"
" -d\tUsunięcie polecenia wczytanego przez -f\n"
" \n"
" Bez opcji włączana jest każda NAZWA.\n"
@@ -3080,8 +2968,7 @@ msgstr ""
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3138,16 +3025,14 @@ msgid ""
msgstr ""
"Analiza opcji z argumentów.\n"
" \n"
-" Polecenie getopts jest używane przez procedury powłoki przy "
-"analizowaniu\n"
+" Polecenie getopts jest używane przez procedury powłoki przy analizowaniu\n"
" parametrów pozycyjnych jako opcji.\n"
" \n"
" ÅAŃCUCH-OPCJI zawiera litery opcji, które majÄ… być rozpoznane; jeÅ›li po\n"
" literze następuje dwukropek, opcja wymaga argumentu, który powinien być\n"
" oddzielony od opcji spacjÄ….\n"
" \n"
-" Przy każdym wywołaniu getopts umieszcza następną opcję w zmiennej "
-"powłoki\n"
+" Przy każdym wywołaniu getopts umieszcza następną opcję w zmiennej powłoki\n"
" $nazwa, inicjując ją, jeśli nie istnieje; natomiast indeks następnego\n"
" argumentu do przetworzenia jest umieszczany w zmiennej powłoki OPTIND\n"
" OPTIND jest inicjowany wartością 1 przy każdym wywołaniu powłoki lub\n"
@@ -3156,30 +3041,24 @@ msgstr ""
" \n"
" getopts zgłasza błędy na jeden z dwóch sposobów. Jeśli pierwszy znak\n"
" ÅAŃCUCHA-OPCJI jest dwukropkiem, getopts wykorzystuje ciche zgÅ‚aszanie\n"
-" błędów. W tym trybie komunikaty błędów nie są wypisywane. Jeśli "
-"napotkana\n"
+" błędów. W tym trybie komunikaty błędów nie są wypisywane. Jeśli napotkana\n"
" zostanie błędna opcja, getopts umieszcza znak opcji w OPTARG. Jeśli\n"
-" nie znaleziono wymaganego argumentu, getopts umieszcza znak ':' w "
-"NAZWIE\n"
-" i ustawia OPTARG na napotkany znak opcji. Jeśli getopts nie jest w "
-"trybie\n"
+" nie znaleziono wymaganego argumentu, getopts umieszcza znak ':' w NAZWIE\n"
+" i ustawia OPTARG na napotkany znak opcji. Jeśli getopts nie jest w trybie\n"
" cichym i napotkana zostanie błędna opcja, getopts umieszcza znak '?'\n"
" w NAZWIE i anuluje OPTARG. Jeśli nie znaleziono wymaganego argumentu,\n"
" w NAZWIE umieszczany jest znak '?', OPTARG jest anulowany i wypisywany\n"
" jest komunikat diagnostyczny.\n"
" \n"
" Jeśli zmienna powłoki OPTERR ma wartość 0, getopts wyłącza wypisywanie\n"
-" komunikatów bÅ‚Ä™dów, nawet jeÅ›li pierwszym znakiem ÅAŃCUCHA-OPCJI nie "
-"jest\n"
+" komunikatów bÅ‚Ä™dów, nawet jeÅ›li pierwszym znakiem ÅAŃCUCHA-OPCJI nie jest\n"
" dwukropek. OPTERR domyślnie ma wartość 1.\n"
" \n"
-" Polecenie getopts normalnie przetwarza parametry pozycyjne ($0 - $9), "
-"ale\n"
+" Polecenie getopts normalnie przetwarza parametry pozycyjne ($0 - $9), ale\n"
" jeśli podano więcej argumentów, są one przetwarzane zamiast nich.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, jeśli napotkano opcję; fałsz, jeśli wystąpi "
-"koniec\n"
+" Zwracana jest prawda, jeśli napotkano opcję; fałsz, jeśli wystąpi koniec\n"
" opcji lub błąd."
#: builtins.c:685
@@ -3187,8 +3066,7 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3196,13 +3074,11 @@ msgid ""
" -c\t\texecute COMMAND with an empty environment\n"
" -l\t\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
"Zastąpienie powłoki podanym poleceniem.\n"
" \n"
@@ -3219,8 +3095,7 @@ msgstr ""
" chyba że ustawiona jest opcja powłoki `execfail'.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że nie uda się znaleźć POLECENIA lub "
-"wystÄ…pi\n"
+" Zwracana jest prawda, chyba że nie uda się znaleźć POLECENIA lub wystąpi\n"
" błąd przekierowania."
#: builtins.c:706
@@ -3239,8 +3114,7 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
"Opuszczenie powłoki logowania.\n"
@@ -3252,15 +3126,13 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3274,16 +3146,13 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
"Wyświetlanie lub wykonywanie poleceń z listy historii.\n"
" \n"
-" fc służy do wypisywania, edycji i ponownego uruchamiania poleceń z "
-"listy\n"
+" fc służy do wypisywania, edycji i ponownego uruchamiania poleceń z listy\n"
" historii. PIERWSZY i OSTATNI jako liczby określają zakres lub PIERWSZY\n"
-" jako napis oznacza najpóźniej wykonywane polecenie zaczynające się od "
-"tego\n"
+" jako napis oznacza najpóźniej wykonywane polecenie zaczynające się od tego\n"
" napisu.\n"
" \n"
" Opcje:\n"
@@ -3297,10 +3166,8 @@ msgstr ""
" Przy wywołaniu polecenia w postaci `fc -s [wz=zam ...] [polecenie]',\n"
" jest ono wywoływane ponownie po wykonaniu podstawienia WZ=ZAM.\n"
" \n"
-" Przydatnym aliasem korzystającym z tego jest r='fc -s' tak, że "
-"napisanie\n"
-" `r cc' uruchamia ostatnie polecenie zaczynajÄ…ce siÄ™ od `cc', a "
-"napisanie\n"
+" Przydatnym aliasem korzystającym z tego jest r='fc -s' tak, że napisanie\n"
+" `r cc' uruchamia ostatnie polecenie zaczynajÄ…ce siÄ™ od `cc', a napisanie\n"
" `r' uruchamia ponownie ostatnie polecenie.\n"
" \n"
" Stan wyjściowy:\n"
@@ -3332,10 +3199,8 @@ msgstr ""
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3356,8 +3221,7 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\t\tforget the remembered location of each NAME\n"
@@ -3413,14 +3277,12 @@ msgid ""
" PATTERN\tPattern specifiying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
"Wyświetlenie informacji o poleceniach wbudowanych.\n"
" \n"
" Wyświetlenie krótkiego przeglądu poleceń wbudowanych. Jeśli podano\n"
-" WZORZEC, wypisywany jest szczegółowy opis wszystkich poleceń pasujących "
-"do\n"
+" WZORZEC, wypisywany jest szczegółowy opis wszystkich poleceń pasujących do\n"
" WZORCA, w przeciwnym wypadku - lista tematów.\n"
" \n"
" Opcje:\n"
@@ -3463,8 +3325,7 @@ msgid ""
" \n"
" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3490,23 +3351,19 @@ msgstr ""
" -s\tdołączenie wszystkich ARG do listy historii jako pojedynczych\n"
" \twpisów\n"
" \n"
-" Jeśli podano PLIK, jest używany jako plik historii. W przeciwnym "
-"wypadku\n"
+" Jeśli podano PLIK, jest używany jako plik historii. W przeciwnym wypadku\n"
" używany jest $HISTFILE, a jeśli ta zmienna nie jest ustawiona -\n"
" ~/.bash_history.\n"
" \n"
-" Jeśli zmienna $HISTTIMEFORMAT jest ustawiona i niepusta, jej wartość "
-"jest\n"
+" Jeśli zmienna $HISTTIMEFORMAT jest ustawiona i niepusta, jej wartość jest\n"
" używana jako łańcuch formatujący dla strftime(3) do wypisywania momentu\n"
-" czasu powiązanego z każdym wypisywanym wpisem. W przeciwnym wypadku "
-"czas\n"
+" czasu powiązanego z każdym wypisywanym wpisem. W przeciwnym wypadku czas\n"
" nie jest wypisywany.\n"
" \n"
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
#: builtins.c:869
-#, fuzzy
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3515,7 +3372,7 @@ msgid ""
" \n"
" Options:\n"
" -l\tlists process IDs in addition to the normal information\n"
-" -n\tlists only processes that have changed status since the last\n"
+" -n\tlist only processes that have changed status since the last\n"
" \tnotification\n"
" -p\tlists process IDs only\n"
" -r\trestrict output to running jobs\n"
@@ -3531,8 +3388,7 @@ msgid ""
msgstr ""
"Wyświetlenie stanu zadań.\n"
" \n"
-" Wypisanie aktywnych zadań. ZADANIE ogranicza wyjście tylko do tego "
-"zadania.\n"
+" Wypisanie aktywnych zadań. ZADANIE ogranicza wyjście tylko do tego zadania.\n"
" Bez opcji wypisywany jest stan wszystkich aktywnych zadań.\n"
" \n"
" Opcje:\n"
@@ -3543,8 +3399,7 @@ msgstr ""
" -r\tograniczenie wyjścia do zadań działających\n"
" -s\tograniczenie wyjścia do zadań zatrzymanych\n"
" \n"
-" Przy podaniu -x, uruchamiane jet polecenie podane POLECENIE po "
-"zastÄ…pieniu\n"
+" Przy podaniu -x, uruchamiane jest podane POLECENIE po zastÄ…pieniu\n"
" każdej z występujących w argumentach ARG specyfikacji zadań numerem PID\n"
" procesu wiodÄ…cego danego zadania.\n"
" \n"
@@ -3606,8 +3461,7 @@ msgstr ""
"Wysłanie sygnału do zadania.\n"
" \n"
" Wysłanie do procesów określonych przez PID lub ZADANIE sygnału o nazwie\n"
-" SYGNAÅ lub NUMERZE-SYGNAÅU. JeÅ›li nie podano SYGNAÅU ani NUMERU-"
-"SYGNAÅU,\n"
+" SYGNAÅ lub NUMERZE-SYGNAÅU. JeÅ›li nie podano SYGNAÅU ani NUMERU-SYGNAÅU,\n"
" przyjmowany jest SIGTERM.\n"
" \n"
" Opcje:\n"
@@ -3617,8 +3471,7 @@ msgstr ""
" \ttraktowane jako numery sygnałów, dla których mają być wypisane nazwy\n"
" \n"
" Kill jest poleceniem wewnętrznym z dwóch powodów: umożliwia korzystanie\n"
-" z identyfikatorów zadań zamiast numerów PID oraz, w przypadku "
-"osiągnięcia\n"
+" z identyfikatorów zadań zamiast numerów PID oraz, w przypadku osiągnięcia\n"
" ograniczenia na liczbę procesów, nie powoduje potrzeby uruchamiania\n"
" dodatkowego procesu, aby jakiś zabić.\n"
" \n"
@@ -3632,8 +3485,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3671,11 +3523,9 @@ msgid ""
msgstr ""
"Obliczanie wyrażeń arytmetycznych.\n"
" \n"
-" Obliczenie każdego argumentu ARG jako wyrażenia arytmetycznego. "
-"Obliczenia\n"
+" Obliczenie każdego argumentu ARG jako wyrażenia arytmetycznego. Obliczenia\n"
" są wykonywane dla liczb całkowitych o stałej długości bez sprawdzania\n"
-" przepełnienia, jednakże dzielenie przez 0 jest przechwytywane i "
-"oznaczane\n"
+" przepełnienia, jednakże dzielenie przez 0 jest przechwytywane i oznaczane\n"
" jako błąd. Poniższa lista operatorów jest pogrupowana na poziomy\n"
" operatorów o jednakowym priorytecie. Poziomy są wypisane w kolejności\n"
" malejÄ…cego priorytetu.\n"
@@ -3719,16 +3569,13 @@ msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
" delimiters.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3740,15 +3587,13 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
" \t\tcharacters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any delimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
" \t\tattempting to read\n"
" -r\t\tdo not allow backslashes to escape any characters\n"
" -s\t\tdo not echo input coming from a terminal\n"
-" -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
+" -t timeout\ttime out and return failure if a complete line of input is\n"
" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n"
" \t\tvariable is the default timeout. TIMEOUT may be a\n"
" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n"
@@ -3758,56 +3603,45 @@ msgid ""
" -u fd\t\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Odczyt wiersza ze standardowego wejścia i podział go na pola.\n"
" \n"
" Odczytanie wiersza ze standardowego wejścia lub deskryptora FD (jeśli\n"
-" podano opcję -u). Wiersz jest dzielony na pola wg reguł podziału na "
-"słowa,\n"
-" pierwsze słowo jest przypisywane pierwszej NAZWIE, drugie - drugiej "
-"NAZWIE\n"
+" podano opcję -u). Wiersz jest dzielony na pola wg reguł podziału na słowa,\n"
+" pierwsze słowo jest przypisywane pierwszej NAZWIE, drugie - drugiej NAZWIE\n"
" itd.; wszystkie pozostałe słowa są przypisywane ostatniej NAZWIE. Jako\n"
" ograniczniki słów są rozpoznawane tylko znaki ze zmiennej $IFS.\n"
" \n"
-" Jeśli nie podano NAZW, odczytany wiersz jest zapisywany w zmiennej "
-"REPLY.\n"
+" Jeśli nie podano NAZW, odczytany wiersz jest zapisywany w zmiennej REPLY.\n"
" \n"
" Opcje:\n"
" -a tablica\tprzypisanie odczytanych słów do indeksów sekwencyjnych\n"
" \t\tzmiennej tablicowej TABLICA, poczÄ…wszy od zera\n"
-" -d ogr\tkontynuacja do odczytu pierwszego znaku OGR zamiast znaku "
-"nowej\n"
+" -d ogr\tkontynuacja do odczytu pierwszego znaku OGR zamiast znaku nowej\n"
" \t\tlinii\n"
" -e\t\tużycie Readline'a do odczytania wiersza w powłoce interaktywnej\n"
" -o tekst\tużycie TEKSTU jako początkowego tekstu dla Readline'a\n"
" -n liczba\tpowrót po odczycie LICZBY znaków zamiast oczekiwania na\n"
-" \t\tznak nowej linii; ogranicznik jest honorowany, jeśli odczytano "
-"mniej\n"
+" \t\tznak nowej linii; ogranicznik jest honorowany, jeśli odczytano mniej\n"
" \t\tniż podana LICZBA znaków przed ogranicznikiem\n"
" -N liczba\tpowrót tylko po odczycie dokładnie podanej LICZBY znaków,\n"
" \t\tchyba że zostanie napotkany EOF lub opłynie czas; ograniczniki są\n"
" \t\tignorowane\n"
-" -p zachęta\twypisanie łańcucha ZACHĘTY bez końcowego znaku nowej "
-"linii\n"
+" -p zachęta\twypisanie łańcucha ZACHĘTY bez końcowego znaku nowej linii\n"
" \t\tprzed próbą odczytu\n"
-" -r\t\twyłączenie interpretowania odwrotnych ukośników jako "
-"przedrostka\n"
+" -r\t\twyłączenie interpretowania odwrotnych ukośników jako przedrostka\n"
" \t\tznaków specjalnych\n"
" -s\t\tbez wypisywania wejścia pochodzącego z terminala\n"
" -t czas\tzakończenie i zwrócenie niepowodzenia, jeśli nie zostanie\n"
-" \t\todczytany cały wiersz przed upłynięciem podanego CZASU (w "
-"sekundach).\n"
+" \t\todczytany cały wiersz przed upłynięciem podanego CZASU (w sekundach).\n"
" \t\tWartość zmiennej TMOUT jest domyślnym limitem czasu. CZAS może być\n"
" \t\tułamkowy. Przy wartości 0 odczyt powiedzie się tylko wtedy, gdy\n"
" \t\twejście jest dostępne na podanym deskryptorze. Kod (stan) wyjściowy\n"
" \t\tw przypadku osiągnięcia limitu czasu jest większy niż 128\n"
-" -u fd\t\todczyt z deskryptora pliku FD zamiast ze standardowego "
-"wejścia\n"
+" -u fd\t\todczyt z deskryptora pliku FD zamiast ze standardowego wejścia\n"
" \n"
" Stan wyjściowy:\n"
" Zwracana jest wartość 0, chyba że zostanie napotkany koniec pliku,\n"
@@ -3879,8 +3713,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -3973,12 +3806,10 @@ msgstr ""
" POSIX na zgodne ze standardem\n"
" privileged to samo, co -p\n"
" verbose to samo, co -v\n"
-" vi korzystanie z interfejsu edycji wiersza w stylu "
-"vi\n"
+" vi korzystanie z interfejsu edycji wiersza w stylu vi\n"
" xtrace to samo, co -x\n"
" -p WÅ‚Ä…czone, gdy nie zgadzajÄ… siÄ™ rzeczywisty i efektywny ID\n"
-" użytkownika. Wyłącza przetwarzanie pliku $ENV oraz import "
-"funkcji\n"
+" użytkownika. Wyłącza przetwarzanie pliku $ENV oraz import funkcji\n"
" powłoki. Wyłączenie tej opcji powoduje, że efektywne UID i GID\n"
" zostanÄ… ustawione na rzeczywiste UID i GID.\n"
" -t Zakończenie po przeczytaniu i uruchomieniu jednego polecenia.\n"
@@ -4001,8 +3832,7 @@ msgstr ""
" - Przypisanie pozostałych argumentów do argumentów pozycyjnych.\n"
" Wyłączenie opcji -x i -v.\n"
" \n"
-" Użycie + zamiast - powoduje wyłączenie powyższych znaczników. Można z "
-"nich\n"
+" Użycie + zamiast - powoduje wyłączenie powyższych znaczników. Można z nich\n"
" także korzystać przy uruchomieniu powłoki. Aktualny zestaw opcji można\n"
" znaleźć w $-. Pozostałe n argumentów staje się parametrami pozycyjnymi\n"
" i sÄ… one przypisane, kolejno, do $1, $2, .. $n. Gdy nie zostanÄ… podane\n"
@@ -4023,8 +3853,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4042,15 +3871,13 @@ msgstr ""
" -n\tpotraktowanie wszystkich NAZW jako referencji do nazw\n"
" \ti anulowanie samej zmiennej zamiast tej, do której się odnosi\n"
" \n"
-" Bez opcji unset próbuje najpierw anulować definicję zmiennej, a jeśli "
-"to\n"
+" Bez opcji unset próbuje najpierw anulować definicję zmiennej, a jeśli to\n"
" się nie powiedzie, próbuje anulować definicję funkcji.\n"
" \n"
" Niektórych zmiennych nie można usunąć - p. `readonly'.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA jest tylko "
-"do\n"
+" Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA jest tylko do\n"
" odczytu."
#: builtins.c:1148
@@ -4058,8 +3885,7 @@ msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4074,8 +3900,7 @@ msgstr ""
"Ustawienie atrybutu eksportowania dla zmiennych powłoki.\n"
" \n"
" Zaznaczenie każdej NAZWY do automatycznego eksportowania do środowiska\n"
-" później wywoływanych poleceń. Jeśli podano WARTOŚĆ, jest ona "
-"przypisywana\n"
+" później wywoływanych poleceń. Jeśli podano WARTOŚĆ, jest ona przypisywana\n"
" przed eksportowaniem.\n"
" \n"
" Opcje:\n"
@@ -4100,8 +3925,7 @@ msgid ""
" -a\trefer to indexed array variables\n"
" -A\trefer to associative array variables\n"
" -f\trefer to shell functions\n"
-" -p\tdisplay a list of all readonly variables or functions, depending "
-"on\n"
+" -p\tdisplay a list of all readonly variables or functions, depending on\n"
" whether or not the -f option is given\n"
" \n"
" An argument of `--' disables further option processing.\n"
@@ -4111,8 +3935,7 @@ msgid ""
msgstr ""
"Oznaczenie zmiennych powłoki jako niezmiennych.\n"
" \n"
-" Oznaczenie każdej NAZWY jako tylko do odczytu; wartości tych NAZW nie "
-"mogÄ…\n"
+" Oznaczenie każdej NAZWY jako tylko do odczytu; wartości tych NAZW nie mogą\n"
" być zmieniane przez późniejsze podstawienia. Jeśli podano WARTOŚĆ, jest\n"
" ona przypisywana przed oznaczeniem jako tylko do odczytu.\n"
" \n"
@@ -4120,8 +3943,7 @@ msgstr ""
" -a\tdziałanie na zmiennych tablicowych indeksowanych\n"
" -A\tdziałanie na zmiennych tablicowych asocjacyjnych\n"
" -f\tdziałanie na funkcjach powłoki\n"
-" -p\twyświetlenie listy wszystkich zmiennych lub funkcji tylko do "
-"odczytu,\n"
+" -p\twyświetlenie listy wszystkich zmiennych lub funkcji tylko do odczytu,\n"
" w zależności od tego, czy podano opcję -f\n"
" \n"
" Argument `--' wyłącza dalsze przetwarzanie opcji.\n"
@@ -4168,8 +3990,7 @@ msgstr ""
" parametrami pozycyjnymi podczas uruchomienia PLIKU.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracany jest stan ostatnio wykonanego polecenia z PLIKU lub błąd, "
-"jeśli\n"
+" Zwracany jest stan ostatnio wykonanego polecenia z PLIKU lub błąd, jeśli\n"
" PLIKU nie udało się odczytać."
#: builtins.c:1232
@@ -4192,12 +4013,10 @@ msgstr ""
" wstrzymać.\n"
" \n"
" Opcje:\n"
-" -f\twymuszenie wstrzymania, nawet jeśli powłoka jest powłoką "
-"logowania\n"
+" -f\twymuszenie wstrzymania, nawet jeśli powłoka jest powłoką logowania\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że kontrola zadań jest wyłączona lub "
-"wystÄ…pi\n"
+" Zwracana jest prawda, chyba że kontrola zadań jest wyłączona lub wystąpi\n"
" błąd."
#: builtins.c:1248
@@ -4234,8 +4053,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4256,8 +4074,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4265,8 +4082,7 @@ msgid ""
" \n"
" -o OPTION True if the shell option OPTION is enabled.\n"
" -v VAR\t True if the shell variable VAR is set\n"
-" -R VAR\t True if the shell variable VAR is set and is a name "
-"reference.\n"
+" -R VAR\t True if the shell variable VAR is set and is a name reference.\n"
" ! EXPR True if expr is false.\n"
" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
@@ -4284,18 +4100,13 @@ msgid ""
msgstr ""
"Obliczenie wyrażenia warunkowego.\n"
" \n"
-" Polecenie zwracające kod 0 (prawda) lub 1 (fałsz) w zależności od "
-"wyniku\n"
-" obliczenia WYRAŻENIA. Wyrażenia mogą mieć postać jedno- lub "
-"dwuargumentowÄ….\n"
-" Jednoargumentowe wyrażenia służą zwykle do badania stanu pliku. "
-"IstniejÄ…\n"
-" również operatory działające na łańcuchach tekstowych, jak też "
-"operatory\n"
+" Polecenie zwracające kod 0 (prawda) lub 1 (fałsz) w zależności od wyniku\n"
+" obliczenia WYRAŻENIA. Wyrażenia mogą mieć postać jedno- lub dwuargumentową.\n"
+" Jednoargumentowe wyrażenia służą zwykle do badania stanu pliku. Istnieją\n"
+" również operatory działające na łańcuchach tekstowych, jak też operatory\n"
" numerycznego porównania.\n"
" \n"
-" Zachowanie polecenia test zależy od liczby argumentów. Pełną "
-"specyfikacjÄ™\n"
+" Zachowanie polecenia test zależy od liczby argumentów. Pełną specyfikację\n"
" można znaleźć w podręczniku man do basha.\n"
" \n"
" Operatory plikowe:\n"
@@ -4320,8 +4131,7 @@ msgstr ""
" -u FILE Prawda, gdy PLIK ma ustawiony bit SUID.\n"
" -w FILE Prawda, gdy PLIK jest zapisywalny przez użytkownika.\n"
" -x FILE Prawda, gdy PLIK jest uruchamialny przez użytkownika.\n"
-" -O FILE Prawda, gdy użytkownik jest efektywnym właścicielem "
-"PLIKU.\n"
+" -O FILE Prawda, gdy użytkownik jest efektywnym właścicielem PLIKU.\n"
" -G FILE Prawda, grupa użytkownika jest efektywnym właścicielem\n"
" PLIKU.\n"
" -N FILE Prawda, gdy PLIK został zmodyfikowany po ostatnim\n"
@@ -4389,8 +4199,7 @@ msgstr ""
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4398,8 +4207,7 @@ msgid ""
msgstr ""
"Wyświetlenie czasów procesu.\n"
" \n"
-" Wypisanie łącznych czasów w przestrzeni użytkownika i systemu dla "
-"powłoki\n"
+" Wypisanie łącznych czasów w przestrzeni użytkownika i systemu dla powłoki\n"
" i wszystkich procesów potomnych.\n"
" \n"
" Stan wyjściowy:\n"
@@ -4409,8 +4217,7 @@ msgstr ""
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4419,63 +4226,48 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
+" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n"
" Signal names are case insensitive and the SIG prefix is optional. A\n"
" signal may be sent to the shell with \"kill -signal $$\".\n"
" \n"
" Exit Status:\n"
-" Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"Przechwytywanie sygnałów i innych zdarzeń.\n"
" \n"
-" Polecenie definiujące i włączające daną akcję w przypadku, kiedy "
-"powłoka\n"
+" Polecenie definiujące i włączające daną akcję w przypadku, kiedy powłoka\n"
" otrzyma sygnał lub pod innymi warunkami.\n"
" \n"
-" Gdy powłoka otrzyma podany SYGNAŠ(lub sygnały), odczytywane i "
-"uruchamiane\n"
-" jest polecenie podane jako argument ARG. W razie braku argumentu (i "
-"podaniu\n"
+" Gdy powłoka otrzyma podany SYGNAŠ(lub sygnały), odczytywane i uruchamiane\n"
+" jest polecenie podane jako argument ARG. W razie braku argumentu (i podaniu\n"
" pojedynczego SYGNAÅU) lub gdy argumentem jest `-', każdemu z podanych\n"
" sygnałów jest przywracane pierwotne zachowanie. Jeśli ARG jest pustym\n"
-" łańcuchem, każdy SYGNAŠjest ignorowany przez powłokę i wywołane przez "
-"niÄ…\n"
+" łańcuchem, każdy SYGNAŠjest ignorowany przez powłokę i wywołane przez nią\n"
" polecenia.\n"
" \n"
" Jeżeli jako SYGNAŠpodano EXIT (0), polecenie ARG jest uruchamiane przy\n"
-" opuszczaniu powłoki. Jeśli jako SYGNAŠpodano DEBUG, ARG jest "
-"uruchamiane\n"
+" opuszczaniu powłoki. Jeśli jako SYGNAŠpodano DEBUG, ARG jest uruchamiane\n"
" po każdym poleceniu prostym. Jeśli jako SYGNAŠpodano RETURN, ARG jest\n"
" uruchamiane przy każdym zakończeniu funkcji powłoki lub skryptu\n"
" uruchamianego przez polecenia wbudowane . lub source. JeÅ›li jako SYGNAÅ\n"
" podano ERR, ARG jest uruchamiane za każdym razem, kiedy niepowodzenie\n"
-" polecenia spowodowałoby zakończenie powłoki w przypadku włączenia opcji -"
-"e.\n"
+" polecenia spowodowałoby zakończenie powłoki w przypadku włączenia opcji -e.\n"
" \n"
-" Jeśli nie podano argumentów, trap wypisuje listę poleceń przypisanych "
-"do\n"
+" Jeśli nie podano argumentów, trap wypisuje listę poleceń przypisanych do\n"
" każdego sygnału.\n"
" \n"
" Opcje:\n"
@@ -4516,8 +4308,7 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
"Wyświetlenie informacji o rodzaju polecenia.\n"
" \n"
@@ -4526,8 +4317,7 @@ msgstr ""
" \n"
" Opcje:\n"
" -a\twyświetlenie wszystkich położeń zawierających program wykonywalny\n"
-" \to podanej NAZWIE; obejmuje aliasy, polecenia wbudowane i funkcje "
-"tylko\n"
+" \to podanej NAZWIE; obejmuje aliasy, polecenia wbudowane i funkcje tylko\n"
" \tjeśli nie podano dodatkowo opcji `-p'\n"
" -f\tpominięcie wyszukiwania funkcji powłoki\n"
" -P\twymuszenie wyszukiwania w PATH każdej nazwy, nawet jeśli jest\n"
@@ -4544,16 +4334,14 @@ msgstr ""
" NAZWA\tNazwa polecenia do zinterpretowania.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, jeśli każda NAZWA zostanie znaleziona; fałsz, "
-"jeśli\n"
+" Zwracana jest prawda, jeśli każda NAZWA zostanie znaleziona; fałsz, jeśli\n"
" którakolwiek nie zostanie znaleziona."
#: builtins.c:1417
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4596,8 +4384,7 @@ msgid ""
msgstr ""
"Modyfikowanie limitów zasobów powłoki.\n"
" \n"
-" Ulimit zapewnia kontrolę ilości zasobów udostępnionych powłoce i "
-"procesom\n"
+" Ulimit zapewnia kontrolę ilości zasobów udostępnionych powłoce i procesom\n"
" w systemach, które taką kontrolę umożliwiają.\n"
" \n"
" Opcje:\n"
@@ -4608,16 +4395,14 @@ msgstr ""
" -c\tmaksymalny rozmiar tworzonych plików core\n"
" -d\tmaksymalny rozmiar segmentu danych procesu\n"
" -e\tmaksymalny priorytet szeregowania procesów (`nice')\n"
-" -f\tmaksymalny rozmiar plików zapisywanych przez powłokę i jej "
-"potomków\n"
+" -f\tmaksymalny rozmiar plików zapisywanych przez powłokę i jej potomków\n"
" -i\tmaksymalna liczba oczekujących sygnałów\n"
" -l\tmaksymalny rozmiar pamięci, którą proces może zablokować\n"
" -m\tmaksymalny rozmiar obszaru rezydentnego procesu\n"
" -n\tmaksymalna liczba otwartych deskryptorów plików\n"
" -p\trozmiar bufora potoku\n"
" -q\tmaksymalna liczba bajtów w POSIX-owych kolejkach komunikatów\n"
-" -r\tmaksymalny priorytet szeregowania dla procesów czasu "
-"rzeczywistego\n"
+" -r\tmaksymalny priorytet szeregowania dla procesów czasu rzeczywistego\n"
" -s\tmaksymalny rozmiar stosu\n"
" -t\tmaksymalna ilość czasu procesora w sekundach\n"
" -u\tmaksymalna liczba procesów użytkownika\n"
@@ -4631,13 +4416,10 @@ msgstr ""
" danego zasobu; specjalne wartości LIMITU: `soft', `hard' i `unlimited'\n"
" oznaczają, odpowiednio, aktualne ograniczenie miękkie, sztywne i brak\n"
" ograniczenia. W przeciwnym przypadku wypisywana jest aktualna wartość\n"
-" podanego ograniczenia. Gdy nie podano opcji, przyjmuje się, że podano -"
-"f.\n"
+" podanego ograniczenia. Gdy nie podano opcji, przyjmuje się, że podano -f.\n"
" \n"
-" Wartości są podawane w jednostkach 1024-bajtowych, za wyjątkiem -t, "
-"które\n"
-" jest w sekundach, -p, które jest w jednostkach 512-bajtowych oraz -u, "
-"które\n"
+" Wartości są podawane w jednostkach 1024-bajtowych, za wyjątkiem -t, które\n"
+" jest w sekundach, -p, które jest w jednostkach 512-bajtowych oraz -u, które\n"
" jest bezwymiarową liczbą procesów.\n"
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
@@ -4674,19 +4456,16 @@ msgstr ""
" -S\twyjście w postaci symbolicznej; bez tej opcji jest ósemkowe\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną "
-"opcjÄ™."
+" Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną opcję."
#: builtins.c:1485
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
-" status is zero. If ID is a a job specification, waits for all "
-"processes\n"
+" status is zero. If ID is a a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
" If the -n option is supplied, waits for the next job to terminate and\n"
@@ -4698,13 +4477,10 @@ msgid ""
msgstr ""
"Oczekiwanie na zakończenie zadania i zwrócenie stanu (kodu) wyjścia.\n"
" \n"
-" Oczekiwanie na każdy proces o podanym identyfikatorze ID, który może "
-"być\n"
+" Oczekiwanie na każdy proces o podanym identyfikatorze ID, który może być\n"
" numerem PID lub określeniem zadania i zgłoszenie jego stanu (kodu)\n"
-" zakończenia. Jeśli nie podano ID, polecenie oczekuje na wszystkie "
-"aktualnie\n"
-" aktywne procesy potomne i zwraca prawdę. Jeśli ID jest określeniem "
-"zadania,\n"
+" zakończenia. Jeśli nie podano ID, polecenie oczekuje na wszystkie aktualnie\n"
+" aktywne procesy potomne i zwraca prawdę. Jeśli ID jest określeniem zadania,\n"
" oczekuje na wszystkie procesy w potoku przetwarzania danego zadania.\n"
" \n"
" Jeśli podano opcję -n, oczekiwanie na zakończenie następnego zadania\n"
@@ -4718,29 +4494,23 @@ msgstr ""
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
"Oczekiwanie na zakończenie procesu i zwrócenie stanu (kodu) wyjścia.\n"
" \n"
-" Oczekiwanie na każdy z procesów podany przez PID i zgłoszenie jego "
-"statusu\n"
-" zakończenia. Gdy nie zostanie podany PID, oczekiwanie dotyczy "
-"wszystkich\n"
-" aktualnie aktywnych procesów potomnych, a kodem powrotu jest zero. PID "
-"musi\n"
+" Oczekiwanie na każdy z procesów podany przez PID i zgłoszenie jego statusu\n"
+" zakończenia. Gdy nie zostanie podany PID, oczekiwanie dotyczy wszystkich\n"
+" aktualnie aktywnych procesów potomnych, a kodem powrotu jest zero. PID musi\n"
" być identyfikatorem procesu.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracany jest status ID lub niepowodzenie, jeśli ID jest błędny lub "
-"podano\n"
+" Zwracany jest status ID lub niepowodzenie, jeśli ID jest błędny lub podano\n"
" nieprawidłową opcję."
#: builtins.c:1521
@@ -4757,10 +4527,8 @@ msgid ""
msgstr ""
"Wykonanie poleceń dla każdego elementu z listy.\n"
" \n"
-" Pętla `for' uruchamia ciąg poleceń dla każdego elementu podanej listy. "
-"Gdy\n"
-" nie zostanie podane `in SÅOWA ...;', zakÅ‚ada siÄ™, że podano `in \"$@"
-"\"'.\n"
+" Pętla `for' uruchamia ciąg poleceń dla każdego elementu podanej listy. Gdy\n"
+" nie zostanie podane `in SÅOWA ...;', zakÅ‚ada siÄ™, że podano `in \"$@\"'.\n"
" Dla każdego elementu SÅÓW, NAZWA jest ustawiana na ten element\n"
" i uruchamiane sÄ… POLECENIA. \n"
" Stan wyjściowy:\n"
@@ -4791,8 +4559,7 @@ msgstr ""
" \t\t(( WYR3 ))\n"
" \tdone\n"
" WYR1, WYR2 i WYR3 są wyrażeniami arytmetycznymi. Jeśli któreś z wyrażeń\n"
-" zostanie pominięte, zachowanie jest takie, jakby miało ono wartość "
-"1. \n"
+" zostanie pominięte, zachowanie jest takie, jakby miało ono wartość 1. \n"
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
@@ -4817,17 +4584,14 @@ msgid ""
msgstr ""
"Wybór słów z listy i wykonanie poleceń.\n"
" SÅOWA sÄ… rozwijane, co tworzy listÄ™ słów. Zbiór rozwiniÄ™tych słów\n"
-" wypisywany jest na standardowym wyjściu diagnostycznym, a każde słowo "
-"jest\n"
+" wypisywany jest na standardowym wyjściu diagnostycznym, a każde słowo jest\n"
" poprzedzone przez liczbÄ™. Gdy nie zostanie podane `in SÅOWA', zakÅ‚ada\n"
" się, że podano `in \"$@\"'. Wyświetlany jest wówczas tekst zachęty PS3\n"
-" i odczytywany jest wiersz ze standardowego wejścia. Gdy wiersz ten "
-"składa\n"
+" i odczytywany jest wiersz ze standardowego wejścia. Gdy wiersz ten składa\n"
" się z liczby przypisanej do jednego z wypisanych słów, to NAZWA jest\n"
" ustawiana na to sÅ‚owo. Gdy wiersz jest pusty, SÅOWA i tekst zachÄ™ty sÄ…\n"
" wyświetlane ponownie. Gdy odczytany zostanie EOF, polecenie się kończy.\n"
-" Każda inna wartość powoduje przypisanie NAZWIE wartości pustej. "
-"Odczytany\n"
+" Każda inna wartość powoduje przypisanie NAZWIE wartości pustej. Odczytany\n"
" wiersz jest zachowywany w zmiennej REPLY. Po każdym wyborze uruchamiane\n"
" są POLECENIA aż do polecenia break. \n"
" Stan wyjściowy:\n"
@@ -4857,8 +4621,7 @@ msgstr ""
" Opcje:\n"
" -p\twypisanie podsumowania czasów w przenośnym formacie POSIX\n"
" \n"
-" Jako format danych wyjściowych używana jest wartość zmiennej "
-"TIMEFORMAT.\n"
+" Jako format danych wyjściowych używana jest wartość zmiennej TIMEFORMAT.\n"
" \n"
" Stan wyjściowy:\n"
" Polecenie zwraca status zakończenia POTOKU poleceń."
@@ -4885,17 +4648,12 @@ msgstr ""
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -4907,8 +4665,7 @@ msgstr ""
" uruchamiana jest lista `then POLECENIA'. W przeciwnym przypadku\n"
" uruchamiane są poszczególne listy `elif POLECENIA' i, jeśli kod powrotu\n"
" takiej listy jest zerem, uruchamiana jest odpowiednia lista\n"
-" `then POLECENIA', po czym polecenie if się kończy. W przeciwnym "
-"przypadku\n"
+" `then POLECENIA', po czym polecenie if się kończy. W przeciwnym przypadku\n"
" uruchamiana jest lista `else POLECENIA', jeśli taka istnieje. Kodem\n"
" zakończenia całej konstrukcji jest kod zakończenia ostatniego\n"
" uruchomionego polecenia lub zero, gdy żaden ze sprawdzanych warunków\n"
@@ -4967,8 +4724,7 @@ msgid ""
msgstr ""
"Utworzenie koprocesu o podanej NAZWIE.\n"
" \n"
-" Asynchroniczne wykonanie POLECENIA ze standardowym wyjściem i "
-"standardowym\n"
+" Asynchroniczne wykonanie POLECENIA ze standardowym wyjściem i standardowym\n"
" wejściem polecenia połączonych potokiem z deskryptorami plików\n"
" przypisanymi do indeksów 0 i 1 zmiennej tablicowej NAZWA w powłoce.\n"
" Domyślną NAZWĄ jest \"COPROC\".\n"
@@ -4980,8 +4736,7 @@ msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -4990,11 +4745,9 @@ msgid ""
msgstr ""
"Zdefiniowanie funkcji powłoki.\n"
" \n"
-" Utworzenie funkcji powłoki o podanej NAZWIE. Przy wywołaniu jako "
-"zwykłego\n"
+" Utworzenie funkcji powłoki o podanej NAZWIE. Przy wywołaniu jako zwykłego\n"
" polecenia NAZWA uruchamia POLECENIA w kontekście powłoki wywołującej.\n"
-" Przy wywoływaniu NAZWY, argumenty są przekazywane do funkcji jako $1..."
-"$n,\n"
+" Przy wywoływaniu NAZWY, argumenty są przekazywane do funkcji jako $1...$n,\n"
" a nazwa funkcji w $FUNCNAME.\n"
" \n"
" Stan wyjściowy:\n"
@@ -5033,12 +4786,9 @@ msgid ""
msgstr ""
"Wznowienie zadania jako pierwszoplanowego.\n"
" \n"
-" Równoważne argumentowi ZADANIE polecenia `fg'. Wznowienie zatrzymanego "
-"lub\n"
-" działającego w tle zadania. ZADANIE może określać nazwę zadania albo "
-"jego\n"
-" numer. Umieszczenie `&' po ZADANIU umieszcza zadanie w tle tak, jak to "
-"siÄ™\n"
+" Równoważne argumentowi ZADANIE polecenia `fg'. Wznowienie zatrzymanego lub\n"
+" działającego w tle zadania. ZADANIE może określać nazwę zadania albo jego\n"
+" numer. Umieszczenie `&' po ZADANIU umieszcza zadanie w tle tak, jak to siÄ™\n"
" dzieje po podaniu specyfikacji zadania jako argumentu dla `bg'.\n"
" \n"
" Stan wyjściowy:\n"
@@ -5056,24 +4806,19 @@ msgid ""
msgstr ""
"Obliczenie wyrażenia arytmetycznego.\n"
" \n"
-" Obliczenie WYRAŻENIA zgodnie z zasadami obliczania wyrażeń "
-"arytmetycznych.\n"
+" Obliczenie WYRAŻENIA zgodnie z zasadami obliczania wyrażeń arytmetycznych.\n"
" Równoważne \"let WYRAŻENIE\".\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym "
-"wypadku."
+" Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym wypadku."
#: builtins.c:1711
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5094,8 +4839,7 @@ msgstr ""
"Wykonanie polecenia warunkowego.\n"
" \n"
" Zwracany jest status wynoszący 0 lub 1 w zależności od wyniku WYRAŻENIA\n"
-" warunkowego. Wyrażenia są tworzone na tych samych zasadach, co w "
-"poleceniu\n"
+" warunkowego. Wyrażenia są tworzone na tych samych zasadach, co w poleceniu\n"
" `test' i mogą być łączone za pomocą następujących operatorów:\n"
" \n"
" ( WYRAŻENIE )\tzwraca wartość WYRAŻENIA\n"
@@ -5107,13 +4851,11 @@ msgstr ""
" \t\t\tfałszywe w innym przypadku\n"
" \n"
" W przypadku użycia operatorów `==' lub `!=' napis po prawej stronie\n"
-" operatora jest traktowany jak wzorzec i wykonywane jest dopasowywanie "
-"do\n"
+" operatora jest traktowany jak wzorzec i wykonywane jest dopasowywanie do\n"
" wzorca. W przypadku użycia operatora `=~' łańcuch po prawej stronie\n"
" operatora jest dopasowywany jako wyrażenie regularne.\n"
" \n"
-" Operatory && i || nie obliczają WYR2, jeśli obliczenie WYR1 wystarcza "
-"do\n"
+" Operatory && i || nie obliczają WYR2, jeśli obliczenie WYR1 wystarcza do\n"
" określenia wartości wyrażenia.\n"
" \n"
" Stan wyjściowy:\n"
@@ -5219,8 +4961,7 @@ msgstr ""
" \t\tzadania.\n"
" histchars\tZnaki sterujÄ…ce rozwijaniem wg historii i szybkim\n"
" \t\tpodstawianiem. Pierwszy znak jest znakiem podstawiania\n"
-" \t\thistorii, zwykle `!'. Drugi jest znakiem \"szybkiego podstawienia"
-"\",\n"
+" \t\thistorii, zwykle `!'. Drugi jest znakiem \"szybkiego podstawienia\",\n"
" \t\tzwykle `^'. Trzeci znak jest znakiem \"komentarza historii\",\n"
" \t\tzwykle `#'.\n"
" HISTIGNORE\tRozdzielona dwukropkami lista wzorców używanych przy\n"
@@ -5280,8 +5021,7 @@ msgstr ""
" Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że podano błędny argument lub zmiana "
-"katalogu\n"
+" Zwracana jest prawda, chyba że podano błędny argument lub zmiana katalogu\n"
" siÄ™ nie powiedzie."
#: builtins.c:1828
@@ -5332,8 +5072,7 @@ msgstr ""
" Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że podano błędny argument lub zmiana "
-"katalogu\n"
+" Zwracana jest prawda, chyba że podano błędny argument lub zmiana katalogu\n"
" siÄ™ nie powiedzie."
#: builtins.c:1858
@@ -5353,12 +5092,10 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
" Exit Status:\n"
@@ -5366,8 +5103,7 @@ msgid ""
msgstr ""
"Wypisanie stosu katalogów.\n"
" \n"
-" Wypisanie listy aktualnie pamiętanych katalogów. Katalogi umieszczane "
-"sÄ…\n"
+" Wypisanie listy aktualnie pamiętanych katalogów. Katalogi umieszczane są\n"
" na liście za pomocą polecenia `pushd'; można cofać się w obrębie listy\n"
" za pomocÄ… polecenia `popd'.\n"
" \n"
@@ -5395,8 +5131,7 @@ msgid ""
"Set and unset shell options.\n"
" \n"
" Change the setting of each shell option OPTNAME. Without any option\n"
-" arguments, list all shell options with an indication of whether or not "
-"each\n"
+" arguments, list all shell options with an indication of whether or not each\n"
" is set.\n"
" \n"
" Options:\n"
@@ -5412,8 +5147,7 @@ msgid ""
msgstr ""
"Ustawianie i anulowanie opcji powłoki.\n"
" \n"
-" Zmiana ustawienia każdej z NAZWY-OPCJI. Bez argumentów będących "
-"opcjami,\n"
+" Zmiana ustawienia każdej z NAZWY-OPCJI. Bez argumentów będących opcjami,\n"
" wypisywane są wszystkie opcje powłoki z zaznaczeniem włączonych.\n"
" \n"
" Opcje:\n"
@@ -5424,8 +5158,7 @@ msgstr ""
" -u\twyłączenie (anulowanie) każdej NAZWY-OPCJI\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda jeśli NAZWA-OPCJI jest włączona; niepowodzenie, "
-"jeśli\n"
+" Zwracana jest prawda jeśli NAZWA-OPCJI jest włączona; niepowodzenie, jeśli\n"
" podano błędną opcję lub NAZWA-OPCJI jest wyłączona."
#: builtins.c:1908
@@ -5436,34 +5169,27 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in "
-"printf(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T output the date-time string resulting from using FMT as a "
-"format\n"
+" %(fmt)T output the date-time string resulting from using FMT as a format\n"
" string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
"Formatowanie i wypisanie ARGUMENTÓW zgodnie z FORMATEM.\n"
@@ -5473,12 +5199,9 @@ msgstr ""
" \t\twypisywania na standardowym wyjściu\n"
" \n"
" FORMAT jest łańcuchem znakowym zawierającym trzy rodzaje obiektów:\n"
-" zwykłe znaki, które są kopiowane na standardowe wyjście; znaki "
-"sekwencji\n"
-" sterujących, które są przekształcane i kopiowane na standardowe "
-"wyjście;\n"
-" oraz sekwencje formatujące, z których każda powoduje wypisanie "
-"kolejnego\n"
+" zwykłe znaki, które są kopiowane na standardowe wyjście; znaki sekwencji\n"
+" sterujących, które są przekształcane i kopiowane na standardowe wyjście;\n"
+" oraz sekwencje formatujące, z których każda powoduje wypisanie kolejnego\n"
" argumentu.\n"
" \n"
" Poza standardowymi sekwencjami formatujÄ…cymi opisanymi w printf(1) oraz\n"
@@ -5504,10 +5227,8 @@ msgstr ""
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5529,8 +5250,7 @@ msgstr ""
"Określenie sposobu dopełniania argumentów przez Readline.\n"
" \n"
" Określenie dla każdej NAZWY sposobu dopełniania argumentów. Jeśli nie\n"
-" podano opcji, wypisywane są istniejące specyfikacje dopełniania w "
-"sposób\n"
+" podano opcji, wypisywane są istniejące specyfikacje dopełniania w sposób\n"
" pozwalający na ich ponowne użycie jako wejście.\n"
" \n"
" Opcje:\n"
@@ -5553,8 +5273,7 @@ msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5573,12 +5292,9 @@ msgstr ""
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5603,8 +5319,7 @@ msgstr ""
" \n"
" Zmiana opcji dopełniania dla każdej NAZWY lub, jeśli nie podano NAZW,\n"
" aktualnie wykonywanego dopełniania. Jeśli nie podano OPCJI, wypisanie\n"
-" opcji dopełniania dla każdej NAZWY lub bieżącej specyfikacji "
-"dopełniania.\n"
+" opcji dopełniania dla każdej NAZWY lub bieżącej specyfikacji dopełniania.\n"
" \n"
" Opcje:\n"
" \t-o opcja\tUstawienie podanej OPCJI dopełniania dla każdej NAZWY\n"
@@ -5615,12 +5330,10 @@ msgstr ""
" \n"
" Argumenty:\n"
" \n"
-" Każda NAZWA odnosi się do polecenia, dla którego specyfikacja "
-"dopełniania\n"
+" Każda NAZWA odnosi się do polecenia, dla którego specyfikacja dopełniania\n"
" musi być wcześniej zdefiniowana przy użyciu polecenia wbudowanego\n"
" `complete'. Jeśli nie podano NAZW, compopt musi być wywołane z funkcji\n"
-" aktualnie generującej dopełnienia, wtedy zmieniane są opcje dla "
-"aktualnie\n"
+" aktualnie generującej dopełnienia, wtedy zmieniane są opcje dla aktualnie\n"
" wykonywanego generatora dopełnień.\n"
" \n"
" Stan wyjściowy:\n"
@@ -5631,24 +5344,18 @@ msgstr ""
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied.\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0.\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n"
" -s count \tDiscard the first COUNT lines read.\n"
" -t\t\tRemove a trailing newline from each line read.\n"
-" -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
+" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-" -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
+" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n"
" \n"
" Arguments:\n"
" ARRAY\t\tArray variable name to use for file data.\n"
@@ -5658,13 +5365,11 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
"Odczyt linii ze standardowego wejścia do zmiennej tablicowej indeksowanej.\n"
@@ -5688,16 +5393,14 @@ msgstr ""
" TABLICA\t\tNazwa zmiennej tablicowej do użycia na dane z pliku.\n"
" \n"
" Jeśli podano -C bez -c, domyślnym krokiem jest 5000. Podczas obliczania\n"
-" WYWOÅANIA jest przekazywany indeks do nastÄ™pnego elementu tablicy, "
-"który\n"
+" WYWOÅANIA jest przekazywany indeks do nastÄ™pnego elementu tablicy, który\n"
" ma być przypisany oraz - jako kolejne argumenty - linia do przypisania.\n"
" \n"
" Jeśli nie podano jawnie początku, mapfile czyści TABLICĘ przed\n"
" przypisywaniem.\n"
" \n"
" Stan wyjściowy:\n"
-" Zwracana jest prawda, chyba że podano błędną opcję lub TABLICA jest "
-"tylko\n"
+" Zwracana jest prawda, chyba że podano błędną opcję lub TABLICA jest tylko\n"
" do odczytu, lub nie jest tablicÄ… indeksowanÄ…."
#: builtins.c:2049
diff --git a/shell.c b/shell.c
index bbc8a66c..ff7734db 100644
--- a/shell.c
+++ b/shell.c
@@ -933,10 +933,12 @@ exit_shell (s)
if (interactive_shell && login_shell && hup_on_exit)
hangup_all_jobs ();
- /* If this shell is interactive, terminate all stopped jobs and
- restore the original terminal process group. Don't do this if we're
- in a subshell and calling exit_shell after, for example, a failed
- word expansion. */
+ /* If this shell is interactive, or job control is active, terminate all
+ stopped jobs and restore the original terminal process group. Don't do
+ this if we're in a subshell and calling exit_shell after, for example,
+ a failed word expansion. We want to do this even if the shell is not
+ interactive because we set the terminal's process group when job control
+ is enabled regardless of the interactive status. */
if (subshell_environment == 0)
end_job_control ();
#endif /* JOB_CONTROL */
diff --git a/shell.c~ b/shell.c~
new file mode 100644
index 00000000..bbc8a66c
--- /dev/null
+++ b/shell.c~
@@ -0,0 +1,1888 @@
+/* shell.c -- GNU's idea of the POSIX shell specification. */
+
+/* Copyright (C) 1987-2012 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 <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ Birthdate:
+ Sunday, January 10th, 1988.
+ Initial author: Brian Fox
+*/
+#define INSTALL_DEBUG_MODE
+
+#include "config.h"
+
+#include "bashtypes.h"
+#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H)
+# include <sys/file.h>
+#endif
+#include "posixstat.h"
+#include "posixtime.h"
+#include "bashansi.h"
+#include <stdio.h>
+#include <signal.h>
+#include <errno.h>
+#include "filecntl.h"
+#include <pwd.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include "bashintl.h"
+
+#define NEED_SH_SETLINEBUF_DECL /* used in externs.h */
+
+#include "shell.h"
+#include "flags.h"
+#include "trap.h"
+#include "mailcheck.h"
+#include "builtins.h"
+#include "builtins/common.h"
+
+#if defined (JOB_CONTROL)
+#include "jobs.h"
+#endif /* JOB_CONTROL */
+
+#include "input.h"
+#include "execute_cmd.h"
+#include "findcmd.h"
+
+#if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS)
+# include <malloc/shmalloc.h>
+#endif
+
+#if defined (HISTORY)
+# include "bashhist.h"
+# include <readline/history.h>
+#endif
+
+#if defined (READLINE)
+# include "bashline.h"
+#endif
+
+#include <tilde/tilde.h>
+#include <glob/strmatch.h>
+
+#if defined (__OPENNT)
+# include <opennt/opennt.h>
+#endif
+
+#if !defined (HAVE_GETPW_DECLS)
+extern struct passwd *getpwuid ();
+#endif /* !HAVE_GETPW_DECLS */
+
+#if !defined (errno)
+extern int errno;
+#endif
+
+#if defined (NO_MAIN_ENV_ARG)
+extern char **environ; /* used if no third argument to main() */
+#endif
+
+extern char *dist_version, *release_status;
+extern int patch_level, build_version;
+extern int shell_level;
+extern int subshell_environment;
+extern int last_command_exit_value;
+extern int line_number;
+extern int expand_aliases;
+extern int array_needs_making;
+extern int gnu_error_format;
+extern char *primary_prompt, *secondary_prompt;
+extern char *this_command_name;
+
+/* Non-zero means that this shell has already been run; i.e. you should
+ call shell_reinitialize () if you need to start afresh. */
+int shell_initialized = 0;
+
+COMMAND *global_command = (COMMAND *)NULL;
+
+/* Information about the current user. */
+struct user_info current_user =
+{
+ (uid_t)-1, (uid_t)-1, (gid_t)-1, (gid_t)-1,
+ (char *)NULL, (char *)NULL, (char *)NULL
+};
+
+/* The current host's name. */
+char *current_host_name = (char *)NULL;
+
+/* Non-zero means that this shell is a login shell.
+ Specifically:
+ 0 = not login shell.
+ 1 = login shell from getty (or equivalent fake out)
+ -1 = login shell from "--login" (or -l) flag.
+ -2 = both from getty, and from flag.
+ */
+int login_shell = 0;
+
+/* Non-zero means that at this moment, the shell is interactive. In
+ general, this means that the shell is at this moment reading input
+ from the keyboard. */
+int interactive = 0;
+
+/* Non-zero means that the shell was started as an interactive shell. */
+int interactive_shell = 0;
+
+/* Non-zero means to send a SIGHUP to all jobs when an interactive login
+ shell exits. */
+int hup_on_exit = 0;
+
+/* Non-zero means to list status of running and stopped jobs at shell exit */
+int check_jobs_at_exit = 0;
+
+/* Non-zero means to change to a directory name supplied as a command name */
+int autocd = 0;
+
+/* Tells what state the shell was in when it started:
+ 0 = non-interactive shell script
+ 1 = interactive
+ 2 = -c command
+ 3 = wordexp evaluation
+ This is a superset of the information provided by interactive_shell.
+*/
+int startup_state = 0;
+
+/* Special debugging helper. */
+int debugging_login_shell = 0;
+
+/* The environment that the shell passes to other commands. */
+char **shell_environment;
+
+/* Non-zero when we are executing a top-level command. */
+int executing = 0;
+
+/* The number of commands executed so far. */
+int current_command_number = 1;
+
+/* Non-zero is the recursion depth for commands. */
+int indirection_level = 0;
+
+/* The name of this shell, as taken from argv[0]. */
+char *shell_name = (char *)NULL;
+
+/* time in seconds when the shell was started */
+time_t shell_start_time;
+
+/* Are we running in an emacs shell window? */
+int running_under_emacs;
+
+/* Do we have /dev/fd? */
+#ifdef HAVE_DEV_FD
+int have_devfd = HAVE_DEV_FD;
+#else
+int have_devfd = 0;
+#endif
+
+/* The name of the .(shell)rc file. */
+static char *bashrc_file = "~/.bashrc";
+
+/* Non-zero means to act more like the Bourne shell on startup. */
+static int act_like_sh;
+
+/* Non-zero if this shell is being run by `su'. */
+static int su_shell;
+
+/* Non-zero if we have already expanded and sourced $ENV. */
+static int sourced_env;
+
+/* Is this shell running setuid? */
+static int running_setuid;
+
+/* Values for the long-winded argument names. */
+static int debugging; /* Do debugging things. */
+static int no_rc; /* Don't execute ~/.bashrc */
+static int no_profile; /* Don't execute .profile */
+static int do_version; /* Display interesting version info. */
+static int make_login_shell; /* Make this shell be a `-bash' shell. */
+static int want_initial_help; /* --help option */
+
+int debugging_mode = 0; /* In debugging mode with --debugger */
+#if defined (READLINE)
+int no_line_editing = 0; /* non-zero -> don't do fancy line editing. */
+#else
+int no_line_editing = 1; /* can't have line editing without readline */
+#endif
+int dump_translatable_strings; /* Dump strings in $"...", don't execute. */
+int dump_po_strings; /* Dump strings in $"..." in po format */
+int wordexp_only = 0; /* Do word expansion only */
+int protected_mode = 0; /* No command substitution with --wordexp */
+
+#if defined (STRICT_POSIX)
+int posixly_correct = 1; /* Non-zero means posix.2 superset. */
+#else
+int posixly_correct = 0; /* Non-zero means posix.2 superset. */
+#endif
+
+/* Some long-winded argument names. These are obviously new. */
+#define Int 1
+#define Charp 2
+static const struct {
+ const char *name;
+ int type;
+ int *int_value;
+ char **char_value;
+} long_args[] = {
+ { "debug", Int, &debugging, (char **)0x0 },
+#if defined (DEBUGGER)
+ { "debugger", Int, &debugging_mode, (char **)0x0 },
+#endif
+ { "dump-po-strings", Int, &dump_po_strings, (char **)0x0 },
+ { "dump-strings", Int, &dump_translatable_strings, (char **)0x0 },
+ { "help", Int, &want_initial_help, (char **)0x0 },
+ { "init-file", Charp, (int *)0x0, &bashrc_file },
+ { "login", Int, &make_login_shell, (char **)0x0 },
+ { "noediting", Int, &no_line_editing, (char **)0x0 },
+ { "noprofile", Int, &no_profile, (char **)0x0 },
+ { "norc", Int, &no_rc, (char **)0x0 },
+ { "posix", Int, &posixly_correct, (char **)0x0 },
+#if defined (WORDEXP_OPTION)
+ { "protected", Int, &protected_mode, (char **)0x0 },
+#endif
+ { "rcfile", Charp, (int *)0x0, &bashrc_file },
+#if defined (RESTRICTED_SHELL)
+ { "restricted", Int, &restricted, (char **)0x0 },
+#endif
+ { "verbose", Int, &echo_input_at_read, (char **)0x0 },
+ { "version", Int, &do_version, (char **)0x0 },
+#if defined (WORDEXP_OPTION)
+ { "wordexp", Int, &wordexp_only, (char **)0x0 },
+#endif
+ { (char *)0x0, Int, (int *)0x0, (char **)0x0 }
+};
+
+/* These are extern so execute_simple_command can set them, and then
+ longjmp back to main to execute a shell script, instead of calling
+ main () again and resulting in indefinite, possibly fatal, stack
+ growth. */
+procenv_t subshell_top_level;
+int subshell_argc;
+char **subshell_argv;
+char **subshell_envp;
+
+char *exec_argv0;
+
+#if defined (BUFFERED_INPUT)
+/* The file descriptor from which the shell is reading input. */
+int default_buffered_input = -1;
+#endif
+
+/* The following two variables are not static so they can show up in $-. */
+int read_from_stdin; /* -s flag supplied */
+int want_pending_command; /* -c flag supplied */
+
+/* This variable is not static so it can be bound to $BASH_EXECUTION_STRING */
+char *command_execution_string; /* argument to -c option */
+
+int malloc_trace_at_exit = 0;
+
+static int shell_reinitialized = 0;
+
+static FILE *default_input;
+
+static STRING_INT_ALIST *shopt_alist;
+static int shopt_ind = 0, shopt_len = 0;
+
+static int parse_long_options __P((char **, int, int));
+static int parse_shell_options __P((char **, int, int));
+static int bind_args __P((char **, int, int, int));
+
+static void start_debugger __P((void));
+
+static void add_shopt_to_alist __P((char *, int));
+static void run_shopt_alist __P((void));
+
+static void execute_env_file __P((char *));
+static void run_startup_files __P((void));
+static int open_shell_script __P((char *));
+static void set_bash_input __P((void));
+static int run_one_command __P((char *));
+#if defined (WORDEXP_OPTION)
+static int run_wordexp __P((char *));
+#endif
+
+static int uidget __P((void));
+
+static void init_interactive __P((void));
+static void init_noninteractive __P((void));
+static void init_interactive_script __P((void));
+
+static void set_shell_name __P((char *));
+static void shell_initialize __P((void));
+static void shell_reinitialize __P((void));
+
+static void show_shell_usage __P((FILE *, int));
+
+#ifdef __CYGWIN__
+static void
+_cygwin32_check_tmp ()
+{
+ struct stat sb;
+
+ if (stat ("/tmp", &sb) < 0)
+ internal_warning (_("could not find /tmp, please create!"));
+ else
+ {
+ if (S_ISDIR (sb.st_mode) == 0)
+ internal_warning (_("/tmp must be a valid directory name"));
+ }
+}
+#endif /* __CYGWIN__ */
+
+#if defined (NO_MAIN_ENV_ARG)
+/* systems without third argument to main() */
+int
+main (argc, argv)
+ int argc;
+ char **argv;
+#else /* !NO_MAIN_ENV_ARG */
+int
+main (argc, argv, env)
+ int argc;
+ char **argv, **env;
+#endif /* !NO_MAIN_ENV_ARG */
+{
+ register int i;
+ int code, old_errexit_flag;
+#if defined (RESTRICTED_SHELL)
+ int saverst;
+#endif
+ volatile int locally_skip_execution;
+ volatile int arg_index, top_level_arg_index;
+#ifdef __OPENNT
+ char **env;
+
+ env = environ;
+#endif /* __OPENNT */
+
+ USE_VAR(argc);
+ USE_VAR(argv);
+ USE_VAR(env);
+ USE_VAR(code);
+ USE_VAR(old_errexit_flag);
+#if defined (RESTRICTED_SHELL)
+ USE_VAR(saverst);
+#endif
+
+ /* Catch early SIGINTs. */
+ code = setjmp_nosigs (top_level);
+ if (code)
+ exit (2);
+
+ xtrace_init ();
+
+#if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS)
+# if 1
+ malloc_set_register (1);
+# endif
+#endif
+
+ check_dev_tty ();
+
+#ifdef __CYGWIN__
+ _cygwin32_check_tmp ();
+#endif /* __CYGWIN__ */
+
+ /* Wait forever if we are debugging a login shell. */
+ while (debugging_login_shell) sleep (3);
+
+ set_default_locale ();
+
+ running_setuid = uidget ();
+
+ if (getenv ("POSIXLY_CORRECT") || getenv ("POSIX_PEDANTIC"))
+ posixly_correct = 1;
+
+#if defined (USE_GNU_MALLOC_LIBRARY)
+ mcheck (programming_error, (void (*) ())0);
+#endif /* USE_GNU_MALLOC_LIBRARY */
+
+ if (setjmp (subshell_top_level))
+ {
+ argc = subshell_argc;
+ argv = subshell_argv;
+ env = subshell_envp;
+ sourced_env = 0;
+ }
+
+ shell_reinitialized = 0;
+
+ /* Initialize `local' variables for all `invocations' of main (). */
+ arg_index = 1;
+ if (arg_index > argc)
+ arg_index = argc;
+ command_execution_string = (char *)NULL;
+ want_pending_command = locally_skip_execution = read_from_stdin = 0;
+ default_input = stdin;
+#if defined (BUFFERED_INPUT)
+ default_buffered_input = -1;
+#endif
+
+ /* Fix for the `infinite process creation' bug when running shell scripts
+ from startup files on System V. */
+ login_shell = make_login_shell = 0;
+
+ /* If this shell has already been run, then reinitialize it to a
+ vanilla state. */
+ if (shell_initialized || shell_name)
+ {
+ /* Make sure that we do not infinitely recurse as a login shell. */
+ if (*shell_name == '-')
+ shell_name++;
+
+ shell_reinitialize ();
+ if (setjmp_nosigs (top_level))
+ exit (2);
+ }
+
+ shell_environment = env;
+ set_shell_name (argv[0]);
+ shell_start_time = NOW; /* NOW now defined in general.h */
+
+ /* Parse argument flags from the input line. */
+
+ /* Find full word arguments first. */
+ arg_index = parse_long_options (argv, arg_index, argc);
+
+ if (want_initial_help)
+ {
+ show_shell_usage (stdout, 1);
+ exit (EXECUTION_SUCCESS);
+ }
+
+ if (do_version)
+ {
+ show_shell_version (1);
+ exit (EXECUTION_SUCCESS);
+ }
+
+ /* All done with full word options; do standard shell option parsing.*/
+ this_command_name = shell_name; /* for error reporting */
+ arg_index = parse_shell_options (argv, arg_index, argc);
+
+ /* If user supplied the "--login" (or -l) flag, then set and invert
+ LOGIN_SHELL. */
+ if (make_login_shell)
+ {
+ login_shell++;
+ login_shell = -login_shell;
+ }
+
+ set_login_shell ("login_shell", login_shell != 0);
+
+ if (dump_po_strings)
+ dump_translatable_strings = 1;
+
+ if (dump_translatable_strings)
+ read_but_dont_execute = 1;
+
+ if (running_setuid && privileged_mode == 0)
+ disable_priv_mode ();
+
+ /* Need to get the argument to a -c option processed in the
+ above loop. The next arg is a command to execute, and the
+ following args are $0...$n respectively. */
+ if (want_pending_command)
+ {
+ command_execution_string = argv[arg_index];
+ if (command_execution_string == 0)
+ {
+ report_error (_("%s: option requires an argument"), "-c");
+ exit (EX_BADUSAGE);
+ }
+ arg_index++;
+ }
+ this_command_name = (char *)NULL;
+
+ cmd_init(); /* initialize the command object caches */
+
+ /* First, let the outside world know about our interactive status.
+ A shell is interactive if the `-i' flag was given, or if all of
+ the following conditions are met:
+ no -c command
+ no arguments remaining or the -s flag given
+ standard input is a terminal
+ standard error is a terminal
+ Refer to Posix.2, the description of the `sh' utility. */
+
+ if (forced_interactive || /* -i flag */
+ (!command_execution_string && /* No -c command and ... */
+ wordexp_only == 0 && /* No --wordexp and ... */
+ ((arg_index == argc) || /* no remaining args or... */
+ read_from_stdin) && /* -s flag with args, and */
+ isatty (fileno (stdin)) && /* Input is a terminal and */
+ isatty (fileno (stderr)))) /* error output is a terminal. */
+ init_interactive ();
+ else
+ init_noninteractive ();
+
+ /*
+ * Some systems have the bad habit of starting login shells with lots of open
+ * file descriptors. For instance, most systems that have picked up the
+ * pre-4.0 Sun YP code leave a file descriptor open each time you call one
+ * of the getpw* functions, and it's set to be open across execs. That
+ * means one for login, one for xterm, one for shelltool, etc. There are
+ * also systems that open persistent FDs to other agents or files as part
+ * of process startup; these need to be set to be close-on-exec.
+ */
+ if (login_shell && interactive_shell)
+ {
+ for (i = 3; i < 20; i++)
+ SET_CLOSE_ON_EXEC (i);
+ }
+
+ /* If we're in a strict Posix.2 mode, turn on interactive comments,
+ alias expansion in non-interactive shells, and other Posix.2 things. */
+ if (posixly_correct)
+ {
+ bind_variable ("POSIXLY_CORRECT", "y", 0);
+ sv_strict_posix ("POSIXLY_CORRECT");
+ }
+
+ /* Now we run the shopt_alist and process the options. */
+ if (shopt_alist)
+ run_shopt_alist ();
+
+ /* From here on in, the shell must be a normal functioning shell.
+ Variables from the environment are expected to be set, etc. */
+ shell_initialize ();
+
+ set_default_lang ();
+ set_default_locale_vars ();
+
+ /*
+ * M-x term -> TERM=eterm EMACS=22.1 (term:0.96) (eterm)
+ * M-x shell -> TERM=dumb EMACS=t (no line editing)
+ * M-x terminal -> TERM=emacs-em7955 EMACS= (line editing)
+ */
+ if (interactive_shell)
+ {
+ char *term, *emacs;
+
+ term = get_string_value ("TERM");
+ emacs = get_string_value ("EMACS");
+
+ /* Not sure any emacs terminal emulator sets TERM=emacs any more */
+ no_line_editing |= term && (STREQ (term, "emacs"));
+ no_line_editing |= emacs && emacs[0] == 't' && emacs[1] == '\0' && STREQ (term, "dumb");
+
+ /* running_under_emacs == 2 for `eterm' */
+ running_under_emacs = (emacs != 0) || (term && STREQN (term, "emacs", 5));
+ running_under_emacs += term && STREQN (term, "eterm", 5) && emacs && strstr (emacs, "term");
+
+ if (running_under_emacs)
+ gnu_error_format = 1;
+ }
+
+ top_level_arg_index = arg_index;
+ old_errexit_flag = exit_immediately_on_error;
+
+ /* Give this shell a place to longjmp to before executing the
+ startup files. This allows users to press C-c to abort the
+ lengthy startup. */
+ code = setjmp (top_level);
+ if (code)
+ {
+ if (code == EXITPROG || code == ERREXIT)
+ exit_shell (last_command_exit_value);
+ else
+ {
+#if defined (JOB_CONTROL)
+ /* Reset job control, since run_startup_files turned it off. */
+ set_job_control (interactive_shell);
+#endif
+ /* Reset value of `set -e', since it's turned off before running
+ the startup files. */
+ exit_immediately_on_error += old_errexit_flag;
+ locally_skip_execution++;
+ }
+ }
+
+ arg_index = top_level_arg_index;
+
+ /* Execute the start-up scripts. */
+
+ if (interactive_shell == 0)
+ {
+ unbind_variable ("PS1");
+ unbind_variable ("PS2");
+ interactive = 0;
+#if 0
+ /* This has already been done by init_noninteractive */
+ expand_aliases = posixly_correct;
+#endif
+ }
+ else
+ {
+ change_flag ('i', FLAG_ON);
+ interactive = 1;
+ }
+
+#if defined (RESTRICTED_SHELL)
+ /* Set restricted_shell based on whether the basename of $0 indicates that
+ the shell should be restricted or if the `-r' option was supplied at
+ startup. */
+ restricted_shell = shell_is_restricted (shell_name);
+
+ /* If the `-r' option is supplied at invocation, make sure that the shell
+ is not in restricted mode when running the startup files. */
+ saverst = restricted;
+ restricted = 0;
+#endif
+
+ /* The startup files are run with `set -e' temporarily disabled. */
+ if (locally_skip_execution == 0 && running_setuid == 0)
+ {
+ old_errexit_flag = exit_immediately_on_error;
+ exit_immediately_on_error = 0;
+
+ run_startup_files ();
+ exit_immediately_on_error += old_errexit_flag;
+ }
+
+ /* If we are invoked as `sh', turn on Posix mode. */
+ if (act_like_sh)
+ {
+ bind_variable ("POSIXLY_CORRECT", "y", 0);
+ sv_strict_posix ("POSIXLY_CORRECT");
+ }
+
+#if defined (RESTRICTED_SHELL)
+ /* Turn on the restrictions after executing the startup files. This
+ means that `bash -r' or `set -r' invoked from a startup file will
+ turn on the restrictions after the startup files are executed. */
+ restricted = saverst || restricted;
+ if (shell_reinitialized == 0)
+ maybe_make_restricted (shell_name);
+#endif /* RESTRICTED_SHELL */
+
+#if defined (WORDEXP_OPTION)
+ if (wordexp_only)
+ {
+ startup_state = 3;
+ last_command_exit_value = run_wordexp (argv[arg_index]);
+ exit_shell (last_command_exit_value);
+ }
+#endif
+
+ if (command_execution_string)
+ {
+ arg_index = bind_args (argv, arg_index, argc, 0);
+ startup_state = 2;
+
+ if (debugging_mode)
+ start_debugger ();
+
+#if defined (ONESHOT)
+ executing = 1;
+ run_one_command (command_execution_string);
+ exit_shell (last_command_exit_value);
+#else /* ONESHOT */
+ with_input_from_string (command_execution_string, "-c");
+ goto read_and_execute;
+#endif /* !ONESHOT */
+ }
+
+ /* Get possible input filename and set up default_buffered_input or
+ default_input as appropriate. */
+ if (arg_index != argc && read_from_stdin == 0)
+ {
+ open_shell_script (argv[arg_index]);
+ arg_index++;
+ }
+ else if (interactive == 0)
+ /* In this mode, bash is reading a script from stdin, which is a
+ pipe or redirected file. */
+#if defined (BUFFERED_INPUT)
+ default_buffered_input = fileno (stdin); /* == 0 */
+#else
+ setbuf (default_input, (char *)NULL);
+#endif /* !BUFFERED_INPUT */
+
+ set_bash_input ();
+
+ /* Bind remaining args to $1 ... $n */
+ arg_index = bind_args (argv, arg_index, argc, 1);
+
+ if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && dollar_vars[1])
+ start_debugger ();
+
+ /* Do the things that should be done only for interactive shells. */
+ if (interactive_shell)
+ {
+ /* Set up for checking for presence of mail. */
+ reset_mail_timer ();
+ init_mail_dates ();
+
+#if defined (HISTORY)
+ /* Initialize the interactive history stuff. */
+ bash_initialize_history ();
+ /* Don't load the history from the history file if we've already
+ saved some lines in this session (e.g., by putting `history -s xx'
+ into one of the startup files). */
+ if (shell_initialized == 0 && history_lines_this_session == 0)
+ load_history ();
+#endif /* HISTORY */
+
+ /* Initialize terminal state for interactive shells after the
+ .bash_profile and .bashrc are interpreted. */
+ get_tty_state ();
+ }
+
+#if !defined (ONESHOT)
+ read_and_execute:
+#endif /* !ONESHOT */
+
+ shell_initialized = 1;
+
+ /* Read commands until exit condition. */
+ reader_loop ();
+ exit_shell (last_command_exit_value);
+}
+
+static int
+parse_long_options (argv, arg_start, arg_end)
+ char **argv;
+ int arg_start, arg_end;
+{
+ int arg_index, longarg, i;
+ char *arg_string;
+
+ arg_index = arg_start;
+ while ((arg_index != arg_end) && (arg_string = argv[arg_index]) &&
+ (*arg_string == '-'))
+ {
+ longarg = 0;
+
+ /* Make --login equivalent to -login. */
+ if (arg_string[1] == '-' && arg_string[2])
+ {
+ longarg = 1;
+ arg_string++;
+ }
+
+ for (i = 0; long_args[i].name; i++)
+ {
+ if (STREQ (arg_string + 1, long_args[i].name))
+ {
+ if (long_args[i].type == Int)
+ *long_args[i].int_value = 1;
+ else if (argv[++arg_index] == 0)
+ {
+ report_error (_("%s: option requires an argument"), long_args[i].name);
+ exit (EX_BADUSAGE);
+ }
+ else
+ *long_args[i].char_value = argv[arg_index];
+
+ break;
+ }
+ }
+ if (long_args[i].name == 0)
+ {
+ if (longarg)
+ {
+ report_error (_("%s: invalid option"), argv[arg_index]);
+ show_shell_usage (stderr, 0);
+ exit (EX_BADUSAGE);
+ }
+ break; /* No such argument. Maybe flag arg. */
+ }
+
+ arg_index++;
+ }
+
+ return (arg_index);
+}
+
+static int
+parse_shell_options (argv, arg_start, arg_end)
+ char **argv;
+ int arg_start, arg_end;
+{
+ int arg_index;
+ int arg_character, on_or_off, next_arg, i;
+ char *o_option, *arg_string;
+
+ arg_index = arg_start;
+ while (arg_index != arg_end && (arg_string = argv[arg_index]) &&
+ (*arg_string == '-' || *arg_string == '+'))
+ {
+ /* There are flag arguments, so parse them. */
+ next_arg = arg_index + 1;
+
+ /* A single `-' signals the end of options. From the 4.3 BSD sh.
+ An option `--' means the same thing; this is the standard
+ getopt(3) meaning. */
+ if (arg_string[0] == '-' &&
+ (arg_string[1] == '\0' ||
+ (arg_string[1] == '-' && arg_string[2] == '\0')))
+ return (next_arg);
+
+ i = 1;
+ on_or_off = arg_string[0];
+ while (arg_character = arg_string[i++])
+ {
+ switch (arg_character)
+ {
+ case 'c':
+ want_pending_command = 1;
+ break;
+
+ case 'l':
+ make_login_shell = 1;
+ break;
+
+ case 's':
+ read_from_stdin = 1;
+ break;
+
+ case 'o':
+ o_option = argv[next_arg];
+ if (o_option == 0)
+ {
+ list_minus_o_opts (-1, (on_or_off == '-') ? 0 : 1);
+ break;
+ }
+ if (set_minus_o_option (on_or_off, o_option) != EXECUTION_SUCCESS)
+ exit (EX_BADUSAGE);
+ next_arg++;
+ break;
+
+ case 'O':
+ /* Since some of these can be overridden by the normal
+ interactive/non-interactive shell initialization or
+ initializing posix mode, we save the options and process
+ them after initialization. */
+ o_option = argv[next_arg];
+ if (o_option == 0)
+ {
+ shopt_listopt (o_option, (on_or_off == '-') ? 0 : 1);
+ break;
+ }
+ add_shopt_to_alist (o_option, on_or_off);
+ next_arg++;
+ break;
+
+ case 'D':
+ dump_translatable_strings = 1;
+ break;
+
+ default:
+ if (change_flag (arg_character, on_or_off) == FLAG_ERROR)
+ {
+ report_error (_("%c%c: invalid option"), on_or_off, arg_character);
+ show_shell_usage (stderr, 0);
+ exit (EX_BADUSAGE);
+ }
+ }
+ }
+ /* Can't do just a simple increment anymore -- what about
+ "bash -abouo emacs ignoreeof -hP"? */
+ arg_index = next_arg;
+ }
+
+ return (arg_index);
+}
+
+/* Exit the shell with status S. */
+void
+exit_shell (s)
+ int s;
+{
+ fflush (stdout); /* XXX */
+ fflush (stderr);
+
+ /* Do trap[0] if defined. Allow it to override the exit status
+ passed to us. */
+ if (signal_is_trapped (0))
+ s = run_exit_trap ();
+
+#if defined (PROCESS_SUBSTITUTION)
+ unlink_fifo_list ();
+#endif /* PROCESS_SUBSTITUTION */
+
+#if defined (HISTORY)
+ if (remember_on_history)
+ maybe_save_shell_history ();
+#endif /* HISTORY */
+
+#if defined (COPROCESS_SUPPORT)
+ coproc_flush ();
+#endif
+
+#if defined (JOB_CONTROL)
+ /* If the user has run `shopt -s huponexit', hangup all jobs when we exit
+ an interactive login shell. ksh does this unconditionally. */
+ if (interactive_shell && login_shell && hup_on_exit)
+ hangup_all_jobs ();
+
+ /* If this shell is interactive, terminate all stopped jobs and
+ restore the original terminal process group. Don't do this if we're
+ in a subshell and calling exit_shell after, for example, a failed
+ word expansion. */
+ if (subshell_environment == 0)
+ end_job_control ();
+#endif /* JOB_CONTROL */
+
+ /* Always return the exit status of the last command to our parent. */
+ sh_exit (s);
+}
+
+/* A wrapper for exit that (optionally) can do other things, like malloc
+ statistics tracing. */
+void
+sh_exit (s)
+ int s;
+{
+#if defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC)
+ if (malloc_trace_at_exit)
+ trace_malloc_stats (get_name_for_error (), (char *)NULL);
+#endif
+
+ exit (s);
+}
+
+/* Exit a subshell, which includes calling the exit trap. We don't want to
+ do any more cleanup, since a subshell is created as an exact copy of its
+ parent. */
+void
+subshell_exit (s)
+ int s;
+{
+ fflush (stdout);
+ fflush (stderr);
+
+ /* Do trap[0] if defined. Allow it to override the exit status
+ passed to us. */
+ if (signal_is_trapped (0))
+ s = run_exit_trap ();
+
+ sh_exit (s);
+}
+
+/* Source the bash startup files. If POSIXLY_CORRECT is non-zero, we obey
+ the Posix.2 startup file rules: $ENV is expanded, and if the file it
+ names exists, that file is sourced. The Posix.2 rules are in effect
+ for interactive shells only. (section 4.56.5.3) */
+
+/* Execute ~/.bashrc for most shells. Never execute it if
+ ACT_LIKE_SH is set, or if NO_RC is set.
+
+ If the executable file "/usr/gnu/src/bash/foo" contains:
+
+ #!/usr/gnu/bin/bash
+ echo hello
+
+ then:
+
+ COMMAND EXECUTE BASHRC
+ --------------------------------
+ bash -c foo NO
+ bash foo NO
+ foo NO
+ rsh machine ls YES (for rsh, which calls `bash -c')
+ rsh machine foo YES (for shell started by rsh) NO (for foo!)
+ echo ls | bash NO
+ login NO
+ bash YES
+*/
+
+static void
+execute_env_file (env_file)
+ char *env_file;
+{
+ char *fn;
+
+ if (env_file && *env_file)
+ {
+ fn = expand_string_unsplit_to_string (env_file, Q_DOUBLE_QUOTES);
+ if (fn && *fn)
+ maybe_execute_file (fn, 1);
+ FREE (fn);
+ }
+}
+
+static void
+run_startup_files ()
+{
+#if defined (JOB_CONTROL)
+ int old_job_control;
+#endif
+ int sourced_login, run_by_ssh;
+
+ /* get the rshd/sshd case out of the way first. */
+ if (interactive_shell == 0 && no_rc == 0 && login_shell == 0 &&
+ act_like_sh == 0 && command_execution_string)
+ {
+#ifdef SSH_SOURCE_BASHRC
+ run_by_ssh = (find_variable ("SSH_CLIENT") != (SHELL_VAR *)0) ||
+ (find_variable ("SSH2_CLIENT") != (SHELL_VAR *)0);
+#else
+ run_by_ssh = 0;
+#endif
+
+ /* If we were run by sshd or we think we were run by rshd, execute
+ ~/.bashrc if we are a top-level shell. */
+ if ((run_by_ssh || isnetconn (fileno (stdin))) && shell_level < 2)
+ {
+#ifdef SYS_BASHRC
+# if defined (__OPENNT)
+ maybe_execute_file (_prefixInstallPath(SYS_BASHRC, NULL, 0), 1);
+# else
+ maybe_execute_file (SYS_BASHRC, 1);
+# endif
+#endif
+ maybe_execute_file (bashrc_file, 1);
+ return;
+ }
+ }
+
+#if defined (JOB_CONTROL)
+ /* Startup files should be run without job control enabled. */
+ old_job_control = interactive_shell ? set_job_control (0) : 0;
+#endif
+
+ sourced_login = 0;
+
+ /* A shell begun with the --login (or -l) flag that is not in posix mode
+ runs the login shell startup files, no matter whether or not it is
+ interactive. If NON_INTERACTIVE_LOGIN_SHELLS is defined, run the
+ startup files if argv[0][0] == '-' as well. */
+#if defined (NON_INTERACTIVE_LOGIN_SHELLS)
+ if (login_shell && posixly_correct == 0)
+#else
+ if (login_shell < 0 && posixly_correct == 0)
+#endif
+ {
+ /* We don't execute .bashrc for login shells. */
+ no_rc++;
+
+ /* Execute /etc/profile and one of the personal login shell
+ initialization files. */
+ if (no_profile == 0)
+ {
+ maybe_execute_file (SYS_PROFILE, 1);
+
+ if (act_like_sh) /* sh */
+ maybe_execute_file ("~/.profile", 1);
+ else if ((maybe_execute_file ("~/.bash_profile", 1) == 0) &&
+ (maybe_execute_file ("~/.bash_login", 1) == 0)) /* bash */
+ maybe_execute_file ("~/.profile", 1);
+ }
+
+ sourced_login = 1;
+ }
+
+ /* A non-interactive shell not named `sh' and not in posix mode reads and
+ executes commands from $BASH_ENV. If `su' starts a shell with `-c cmd'
+ and `-su' as the name of the shell, we want to read the startup files.
+ No other non-interactive shells read any startup files. */
+ if (interactive_shell == 0 && !(su_shell && login_shell))
+ {
+ if (posixly_correct == 0 && act_like_sh == 0 && privileged_mode == 0 &&
+ sourced_env++ == 0)
+ execute_env_file (get_string_value ("BASH_ENV"));
+ return;
+ }
+
+ /* Interactive shell or `-su' shell. */
+ if (posixly_correct == 0) /* bash, sh */
+ {
+ if (login_shell && sourced_login++ == 0)
+ {
+ /* We don't execute .bashrc for login shells. */
+ no_rc++;
+
+ /* Execute /etc/profile and one of the personal login shell
+ initialization files. */
+ if (no_profile == 0)
+ {
+ maybe_execute_file (SYS_PROFILE, 1);
+
+ if (act_like_sh) /* sh */
+ maybe_execute_file ("~/.profile", 1);
+ else if ((maybe_execute_file ("~/.bash_profile", 1) == 0) &&
+ (maybe_execute_file ("~/.bash_login", 1) == 0)) /* bash */
+ maybe_execute_file ("~/.profile", 1);
+ }
+ }
+
+ /* bash */
+ if (act_like_sh == 0 && no_rc == 0)
+ {
+#ifdef SYS_BASHRC
+# if defined (__OPENNT)
+ maybe_execute_file (_prefixInstallPath(SYS_BASHRC, NULL, 0), 1);
+# else
+ maybe_execute_file (SYS_BASHRC, 1);
+# endif
+#endif
+ maybe_execute_file (bashrc_file, 1);
+ }
+ /* sh */
+ else if (act_like_sh && privileged_mode == 0 && sourced_env++ == 0)
+ execute_env_file (get_string_value ("ENV"));
+ }
+ else /* bash --posix, sh --posix */
+ {
+ /* bash and sh */
+ if (interactive_shell && privileged_mode == 0 && sourced_env++ == 0)
+ execute_env_file (get_string_value ("ENV"));
+ }
+
+#if defined (JOB_CONTROL)
+ set_job_control (old_job_control);
+#endif
+}
+
+#if defined (RESTRICTED_SHELL)
+/* Return 1 if the shell should be a restricted one based on NAME or the
+ value of `restricted'. Don't actually do anything, just return a
+ boolean value. */
+int
+shell_is_restricted (name)
+ char *name;
+{
+ char *temp;
+
+ if (restricted)
+ return 1;
+ temp = base_pathname (name);
+ if (*temp == '-')
+ temp++;
+ return (STREQ (temp, RESTRICTED_SHELL_NAME));
+}
+
+/* Perhaps make this shell a `restricted' one, based on NAME. If the
+ basename of NAME is "rbash", then this shell is restricted. The
+ name of the restricted shell is a configurable option, see config.h.
+ In a restricted shell, PATH, SHELL, ENV, and BASH_ENV are read-only
+ and non-unsettable.
+ Do this also if `restricted' is already set to 1; maybe the shell was
+ started with -r. */
+int
+maybe_make_restricted (name)
+ char *name;
+{
+ char *temp;
+
+ temp = base_pathname (name);
+ if (*temp == '-')
+ temp++;
+ if (restricted || (STREQ (temp, RESTRICTED_SHELL_NAME)))
+ {
+ set_var_read_only ("PATH");
+ set_var_read_only ("SHELL");
+ set_var_read_only ("ENV");
+ set_var_read_only ("BASH_ENV");
+ restricted = 1;
+ }
+ return (restricted);
+}
+#endif /* RESTRICTED_SHELL */
+
+/* Fetch the current set of uids and gids and return 1 if we're running
+ setuid or setgid. */
+static int
+uidget ()
+{
+ uid_t u;
+
+ u = getuid ();
+ if (current_user.uid != u)
+ {
+ FREE (current_user.user_name);
+ FREE (current_user.shell);
+ FREE (current_user.home_dir);
+ current_user.user_name = current_user.shell = current_user.home_dir = (char *)NULL;
+ }
+ current_user.uid = u;
+ current_user.gid = getgid ();
+ current_user.euid = geteuid ();
+ current_user.egid = getegid ();
+
+ /* See whether or not we are running setuid or setgid. */
+ return (current_user.uid != current_user.euid) ||
+ (current_user.gid != current_user.egid);
+}
+
+void
+disable_priv_mode ()
+{
+ setuid (current_user.uid);
+ setgid (current_user.gid);
+ current_user.euid = current_user.uid;
+ current_user.egid = current_user.gid;
+}
+
+#if defined (WORDEXP_OPTION)
+static int
+run_wordexp (words)
+ char *words;
+{
+ int code, nw, nb;
+ WORD_LIST *wl, *tl, *result;
+
+ code = setjmp_nosigs (top_level);
+
+ if (code != NOT_JUMPED)
+ {
+ switch (code)
+ {
+ /* Some kind of throw to top_level has occurred. */
+ case FORCE_EOF:
+ return last_command_exit_value = 127;
+ case ERREXIT:
+ case EXITPROG:
+ return last_command_exit_value;
+ case DISCARD:
+ return last_command_exit_value = 1;
+ default:
+ command_error ("run_wordexp", CMDERR_BADJUMP, code, 0);
+ }
+ }
+
+ /* Run it through the parser to get a list of words and expand them */
+ if (words && *words)
+ {
+ with_input_from_string (words, "--wordexp");
+ if (parse_command () != 0)
+ return (126);
+ if (global_command == 0)
+ {
+ printf ("0\n0\n");
+ return (0);
+ }
+ if (global_command->type != cm_simple)
+ return (126);
+ wl = global_command->value.Simple->words;
+ if (protected_mode)
+ for (tl = wl; tl; tl = tl->next)
+ tl->word->flags |= W_NOCOMSUB|W_NOPROCSUB;
+ result = wl ? expand_words_no_vars (wl) : (WORD_LIST *)0;
+ }
+ else
+ result = (WORD_LIST *)0;
+
+ last_command_exit_value = 0;
+
+ if (result == 0)
+ {
+ printf ("0\n0\n");
+ return (0);
+ }
+
+ /* Count up the number of words and bytes, and print them. Don't count
+ the trailing NUL byte. */
+ for (nw = nb = 0, wl = result; wl; wl = wl->next)
+ {
+ nw++;
+ nb += strlen (wl->word->word);
+ }
+ printf ("%u\n%u\n", nw, nb);
+ /* Print each word on a separate line. This will have to be changed when
+ the interface to glibc is completed. */
+ for (wl = result; wl; wl = wl->next)
+ printf ("%s\n", wl->word->word);
+
+ return (0);
+}
+#endif
+
+#if defined (ONESHOT)
+/* Run one command, given as the argument to the -c option. Tell
+ parse_and_execute not to fork for a simple command. */
+static int
+run_one_command (command)
+ char *command;
+{
+ int code;
+
+ code = setjmp_nosigs (top_level);
+
+ if (code != NOT_JUMPED)
+ {
+#if defined (PROCESS_SUBSTITUTION)
+ unlink_fifo_list ();
+#endif /* PROCESS_SUBSTITUTION */
+ switch (code)
+ {
+ /* Some kind of throw to top_level has occurred. */
+ case FORCE_EOF:
+ return last_command_exit_value = 127;
+ case ERREXIT:
+ case EXITPROG:
+ return last_command_exit_value;
+ case DISCARD:
+ return last_command_exit_value = 1;
+ default:
+ command_error ("run_one_command", CMDERR_BADJUMP, code, 0);
+ }
+ }
+ return (parse_and_execute (savestring (command), "-c", SEVAL_NOHIST));
+}
+#endif /* ONESHOT */
+
+static int
+bind_args (argv, arg_start, arg_end, start_index)
+ char **argv;
+ int arg_start, arg_end, start_index;
+{
+ register int i;
+ WORD_LIST *args;
+
+ for (i = arg_start, args = (WORD_LIST *)NULL; i < arg_end; i++)
+ args = make_word_list (make_word (argv[i]), args);
+ if (args)
+ {
+ args = REVERSE_LIST (args, WORD_LIST *);
+ if (start_index == 0) /* bind to $0...$n for sh -c command */
+ {
+ /* Posix.2 4.56.3 says that the first argument after sh -c command
+ becomes $0, and the rest of the arguments become $1...$n */
+ shell_name = savestring (args->word->word);
+ FREE (dollar_vars[0]);
+ dollar_vars[0] = savestring (args->word->word);
+ remember_args (args->next, 1);
+ push_args (args->next); /* BASH_ARGV and BASH_ARGC */
+ }
+ else /* bind to $1...$n for shell script */
+ {
+ remember_args (args, 1);
+ push_args (args); /* BASH_ARGV and BASH_ARGC */
+ }
+
+ dispose_words (args);
+ }
+
+ return (i);
+}
+
+void
+unbind_args ()
+{
+ remember_args ((WORD_LIST *)NULL, 1);
+ pop_args (); /* Reset BASH_ARGV and BASH_ARGC */
+}
+
+static void
+start_debugger ()
+{
+#if defined (DEBUGGER) && defined (DEBUGGER_START_FILE)
+ int old_errexit;
+
+ old_errexit = exit_immediately_on_error;
+ exit_immediately_on_error = 0;
+
+ maybe_execute_file (DEBUGGER_START_FILE, 1);
+ function_trace_mode = 1;
+
+ exit_immediately_on_error += old_errexit;
+#endif
+}
+
+static int
+open_shell_script (script_name)
+ char *script_name;
+{
+ int fd, e, fd_is_tty;
+ char *filename, *path_filename, *t;
+ char sample[80];
+ int sample_len;
+ struct stat sb;
+#if defined (ARRAY_VARS)
+ SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v;
+ ARRAY *funcname_a, *bash_source_a, *bash_lineno_a;
+#endif
+
+ filename = savestring (script_name);
+
+ fd = open (filename, O_RDONLY);
+ if ((fd < 0) && (errno == ENOENT) && (absolute_program (filename) == 0))
+ {
+ e = errno;
+ /* If it's not in the current directory, try looking through PATH
+ for it. */
+ path_filename = find_path_file (script_name);
+ if (path_filename)
+ {
+ free (filename);
+ filename = path_filename;
+ fd = open (filename, O_RDONLY);
+ }
+ else
+ errno = e;
+ }
+
+ if (fd < 0)
+ {
+ e = errno;
+ file_error (filename);
+ exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT);
+ }
+
+ free (dollar_vars[0]);
+ dollar_vars[0] = exec_argv0 ? savestring (exec_argv0) : savestring (script_name);
+ if (exec_argv0)
+ {
+ free (exec_argv0);
+ exec_argv0 = (char *)NULL;
+ }
+
+#if defined (ARRAY_VARS)
+ GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a);
+ GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a);
+ GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a);
+
+ array_push (bash_source_a, filename);
+ if (bash_lineno_a)
+ {
+ t = itos (executing_line_number ());
+ array_push (bash_lineno_a, t);
+ free (t);
+ }
+ array_push (funcname_a, "main");
+#endif
+
+#ifdef HAVE_DEV_FD
+ fd_is_tty = isatty (fd);
+#else
+ fd_is_tty = 0;
+#endif
+
+ /* Only do this with non-tty file descriptors we can seek on. */
+ if (fd_is_tty == 0 && (lseek (fd, 0L, 1) != -1))
+ {
+ /* Check to see if the `file' in `bash file' is a binary file
+ according to the same tests done by execute_simple_command (),
+ and report an error and exit if it is. */
+ sample_len = read (fd, sample, sizeof (sample));
+ if (sample_len < 0)
+ {
+ e = errno;
+ if ((fstat (fd, &sb) == 0) && S_ISDIR (sb.st_mode))
+ internal_error (_("%s: is a directory"), filename);
+ else
+ {
+ errno = e;
+ file_error (filename);
+ }
+ exit (EX_NOEXEC);
+ }
+ else if (sample_len > 0 && (check_binary_file (sample, sample_len)))
+ {
+ internal_error (_("%s: cannot execute binary file"), filename);
+ exit (EX_BINARY_FILE);
+ }
+ /* Now rewind the file back to the beginning. */
+ lseek (fd, 0L, 0);
+ }
+
+ /* Open the script. But try to move the file descriptor to a randomly
+ large one, in the hopes that any descriptors used by the script will
+ not match with ours. */
+ fd = move_to_high_fd (fd, 1, -1);
+
+#if defined (BUFFERED_INPUT)
+ default_buffered_input = fd;
+ SET_CLOSE_ON_EXEC (default_buffered_input);
+#else /* !BUFFERED_INPUT */
+ default_input = fdopen (fd, "r");
+
+ if (default_input == 0)
+ {
+ file_error (filename);
+ exit (EX_NOTFOUND);
+ }
+
+ SET_CLOSE_ON_EXEC (fd);
+ if (fileno (default_input) != fd)
+ SET_CLOSE_ON_EXEC (fileno (default_input));
+#endif /* !BUFFERED_INPUT */
+
+ /* Just about the only way for this code to be executed is if something
+ like `bash -i /dev/stdin' is executed. */
+ if (interactive_shell && fd_is_tty)
+ {
+ dup2 (fd, 0);
+ close (fd);
+ fd = 0;
+#if defined (BUFFERED_INPUT)
+ default_buffered_input = 0;
+#else
+ fclose (default_input);
+ default_input = stdin;
+#endif
+ }
+ else if (forced_interactive && fd_is_tty == 0)
+ /* But if a script is called with something like `bash -i scriptname',
+ we need to do a non-interactive setup here, since we didn't do it
+ before. */
+ init_interactive_script ();
+
+ free (filename);
+ return (fd);
+}
+
+/* Initialize the input routines for the parser. */
+static void
+set_bash_input ()
+{
+ /* Make sure the fd from which we are reading input is not in
+ no-delay mode. */
+#if defined (BUFFERED_INPUT)
+ if (interactive == 0)
+ sh_unset_nodelay_mode (default_buffered_input);
+ else
+#endif /* !BUFFERED_INPUT */
+ sh_unset_nodelay_mode (fileno (stdin));
+
+ /* with_input_from_stdin really means `with_input_from_readline' */
+ if (interactive && no_line_editing == 0)
+ with_input_from_stdin ();
+#if defined (BUFFERED_INPUT)
+ else if (interactive == 0)
+ with_input_from_buffered_stream (default_buffered_input, dollar_vars[0]);
+#endif /* BUFFERED_INPUT */
+ else
+ with_input_from_stream (default_input, dollar_vars[0]);
+}
+
+/* Close the current shell script input source and forget about it. This is
+ extern so execute_cmd.c:initialize_subshell() can call it. If CHECK_ZERO
+ is non-zero, we close default_buffered_input even if it's the standard
+ input (fd 0). */
+void
+unset_bash_input (check_zero)
+ int check_zero;
+{
+#if defined (BUFFERED_INPUT)
+ if ((check_zero && default_buffered_input >= 0) ||
+ (check_zero == 0 && default_buffered_input > 0))
+ {
+ close_buffered_fd (default_buffered_input);
+ default_buffered_input = bash_input.location.buffered_fd = -1;
+ bash_input.type = st_none; /* XXX */
+ }
+#else /* !BUFFERED_INPUT */
+ if (default_input)
+ {
+ fclose (default_input);
+ default_input = (FILE *)NULL;
+ }
+#endif /* !BUFFERED_INPUT */
+}
+
+
+#if !defined (PROGRAM)
+# define PROGRAM "bash"
+#endif
+
+static void
+set_shell_name (argv0)
+ char *argv0;
+{
+ /* Here's a hack. If the name of this shell is "sh", then don't do
+ any startup files; just try to be more like /bin/sh. */
+ shell_name = argv0 ? base_pathname (argv0) : PROGRAM;
+
+ if (argv0 && *argv0 == '-')
+ {
+ if (*shell_name == '-')
+ shell_name++;
+ login_shell = 1;
+ }
+
+ if (shell_name[0] == 's' && shell_name[1] == 'h' && shell_name[2] == '\0')
+ act_like_sh++;
+ if (shell_name[0] == 's' && shell_name[1] == 'u' && shell_name[2] == '\0')
+ su_shell++;
+
+ shell_name = argv0 ? argv0 : PROGRAM;
+ FREE (dollar_vars[0]);
+ dollar_vars[0] = savestring (shell_name);
+
+ /* A program may start an interactive shell with
+ "execl ("/bin/bash", "-", NULL)".
+ If so, default the name of this shell to our name. */
+ if (!shell_name || !*shell_name || (shell_name[0] == '-' && !shell_name[1]))
+ shell_name = PROGRAM;
+}
+
+static void
+init_interactive ()
+{
+ expand_aliases = interactive_shell = startup_state = 1;
+ interactive = 1;
+}
+
+static void
+init_noninteractive ()
+{
+#if defined (HISTORY)
+ bash_history_reinit (0);
+#endif /* HISTORY */
+ interactive_shell = startup_state = interactive = 0;
+ expand_aliases = posixly_correct; /* XXX - was 0 not posixly_correct */
+ no_line_editing = 1;
+#if defined (JOB_CONTROL)
+ /* Even if the shell is not interactive, enable job control if the -i or
+ -m option is supplied at startup. */
+ set_job_control (forced_interactive||jobs_m_flag);
+#endif /* JOB_CONTROL */
+}
+
+static void
+init_interactive_script ()
+{
+ init_noninteractive ();
+ expand_aliases = interactive_shell = startup_state = 1;
+}
+
+void
+get_current_user_info ()
+{
+ struct passwd *entry;
+
+ /* Don't fetch this more than once. */
+ if (current_user.user_name == 0)
+ {
+#if defined (__TANDEM)
+ entry = getpwnam (getlogin ());
+#else
+ entry = getpwuid (current_user.uid);
+#endif
+ if (entry)
+ {
+ current_user.user_name = savestring (entry->pw_name);
+ current_user.shell = (entry->pw_shell && entry->pw_shell[0])
+ ? savestring (entry->pw_shell)
+ : savestring ("/bin/sh");
+ current_user.home_dir = savestring (entry->pw_dir);
+ }
+ else
+ {
+ current_user.user_name = _("I have no name!");
+ current_user.user_name = savestring (current_user.user_name);
+ current_user.shell = savestring ("/bin/sh");
+ current_user.home_dir = savestring ("/");
+ }
+ endpwent ();
+ }
+}
+
+/* Do whatever is necessary to initialize the shell.
+ Put new initializations in here. */
+static void
+shell_initialize ()
+{
+ char hostname[256];
+
+ /* Line buffer output for stderr and stdout. */
+ if (shell_initialized == 0)
+ {
+ sh_setlinebuf (stderr);
+ sh_setlinebuf (stdout);
+ }
+
+ /* Sort the array of shell builtins so that the binary search in
+ find_shell_builtin () works correctly. */
+ initialize_shell_builtins ();
+
+ /* Initialize the trap signal handlers before installing our own
+ signal handlers. traps.c:restore_original_signals () is responsible
+ for restoring the original default signal handlers. That function
+ is called when we make a new child. */
+ initialize_traps ();
+ initialize_signals (0);
+
+ /* It's highly unlikely that this will change. */
+ if (current_host_name == 0)
+ {
+ /* Initialize current_host_name. */
+ if (gethostname (hostname, 255) < 0)
+ current_host_name = "??host??";
+ else
+ current_host_name = savestring (hostname);
+ }
+
+ /* Initialize the stuff in current_user that comes from the password
+ file. We don't need to do this right away if the shell is not
+ interactive. */
+ if (interactive_shell)
+ get_current_user_info ();
+
+ /* Initialize our interface to the tilde expander. */
+ tilde_initialize ();
+
+ /* Initialize internal and environment variables. Don't import shell
+ functions from the environment if we are running in privileged or
+ restricted mode or if the shell is running setuid. */
+#if defined (RESTRICTED_SHELL)
+ initialize_shell_variables (shell_environment, privileged_mode||restricted||running_setuid);
+#else
+ initialize_shell_variables (shell_environment, privileged_mode||running_setuid);
+#endif
+
+ /* Initialize the data structures for storing and running jobs. */
+ initialize_job_control (jobs_m_flag);
+
+ /* Initialize input streams to null. */
+ initialize_bash_input ();
+
+ initialize_flags ();
+
+ /* Initialize the shell options. Don't import the shell options
+ from the environment variables $SHELLOPTS or $BASHOPTS if we are
+ running in privileged or restricted mode or if the shell is running
+ setuid. */
+#if defined (RESTRICTED_SHELL)
+ initialize_shell_options (privileged_mode||restricted||running_setuid);
+ initialize_bashopts (privileged_mode||restricted||running_setuid);
+#else
+ initialize_shell_options (privileged_mode||running_setuid);
+ initialize_bashopts (privileged_mode||running_setuid);
+#endif
+}
+
+/* Function called by main () when it appears that the shell has already
+ had some initialization performed. This is supposed to reset the world
+ back to a pristine state, as if we had been exec'ed. */
+static void
+shell_reinitialize ()
+{
+ /* The default shell prompts. */
+ primary_prompt = PPROMPT;
+ secondary_prompt = SPROMPT;
+
+ /* Things that get 1. */
+ current_command_number = 1;
+
+ /* We have decided that the ~/.bashrc file should not be executed
+ for the invocation of each shell script. If the variable $ENV
+ (or $BASH_ENV) is set, its value is used as the name of a file
+ to source. */
+ no_rc = no_profile = 1;
+
+ /* Things that get 0. */
+ login_shell = make_login_shell = interactive = executing = 0;
+ debugging = do_version = line_number = last_command_exit_value = 0;
+ forced_interactive = interactive_shell = subshell_environment = 0;
+ expand_aliases = 0;
+
+ /* XXX - should we set jobs_m_flag to 0 here? */
+
+#if defined (HISTORY)
+ bash_history_reinit (0);
+#endif /* HISTORY */
+
+#if defined (RESTRICTED_SHELL)
+ restricted = 0;
+#endif /* RESTRICTED_SHELL */
+
+ /* Ensure that the default startup file is used. (Except that we don't
+ execute this file for reinitialized shells). */
+ bashrc_file = "~/.bashrc";
+
+ /* Delete all variables and functions. They will be reinitialized when
+ the environment is parsed. */
+ delete_all_contexts (shell_variables);
+ delete_all_variables (shell_functions);
+
+ reinit_special_variables ();
+
+#if defined (READLINE)
+ bashline_reinitialize ();
+#endif
+
+ shell_reinitialized = 1;
+}
+
+static void
+show_shell_usage (fp, extra)
+ FILE *fp;
+ int extra;
+{
+ int i;
+ char *set_opts, *s, *t;
+
+ if (extra)
+ fprintf (fp, _("GNU bash, version %s-(%s)\n"), shell_version_string (), MACHTYPE);
+ fprintf (fp, _("Usage:\t%s [GNU long option] [option] ...\n\t%s [GNU long option] [option] script-file ...\n"),
+ shell_name, shell_name);
+ fputs (_("GNU long options:\n"), fp);
+ for (i = 0; long_args[i].name; i++)
+ fprintf (fp, "\t--%s\n", long_args[i].name);
+
+ fputs (_("Shell options:\n"), fp);
+ fputs (_("\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"), fp);
+
+ for (i = 0, set_opts = 0; shell_builtins[i].name; i++)
+ if (STREQ (shell_builtins[i].name, "set"))
+ set_opts = savestring (shell_builtins[i].short_doc);
+ if (set_opts)
+ {
+ s = strchr (set_opts, '[');
+ if (s == 0)
+ s = set_opts;
+ while (*++s == '-')
+ ;
+ t = strchr (s, ']');
+ if (t)
+ *t = '\0';
+ fprintf (fp, _("\t-%s or -o option\n"), s);
+ free (set_opts);
+ }
+
+ if (extra)
+ {
+ fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name);
+ fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name);
+ fprintf (fp, _("Use the `bashbug' command to report bugs.\n"));
+ }
+}
+
+static void
+add_shopt_to_alist (opt, on_or_off)
+ char *opt;
+ int on_or_off;
+{
+ if (shopt_ind >= shopt_len)
+ {
+ shopt_len += 8;
+ shopt_alist = (STRING_INT_ALIST *)xrealloc (shopt_alist, shopt_len * sizeof (shopt_alist[0]));
+ }
+ shopt_alist[shopt_ind].word = opt;
+ shopt_alist[shopt_ind].token = on_or_off;
+ shopt_ind++;
+}
+
+static void
+run_shopt_alist ()
+{
+ register int i;
+
+ for (i = 0; i < shopt_ind; i++)
+ if (shopt_setopt (shopt_alist[i].word, (shopt_alist[i].token == '-')) != EXECUTION_SUCCESS)
+ exit (EX_BADUSAGE);
+ free (shopt_alist);
+ shopt_alist = 0;
+ shopt_ind = shopt_len = 0;
+}
diff --git a/support/bashbug.sh b/support/bashbug.sh
index 7b36d406..a11187e8 100644
--- a/support/bashbug.sh
+++ b/support/bashbug.sh
@@ -265,7 +265,7 @@ esac
${RMAIL} $SMARGS < "$TEMPFILE1" || {
cat "$TEMPFILE1" >> $HOME/dead.bashbug
- echo "$0: mail failed: report saved in $HOME/dead.bashbug" >&2
+ echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2
}
exit 0
diff --git a/test.c b/test.c
index 7f0b28d5..ab7bec79 100644
--- a/test.c
+++ b/test.c
@@ -646,8 +646,8 @@ unary_test (op, arg)
return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
case 'R':
- v = find_variable (arg);
- return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
+ v = find_variable_noref (arg);
+ return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
}
/* We can't actually get here, but this shuts up gcc. */
@@ -723,6 +723,7 @@ test_unop (op)
case 'o': case 'p': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x': case 'z':
case 'G': case 'L': case 'O': case 'S': case 'N':
+ case 'R':
return (1);
}
diff --git a/test.c~ b/test.c~
new file mode 100644
index 00000000..96f27fe7
--- /dev/null
+++ b/test.c~
@@ -0,0 +1,880 @@
+/* test.c - GNU test program (ksb and mjb) */
+
+/* Modified to run with the GNU shell Apr 25, 1988 by bfox. */
+
+/* Copyright (C) 1987-2010 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 <http://www.gnu.org/licenses/>.
+*/
+
+/* Define PATTERN_MATCHING to get the csh-like =~ and !~ pattern-matching
+ binary operators. */
+/* #define PATTERN_MATCHING */
+
+#if defined (HAVE_CONFIG_H)
+# include <config.h>
+#endif
+
+#include <stdio.h>
+
+#include "bashtypes.h"
+
+#if !defined (HAVE_LIMITS_H) && defined (HAVE_SYS_PARAM_H)
+# include <sys/param.h>
+#endif
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include <errno.h>
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+#if !defined (_POSIX_VERSION) && defined (HAVE_SYS_FILE_H)
+# include <sys/file.h>
+#endif /* !_POSIX_VERSION */
+#include "posixstat.h"
+#include "filecntl.h"
+#include "stat-time.h"
+
+#include "bashintl.h"
+
+#include "shell.h"
+#include "pathexp.h"
+#include "test.h"
+#include "builtins/common.h"
+
+#include <glob/strmatch.h>
+
+#if !defined (STRLEN)
+# define STRLEN(s) ((s)[0] ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0)
+#endif
+
+#if !defined (STREQ)
+# define STREQ(a, b) ((a)[0] == (b)[0] && strcmp ((a), (b)) == 0)
+#endif /* !STREQ */
+#define STRCOLLEQ(a, b) ((a)[0] == (b)[0] && strcoll ((a), (b)) == 0)
+
+#if !defined (R_OK)
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+#define F_OK 0
+#endif /* R_OK */
+
+#define EQ 0
+#define NE 1
+#define LT 2
+#define GT 3
+#define LE 4
+#define GE 5
+
+#define NT 0
+#define OT 1
+#define EF 2
+
+/* The following few defines control the truth and false output of each stage.
+ TRUE and FALSE are what we use to compute the final output value.
+ SHELL_BOOLEAN is the form which returns truth or falseness in shell terms.
+ Default is TRUE = 1, FALSE = 0, SHELL_BOOLEAN = (!value). */
+#define TRUE 1
+#define FALSE 0
+#define SHELL_BOOLEAN(value) (!(value))
+
+#define TEST_ERREXIT_STATUS 2
+
+static procenv_t test_exit_buf;
+static int test_error_return;
+#define test_exit(val) \
+ do { test_error_return = val; longjmp (test_exit_buf, 1); } while (0)
+
+extern int sh_stat __P((const char *, struct stat *));
+
+static int pos; /* The offset of the current argument in ARGV. */
+static int argc; /* The number of arguments present in ARGV. */
+static char **argv; /* The argument list. */
+static int noeval;
+
+static void test_syntax_error __P((char *, char *)) __attribute__((__noreturn__));
+static void beyond __P((void)) __attribute__((__noreturn__));
+static void integer_expected_error __P((char *)) __attribute__((__noreturn__));
+
+static int unary_operator __P((void));
+static int binary_operator __P((void));
+static int two_arguments __P((void));
+static int three_arguments __P((void));
+static int posixtest __P((void));
+
+static int expr __P((void));
+static int term __P((void));
+static int and __P((void));
+static int or __P((void));
+
+static int filecomp __P((char *, char *, int));
+static int arithcomp __P((char *, char *, int, int));
+static int patcomp __P((char *, char *, int));
+
+static void
+test_syntax_error (format, arg)
+ char *format, *arg;
+{
+ builtin_error (format, arg);
+ test_exit (TEST_ERREXIT_STATUS);
+}
+
+/*
+ * beyond - call when we're beyond the end of the argument list (an
+ * error condition)
+ */
+static void
+beyond ()
+{
+ test_syntax_error (_("argument expected"), (char *)NULL);
+}
+
+/* Syntax error for when an integer argument was expected, but
+ something else was found. */
+static void
+integer_expected_error (pch)
+ char *pch;
+{
+ test_syntax_error (_("%s: integer expression expected"), pch);
+}
+
+/* Increment our position in the argument list. Check that we're not
+ past the end of the argument list. This check is suppressed if the
+ argument is FALSE. Made a macro for efficiency. */
+#define advance(f) do { ++pos; if (f && pos >= argc) beyond (); } while (0)
+#define unary_advance() do { advance (1); ++pos; } while (0)
+
+/*
+ * expr:
+ * or
+ */
+static int
+expr ()
+{
+ if (pos >= argc)
+ beyond ();
+
+ return (FALSE ^ or ()); /* Same with this. */
+}
+
+/*
+ * or:
+ * and
+ * and '-o' or
+ */
+static int
+or ()
+{
+ int value, v2;
+
+ value = and ();
+ if (pos < argc && argv[pos][0] == '-' && argv[pos][1] == 'o' && !argv[pos][2])
+ {
+ advance (0);
+ v2 = or ();
+ return (value || v2);
+ }
+
+ return (value);
+}
+
+/*
+ * and:
+ * term
+ * term '-a' and
+ */
+static int
+and ()
+{
+ int value, v2;
+
+ value = term ();
+ if (pos < argc && argv[pos][0] == '-' && argv[pos][1] == 'a' && !argv[pos][2])
+ {
+ advance (0);
+ v2 = and ();
+ return (value && v2);
+ }
+ return (value);
+}
+
+/*
+ * term - parse a term and return 1 or 0 depending on whether the term
+ * evaluates to true or false, respectively.
+ *
+ * term ::=
+ * '-'('a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'|'k'|'p'|'r'|'s'|'u'|'w'|'x') filename
+ * '-'('G'|'L'|'O'|'S'|'N') filename
+ * '-t' [int]
+ * '-'('z'|'n') string
+ * '-o' option
+ * string
+ * string ('!='|'='|'==') string
+ * <int> '-'(eq|ne|le|lt|ge|gt) <int>
+ * file '-'(nt|ot|ef) file
+ * '(' <expr> ')'
+ * int ::=
+ * positive and negative integers
+ */
+static int
+term ()
+{
+ int value;
+
+ if (pos >= argc)
+ beyond ();
+
+ /* Deal with leading `not's. */
+ if (argv[pos][0] == '!' && argv[pos][1] == '\0')
+ {
+ value = 0;
+ while (pos < argc && argv[pos][0] == '!' && argv[pos][1] == '\0')
+ {
+ advance (1);
+ value = 1 - value;
+ }
+
+ return (value ? !term() : term());
+ }
+
+ /* A paren-bracketed argument. */
+ if (argv[pos][0] == '(' && argv[pos][1] == '\0') /* ) */
+ {
+ advance (1);
+ value = expr ();
+ if (argv[pos] == 0) /* ( */
+ test_syntax_error (_("`)' expected"), (char *)NULL);
+ else if (argv[pos][0] != ')' || argv[pos][1]) /* ( */
+ test_syntax_error (_("`)' expected, found %s"), argv[pos]);
+ advance (0);
+ return (value);
+ }
+
+ /* are there enough arguments left that this could be dyadic? */
+ if ((pos + 3 <= argc) && test_binop (argv[pos + 1]))
+ value = binary_operator ();
+
+ /* Might be a switch type argument */
+ else if (argv[pos][0] == '-' && argv[pos][2] == '\0')
+ {
+ if (test_unop (argv[pos]))
+ value = unary_operator ();
+ else
+ test_syntax_error (_("%s: unary operator expected"), argv[pos]);
+ }
+ else
+ {
+ value = argv[pos][0] != '\0';
+ advance (0);
+ }
+
+ return (value);
+}
+
+static int
+stat_mtime (fn, st, ts)
+ char *fn;
+ struct stat *st;
+ struct timespec *ts;
+{
+ int r;
+
+ r = sh_stat (fn, st);
+ if (r < 0)
+ return r;
+ *ts = get_stat_mtime (st);
+ return 0;
+}
+
+static int
+filecomp (s, t, op)
+ char *s, *t;
+ int op;
+{
+ struct stat st1, st2;
+ struct timespec ts1, ts2;
+ int r1, r2;
+
+ if ((r1 = stat_mtime (s, &st1, &ts1)) < 0)
+ {
+ if (op == EF)
+ return (FALSE);
+ }
+ if ((r2 = stat_mtime (t, &st2, &ts2)) < 0)
+ {
+ if (op == EF)
+ return (FALSE);
+ }
+
+ switch (op)
+ {
+ case OT: return (r1 < r2 || (r2 == 0 && timespec_cmp (ts1, ts2) < 0));
+ case NT: return (r1 > r2 || (r1 == 0 && timespec_cmp (ts1, ts2) > 0));
+ case EF: return (same_file (s, t, &st1, &st2));
+ }
+ return (FALSE);
+}
+
+static int
+arithcomp (s, t, op, flags)
+ char *s, *t;
+ int op, flags;
+{
+ intmax_t l, r;
+ int expok;
+
+ if (flags & TEST_ARITHEXP)
+ {
+ l = evalexp (s, &expok);
+ if (expok == 0)
+ return (FALSE); /* should probably longjmp here */
+ r = evalexp (t, &expok);
+ if (expok == 0)
+ return (FALSE); /* ditto */
+ }
+ else
+ {
+ if (legal_number (s, &l) == 0)
+ integer_expected_error (s);
+ if (legal_number (t, &r) == 0)
+ integer_expected_error (t);
+ }
+
+ switch (op)
+ {
+ case EQ: return (l == r);
+ case NE: return (l != r);
+ case LT: return (l < r);
+ case GT: return (l > r);
+ case LE: return (l <= r);
+ case GE: return (l >= r);
+ }
+
+ return (FALSE);
+}
+
+static int
+patcomp (string, pat, op)
+ char *string, *pat;
+ int op;
+{
+ int m;
+
+ m = strmatch (pat, string, FNMATCH_EXTFLAG|FNMATCH_IGNCASE);
+ return ((op == EQ) ? (m == 0) : (m != 0));
+}
+
+int
+binary_test (op, arg1, arg2, flags)
+ char *op, *arg1, *arg2;
+ int flags;
+{
+ int patmatch;
+
+ patmatch = (flags & TEST_PATMATCH);
+
+ if (op[0] == '=' && (op[1] == '\0' || (op[1] == '=' && op[2] == '\0')))
+ return (patmatch ? patcomp (arg1, arg2, EQ) : STREQ (arg1, arg2));
+ else if ((op[0] == '>' || op[0] == '<') && op[1] == '\0')
+ {
+#if defined (HAVE_STRCOLL)
+ if (shell_compatibility_level > 40 && flags & TEST_LOCALE)
+ return ((op[0] == '>') ? (strcoll (arg1, arg2) > 0) : (strcoll (arg1, arg2) < 0));
+ else
+#endif
+ return ((op[0] == '>') ? (strcmp (arg1, arg2) > 0) : (strcmp (arg1, arg2) < 0));
+ }
+ else if (op[0] == '!' && op[1] == '=' && op[2] == '\0')
+ return (patmatch ? patcomp (arg1, arg2, NE) : (STREQ (arg1, arg2) == 0));
+
+
+ else if (op[2] == 't')
+ {
+ switch (op[1])
+ {
+ case 'n': return (filecomp (arg1, arg2, NT)); /* -nt */
+ case 'o': return (filecomp (arg1, arg2, OT)); /* -ot */
+ case 'l': return (arithcomp (arg1, arg2, LT, flags)); /* -lt */
+ case 'g': return (arithcomp (arg1, arg2, GT, flags)); /* -gt */
+ }
+ }
+ else if (op[1] == 'e')
+ {
+ switch (op[2])
+ {
+ case 'f': return (filecomp (arg1, arg2, EF)); /* -ef */
+ case 'q': return (arithcomp (arg1, arg2, EQ, flags)); /* -eq */
+ }
+ }
+ else if (op[2] == 'e')
+ {
+ switch (op[1])
+ {
+ case 'n': return (arithcomp (arg1, arg2, NE, flags)); /* -ne */
+ case 'g': return (arithcomp (arg1, arg2, GE, flags)); /* -ge */
+ case 'l': return (arithcomp (arg1, arg2, LE, flags)); /* -le */
+ }
+ }
+
+ return (FALSE); /* should never get here */
+}
+
+
+static int
+binary_operator ()
+{
+ int value;
+ char *w;
+
+ w = argv[pos + 1];
+ if ((w[0] == '=' && (w[1] == '\0' || (w[1] == '=' && w[2] == '\0'))) || /* =, == */
+ ((w[0] == '>' || w[0] == '<') && w[1] == '\0') || /* <, > */
+ (w[0] == '!' && w[1] == '=' && w[2] == '\0')) /* != */
+ {
+ value = binary_test (w, argv[pos], argv[pos + 2], 0);
+ pos += 3;
+ return (value);
+ }
+
+#if defined (PATTERN_MATCHING)
+ if ((w[0] == '=' || w[0] == '!') && w[1] == '~' && w[2] == '\0')
+ {
+ value = patcomp (argv[pos], argv[pos + 2], w[0] == '=' ? EQ : NE);
+ pos += 3;
+ return (value);
+ }
+#endif
+
+ if ((w[0] != '-' || w[3] != '\0') || test_binop (w) == 0)
+ {
+ test_syntax_error (_("%s: binary operator expected"), w);
+ /* NOTREACHED */
+ return (FALSE);
+ }
+
+ value = binary_test (w, argv[pos], argv[pos + 2], 0);
+ pos += 3;
+ return value;
+}
+
+static int
+unary_operator ()
+{
+ char *op;
+ intmax_t r;
+
+ op = argv[pos];
+ if (test_unop (op) == 0)
+ return (FALSE);
+
+ /* the only tricky case is `-t', which may or may not take an argument. */
+ if (op[1] == 't')
+ {
+ advance (0);
+ if (pos < argc)
+ {
+ if (legal_number (argv[pos], &r))
+ {
+ advance (0);
+ return (unary_test (op, argv[pos - 1]));
+ }
+ else
+ return (FALSE);
+ }
+ else
+ return (unary_test (op, "1"));
+ }
+
+ /* All of the unary operators take an argument, so we first call
+ unary_advance (), which checks to make sure that there is an
+ argument, and then advances pos right past it. This means that
+ pos - 1 is the location of the argument. */
+ unary_advance ();
+ return (unary_test (op, argv[pos - 1]));
+}
+
+int
+unary_test (op, arg)
+ char *op, *arg;
+{
+ intmax_t r;
+ struct stat stat_buf;
+ SHELL_VAR *v;
+
+ switch (op[1])
+ {
+ case 'a': /* file exists in the file system? */
+ case 'e':
+ return (sh_stat (arg, &stat_buf) == 0);
+
+ case 'r': /* file is readable? */
+ return (sh_eaccess (arg, R_OK) == 0);
+
+ case 'w': /* File is writeable? */
+ return (sh_eaccess (arg, W_OK) == 0);
+
+ case 'x': /* File is executable? */
+ return (sh_eaccess (arg, X_OK) == 0);
+
+ case 'O': /* File is owned by you? */
+ return (sh_stat (arg, &stat_buf) == 0 &&
+ (uid_t) current_user.euid == (uid_t) stat_buf.st_uid);
+
+ case 'G': /* File is owned by your group? */
+ return (sh_stat (arg, &stat_buf) == 0 &&
+ (gid_t) current_user.egid == (gid_t) stat_buf.st_gid);
+
+ case 'N':
+ return (sh_stat (arg, &stat_buf) == 0 &&
+ stat_buf.st_atime <= stat_buf.st_mtime);
+
+ case 'f': /* File is a file? */
+ if (sh_stat (arg, &stat_buf) < 0)
+ return (FALSE);
+
+ /* -f is true if the given file exists and is a regular file. */
+#if defined (S_IFMT)
+ return (S_ISREG (stat_buf.st_mode) || (stat_buf.st_mode & S_IFMT) == 0);
+#else
+ return (S_ISREG (stat_buf.st_mode));
+#endif /* !S_IFMT */
+
+ case 'd': /* File is a directory? */
+ return (sh_stat (arg, &stat_buf) == 0 && (S_ISDIR (stat_buf.st_mode)));
+
+ case 's': /* File has something in it? */
+ return (sh_stat (arg, &stat_buf) == 0 && stat_buf.st_size > (off_t) 0);
+
+ case 'S': /* File is a socket? */
+#if !defined (S_ISSOCK)
+ return (FALSE);
+#else
+ return (sh_stat (arg, &stat_buf) == 0 && S_ISSOCK (stat_buf.st_mode));
+#endif /* S_ISSOCK */
+
+ case 'c': /* File is character special? */
+ return (sh_stat (arg, &stat_buf) == 0 && S_ISCHR (stat_buf.st_mode));
+
+ case 'b': /* File is block special? */
+ return (sh_stat (arg, &stat_buf) == 0 && S_ISBLK (stat_buf.st_mode));
+
+ case 'p': /* File is a named pipe? */
+#ifndef S_ISFIFO
+ return (FALSE);
+#else
+ return (sh_stat (arg, &stat_buf) == 0 && S_ISFIFO (stat_buf.st_mode));
+#endif /* S_ISFIFO */
+
+ case 'L': /* Same as -h */
+ case 'h': /* File is a symbolic link? */
+#if !defined (S_ISLNK) || !defined (HAVE_LSTAT)
+ return (FALSE);
+#else
+ return ((arg[0] != '\0') &&
+ (lstat (arg, &stat_buf) == 0) && S_ISLNK (stat_buf.st_mode));
+#endif /* S_IFLNK && HAVE_LSTAT */
+
+ case 'u': /* File is setuid? */
+ return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISUID) != 0);
+
+ case 'g': /* File is setgid? */
+ return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISGID) != 0);
+
+ case 'k': /* File has sticky bit set? */
+#if !defined (S_ISVTX)
+ /* This is not Posix, and is not defined on some Posix systems. */
+ return (FALSE);
+#else
+ return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISVTX) != 0);
+#endif
+
+ case 't': /* File fd is a terminal? */
+ if (legal_number (arg, &r) == 0)
+ return (FALSE);
+ return ((r == (int)r) && isatty ((int)r));
+
+ case 'n': /* True if arg has some length. */
+ return (arg[0] != '\0');
+
+ case 'z': /* True if arg has no length. */
+ return (arg[0] == '\0');
+
+ case 'o': /* True if option `arg' is set. */
+ return (minus_o_option_value (arg) == 1);
+
+ case 'v':
+ v = find_variable (arg);
+#if defined (ARRAY_VARS)
+ if (v == 0 && valid_array_reference (arg))
+ {
+ char *t;
+ t = array_value (arg, 0, 0, (int *)0, (arrayind_t *)0);
+ return (t ? TRUE : FALSE);
+ }
+ else if (v && invisible_p (v) == 0 && array_p (v))
+ {
+ char *t;
+ /* [[ -v foo ]] == [[ -v foo[0] ]] */
+ t = array_reference (array_cell (v), 0);
+ return (t ? TRUE : FALSE);
+ }
+ else if (v && invisible_p (v) == 0 && assoc_p (v))
+ {
+ char *t;
+ t = assoc_reference (assoc_cell (v), "0");
+ return (t ? TRUE : FALSE);
+ }
+#endif
+ return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
+
+ case 'R':
+ v = find_variable (arg);
+ return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
+ }
+
+ /* We can't actually get here, but this shuts up gcc. */
+ return (FALSE);
+}
+
+/* Return TRUE if OP is one of the test command's binary operators. */
+int
+test_binop (op)
+ char *op;
+{
+ if (op[0] == '=' && op[1] == '\0')
+ return (1); /* '=' */
+ else if ((op[0] == '<' || op[0] == '>') && op[1] == '\0') /* string <, > */
+ return (1);
+ else if ((op[0] == '=' || op[0] == '!') && op[1] == '=' && op[2] == '\0')
+ return (1); /* `==' and `!=' */
+#if defined (PATTERN_MATCHING)
+ else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!'))
+ return (1);
+#endif
+ else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0')
+ return (0);
+ else
+ {
+ if (op[2] == 't')
+ switch (op[1])
+ {
+ case 'n': /* -nt */
+ case 'o': /* -ot */
+ case 'l': /* -lt */
+ case 'g': /* -gt */
+ return (1);
+ default:
+ return (0);
+ }
+ else if (op[1] == 'e')
+ switch (op[2])
+ {
+ case 'q': /* -eq */
+ case 'f': /* -ef */
+ return (1);
+ default:
+ return (0);
+ }
+ else if (op[2] == 'e')
+ switch (op[1])
+ {
+ case 'n': /* -ne */
+ case 'g': /* -ge */
+ case 'l': /* -le */
+ return (1);
+ default:
+ return (0);
+ }
+ else
+ return (0);
+ }
+}
+
+/* Return non-zero if OP is one of the test command's unary operators. */
+int
+test_unop (op)
+ char *op;
+{
+ if (op[0] != '-' || op[2] != 0)
+ return (0);
+
+ switch (op[1])
+ {
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'k': case 'n':
+ case 'o': case 'p': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'z':
+ case 'G': case 'L': case 'O': case 'S': case 'N':
+ case 'R':
+ return (1);
+ }
+
+ return (0);
+}
+
+static int
+two_arguments ()
+{
+ if (argv[pos][0] == '!' && argv[pos][1] == '\0')
+ return (argv[pos + 1][0] == '\0');
+ else if (argv[pos][0] == '-' && argv[pos][2] == '\0')
+ {
+ if (test_unop (argv[pos]))
+ return (unary_operator ());
+ else
+ test_syntax_error (_("%s: unary operator expected"), argv[pos]);
+ }
+ else
+ test_syntax_error (_("%s: unary operator expected"), argv[pos]);
+
+ return (0);
+}
+
+#define ANDOR(s) (s[0] == '-' && !s[2] && (s[1] == 'a' || s[1] == 'o'))
+
+/* This could be augmented to handle `-t' as equivalent to `-t 1', but
+ POSIX requires that `-t' be given an argument. */
+#define ONE_ARG_TEST(s) ((s)[0] != '\0')
+
+static int
+three_arguments ()
+{
+ int value;
+
+ if (test_binop (argv[pos+1]))
+ {
+ value = binary_operator ();
+ pos = argc;
+ }
+ else if (ANDOR (argv[pos+1]))
+ {
+ if (argv[pos+1][1] == 'a')
+ value = ONE_ARG_TEST(argv[pos]) && ONE_ARG_TEST(argv[pos+2]);
+ else
+ value = ONE_ARG_TEST(argv[pos]) || ONE_ARG_TEST(argv[pos+2]);
+ pos = argc;
+ }
+ else if (argv[pos][0] == '!' && argv[pos][1] == '\0')
+ {
+ advance (1);
+ value = !two_arguments ();
+ }
+ else if (argv[pos][0] == '(' && argv[pos+2][0] == ')')
+ {
+ value = ONE_ARG_TEST(argv[pos+1]);
+ pos = argc;
+ }
+ else
+ test_syntax_error (_("%s: binary operator expected"), argv[pos+1]);
+
+ return (value);
+}
+
+/* This is an implementation of a Posix.2 proposal by David Korn. */
+static int
+posixtest ()
+{
+ int value;
+
+ switch (argc - 1) /* one extra passed in */
+ {
+ case 0:
+ value = FALSE;
+ pos = argc;
+ break;
+
+ case 1:
+ value = ONE_ARG_TEST(argv[1]);
+ pos = argc;
+ break;
+
+ case 2:
+ value = two_arguments ();
+ pos = argc;
+ break;
+
+ case 3:
+ value = three_arguments ();
+ break;
+
+ case 4:
+ if (argv[pos][0] == '!' && argv[pos][1] == '\0')
+ {
+ advance (1);
+ value = !three_arguments ();
+ break;
+ }
+ /* FALLTHROUGH */
+ default:
+ value = expr ();
+ }
+
+ return (value);
+}
+
+/*
+ * [:
+ * '[' expr ']'
+ * test:
+ * test expr
+ */
+int
+test_command (margc, margv)
+ int margc;
+ char **margv;
+{
+ int value;
+ int code;
+
+ USE_VAR(margc);
+
+ code = setjmp_nosigs (test_exit_buf);
+
+ if (code)
+ return (test_error_return);
+
+ argv = margv;
+
+ if (margv[0] && margv[0][0] == '[' && margv[0][1] == '\0')
+ {
+ --margc;
+
+ if (margv[margc] && (margv[margc][0] != ']' || margv[margc][1]))
+ test_syntax_error (_("missing `]'"), (char *)NULL);
+
+ if (margc < 2)
+ test_exit (SHELL_BOOLEAN (FALSE));
+ }
+
+ argc = margc;
+ pos = 1;
+
+ if (pos >= argc)
+ test_exit (SHELL_BOOLEAN (FALSE));
+
+ noeval = 0;
+ value = posixtest ();
+
+ if (pos != argc)
+ test_syntax_error (_("too many arguments"), (char *)NULL);
+
+ test_exit (SHELL_BOOLEAN (value));
+}
diff --git a/trap.c b/trap.c
index 15d3fc81..edce31ab 100644
--- a/trap.c
+++ b/trap.c
@@ -920,7 +920,8 @@ _run_trap_internal (sig, tag)
subst_assign_varlist = 0;
#if defined (JOB_CONTROL)
- save_pipeline (1); /* XXX only provides one save level */
+ if (sig != DEBUG_TRAP) /* run_debug_trap does this */
+ save_pipeline (1); /* XXX only provides one save level */
#endif
/* If we're in a function, make sure return longjmps come here, too. */
@@ -940,7 +941,8 @@ _run_trap_internal (sig, tag)
trap_exit_value = last_command_exit_value;
#if defined (JOB_CONTROL)
- restore_pipeline (1);
+ if (sig != DEBUG_TRAP) /* run_debug_trap does this */
+ restore_pipeline (1);
#endif
subst_assign_varlist = save_subst_varlist;