diff options
author | Chet Ramey <chet.ramey@case.edu> | 2014-03-07 16:11:28 -0500 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2014-03-07 16:11:28 -0500 |
commit | 15baad6212e659432176d7b69ee9eae30473a914 (patch) | |
tree | 951b99ecaa5657eb83ed2de4532f9b593a502649 | |
parent | df8375c37c241d6bad23d5c3af5c4233e363b7d5 (diff) | |
download | bash-15baad6212e659432176d7b69ee9eae30473a914.tar.gz |
commit bash-20140228 snapshot
-rw-r--r-- | CWRU/CWRU.chlog | 26 | ||||
-rw-r--r-- | CWRU/CWRU.chlog~ | 5870 | ||||
-rw-r--r-- | MANIFEST | 22 | ||||
-rw-r--r-- | POSIX | 2 | ||||
-rw-r--r-- | aclocal.m4 | 2 | ||||
-rw-r--r-- | autom4te.cache/output.0 | 2 | ||||
-rw-r--r-- | autom4te.cache/output.1 | 482 | ||||
-rw-r--r-- | autom4te.cache/requests | 71 | ||||
-rw-r--r-- | autom4te.cache/traces.1 | 4463 | ||||
-rwxr-xr-x | configure | 22 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | configure.ac~ | 1212 | ||||
-rw-r--r-- | doc/FAQ | 2 | ||||
-rw-r--r-- | doc/bash.0 | 22 | ||||
-rw-r--r-- | doc/bash.html | 5 | ||||
-rw-r--r-- | doc/bashref.dvi | bin | 721984 -> 721984 bytes | |||
-rw-r--r-- | doc/bashref.html | 15 | ||||
-rw-r--r-- | doc/bashref.info | 220 | ||||
-rw-r--r-- | doc/bashref.log | 2 | ||||
-rw-r--r-- | doc/bashref.pdf | bin | 463878 -> 463824 bytes | |||
-rw-r--r-- | doc/bashref.ps | 1425 | ||||
-rw-r--r-- | doc/builtins.0 | 22 | ||||
-rw-r--r-- | doc/builtins.ps | 73 | ||||
-rw-r--r-- | doc/rbash.ps | 2 | ||||
-rw-r--r-- | execute_cmd.c~ | 5447 | ||||
-rw-r--r-- | jobs.c | 2 | ||||
-rw-r--r-- | jobs.c~ | 4476 | ||||
-rw-r--r-- | po/pl.po | 921 | ||||
-rw-r--r-- | shell.c | 10 | ||||
-rw-r--r-- | shell.c~ | 1888 | ||||
-rw-r--r-- | support/bashbug.sh | 2 | ||||
-rw-r--r-- | test.c | 5 | ||||
-rw-r--r-- | test.c~ | 880 | ||||
-rw-r--r-- | trap.c | 6 |
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> @@ -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 @@ -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. @@ -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]) @@ -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 +]) @@ -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? @@ -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 Binary files differindex ab66a965..f56627f8 100644 --- a/doc/bashref.dvi +++ b/doc/bashref.dvi 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 Binary files differindex 64cf6353..45284f78 100644 --- a/doc/bashref.pdf +++ b/doc/bashref.pdf 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__ */ + } +} @@ -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 */ @@ -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 @@ -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 @@ -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)); +} @@ -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; |