From ac50fbac377e32b98d2de396f016ea81e8ee9961 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Wed, 26 Feb 2014 09:36:43 -0500 Subject: [PATCH] Bash-4.3 distribution sources and documentation --- AUTHORS | 4 + CHANGES | 847 + COMPAT | 64 +- CWRU/changelog | 14521 +++++--------- INSTALL | 25 +- MANIFEST | 338 +- Makefile.in | 73 +- NEWS | 184 + NOTES | 3 +- POSIX | 93 +- README | 9 +- aclocal.m4 | 34 +- alias.c | 2 +- array.c | 46 +- arrayfunc.c | 150 +- arrayfunc.h | 10 +- assoc.c | 31 +- assoc.h | 1 + bashhist.c | 30 +- bashline.c | 528 +- bashline.h | 1 + bracecomp.c | 8 +- braces.c | 202 +- builtins.h | 2 +- builtins/Makefile.in | 48 +- builtins/bind.def | 15 +- builtins/caller.def | 3 +- builtins/cd.def | 163 +- builtins/common.c | 4 +- builtins/common.h | 4 + builtins/complete.def | 8 +- builtins/declare.def | 157 +- builtins/echo.def | 4 +- builtins/eval.def | 3 +- builtins/evalfile.c | 12 +- builtins/evalstring.c | 127 +- builtins/exec.def | 4 +- builtins/fc.def | 27 +- builtins/gen-helpfiles.c | 197 + builtins/hash.def | 5 +- builtins/help.def | 222 +- builtins/history.def | 5 +- builtins/jobs.def | 2 +- builtins/kill.def | 8 +- builtins/mapfile.def | 10 +- builtins/mkbuiltins.c | 60 +- builtins/printf.def | 82 +- builtins/psize.sh | 2 +- builtins/pushd.def | 22 +- builtins/read.def | 142 +- builtins/return.def | 2 + builtins/set.def | 54 +- builtins/setattr.def | 49 +- builtins/shopt.def | 60 +- builtins/test.def | 1 + builtins/type.def | 8 +- builtins/ulimit.def | 11 +- builtins/umask.def | 4 - builtins/wait.def | 60 +- command.h | 12 +- config-top.h | 25 +- config.h.in | 44 +- configure | 29550 +++++++---------------------- configure.ac | 1212 ++ doc/FAQ | 207 +- doc/Makefile.in | 14 +- doc/aosa-bash.pdf | Bin 0 -> 153472 bytes doc/article.ms | 6 +- doc/article.pdf | Bin 131900 -> 49482 bytes doc/article.ps | 364 +- doc/bash.0 | 3511 ++-- doc/bash.1 | 917 +- doc/bash.html | 1019 +- doc/bash.pdf | Bin 296259 -> 312770 bytes doc/bash.ps | 13178 ++++++------- doc/bashref.dvi | Bin 680368 -> 721984 bytes doc/bashref.html | 4659 +++-- doc/bashref.info | 2604 ++- doc/bashref.pdf | Bin 570072 -> 463824 bytes doc/bashref.ps | 30211 +++++++++++++++++------------- doc/bashref.texi | 1223 +- doc/builtins.0 | 1059 +- doc/builtins.1 | 9 +- doc/builtins.ps | 3826 ++-- doc/rbash.0 | 2 +- doc/rbash.ps | 14 +- doc/texinfo.tex | 2811 ++- doc/version.texi | 12 +- error.c | 30 + error.h | 3 +- eval.c | 20 +- examples/INDEX.html | 6 +- examples/INDEX.txt | 3 +- examples/complete/cdfunc | 76 + examples/complete/complete-examples | 17 + examples/functions/array-stuff | 19 + examples/functions/fstty | 18 + examples/functions/func | 20 +- examples/functions/inetaddr | 19 + examples/functions/isnum2 | 19 + examples/functions/ksh-cd | 19 + examples/functions/ksh-compat-test | 18 + examples/functions/kshenv | 18 + examples/functions/notify.bash | 19 + examples/functions/seq | 19 + examples/functions/seq2 | 19 + examples/functions/sort-pos-params | 19 + examples/functions/substr | 18 + examples/functions/substr2 | 20 +- examples/functions/whatis | 19 + examples/functions/whence | 19 + examples/functions/which | 18 + examples/loadables/Makefile.in | 9 +- examples/loadables/basename.c | 18 + examples/loadables/finfo.c | 18 + examples/loadables/hello.c | 18 + examples/loadables/mkdir.c | 2 +- examples/loadables/sleep.c | 4 + examples/scripts/center | 17 + examples/scripts/shprompt | 18 +- examples/scripts/spin.bash | 16 + examples/scripts/xterm_title | 17 + examples/scripts/zprintf | 17 + examples/startup-files/README | 9 - execute_cmd.c | 549 +- expr.c | 127 +- externs.h | 20 +- findcmd.c | 22 +- findcmd.h | 4 +- flags.c | 17 +- flags.h | 5 +- general.c | 29 +- general.h | 4 +- include/chartypes.h | 2 +- include/posixdir.h | 14 +- include/posixjmp.h | 2 + include/shmbutil.h | 22 +- include/stat-time.h | 214 + include/stdc.h | 5 +- include/systimes.h | 2 +- include/typemax.h | 4 + input.c | 21 +- jobs.c | 331 +- jobs.h | 11 +- lib/glob/glob.c | 347 +- lib/glob/glob.h | 2 + lib/glob/gmisc.c | 18 + lib/glob/sm_loop.c | 55 +- lib/glob/smatch.c | 43 +- lib/glob/xmbsrtowcs.c | 17 +- lib/intl/Makefile.in | 6 +- lib/intl/l10nflist.c | 2 +- lib/intl/localealias.c | 5 +- lib/malloc/getpagesize.h | 2 +- lib/malloc/imalloc.h | 11 +- lib/malloc/malloc.c | 28 +- lib/malloc/table.c | 39 + lib/readline/Makefile.in | 27 +- lib/readline/bind.c | 207 +- lib/readline/callback.c | 44 +- lib/readline/chardefs.h | 2 +- lib/readline/colors.c | 251 + lib/readline/colors.h | 122 + lib/readline/complete.c | 373 +- lib/readline/display.c | 336 +- lib/readline/doc/history.texi | 26 +- lib/readline/doc/hstech.texi | 4 +- lib/readline/doc/hsuser.texi | 24 +- lib/readline/doc/rlman.texi | 27 +- lib/readline/doc/rltech.texi | 210 +- lib/readline/doc/rluser.texi | 228 +- lib/readline/doc/rluserman.texi | 27 +- lib/readline/doc/version.texi | 12 +- lib/readline/examples/excallback.c | 7 +- lib/readline/examples/rl-callbacktest.c | 81 + lib/readline/funmap.c | 5 +- lib/readline/histexpand.c | 70 +- lib/readline/histfile.c | 62 +- lib/readline/history.c | 8 +- lib/readline/history.h | 2 +- lib/readline/input.c | 53 +- lib/readline/isearch.c | 128 +- lib/readline/macro.c | 38 +- lib/readline/mbutil.c | 11 +- lib/readline/misc.c | 39 +- lib/readline/nls.c | 35 +- lib/readline/parse-colors.c | 440 + lib/readline/parse-colors.h | 46 + lib/readline/posixdir.h | 14 +- lib/readline/posixjmp.h | 2 + lib/readline/readline.c | 154 +- lib/readline/readline.h | 36 +- lib/readline/rlconf.h | 12 +- lib/readline/rldefs.h | 10 +- lib/readline/rlmbutil.h | 9 + lib/readline/rlprivate.h | 35 +- lib/readline/rlstdc.h | 12 + lib/readline/rltty.c | 10 +- lib/readline/rltypedefs.h | 14 +- lib/readline/search.c | 93 +- lib/readline/shell.c | 48 +- lib/readline/signals.c | 120 +- lib/readline/terminal.c | 85 +- lib/readline/text.c | 7 +- lib/readline/undo.c | 39 +- lib/readline/util.c | 83 +- lib/readline/vi_keymap.c | 1 - lib/readline/vi_mode.c | 100 +- lib/sh/Makefile.in | 45 +- lib/sh/casemod.c | 24 +- lib/sh/clktck.c | 4 +- lib/sh/eaccess.c | 13 +- lib/sh/fmtulong.c | 5 +- lib/sh/getcwd.c | 6 +- lib/sh/inet_aton.c | 2 + lib/sh/itos.c | 12 + lib/sh/mailstat.c | 2 +- lib/sh/makepath.c | 2 +- lib/sh/mbschr.c | 13 +- lib/sh/mktime.c | 2 - lib/sh/oslib.c | 4 +- lib/sh/pathcanon.c | 2 +- lib/sh/pathphys.c | 4 +- lib/sh/shmbchar.c | 23 +- lib/sh/shquote.c | 109 +- lib/sh/snprintf.c | 178 +- lib/sh/spell.c | 2 +- lib/sh/strchrnul.c | 123 +- lib/sh/strdup.c | 42 + lib/sh/strerror.c | 2 +- lib/sh/strftime.c | 155 +- lib/sh/stringvec.c | 16 + lib/sh/strpbrk.c | 2 +- lib/sh/strtrans.c | 86 +- lib/sh/tmpfile.c | 6 +- lib/sh/unicode.c | 188 +- lib/sh/wcsnwidth.c | 56 + lib/sh/zgetline.c | 2 +- lib/sh/zmapfd.c | 3 +- lib/sh/zread.c | 48 +- lib/tilde/shell.c | 17 +- locale.c | 49 +- m4/stat-time.m4 | 61 + m4/timespec.m4 | 71 + mailcheck.c | 12 +- make_cmd.c | 13 +- mksyntax.c | 2 +- nojobs.c | 53 +- parse.y | 333 +- parser-built | 4 +- parser.h | 5 +- patchlevel.h | 4 +- pathexp.c | 110 +- pcomplete.c | 138 +- pcomplete.h | 8 +- pcomplib.c | 2 +- po/._bg.po | Bin 0 -> 4096 bytes po/LINGUAS | 2 +- po/af.gmo | Bin 1231 -> 1244 bytes po/af.po | 905 +- po/bash.pot | 899 +- po/bg.gmo | Bin 34844 -> 235979 bytes po/bg.po | 4853 +++-- po/ca.gmo | Bin 9819 -> 9739 bytes po/ca.po | 908 +- po/cs.gmo | Bin 134220 -> 173589 bytes po/cs.po | 1102 +- po/da.gmo | Bin 0 -> 100735 bytes po/da.po | 5795 ++++++ po/de.gmo | Bin 45776 -> 89921 bytes po/de.po | 4079 ++-- po/el.gmo | Bin 0 -> 37185 bytes po/el.po | 4104 ++++ po/en@boldquot.gmo | Bin 161163 -> 165724 bytes po/en@boldquot.po | 1054 +- po/en@quot.gmo | Bin 159611 -> 164132 bytes po/en@quot.po | 1026 +- po/eo.gmo | Bin 116790 -> 161232 bytes po/eo.po | 1451 +- po/es.gmo | Bin 133409 -> 122470 bytes po/es.po | 3816 ++-- po/et.gmo | Bin 12257 -> 12133 bytes po/et.po | 908 +- po/fi.gmo | Bin 120517 -> 102765 bytes po/fi.po | 937 +- po/fr.gmo | Bin 138545 -> 126213 bytes po/fr.po | 1332 +- po/ga.gmo | Bin 62011 -> 58471 bytes po/ga.po | 928 +- po/gl.gmo | Bin 0 -> 63233 bytes po/gl.po | 4488 +++++ po/hr.gmo | Bin 0 -> 34075 bytes po/hr.po | 4125 ++++ po/hu.gmo | Bin 134317 -> 110947 bytes po/hu.po | 938 +- po/id.gmo | Bin 131500 -> 108579 bytes po/id.po | 950 +- po/it.gmo | Bin 0 -> 122520 bytes po/it.po | 5853 ++++++ po/ja.gmo | Bin 145905 -> 133748 bytes po/ja.po | 1547 +- po/lt.gmo | Bin 30079 -> 29354 bytes po/lt.po | 930 +- po/nl.gmo | Bin 131870 -> 170658 bytes po/nl.po | 1238 +- po/pl.gmo | Bin 24983 -> 173751 bytes po/pl.po | 4540 +++-- po/pt_BR.gmo | Bin 9658 -> 9580 bytes po/pt_BR.po | 904 +- po/ro.gmo | Bin 9415 -> 9358 bytes po/ro.po | 916 +- po/ru.gmo | Bin 9142 -> 9155 bytes po/ru.po | 903 +- po/sk.gmo | Bin 132621 -> 121115 bytes po/sk.po | 1176 +- po/sl.gmo | Bin 0 -> 117289 bytes po/sl.po | 5593 ++++++ po/sr.gmo | Bin 0 -> 219040 bytes po/sr.po | 5661 ++++++ po/sv.gmo | Bin 128852 -> 165974 bytes po/sv.po | 1141 +- po/tr.gmo | Bin 24589 -> 88390 bytes po/tr.po | 2518 +-- po/uk.gmo | Bin 138956 -> 222687 bytes po/uk.po | 1976 +- po/vi.gmo | Bin 142862 -> 179349 bytes po/vi.po | 4183 +++-- po/zh_CN.gmo | Bin 123267 -> 102094 bytes po/zh_CN.po | 1369 +- po/zh_TW.gmo | Bin 5993 -> 5876 bytes po/zh_TW.po | 900 +- print_cmd.c | 75 +- quit.h | 34 +- redir.c | 141 +- redir.h | 1 + shell.c | 60 +- shell.h | 8 +- sig.c | 85 +- sig.h | 26 +- stringlib.c | 4 +- subst.c | 663 +- subst.h | 10 +- support/config.guess | 587 +- support/config.sub | 332 +- support/man2html.c | 1 + support/mkconffiles | 2 +- support/printenv.c | 1 + support/shobj-conf | 71 +- support/signames.c | 2 +- support/xcase.c | 1 + test.c | 60 +- tests/COPYRIGHT | 5 +- tests/appendop.right | 14 +- tests/appendop.tests | 6 +- tests/appendop1.sub | 15 + tests/appendop2.sub | 18 + tests/arith-for.right | 12 + tests/arith-for.tests | 19 + tests/arith.right | 37 +- tests/arith.tests | 7 + tests/arith5.sub | 56 + tests/arith6.sub | 52 + tests/array.right | 75 +- tests/array.tests | 12 + tests/array11.sub | 35 + tests/array12.sub | 21 + tests/array13.sub | 13 + tests/array14.sub | 30 + tests/array15.sub | 24 + tests/array16.sub | 21 + tests/array2.sub | 3 + tests/array6.sub | 6 + tests/assoc.right | 3 + tests/assoc.tests | 2 + tests/assoc7.sub | 16 + tests/builtins.right | 33 +- tests/builtins.tests | 6 + tests/builtins4.sub | 44 + tests/case.right | 14 + tests/case.tests | 15 + tests/case1.sub | 64 + tests/cond-regexp1.sub | 56 + tests/cond-regexp2.sub | 30 + tests/cond-regexp3.sub | 73 + tests/cond.right | 70 + tests/cond.tests | 6 +- tests/dollar-at-star | 22 + tests/dollar-at-star1.sub | 23 + tests/dollar-at4.sub | 10 + tests/dollar-at5.sub | 82 + tests/dollar-at6.sub | 30 + tests/dollar-star6.sub | 19 + tests/dollar-star7.sub | 30 + tests/dollar.right | 116 + tests/errors.right | 18 +- tests/errors.tests | 9 + tests/errors1.sub | 27 + tests/errors2.sub | 3 + tests/errors3.sub | 7 + tests/exec.right | 13 +- tests/execscript | 1 + tests/exp.right | 55 +- tests/exp.tests | 46 +- tests/exp5.sub | 22 + tests/exp6.sub | 30 + tests/extglob.right | 4 + tests/extglob.tests | 2 + tests/extglob1a.sub | 16 + tests/globstar.right | 430 + tests/globstar.tests | 1 + tests/globstar2.sub | 80 + tests/heredoc.right | 29 +- tests/heredoc.tests | 5 + tests/heredoc2.sub | 9 + tests/heredoc3.sub | 74 + tests/histexp.tests | 2 +- tests/history.right | 4 +- tests/history.tests | 1 + tests/history1.sub | 2 + tests/intl.right | 32 + tests/intl.tests | 5 + tests/iquote.right | 31 + tests/iquote.tests | 2 + tests/iquote1.sub | 43 + tests/jobs.right | 33 +- tests/jobs.tests | 3 + tests/jobs5.sub | 12 + tests/nameref.right | 129 + tests/nameref.tests | 118 + tests/nameref1.sub | 13 + tests/nameref2.sub | 7 + tests/nameref3.sub | 37 + tests/nameref4.sub | 212 + tests/nameref5.sub | 50 + tests/nameref6.sub | 44 + tests/nameref7.sub | 18 + tests/nameref8.sub | 57 + tests/new-exp.right | 13 +- tests/new-exp.tests | 4 + tests/new-exp2.sub | 6 + tests/new-exp9.sub | 31 + tests/nquote.right | 18 + tests/nquote.tests | 1 + tests/nquote2.sub | 29 + tests/posix2.tests | 2 +- tests/printf.right | Bin 3079 -> 3528 bytes tests/printf.tests | 3 + tests/printf2.sub | 1 + tests/printf3.sub | 11 +- tests/printf4.sub | 69 + tests/quote.right | 14 + tests/quote.tests | 1 + tests/quote1.sub | 49 + tests/read.right | 1 + tests/read3.sub | 5 + tests/redir.right | 3 +- tests/redir.tests | 2 + tests/redir10.sub | 25 + tests/rhs-exp.right | 31 + tests/rhs-exp.tests | 2 + tests/rhs-exp1.sub | 103 + tests/run-heredoc | 4 + tests/run-nameref | 4 + tests/run-printf | 8 +- tests/set-e.right | 5 + tests/set-e.tests | 1 + tests/set-e3.sub | 10 + tests/set-e3a.sub | 7 + tests/shopt.right | 8 + tests/source7.sub | 40 + tests/tilde.right | 1 + tests/tilde.tests | 2 + tests/trap.right | 18 + tests/trap.tests | 5 + tests/trap4.sub | 42 + tests/trap5.sub | 18 + tests/type.right | 37 + tests/type.tests | 2 + tests/type4.sub | 43 + tests/unicode1.sub | 583 + tests/unicode2.sub | 22 + tests/unicode3.sub | 7 + tests/varenv.right | 15 + tests/varenv.sh | 13 + tests/varenv3.sub | 32 + tests/varenv4.sub | 44 + tests/varenv5.sub | 16 + tests/varenv6.sub | 28 + tests/vredir.right | 12 +- trap.c | 246 +- trap.h | 12 +- unwind_prot.c | 2 +- variables.c | 676 +- variables.h | 32 +- version.c | 8 +- y.tab.c | 693 +- y.tab.h | 2 +- 497 files changed, 129901 insertions(+), 88104 deletions(-) create mode 100644 builtins/gen-helpfiles.c create mode 100644 configure.ac create mode 100644 doc/aosa-bash.pdf create mode 100644 examples/complete/cdfunc create mode 100644 include/stat-time.h create mode 100644 lib/readline/colors.c create mode 100644 lib/readline/colors.h create mode 100644 lib/readline/examples/rl-callbacktest.c create mode 100644 lib/readline/parse-colors.c create mode 100644 lib/readline/parse-colors.h create mode 100644 lib/sh/strdup.c create mode 100644 lib/sh/wcsnwidth.c create mode 100644 m4/stat-time.m4 create mode 100644 m4/timespec.m4 create mode 100644 po/._bg.po create mode 100644 po/da.gmo create mode 100644 po/da.po create mode 100644 po/el.gmo create mode 100644 po/el.po create mode 100644 po/gl.gmo create mode 100644 po/gl.po create mode 100644 po/hr.gmo create mode 100644 po/hr.po create mode 100644 po/it.gmo create mode 100644 po/it.po create mode 100644 po/sl.gmo create mode 100644 po/sl.po create mode 100644 po/sr.gmo create mode 100644 po/sr.po create mode 100644 tests/appendop1.sub create mode 100644 tests/appendop2.sub create mode 100644 tests/arith5.sub create mode 100644 tests/arith6.sub create mode 100644 tests/array11.sub create mode 100644 tests/array12.sub create mode 100644 tests/array13.sub create mode 100644 tests/array14.sub create mode 100644 tests/array15.sub create mode 100644 tests/array16.sub create mode 100644 tests/assoc7.sub create mode 100644 tests/builtins4.sub create mode 100644 tests/case1.sub create mode 100644 tests/cond-regexp1.sub create mode 100644 tests/cond-regexp2.sub create mode 100644 tests/cond-regexp3.sub create mode 100644 tests/dollar-at-star1.sub create mode 100644 tests/dollar-at4.sub create mode 100644 tests/dollar-at5.sub create mode 100644 tests/dollar-at6.sub create mode 100644 tests/dollar-star6.sub create mode 100644 tests/dollar-star7.sub create mode 100644 tests/errors1.sub create mode 100644 tests/errors2.sub create mode 100644 tests/errors3.sub create mode 100644 tests/exp5.sub create mode 100644 tests/exp6.sub create mode 100644 tests/extglob1a.sub create mode 100644 tests/globstar2.sub create mode 100644 tests/heredoc2.sub create mode 100644 tests/heredoc3.sub create mode 100644 tests/iquote1.sub create mode 100644 tests/jobs5.sub create mode 100644 tests/nameref.right create mode 100644 tests/nameref.tests create mode 100644 tests/nameref1.sub create mode 100644 tests/nameref2.sub create mode 100644 tests/nameref3.sub create mode 100644 tests/nameref4.sub create mode 100644 tests/nameref5.sub create mode 100644 tests/nameref6.sub create mode 100644 tests/nameref7.sub create mode 100644 tests/nameref8.sub create mode 100644 tests/new-exp9.sub create mode 100644 tests/nquote2.sub create mode 100644 tests/printf4.sub create mode 100644 tests/quote1.sub create mode 100644 tests/redir10.sub create mode 100644 tests/rhs-exp1.sub create mode 100644 tests/run-nameref create mode 100644 tests/set-e3.sub create mode 100644 tests/set-e3a.sub create mode 100644 tests/source7.sub create mode 100644 tests/trap4.sub create mode 100644 tests/trap5.sub create mode 100644 tests/type4.sub create mode 100644 tests/unicode1.sub create mode 100644 tests/unicode2.sub create mode 100644 tests/unicode3.sub create mode 100644 tests/varenv3.sub create mode 100644 tests/varenv4.sub create mode 100644 tests/varenv5.sub create mode 100644 tests/varenv6.sub diff --git a/AUTHORS b/AUTHORS index bd6d89b..9ad0ba2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -390,6 +390,7 @@ tests/strip.tests Chet Ramey tests/strip.right Chet Ramey tests/tilde-tests Chet Ramey tests/tilde.right Chet Ramey +tests/unicode1.sub Chet Ramey, John Kearney tests/varenv.right Chet Ramey tests/varenv.sh Chet Ramey tests/misc/chld-trap.sh Chet Ramey @@ -460,3 +461,6 @@ lib/sh/zwrite.c Chet Ramey tests/posix-ifs.sh Glenn Fowler support/checkbashisms Julian Gilbey, Debian Linux team + +lib/readline/colors.c Richard Stallman, David MacKenzie +lib/readline/parse-colors.c Richard Stallman, David MacKenzie diff --git a/CHANGES b/CHANGES index 84e1dbd..5985e42 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,850 @@ +This document details the changes between this version, bash-4.3-release, and +the previous version, bash-4.3-rc2. + +1. Changes to Bash + +a. Only Posix-mode shells should exit on an assignment failure in the + temporary environment preceding a special builtin. This is how it's been + documented. + +b. Fixed a bug that caused a failed special builtin to not exit a posix-mode + shell if the failing builtin was on the LHS of a && or ||. + +c. Changed the handling of unquoted backslashes in regular expressions to be + closer to bash-4.2. + +d. globstar (**) no longer traverses symbolic links that resolve to + directories. This eliminates some duplicate entries. + +e. Fixed a bug that caused a SIGCHLD trap handler to not be able to change the + SIGCHLD disposition. + +f. Fixed a bug that caused a crash when -x was enabled and a command + contained a printable multibyte (wide) character. + +g. Fixed a bug that caused an interactive shell without line editing enabled + to read invalid data after receiving a SIGINT. + +h. Fixed a bug that caused command word completion to fail if the directory in + $PATH where the completion would be found contained single or double quotes. + +i. Fixed a bug that caused a shell with -v enabled to print commands in $() + multiple times. + +2. Changes to Readline + +a. Fixed a bug that caused `undo' to reference freed memory or null pointers. + +3. New Features in Bash + +a. The [[ -v ]] option now understands array references (foo[1]) and returns + success if the referenced element has a value. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-rc2, and the +previous version, bash-4.3-rc1. + +1. Changes to Bash + +a. Fixed a bug that left variables set by printf -v marked as invisible. + +b. Fixed an off-by-one error in a job control warning message. + +c. Fixed a bug that caused the shell to crash after declaring a nameref variable + without a value. + +d. Fixed a bug that caused asynchronous commands to not set $? correctly. + +e. Fixed a bug that caused out-of-order execution when executing aliases with + embedded newlines containing `.' commands. + +f. Fixed a bug that caused error messages generated by expansion errors in + `for' commands to have the wrong line number. + +g. Fixed a bug that caused the `wait' builtin to not be interruptible in an + interactive shell with job control enabled. + +h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in + asynchronous subshell commands. + +i. Bash now requires that the value assigned to a nameref variable be a valid + shell identifier (variable name or array reference). + +j. Converting an existing variable to a nameref variable now turns off the + -i/-l/-u/-c attributes. + +k. Displaying a nameref variable with `declare -p' now displays the nameref + variable and its value rather than following the nameref chain. + +l. Fixed a problem with interrupt handling that caused a second and subsequent + SIGINT to be ignored by interactive shells. + +m. Fixed a bug that caused certain positional parameter and array expansions + to mishandle (discard) null positional parameters and array elements. + +n. The shell no longer blocks receipt of signals while running trap handlers + for those signals, and allows most trap handlers to be run recursively + (running trap handlers while a trap handler is executing). + +o. The shell now handles backslashes in regular expression arguments to the + [[ command's =~ operator slightly differently, resulting in more + consistent behavior. + +2. Changes to Readline + +a. Fixed a bug that could cause readline to crash and seg fault attempting to + expand an empty history entry. + +b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all + color processing but leave color enabled. + +c. Fixed a bug that caused display problems with multi-line prompts containing + invisible characters on multiple lines. + +d. Fixed a bug that caused effects made by undoing changes to a history line to + be discarded. + +3. New Features in Bash + +4. New Features in Readline + +a. When creating shared libraries on Mac OS X, the pathname written into the + library (install_name) no longer includes the minor version number. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-rc1, and the +previous version, bash-4.3-beta2. + +1. Changes to Bash + +a. Fixed a bug in bash completion that caused a tilde to be expanded even if + the `direxpand' option was not enabled. + +b. Fixed a potential bug that could cause corrupted input in interactive shells + running without line editing and with `ignoreeof' enabled. + +c. Fixed a bug that could cause failures when opening pipes back to shells + created to run process substitutions. + +d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR + to be set in order to actually change the current text domain. + +e. Changed the way redirections are printed to avoid confusion when the target + of an output redirection is a process substitution beginning with `>'. + +2. Changes to Readline + +a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13). + +3. New Features in Bash + +a. `cd' has a new `-@' option to browse a file's extended attributes on + systems that support O_XATTR. + +4. New Features in Readline + +a. There are additional default key bindings for MinGW32 + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-beta2, and the +previous version, bash-4.3-beta. + +1. Changes to Bash + +a. Fixed a bug that caused assignment to an unset variable using a negative + subscript to result in a segmentation fault. + +b. Fixed a bug that caused assignment to a string variable using a negative + subscript to use the incorrect index. + +c. Fixed a bug that caused some strings to be interpreted as invalid + extended globbing expressions when used with the help builtin. + +d. Fixed a bug that caused an attempt to trap a signal whose disposition + cannot be changed to reference uninitialized memory. + +e. Command completion now skips assignment statements preceding a command + name and completes the command. + +f. Fixed a bug that caused `compgen -f' in a non-interactive shell to dump + core under certain circumstances. + +g. Fixed a bug that caused the `read -N' to misbehave when the input stream + contains 0xff. + +2. Changes to Readline + +a. Changed message when an incremental search fails to include "failed" in + the prompt and display the entire search string instead of just the last + matching portion. + +b. Fixed a bug that caused an arrow key typed to an incremental search prompt + to process the key sequence incorrectly. + +c. Additional key bindings for arrow keys on MinGW. + +3. New Features in Bash + +a. The help builtin now attempts substring matching (as it did through + bash-4.2) if exact string matching fails. + +b. The fc builtin now interprets -0 as the current command line. + +c. Completing directory names containing shell variables now adds a trailing + slash if the expanded result is a directory. + +4. New Features in Readline + +a. rl_change_environment: new application-settable variable that controls + whether or not Readline modifies the environment (currently readline + modifies only LINES and COLUMNS). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-beta, and the +previous version, bash-4.3-alpha. + +1. Changes to Bash + +a. Fixed a bug in the prompt directory name "trimming" code that caused + memory corruption and garbled the results. + +b. Fixed a bug that caused single quotes that resulted from $'...' quoting + in the replacement portion of a double-quoted ${word/pat/rep} expansion + to be treated as quote characters. + +c. Fixed a bug that caused assignment statements preceding a command word to + result in assignment statements following a declaration command to not be + expanded like assignment statements. + +d. Fixed a bug with variable search order in the presence of local variables + with the same name as variables in the temporary environment supplied to + a shell function. + +e. Fixed a bug that caused constructs like 1<(2) to be interpreted as process + substitutions even in an arithmetic context. + +f. Fixed several cases where `invisible' variables (variables with attributes + but no values, which are technically unset) were treated incorrectly. + +g. Fixed a bug that caused group commands in pipelines that were not the + last element to not run the EXIT trap. + +h. Fixed a bug that caused `unset -n' to not unset a nameref variable in + certain cases. + +i. Fixed the nameref circular reference checking to be less strict and only + disallow a nameref variable with the same value as its name at the global + scope. + +j. Fixed a bug that caused trap handlers to be executed recursively, + corrupting internal data structures. + +k. Fixed a bug that could result in bash not compiling if certain options were + not enabled. + +l. Fixed a bug that caused the arithmetic expansion code to attempt variable + assignments when operator precedence prohibited them. + +m. Word expansions like ${foo##bar} now understand indirect variable references. + +n. Fixed a bug that caused `declare -fp name' to not display a function + definition. + +o. Fixed a bug that caused asynchronous child processes to modify the stdin + file pointer when bash was using it to read a script, which modified the + parent's value as well. + +2. Changes to Readline + +a. Fixed a bug in vi mode that caused the arrow keys to set the saved last + vi-mode command to the wrong value. + +b. Fixed a bug that caused double-quoted strings to be scanned incorrectly + when being used as the value of a readline variable assignment. + +c. Fixed a bug with vi mode that prevented `.' from repeating a command + entered on a previous line (command). + +d. Fixed a bug that could cause completion to core dump if it was interrupted + by a signal. + +e. Readline now sends the meta-key enable string to the terminal if the + terminal has been successfully initialized. + +f. Readline now calls the signal hook after resizing the terminal when it + receives a SIGWINCH. + +g. Fixed a bug that could cause the history list code to perform an out-of- + bounds array reference if the history list is empty. + +3. New Features in Bash + +a. Shells started to run process substitutions now run any trap set on EXIT. + +b. There is now a configure-time option to enable the globasciiranges option + by default. + +c. The read builtin now checks its first variable argument for validity before + trying to read any input. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-alpha, +and the previous version, bash-4.2-release. + +1. Changes to Bash + +a. Fixed several bugs concerning incomplete bracket expressions in filename + generation (globbing) patterns. + +b. Fixed a bug with single quotes and WORD in ${param op WORD} when running + in Posix mode. + +c. Fixed a bug that caused the pattern removal and pattern substitution word + expansions and case statement word expansion to not match the empty string. + +d. Fixed a bug that caused the tzset() function to not work after changing + the TZ enviroment variable. + +e. Fixed a bug that caused the RHS of an assignment statement to undergo + word splitting when it contained an unquoted $@. + +f. Fixed bugs that caused the shell to not react to a SIGINT sent while + waiting for a child process to exit. + +g. Bash doesn't try to run things in a signal handler context when it gets a + signal (SIGINT/SIGHUP/etc) while reading input using readline but still + be responsive to terminating signals. + +h. Fixed a bug that caused bash to go into an infinite loop if a filename + to be matched contained an invalid multibyte character. + +i. Fixed a bug that caused PS4 to end up being truncated if it is longer + than 128 bytes. + +j. Fixed a bug that caused brace expansion to not skip over double-quoted + command substitution. + +k. System-specific updates for: DJGPP, HP/UX, Mac OS X + +l. Fixed a bug in displaying commands that caused redirections to be associated + with the wrong part of the command. + +m. Fixed the coproc cleanup to unset the appropriate shell variables when a + coproc terminates. + +n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of + the last history entry. + +o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and + `test -x'. + +p. Fixed a bug that caused the shell to not match patterns containing + control-A. + +q. Fixed a bug that could result in doubled error messages when the `printf' + builtin got a write error. + +r. Fixed a bug that caused the shell to not correctly expand words containing + multiple consecutive quoted empty strings (""""""aa). + +s. Fixed a bug that caused the shell to not correctly parse multi-line + process substitutions containing comments and quoted strings. + +t. Fixed a problem with the bash malloc's internal idea of the top of the + memory heap that resulted in incorrect decisions to try to reduce the + break and give memory back to the kernel. + +u. There are changes to the expansions peformed on compound array assignments, + in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to + foo[ind1]=bar foo[ind2]=baz. + +v. Bash now reports an error if `read -a name' is used when `name' is an + existing associative array. + +w. Fixed a bug that allowed an attempted assignment to a readonly variable + in an arithmetic expression to not return failure. + +x. Fixed several bugs that caused completion functions to be invoked even when + the cursor was before the first word in the command. + +y. Fixed a bug that caused parsing a command substitution to overwrite the + parsing state associated with the complete input line. + +z. Fixed several bugs with the built-in snprintf replacement and field widths + and floating point. + +aa. Fixed a bug that caused incorrect offset calculations and input buffer + corruption when reading files longer than 2^31 bytes. + +bb. Fixed several bugs where bash performed arithmetic evaluation in contexts + where evaluation is suppressed. + +cc. Fixed a bug that caused bash to close FIFOs used for process substitution + too early when a shell function was executing, but protect against using + all file descriptors when the shell functions are invoked inside loops. + +dd. Added checks for printable (and non-printable) multibyte characters for + use in error messages. + +ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly + at the end of the history list. + +ff. Fixed a bug that caused command-oriented history to incorrectly combine + here documents into one line. + +gg. Fixed a bug that caused importing SHELLOPTS from the environment into a + Posix-mode shell to print an error message and refuse to parse it. + +hh. Fixed a bug that caused the shell to delete an extra history entry when + using `history -s'. + +ii. Fixed a bug that caused floating-point exceptions and overflow errors + for the / and % arithmetic operators when using INTMAX_MIN and -1. + +jj. Fixed a bug that caused parsing errors when reading an arithmetic for + loop inside a command substitution. + +kk. Fixed a bug that caused a readonly function to be unset when unset was + called without the -f or -v option. + +ll. Fixed several bugs in the code that quotes characters special to regular + expressions when used in a quoted string on the RHS of the =~ operator + to the [[ command. + +mm. Fixed a bug that caused redirections to fail because the file descriptor + limit was set to a value less than 10. + +nn. Fixed a bug that caused the `read' builtin to execute code in a signal + handler context if read timed out. + +oo. Fixed a bug that caused extended globbing patterns to not match files + beginning with `.' correctly when a `.' was explicitly supplied in the + pattern. + +pp. Fixed a bug that caused key sequences longer than two characters to not + work when used with `bind -x'. + +qq. Fixed a bug that resulted in redefined functions having the wrong source + file names in BASH_SOURCE. + +rr. Fixed a bug that caused the read builtin to assign null strings to variables + when using `read -N', which caused core dumps when referenced + +ss. Fixed a bug that caused `bash -m script' to not enable job control while + running the script. + +tt. Fixed a bug that caused `printf -v var' to dump core when used with the + %b format code. + +uu. Fixed a bug that caused the shell to exit with the wrong status if -e was + active and the shell exited on a substitution error. + +vv. Fixed a bug that caused the shell to seg fault if an array variable with + the same name as an existing associative array was implicitly created by + an assignment (declare a[n]=b). + +ww. Fixed a bug that caused a redirection to misbehave if the number specified + for a file descriptor overflows an intmax_t. + +xx. Fixed several bugs with the handling of valid and invalid unicode character + values when used with the \u and \U escape sequences to printf and $'...'. + +yy. Fixed a bug that caused tildes to not be escaped in expanded filenames, + making them subject to later expansion. + +zz. When using the pattern substitution word expansion, bash now runs the + replacement string through quote removal, since it allows quotes in that + string to act as escape characters. This is not backwards compatible, so + it can be disabled by setting the bash compatibility mode to 4.2. + +aaa. Fixed the rest of the cases where the shell runs non-allowed code in a + signal handler context. + +bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in + double-quoted expansion where the RHS is evaluated to the empty string. + +ccc. Fixed a bug that caused the use of the shell's internal random number + generator for temporary file names to perturb the random number + sequence. + +ddd. Fixed several bugs that caused `declare -g' to not set the right global + variables or to misbehave when declaring global indexed arrays. + +eee. Fixed a logic bug that caused extended globbing in a multibyte locale to + cause failures when using the pattern substititution word expansions. + +fff. Fixed a bug that caused the `lastpipe' option to corrupt the file + descriptor used to read the script. + +ggg. Fixed a bug that causes the shell to delete DEL characters in the + expanded value of variables used in the same quoted string as variables + that expand to nothing. + +hhh. Fixed a bug that caused the shell to assign the wrong value from an + assignment like (( x=7 )) when `x' was an existing array variable. + +iii. Fixed a bug that caused the shell to misbehave when generating sequences + and the boundary values overflow an intmax_t. + +jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared + next to another expansion (e.g.. "${@}${x}"). + +kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion. + +lll. Fixed a bug that resulted in an extra semicolon being added to compound + assignments when they were added to the history list. + +mmm. Fixed a bug that caused mapfile to read one extra line from the input. + +nnn. Fixed a bug that caused the mail checking code to use uninitialized + values. + +ooo. Fixed a bug that prevented history timestamps from being saved if the + history comment character is unset. + +ppp. Fixed a bug that caused the case-modifying expansions to not work with + multibyte characters. + +qqq. Fixed a bug that caused the edit-and-execute bindable readline command + to see the wrong data if invoked in the middle of a multi-line quoted + string. + +rrr. Fixed a bug that resulted in the shell returning the wrong exit status + for a background command on systems that recycle PIDs very quickly. + +sss. Fixed a bug that caused asynchronous group commands to not run any EXIT + trap defined in the body of the command. + +ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly. + +uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped + IFS whitespace character. + +vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when + executing a (...) subshell. + +www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic + evaluation. + +xxx. Fixed a bug with parsing multi-line command substitutions when reading + the `do' keyword followed by whitespace. + +yyy. Fixed a bug that caused the shell to seg fault if the time given to the + printf %(...)T format overflowed the value accepted by localtime(3). + +zzz. Fixed a problem with displaying help topics in two columns when the + translated text contained multibyte characters. + +aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was + followed by a negated extended glob pattern. + +bbbb. Fixed a race condition with short-lived coproc creation and reaping that + caused the child process to be reaped before the various coproc shell + variables were initialized. + +cccc. Fixed a bug where turning off `errexit' in command substitution subshells + was not reflected in $SHELLOPTS. + +dddd. Partially fixed an inconsistency in how the shell treated shell + functions run from an EXIT trap. + +eeee. Fixed a bug in how the shell invalidated FIFOs used for process + substitution when executing a pipeline (once rather than in every child). + +ffff. Fixed a bug that occurred when expanding a special variable ($@, $*) + within double quotes and the expansion resulted in an empty string. + +gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's + executed once per exited child. + +hhhh. Fixed a bug that caused `declare' and `test' to find variables that + had been given attributes but not assigned values. Such variables are + not set. + +iiii. Fixed a bug that caused commands in process substitutions to not look in + the local temporary environment when performing word expansions. + +jjjj. Fixed several problems with globstar expansions (**/**) returning null + filenames and multiple instances of the same pathname. + +kkkk. Fixed an oversight that did not allow the exit status of `coproc' to + be inverted using `!'. + +llll. Fixed a bug that caused the -e option to be re-enabled using `set -e' + even when executing in a context where -e is ignored. + +mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX. + +nnnn. Fixed a bug that could result in double evaluation of command + substitutions when they appear in failed redirections. + +oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if + the callback unsets the array variable mapfile is using. + +pppp. Fixed several problems with variable assignments using ${var:=value} + when the variable assignment is supposed to have side effects. + +qqqq. Fixed a bug that caused a failure of an assignment statement preceding a + builtin caused the next invocation of a special builtin to exit the shell. + +rrrr. Fixed several problems with IFS when it appears in the temporary environment + and is used in redirections. + +ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify + how preceding expansions were split. + +tttt. Fixed a problem that caused subshells to not run an EXIT trap they set. + +uuuu. Fixed a problem that caused shells started in posix mode to attempt to + import shell functions with invalid names from the environment. We now + print a warning. + +vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2) + on a FIFO used for process substitution, even if the SIGCHLD handler was + installed with the SA_RESTART flag. + +wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}. + +xxxx. Fixed a problem that caused `read -t' to crash when interrupted by + SIGINT. + +yyyy. Fixed a problem that caused pattern removal to fail randomly because the + pattern matcher read beyond the end of a string. + +zzzz. Fixed a bug that caused core dumps when shell functions tried to create + local shadow copies of special variables like GROUPS. + +aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of + interactive shells when it arrived before the child process reset the + handler from SIG_DFL. + +bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor + n closed if executed with a builtin command. + +ccccc. Fixed a bug that caused incorrect completion quoting when completing a + word containing a globbing character with `show-all-if-ambiguous' set. + +ddddd. Fixed a bug that caused printf's %q format specifier not to quote a + tilde even if it appeared in a location where it would be subject to + tilde expansion. + +2. Changes to Readline + +a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode + commands to work on the entire line. + +b. Fixed a bug that caused redisplay problems with prompts longer than 128 + characters and history searches. + +c. Fixed a bug that caused readline to try and run code to modify its idea + of the screen size in a signal handler context upon receiving a SIGWINCH. + +d. Fixed a bug that caused the `meta' key to be enabled beyond the duration + of an individual call top readline(). + +e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's + redisplay to mishandle zero-width combining characters. + +f. Fixed a bug that caused readline to `forget' part of a key sequence when + a multiple-key sequence caused it to break out of an incremental search. + +g. Fixed bugs that caused readline to execute code in a signal handler + context if interrupted while reading from the file system during completion. + +h. Fixed a bug that caused readline to `forget' part of a key sequence when + reading an unbound multi-character key sequence. + +i. Fixed a bug that caused Readline's signal handlers to be installed beyond + the bounds of a single call to readline(). + +j. Fixed a bug that caused the `.' command to not redo the most recent `R' + command in vi mode. + +k. Fixed a bug that caused ignoring case in completion matches to result in + readline using the wrong match. + +l. Paren matching now works in vi insert mode. + +m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix + work together. + +n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone + in vi editing mode. + +o. Fixed a bug that caused the filename comparison code to not compare + multibyte characters correctly when using case-sensitive or case-mapping + comparisons. + +p. Fixed the input reading loop to call the input hook function only when there + is no terminal input available. + +q. Fixed a bug that caused binding a macro to a multi-character key sequence + where the sequence and macro value share a common prefix to not perform + the macro replacement. + +r. Fixed several redisplay errors with multibyte characters and prompts + containing invisible characters when using horizontal scrolling. + +s. Fixed a bug that caused redisplay errors when trying to overwrite + existing characters using multibyte characters. + +3. New Features in Bash + +a. The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +b. The `help' builtin no longer does prefix substring matching, so `help read' + does not match `readonly'. + +c. The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +d. Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +e. There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +f. There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +g. In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +h. The `return' and `exit' builtins accept negative exit status arguments. + +i. The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +j. In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +k. When compiled for strict Posix conformance, history expansion is disabled + by default. + +l. The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +n. Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o. Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +p. The `read' builtin now skips NUL bytes in the input. + +q. There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +r. When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +s. The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +t. The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +u. The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +v. The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +w. The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +x. The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +y. The {x} operators to the [[ command do not consider the current @@ -378,11 +408,15 @@ compat40 set compat41 set - interrupting a command list such as "a ; b ; c" causes the execution - of the entire list to be aborted (in versions before bash-4.0, + of the entire list to be aborted (in versions before bash-4.1, interrupting one command in a list caused the next to be executed) - when in posix mode, single quotes in the `word' portion of a double-quoted parameter expansion define a new quoting context and are treated specially + +compat42 set + - the replacement string in double-quoted pattern substitution is not + run through quote removal, as in previous versions ------------------------------------------------------------------------------- Copying and distribution of this file, with or without modification, diff --git a/CWRU/changelog b/CWRU/changelog index bcc6657..354720a 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,10811 +1,5850 @@ - 7/27/2004 + 2/14/2011 --------- +[bash-4.2 released] -[bash-3.0 released] - - 7/28 + 2/15 ---- -array.c - - in array_insert(), make sure the value to be added is non-NULL before - calling savestring() on it - -builtins/reserved.def - - fix description of `CDPATH' - -lib/readline/display.c - - when expanding a prompt that spans multiple lines with embedded - newlines, set prompt_physical_chars from the portion after the - final newline, not the preceding portion. Bug reported by - "Ralf S. Engelschall" - -make_cmd.c - - explicitly declare `lineno' in function prologue for make_case_command - -builtins/evalfile.c - - include `trap.h' for declaration for run_return_trap - -bashline.c - - fix a `return' without a value in enable_hostname_completion - -general.c - - include test.h for extern declaration for test_eaccess - -externs.h - - add declaration for zcatfd - -tests/{history,histexp}.tests - - unset HISTFILESIZE to avoid problems if a value of 0 is inherited - from the environment +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 - 7/30 + 2/16 ---- -bashline.c - - small changes to glob_expand_word to perform tilde expansion before - attempting globbing - -builtins/Makefile.in - - fix the install-help target to not cd into the `helpfiles' - subdirectory, so a value of $INSTALL_DATA containing a relative - pathname (e.g., .././support/install.sh) remains valid +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 - 7/31 - ---- subst.c - - new function, mbstrlen(s), returns length of a multibyte character - string + - 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 -include/shmbutil.h - - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate +doc/{bash.1,bashref.texi} + - document the exact expansions here strings undergo -builtins/trap.def - - small change so that a first argument that's a valid signal number - (digits only -- no symbolic names) will be treated as a signal and - reverted back to the original handling disposition. Fixes debian - complaints + 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 + -subst.c - - call MB_STRLEN instead of STRLEN where appropriate in - parameter_brace_expand_length to handle multibyte characters properly - - call MB_STRLEN instead of strlen in verify_substring_values so that - negative substrings of strings with multibyte chars work properly +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 - 8/1 - --- -jobs.c - - describe_pid needs to write to stderr, not stdout (POSIX) - - start_job, since it's only used by builtins (fg/bg), needs to write - its output to stdout, not stderr (POSIX) +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 -sig.c - - add an `orig_flags' member to struct terminating_signal so the - original signal handling flags (SA_RESTART, etc.) can be preserved - on POSIX systems - - make sure to preserve the signal flags state in - initialize_terminating_signals and reset them for child processes - in reset_terminating_signals + 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 -builtins/fc.def - - fixed an off-by-one error that caused `fc -l' to list one too many - history entries - - in posix mode, `fc' should not list any indication as to whether or - not history lines have been modified (POSIX) - - when in posix mode, the default editor for `fc' should be `ed' (POSIX) +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 + -doc/bashref.texi - - updated the description of `trap' behavior when given a first - argument that is a valid signal number - - noted that `fc -l' won't indicate whether a history entry has been - modified if the shell is in posix mode + 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 -builtins/command.def - - fixed bug: `command -v' is supposed to be silent if a command is not - found +variables.h + - new extern declaration for chkexport -builtins/hash.def - - `hash' should print its `hash table empty' message to stderr -lib/readline/misc.c - - back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P +{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 -general.c - - changed base_pathname so that it will return reasonable results for - non-absolute pathnames -- this is what is intended by all of its - callers +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 -arrayfunc.c - - fix array_variable_part to return NULL if it finds an invisible - variable in the hash table. Fixes seg fault caused by referring to - unset local variable using array notation +support/shobj-conf + - add a stanza for nsk on the Tandem from Joachim Schmitz + -{locale,variables}.c - - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks - the current locale +{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 + - 8/2 + 3/1 --- variables.c - - fixed small memory leak in makunbound() when a local array variable - is unset. Fix from William Park - -lib/readline/display.c - - fixed a problem when computing the number of invisible characters on - the first line of a prompt whose length exceeds the screen width - (should only happen when invisible characters occur after the - line wrap). Bug reported by agriffis@gentoo.org - -builtins/command.def - - `command -V' passes a new flag, CDESC_ABSPATH, which means to convert - to an absolute path - -builtins/type.def - - in posix mode, `type' and `command -v/-V' should not report - non-executable files, even if the execution code will attempt to - run them. Other posix shells do this - -doc/bashref.texi - - add note to POSIX Mode section describing behavior of type and command - when finding a non-executable file - -execute_cmd.c - - force extended_glob to 1 before calling binary_test in - execute_cond_node so that the right extended pattern matching gets - performed + - 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 - 8/3 + 3/3 --- -braces.c - - make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars - with values > 128 are handled correctly - -builtins/printf.def - - change bexpand() and printstr() to handle strings with a leading - '\0' whose length is non-zero, since that's valid input for the - `%b' format specifier - -subst.c - - fix a couple of instances of find_variable that didn't check the - result for an invisible variable +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 -variables.c - - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as - invisible vars +execute_cmd.c + - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to + be expanded, so "" doesn't add CTLNUL. Similar to fix of 2/18 to + expand_string_for_rhs. Fixes bug reported by Nathanael D. Noblet + and Matthias Klose -pcomplete.c - - make sure COMP_WORDS is not invisible when bind_comp_words returns - - ditto for COMPREPLY in gen_shell_function_matches +parse.y + - fix extended_glob case of read_token_word to allocate an extra + space in the buffer for the next character read after the extended + glob specification if it's a CTLESC or CTLNUL. Report and fix from + Michael Witten + - fix shell expansions case of read_token_word to allocate an extra + space in the buffer for the next character read after the shell + expansion if it's a CTLESC or CTLNUL. Report and fix from + Michael Witten + - TENTATIVE: fix read_token_word to reduce the amount of buffer space + required to hold the translated and double-quoted value of $"..." + strings. Report and fix from Michael Witten + - change code around got_character and got_escaped_character labels to + make sure that we call RESIZE_MALLOCED_BUFFER before adding the + CTLESC before a CTLESC or CTLNUL, and before adding the character if + we're not adding a CTLESC. Report and fix from + Michael Witten + +subst.c + - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that + parameter expansion is on rhs of assignment statement. That inhibits + word splitting + - change param_expand to call string_list_dollar_at with quoted == 1 + if PF_ASSIGNRHS is set, so it will quote IFS characters in the + positional parameter before separating them with the first char of + $IFS. This keeps the rhs from being split inappropriately. Fixes + bug reported by Andres Perera - 8/4 + 3/4 --- -braces.c - - fix problem where ${ was ignored but did not increment the open - brace count. Bug reported by Tim Waugh - -variables.c - - if make_local_variable finds a variable in the correct context in - the right variable scope, make sure it's not invisible before - returning it +lib/readline/bind.c + - add a missing free of `names' in rl_function_dumper. Bug report + and fix from Michael Snyder - 8/5 + 3/5 --- -builtins/trap.def - - fixed usage message to show `action' as not optional, though it - actually is when not in posix mode (for a single argument) +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 - 8/7 + 3/6 --- -configure.in - - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs - to be configured --without-gnu-malloc +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 -lib/readline/vi_mode.c - - in rl_vi_search, free any saved history line before starting the - search, so failure leaves you at that line, not the last line in - the history (assuming the current line is not the last history line). - Fix from llattanzi@apple.com to replace fix of 7/7 + 3/7 + --- +jobs.c + - add sentinel to wait_sigint_handler so it only sets wait_sigint_received + if waiting_for_child is non-zero; otherwise, it restores the old + SIGINT handler and sends itself the SIGINT + - set waiting_for_child around the calls to waitchld that use it to + synchronously wait for a process + - change logic that decides whether or not the child process blocked + or handled SIGINT based on whether or not waitpid returns -1/EINTR + and the shell receives a SIGINT and the child does not exit. If + the child later exits due to SIGINT, cancel the assumoption that it + was handled + - instead of testing whether or not the child exited due to SIGINT + when deciding whether the shell should act on a SIGINT it received + while waiting, test whether or not we think the child caught + SIGINT. If it did, we let it go (unless the shell has it trapped); + if it did not catch it, the shell acts on the SIGINT. Fix from + Linus Torvalds , bug report originally + from Oleg Nesterov - 8/9 + 3/8 --- -support/Makefile.in - - renamed `mostly-clean' target to `mostlyclean' +shell.c + - initialize no_line_editing to 1 if READLINE is not defined -- we + can't have line editing without readline - 8/11 + 3/12 ---- -lib/readline/vi_mode.c - - make same change for EOL in multibyte character case of - rl_vi_change_char +lib/readline/signals.c + - add SIGHUP to the set of signals readline handles - 8/12 - ---- -subst.c - - in verify_substring_values, fix off-by-one error checking bounds of - `offset', esp. in array values (e.g., getting the highest element - of an array) +lib/readline/doc/rltech.texi + - document that SIGHUP is now part of the set of signals readline + handles - 8/16 - ---- -aclocal.m4 - - change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are - accessible via /dev/fd, unlike FreeBSD 5.x +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 -lib/sh/strftime.c - - make sure `zone' is initialized with gettimeofday before it is used - - work around HPUX lack of `altzone' and differing definitions of - `timezone' +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 -lib/malloc/malloc.c - - internal_memalign and memalign now take a `size_t' as their first - argument, which seems to be the prevailing standard +input.c + - rearrange getc_with_restart so that the return values from read() + are handled right -lib/malloc/{malloc.c,shmalloc.h} - - change sh_memalign to take a `size_t' as its first argument +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 -builtins/echo.def - - if posixly_correct and xpg_echo are both set, don't try to interpret - any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul - Eggert) +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 -doc/bashref.texi - - amend description of bash posix mode to include new echo behavior +builtins/read.def + - take out setting terminate_immediately; add calls to CHECK_TERMSIG + after read calls -builtins/fg_bg.def - - allow bg to take multiple job arguments, as posix seems to specify, - placing them all in the background, returning the status of the last - one as the status of `bg' +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 -lib/readline/vi_mode - - fix _rl_vi_change_mbchar_case (multibyte-char version of `~' - command) to have the right behavior at EOL -- handle case where vi - mode backs up at the end of the line +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 - 8/18 + 3/14 ---- -array.c - - check for an empty array in array_rshift before shifting elements - and adjusting max_index - - check for null array in array_subrange +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 -jobs.c - - fix raw_job_exit_status to not ignore exit status of the last - process in the pipeline when `set -o pipefail' is enabled +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 - 8/19 + 3/15 ---- -lib/readline/mbutil.c - - make sure _rl_find_next_mbchar_internal has a valid multibyte - character before it checks whether or not it's a zero-width - wide character and adjusts point accordingly - - 8/24 - ---- bashline.c - - new function, bash_directory_expansion, duplicates the expansions - performed on the directory name by rl_filename_completion_function - - call bash_directory_expansion in command_word_completion_function - if we decide we're doing tilde expansion (and any other - canonicalization) on the directory name being completed - - 8/25 - ---- -configure.in - - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires - sys/stream.h). The correct checks are in the code, but autoconf - complains if sys/stream.h is not included, rather than simply - checking for the header's presence + - 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 - 8/26 + 3/22 ---- -builtins/hash.def - - fix a bug that prevented `hash -d' from working right (as soon as - hash removed a command from the table, the bug caused it to be added - right back) +lib/glob/glob.c + - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs + fails to convert the pathname to a wide-character string - 8/27 +lib/glob/xmbsrtowcs.c + - xdupmbstowcs2: change to fix problem with leading '\\' (results in + nms == 0, which causes it to short-circuit with failure right + away). Fixes bug pointed out by Werner Fink + - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the + next single-byte character and going on + - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC + bytes; try to avoid calls to realloc (even if they don't actually + result in more memory being allocated) + + 3/24 ---- doc/{bash.1,bashref.texi} - - explicitly note that conditional primaries that operate on files - operate on the targets of symbolic links rather than the links - themselves + - slightly modify BASH_SUBSHELL description based on complaint from + Sam Liddicott - 8/30 + 3/25 ---- -lib/readline/display.c - - fix multibyte calculation of `physchars' in prompt expansion, to - handle double-width multibyte characters correctly - - changes to rl_redisplay to handle prompts longer than the screenwidth - that might contain double-width multibyte characters. Fixes from - Tomohiro Kubota - - 9/6 - --- -subst.c - - change word_list_split to avoid really bad behavior caused by calling - list_append for each split word -- as the list gets long, you have - to traverse it every time. Keep a pointer to the end of the list and - and just tack onto it - - 9/8 - --- -lib/readline/complete.c - - change fnprint to calculate the displayed width of a filename in - the same way as fnwidth - -subst.c - - in verify_substring_values, when expanding ${array[@]:offset}, make - sure negative offsets count from one greater than the array's - maximum index so things like ${x[@}: -1} work to give the last element - (requires fixing array tests) - -builtins/common.c - - new error function, sh_wrerror(), for builtins to call when a write - error occurs - -builtins/common.h - - extern declaration for sh_wrerror() - -builtins/cd.def - - change builtin_error call to use sh_wrerror() - -builtins/echo.def - - report write errors with sh_wrerror() instead of just returning - failure +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 -builtins/printf.def - - change printstr to return failure (-1) or success (0) indication - rather than void - - report write errors when printstr() fails, return failure - - if any of the PF/printf calls fail, report write error and return - failure + 3/26 + ---- +lib/readline/rltypedefs.h + - remove old Function/VFunction/CPFunction/CPPFunction typedefs as + suggested by Tom Tromey -execute_cmd.c - - change execute_in_subshell so the subshell command inherits the - command timing flags from the enclosing COMMAND * +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 + - 9/11 + 3/27 ---- -[prayers for the victims of 9/11/2001] - -lib/sh/strnlen.c - - new file, implementation of GNU libc extension function strnlen +print_cmd.c + - change indirection_string from a static buffer to a dynamic one + managed by indirection_level_string(), so we don't end up truncating + PS4. Suggested by Dennis Williamson -lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST - - changes for strnlen +lib/readline/shell.c + - change sh_set_lines_and_columns to use static buffers instead of + allocating the buffers to pass to setenv/putenv -configure.in - - version changed to 3.1-devel +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 -doc/bash.1, lib/readline/doc/rluser.texi - - added description of `-o plusdirs' to complete/compgen (thanks, - Arnold) +lib/readline/rlprivate.h + - new external declaration for _rl_sigwinch_resize_terminal() (currently + unused) -parse.y - - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing - arguments to a builtin that accepts assignment statement arguments - - turn on PST_ASSIGNOK in read_token_word when appropriate - - turn off PST_ASSIGNOK in read_token when appropriate - - don't attempt to parse a compound assignment specially unless we're - in a position where an assignment statement is acceptable, or - PST_ASSIGNOK is set +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 - 9/13 + 3/29 ---- -variables.c - - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE - non-unsettable, since the shell uses those values internally +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 -expr.c - - make exponentiation right-associative, as is apparently correct +configure.in + - don't check for isinf or isnan; c99 says they're macros anyway - 9/16 - ---- -arrayfunc.c - - make sure convert_var_to_array marks the environment as needing - recreation if the converted variable was exported +config.h.in + - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used + by snprintf.c - 9/17 - ---- + 4/2 + --- braces.c - - mark ${ as introducing an additional level of braces only if it's - not in a quoted string -- quoted strings are handled before brace - matching is done - -parse.y - - fixed an obscure problem in history_delimiting_chars where the `in' - in a case statement could have a semicolon added after it, if the - `case word' was on a previous line - -support/config.guess - - support for newest versions of tandem non-stop kernel + - brace_gobbler: fix to understand double-quoted command substitution, + since the shell understands unquoted comsubs. Fixes bug reported + by Michael Whitten lib/readline/display.c - - in compute_lcd_of_matches, explicitly cast `text' to `char *' before - passing it to rl_filename_dequoting_function + - include on MDOS + - get and set screen size using DJGPP-specific calls on MSDOS + - move cursor up clear screen using DJGPP-specific calls + - don't call tputs on DJGPP; there is no good terminfo support lib/readline/terminal.c - - bind the key sequence sent by the keypad `delete' key to delete-char - (same as ^D in emacs mode) - -builtins/ulimit.def - - in print_all_limits, don't print anything if get_limit returns - -1/EINVAL, indicating that the kernel doesn't support that particular - limit - - add -i (max number of pending signals), -q (max size of posix msg - queues), -x (max number of file locks) for systems (Linux) that - support them - -doc/{bash.1,bashref.texi} - - fix description of correspondence between FUNCNAME, BASH_LINENO, - and BASH_SOURCE indices in description of BASH_LINENO + - include on MDOS + - get and set screen size using DJGPP-specific calls on MSDOS + - use DJGPP-specific initialization on MSDOS, zeroing all the + _rl_term_* variables + - don't call tputs on DJGPP; there is no good terminfo support + DJGPP support from Eli Zaretskii - 9/18 - ---- -lib/sh/shquote.c - - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as - long as the resultant string never gets sent to the word expansion - functions without going through the shell parser + 4/6 + --- -externs.h - - add extern declarations for strnlen and strpbkrk from lib/sh +config-top.h + - change DEFAULT_PATH_VALUE to something more useful and modern -subst.[ch] - - changes to handle case where IFS consists of multibyte characters. - Changed: string_extract_verbatim, split_at_delims, - string_list_dollar_star, string_list_dollar_at, list_string, - get_word_from_string, setifs + 4/8 + --- +tests/printf2.sub + - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect. + Reported by Cedric Arbogast - 9/19 + 4/11 ---- -mailcheck.c - - change file_mod_date_changed to reset the cached mail file data if - the file size drops to zero - -lib/readline/complete.c - - change append_to_match so that a non-zero value for - rl_completion_suppress_append will cause no `/' to be appended to a - directory name +include/chartypes.h + - fix a couple of dicey defines (though ones that don't cause any + compiler warnings) in IN_CTYPE_DOMAIN -bashline.c - - experimental change to suppress appending a slash for a completed - filename that is found in PATH as well as a directory in the current - directory under certain circumstances: a single instance found in - $PATH when `.' is not in $PATH, and multiple instances found in the - $PATH, even when `.' is in the $PATH +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 - 9/24 - ---- -command.h - - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement - - new word flag: W_NOTILDE, means word is not to be tilde expanded - - new word flag (internal): W_ITILDE, means the next character is a - tilde that should be expanded +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 -general.c - - new set of tilde suffixes for use when parsing the RHS of an - assignment statement and =~ should not be subject to tilde expansion - - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes - for parsing RHS of assignment statement +pcomplete.h + - new extern declaration for it_helptopics -general.[ch] - - new function bash_tilde_find_word, drop-in replacement for - tilde_find_word +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 -subst.c - - call bash_tilde_expand with secord argument of 2 when expanding rhs - of an assignment statement, so tildes after second and subsequent - `=' in an assignment are not expanded - - new function, expand_string_assignment, to expand the rhs of an - assignment statement - - add `~' to EXP_CHAR, the characters that will cause the word - expansion functions to be called - - move tilde expansion into expand_word_internal instead of many - different calls to bash_tilde_expand scattered across different - functions. NOTE: This means that double quotes surrounding a - {paramOPword} expansion will cause tilde expansion to NOT be - performed on `word'. I think this is right, what POSIX specifies, - and consistent with the behavior of other characters in the rhs + 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 - - take out calls to bash_tilde_expand before calling word expansion - functions + - 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 - 9/26 + 4/13 ---- -execute_cmd.c - - make sure to call UNBLOCK_CHILD before returning on a pipe creation - failure in execute_pipeline +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 `)' - 9/27 + 4/14 ---- -variables.c - - change get_bash_command to deal with the_printed_command_except_trap - being NULL +print_cmd.c + - change overlapping strcpy in named_function_string to memmove -execute_cmd.c - - fix execute_simple_command to deal with the_printed_command being - NULL when assigning to the_printed_command_except_trap -- fixes - seg fault in savestring() +sig.h + - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just + restores an old signal mask -parse.y - - change the parser so that the closing `)' in a compound variable - assignment delimits a token -- ksh93 does it this way +trap.c + - set_signal: instead of setting the signal handler to SIG_IGN while + installing the new trap handler, block the signal and unblock it + after the new handler is installed. Fixes bug reported by Roman + Rakus + 4/15 + ---- doc/{bash.1,bashref.texi} - - change description of tilde expansion to note that expansion is - attempted only after the first =~ in an assignment statement - -builtins/declare.def - - when assigning to an array variable with declare -a x=(...), make - sure the last character in the rhs of the variable assignment is - `)', not just that it appears somewhere + - make it clear that enabling monitor mode means that all jobs run in + separate process groups - 9/28 + 4/18 ---- -command.h - - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal - - add a `W_COMPASSIGN' flag to denote a word is a compound assignment - statement +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 + -parse.y - - set W_COMPASSIGN on words that appear to be compound assignments + 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 -subst.c - - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal + 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 -subst.[ch] - - new function, expand_assignment_string_to_string, calls - expand_string_assignment and then string_list on the result +lib/readline/rlprivate.h + - extern declaration for _rl_disable_meta_key -variables.c - - assign_in_env now calls expand_assignment_string_to_string +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." - 9/30 + 4/26 ---- -builtins/common.c - - change get_job_spec so the null job `%' once again means the current - job +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 - 10/1 + 4/29 ---- -subst.c - - do_assignment_internal now takes a WORD_DESC * as its first - argument, and uses its `word' member as the assignment string - - change expand_word_list_internal to call do_word_assignment instead - of do_assignment, passing it `word' instead of, e.g., `word->word' - - change extract_array_assignment_list to just return the passed - string minus a trailing `)' if the last character is a right - paren - - change do_assignment_internal to call extract_array_assignment_list - -subst.[ch] - - change do_assignment and do_assignment_no_expand to take a `char *' - instead of `const char *' first argument; change extern prototypes - - new function, do_word_assignment, takes a WORD_DESC * and calls - do_assignment_internal on it; add extern declaration with prototype - -general.h - - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a - WORD_DESC * as its first argument - -variables.[ch] - - assign_in_env now takes a WORD_DESC * as its first argument +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 + - 10/2 - ---- -command.h - - new word flag, W_ASSNBLTIN, denotes that the word is a builtin - command (in a command position) that takes assignment statements - as arguments, like `declare' - - new word flags, W_ASSIGNARG, denotes that word is an assignment - statement given as argument to assignment builtin + 5/2 + --- +doc/{bash.1,bashref.texi} + - add forward reference to `Pattern Matching' from `Pathname + Expansion', suggested by Greg Wooledge -execute_cmd.c - - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there - are any arguments that are assignment statements) - - set W_ASSIGNARG flag in fix_assignment_words if necessary + 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 -subst.c - - new function, do_compound_assignment, encapsulates the necessary - code to perform a compound array assignment (including creation of - local variables); called from do_assignment_internal - - to fix the double-expansion problem with compound array assignments - that are arguments to builtins like `declare', changed - shell_expand_word_list to treat those arguments like assignment - statements (with proper creation of local variables inside shell - functions) and pass the attribute-setting portion of the statement - onto the builtin. This is what ksh93 appears to do, from inspection - of the `ksh93 -x' output +pathexp.c + - quote_string_for_globbing: make sure CTLESC quoting CTLESC is + translated into \ even if the flags include QGLOB_REGEXP. + We don't want to process the second CTLESC as a quote character. + Fixes bug reported by Shawn Bohrer -execute_cmd.c - - fix execute_simple_command: in case of pipeline or async command, - when forking early, set `subshell_environment' so that it can contain - both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be - mutually exclusive. Fixes bug reported by pierre.humblet@ieee.org - - remove references to last_pid, old_command_subst_pid; use NO_PID as - a sentinel value to decide whether or not a child process has been - created and needs to be waited for. Submitted by - pierre.humblet@ieee.org to fix recycling-pid problem on cygwin + 5/6 + --- +builtins/printf.def + - change PRETURN to not call fflush if ferror(stdout) is true + - if a call to one of the stdio functions or printstr leaves + ferror(stdout) true, and PRETURN is going to be called, let PRETURN + print the error message rather than doubling up the messages. Fixes + problem reported by Roman Rakus + 5/9 + --- doc/{bash.1,bashref.texi} - - fixed documentation of `@(pattern)' extended globbing operator -- - it succeeds if the string matches one of the patterns, not exactly - one. This is what ksh93 does, too - -lib/readline/complete.c - - fixed rl_menu_complete so that a negative argument cycles backwards - through the list + - add note to the effect that lists inside compound command can be + terminated by newlines as well as semicolons. Suggested by + Roman Byshko - 10/3 + 5/10 ---- subst.c - - use W_COMPASSIGN flag in do_assignment_internal instead of deciding - lexically which assignments are compound array assignments + - 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 - 10/6 + 5/11 ---- -support/shobj-conf - - additions for System V.5 from Boyd Gerber - subst.c - - in command_substitute, if subshell_environment includes - SUBSHELL_ASYNC, call make_child with the `async_p' argument set to - non-zero. This keeps command substitutions for async commands or - pipelines from trying to give the terminal back to the shell's - pgrp. make sure to save and restore last_asynchronous_pid. Fix - suggested by + - 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 - 10/7 + 5/12 ---- -config.h.in - - add a placeholder definition for WCONTINUED_BROKEN +configure.in + - set the prefer_shared and prefer_static variables appropriately + depending on the value of $opt_static_link - 10/9 - ---- aclocal.m4 - - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is - defined but rejected as invalid by waitpid(2) + - 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 -configure.in - - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN + 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 -redir.c - - experimental change to add_undo_redirect to save manipulations to - file descriptors >= SHELL_FD_BASE (10) on the list of redirections - to be undone even if `exec' causes the list to be discarded +builtins/help.def + - help_builtin: change strncmp to strcmp so that `help read' no longer + matches `readonly'. Suggested by Clark Wang -doc/{bash.1,bashref.texi} - - note that redirections using file descriptors > 9 should be used - carefully, because they might conflict with file descriptors the - shell uses internally +config.h.in + - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests + for libintl - 10/11 - ----- -parse.y - - fix pipeline_command production to handle case where `pipeline' - as `argument' of `!' or `time' is null (e.g., a syntax error not - handled by the grammar) +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 - 10/13 - ----- -lib/readline/readline.c - - new internal variable, _rl_bind_stty_chars; if non-zero, bind the - terminal special characters to readline equivalents at startup - - change readline_default_bindings() and reset_default_bindings() to - understand _rl_bind_stty_chars +aclocal.m4 + - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN + to avoid warning about not using AC_LANG_SOURCE -lib/readline/rlprivate.h - - new extern declaration for _rl_bind_stty_chars + 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 -lib/readline/rltty.c - - change rl_prep_terminal to add support for _rl_bind_stty_chars +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 - 10/15 - ----- -lib/readline/bind.c - - new bindable variable, `bind-tty-special-chars', bound to value of - _rl_bind_stty_chars + 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 + -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - documented new readline variable `bind-tty-special-chars' + 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). -builtins/pushd.def - - make the first check for option `--' skip the rest of option - checking +lib/readline/{complete,display,mbutil}.c + - use WCWIDTH instead of wcwidth - 10/16 - ----- -lib/readline/shell.c - - change sh_set_lines_and_columns to prefer setenv, which has - predictable memory allocation behavior, to putenv, which does not + 5/17 + ---- +lib/readline/display.c + - update_line: after computing ofd and nfd, see whether the next + character in ofd is a zero-width combining character. If it is, + back ofd and nfd up one, so the base characters no longer compare + as equivalent. Fixes problem reported by Keith Winstein + + +lib/readline/nls.c + - _rl_utf8locale: new flag variable, set to non-zero if the current + locale is UTF-8 + - utf8locale(): new function, returns 1 if the passed lspec (or the + current locale) indicates that the locale is UTF-8. Called from + _rl_init_eightbit - 10/19 - ----- -variables.c - - change push_exported_var so that a tempenv variable has to have the - export attribute set (which they all do -- something to look at) and - the `propagate' attribute set to be propagated down to the next - scope +lib/readline/rlprivate.h + - extern declaration for _rl_utf8locale -execute_cmd.c - - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the - passed flags argument, call pop_scope with a value that says the - builtin is not special, since `command' means that preceding variable - assignments don't persist in the environment. Fixes problem with - variable assignments preceding command preceding special builtin - keeping those variable assignments around (when in posix mode) +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 - 10/20 - ----- -lib/sh/shquote.c - - new function, sh_mkdoublequoted, brackets a given string with - double quotes and returns a new string. Flags argument, if non- - zero, means to quote embedded double quotes with backslashes +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 -externs.h - - new extern declaration for sh_mkdoublequoted +config.h.in + - WCWIDTH_BROKEN: new define -parse.y - - use sh_mkdoublequoted after calling localeexpand() +lib/readline/rlmbutil.h + - change WCWIDTH macro to use _rl_utf8locale and the full range of + Unicode combining characters (U+0300-U+036F) -lib/sh/strtrans.c - - change ansicstr to understand that (flags & 4) != 0 means to remove - backslash from unrecognized escape sequences + 5/19 + ---- +lib/readline/rlprivate.h + - _rl_search_context: new member, prevc, will hold character read + prior to lastc -general.c - - fix logic problem in assignment() that caused non-variable-starter - characters to be allowed, resulting in things like `1=xxx' creating - a variable `1' in the hash table +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 + - 10/21 - ----- -bashline.c - - don't call programmable_completions with an assignment statement - argument + 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 - 10/22 - ----- -lib/readline/rltty.c - - in prepare_terminal_settings, turn echoing on (readline_echoing_p) - if get_tty_settings fails because the input is not a terminal + 5/26 + ---- - 10/24 - ----- -lib/readline/util.c - - include rlmbutil.h for multibyte definitions - - new function, _rl_walphabetic, wide char version of rl_alphabetic +lib/readline/search.c + - include histlib.h for ANCHORED_SEARCH defines + - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for + the duration of a history search + - rl_history_search_reinit: takes a new flags variable, defines whether + or not the search is anchored; assigned to rl_history_search_flags + - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to + beginning of search string; otherwise search string is unmodified + - rl_history_search_internal: set rl_point appropriately based on + whether or not rl_history_search_flags includes ANCHORED_SEARCH + - rl_history_substr_search_forward: new function, for non-anchored + substring search forward through history for string of characters + preceding rl_point + - rl_history_substr_search_backward: new function, for non-anchored + substring search backward through history for string of characters + preceding rl_point. Original code from Niraj Kulkarni + -lib/readline/mbutil.c - - new function, _rl_char_value(buf, ind), returns value of (possibly - multibyte) character at buf[ind] +lib/readline/readline.h + - extern declarations for rl_history_substr_search_{for,back}ward -lib/readline/rlmbutil.h - - extern defines for _rl_walphabetic and _rl_char_value for when - multibyte chars are not being used - - new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and - _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded - function calls +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/text.c - - fix rl_foward_word to work with multibyte characters (or in a - multibyte locale) using above utility functions - - fix rl_backward_word to work with multibyte characters (or in a - multibyte locale) using above utility functions +lib/readline/doc/{rluser.texi,readline.3} + - document history-substring-search-forward and + history-substring-search-backward - 10/26 - ----- -parse.y - - fix parse_matched_pair so that it doesn't swallow \ when - parsing a $'...' construct (call shell_getc with different arg) + 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 + - 10/28 - ----- -lib/glob/glob.c - - after some (compiled-in) threshold, glob_vector will stop using - alloca to allocate `struct globval's and will switch to using - malloc, with appropriate cleanup before returning +config-top.h + - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out + by default -subst.c - - don't expand tildes after `=' in expand_word_internal, even if the - W_TILDEEXP flag is set, unless it's the first tilde in a word - marked W_ASSIGNMENT + 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. - 10/31 - ----- -lib/readline/text.c - - make sure rl_point doesn't go below 0 in rl_delete_horizontal_space - (from SUSE, but not sent in) + 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 + -shell.c - - make sure shell_is_restricted skips over a single leading `-' in - the shell name (from SUSE, but not sent in) + 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 -lib/readline/display.c - - disable `fast redisplay' at the end of the line if in a locale that - supports multibyte characters (from SUSE, but not sent in) +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. -lib/readline/histexpand.c - - fix a problem with finding the delimiter of a `?' substring when - compiled for multibyte characters (from SUSE, but not sent in) - 11/1 + 6/21 ---- -lib/readline/display.c - - correct some assignments to _rl_last_c_pos: when in a multibyte - locale, it's used as an absolute cursor position; when not using - multibyte characters, it's a buffer offset. I should have caught - this when the multibyte character support was donated +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 + - 11/5 + 6/24 ---- -general.c - - change `assignment()' to accept `+=' assignment operator - -arrayfunc.[ch] - - bind_array_variable and assign_array_element both take a new `flags' - argument - - assign_array_var_from_string, assign_array_from_string, and - assign_array_var_from_word_list now all take a new `flags' argument - - change assign_array_var_from_word_list to understand how to append - to an array variable - - change assign_array_var_from_string to understand how to append - to an array variable. It does not unset the previous value if - appending, allowing both old values to be changed and new ones to - be added +{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 -subst.h - - new flag #defines to use for evaluating assignment statements - -{subst,variables}.c, builtins/{declare,read}.def - - change callers of assign_array_element and bind_array_variable - - change do_compound_assignment to understand assignment flags - - change do_assignment_internal to set assignment flags and pass them - to underlying functions - -pcomplete.c,builtins/{declare,read}.def - - fix callers of assign_array_var_from_string, assign_array_var_from_word_list - -variables.[ch] - - make_variable_value now takes a new `flags' argument - - make_variable_value now understands how to append to a particular - variable, using the old value - - bind_variable_value now takes a new `flags' argument - - change make_variable_value to understand ASS_APPEND flag - - bind_variable now takes a new `flags' argument - - bind_variable_internal now takes a new `flags' argument +doc/{bash.1,bashref.texi} + - checkwinsize: remove language saying that only interactive shells + check the window size after each command -arrayfunc.c - - change callers of make_variable_value to add flags arg +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 -builtins/declare.def - - change callers of bind_variable_value to add flags arg +bashline.c + - find_cmd_name: two new arguments, return the start and end of the + actual text string used to find the command name, without taking + whitespace into account + - attempt_shell_completion: small changes to make sure that completion + attempted at the beginning of a non-empty line does not find a + programmable completion, even if the command name starts at point + - attempt_shell_completion: small change to make sure that completion + does not find a progcomp when in whitespace before the command + name + - attempt_shell_completion: small change to make sure that completion + does not find a progcomp when point is at the first character of a + command name, even when there is leading whitespace (similar to + above). Fixes problems noted by Ville Skytta + +subst.c + - brace_expand_word_list: since the individual strings in the strvec + returned by brace_expand are already allocated, don't copy them to + newly-allocated memory when building the WORD_LIST, just use them + intact -{execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y -builtins/{cd,command,declare,getopts,read,set,setattr}.def - - change callers of bind_variable to add flags arg +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 -variables.c - - change callers of bind_variable_internal - - change bind_variable_internal to pass assignment flags on to - make_variable_value - - change assign_in_env to treat `var+=value' like `var=value' +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 -arrayfunc.c - - break code that actually constructs the new value and assigns it - to a particular array index out into a new functions: - bind_array_var_internal. This fakes out make_variable_value by - passing a dummy SHELL_VAR * so it can do proper appending and other - += processing - - changes to assign_array_var_from_string to accept and process as if - they were `standalone' assignment statements array assignment words - of the form [ind]+=val +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 - 11/7 - ---- -builtins/declare.def - - added support for `declare [flags] var+=value'. `Flags' are applied - before the assignment is performed, which has implications for things - like `-i' -- if -i is supplied, arithmetic evaluation and increment - will be performed +include/shmbutil.h + - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and + similar macros -builtins/setattr.def - - add support for `+=' assignment for rest of `assignment builtins': - export, readonly +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 + - 11/12 - ----- -lib/readline/display.c - - make sure prompt_physical_chars and prompt_invis_chars_first_line - are reset to 0 if the prompt string passed to rl_expand_prompt is - NULL or empty + 6/30 + ---- +execute_cmd.c + - execute_pipeline: make sure the lastpipe code is protected by + #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort + - 11/14 - ----- -{configure,config.h}.in - - check for `raise', define HAVE_RAISE if available + 7/2 + --- +lib/readline/complete.c + - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around + completion functions that touch the file system. Idea from Jan + Kratochvil and the GDB development + team -lib/intl/dcigettext.c - - make sure `raise' is defined if HAVE_RAISE is not before - eval-plurah.h is included +lib/readline/signals.c + - rl_signal_handler: if we're in callback mode, don't interrupt + immediately on a SIGWINCH -lib/malloc/trace.c - - put extern declaration for imalloc_fopen inside the MALLOC_TRACE - #ifdef + 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 - 11/16 - ----- -lib/intl/Makefile.in - - make sure SHELL is defined to cpp +bashline.h + - extern declaration for set_directory_hook so shopt code can use it -lib/intl/dcigettext.c - - make sure we use getcwd() even if HAVE_GETCWD is not defined after - including config.h; if SHELL is defined, #define HAVE_GETCWD + 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 - 11/18 - ----- -trap.[ch] - - new function, int signal_in_progress(int sig), returns TRUE if the - trap handler for signal SIG is currently executing + 7/7 + --- +doc/{bash.1,bashref.texi} + - document new `globasciiranges' shopt option - 11/19 - ----- -redir.c - - slightly change do_redirection_internal to set the close-on-exec - flag for file descriptors > 2 used to save file descriptors < 2 - using explicit redirections (e.g., `exec 3>&1'). This keeps file - descriptors pointing to pipes from being left open but doesn't - change the shell's file descriptor semantics + 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 - 11/20 - ----- doc/{bash.1,bashref.texi} - - correct some minor typos, forwarded from doko@debian.org + - document new `direxpand' shopt option - 11/22 - ----- -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - documented detail that yank-last-arg and yank-nth-arg use the history - arg expansion code (and, as a result, are subject to restrictions - of the history-comment character) + 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 - 11/23 - ----- -execute_cmd.c - - changes so that BASH_COMMAND preserves its value into a DEBUG trap: - for commands, arithmetic for command expressions, select commands, - case commands, (( commands, [[ commands, simple commands + 7/18 + ---- +lib/readline/rlprivate.h + - _rl_search_context: add another member to save previous value of + (multibyte) lastc: pmb is to mb as prevc is to lastc + +lib/readline/isearch.c: + - _rl_isearch_dispatch: if a key sequence indexes into a new keymap, + but doesn't find any bound function (k[ind].function == 0) or is + bound to self-insert (k[ind].function == rl_insert), back up and + insert the previous character (the one that caused the index into a + new keymap) and arrange things so the current character is the next + one read, so both of them end up in the search string. Fixes bug + reported by Clark Wang + - _rl_isearch_dispatch: a couple of efficiency improvements when adding + characters to the isearch string - 11/24 - ----- -doc/{bash.1,bashref.texi} - - changed description of `set' builtin slightly so that it is clear - that only variables are displayed in posix mode and that read-only - variables can't be reset by simply sourcing the output of `set' + 7/24 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb + appropriately when in a multibyte locale -lib/sh/strftime.c - - don't try to redefine `inline' if it's already defined +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 - 11/26 - ----- -execute_cmd.c - - fix execute_function to check funcname_a after function execution, - since FUNCNAME can be changed or unset within a function +lib/readline/signals.c + - rl_signal_handler: don't interrupt immediately if in callback mode - 11/27 - ----- -builtins/evalfile.c - - make same changes as 11/26, this time to _evalfile +lib/readline/callback.c + - rl_callback_read_char: install signal handlers only when readline + has control in callback mode, so readline's signal handlers aren't + called when the application is active (e.g., between the calls to + rl_callback_handler_install and rl_callback_read_char). If the + readline signal handlers only set a flag, which the application + doesn't know about, the signals will effectively be ignored until + the next time the application calls into the readline callback + interface. Fixes problem of calling unsafe functions from signal + handlers when in callback mode reported by Jan Kratochvil + execute_cmd.c - - change execute_function to run the return trap after a function - completes execution even if the shell is compiled without DEBUGGER - defined + - 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 -trap.c - - change reset_or_restore_signal_handlers so that the RETURN trap is - not inherited by command substitution when DEBUGGER is not defined +doc/{bash.1,bashref.texi} + - document new Posix-mode behavior of `command' when preceding builtins + that take assignment statements as arguments - 11/30 - ----- -lib/readline/misc.c - - fix memory leaks in _rl_free_history_entry and rl_maybe_replace_line - caused by not freeing `timestamp' member of history entry - - make sure timestamp is initialized to NULL in rl_maybe_save_line +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 - 12/1 + 7/25 ---- -execute_cmd.c - - fix execute_function so a function calling `return' will run the - RETURN trap, if one's defined +lib/readline/chardefs.h + - isxdigit: don't define if compiling with c++; declared as a c++ + template function. Fixes bug reported by Miroslav Lichvar + + +builtins/printf.def + - getint: if garglist == 0, return whatever getintmax returns (0). + Fixes bug reported by Ralph Coredroy + 7/28 + ---- doc/{bash.1,bashref.texi} - - fix description of RETURN trap in various places to indicate that it's - only inherited by shell functions if function tracing is on globally - or has been enabled for that function - - fix documentation to indicate that the DEBUG and RETURN traps are - inherited under the same conditions + - minor changes to the descriptions of the cd and pushd builtins + +lib/sh/zread.c + - zsyncfd: change variable holding return value from lseek to + off_t. Bug report and fix from Gregory Margo + + 8/1 + --- +expr.c + - don't check for division by 0 when in a context where no evaluation + is taking place. Fixes bug reported by dnade.ext@orange-ftgroup.com + 8/6 + --- execute_cmd.c - - a function does not inherit the RETURN trap if a DEBUG trap is - currently running + - 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 + - 12/2 + 8/9 + --- +builtins/common.c + - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument + +builtins/return.def + - return_builtin: just call get_exitstat to get the return status, + let it handle proper parsing and handling of arguments. Fixes + issue most recently raised by Linda Walsh . + Reverses change from 9/11/2008 (see above) + + 8/16 ---- -lib/glob/xmbsrtowcs.c - - change xmbsrtowcs to handle the one case where malloc can fail - (though it should not matter) -- don't try to free a null pointer +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 - 12/9 + 8/17 ---- -subst.c - - fix get_var_and_type to handle var[@], where `var' is a scalar - variable, identically to var -- all calling expansions can now - handle var[@] like var. Bug reported by agriffis@gentoo.org +configure.in + - make the various XXX_FOR_BUILD variables `precious' to autoconf to + avoid stale data + - change how CC_FOR_BUILD is initialized when cross-compiling and not, + but do not change behavior + - initialize CFLAGS_FOR_BUILD to -g when cross-compiling + - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty + when cross-compiling + - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when + CFLAGS not inherited from environment (like effect of old + auto_cflags variable) + - substitute LIBS_FOR_BUILD into output Makefiles + [changes inspired by bug report from Nathan Phillip Brink + -- gentoo bug 378941] + +builtins/Makefile.in + - substitute LIBS_FOR_BUILD from configure, not strictly initialized + to $(LIBS) - 12/10 - ----- -lib/readline/bind.c - - make new-style "\M-x" keybindings obey `convert-meta' settings - (bug reported by twaugh@redhat.com) - - 12/14 - ----- -builtins/set.def - - added description of `-' option to help text - -builtins/shopt.def - - fix bug that caused `gnu_errfmt' to not be compiled in unless - READLINE is defined - - 12/16 - ----- -subst.c - - fixed a typo in string_extract_verbatim in first call to MBLEN - (used `slen - 1' instead of `slen - i') - - 12/17 - ----- -subst.c - - avoid some calls to strlen if the value is only being used for - ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need - it unless multibyte characters are possible) - - change string_extract_verbatim so it takes the length of the string - as a parameter, so we don't have to recompute the length of the same - string over and over again when doing word splitting (that kills if - it's a long string) - - 12/18 - ----- -subst.c - - in string_list_dollar_star, make sure to null-terminate the - separator if the character is longer than one byte - - 12/22 - ----- -doc/{bash.1,bashref.texi} - - changed text in quoting section explaining that double quotes do - not prevent history expansion from taking place, and that backslashes - escaping ! are not removed - - 12/28 - ----- -shell.c - - set gnu_error_format to 1 if running under emacs. This should allow - the emacs `next-error' stuff to work, at least for interactive shells - -parse.y - - change yy_stream_get to set interrupt_immediately before calling - getc_with_restart when the shell is interactive. This avoids the - synchronization problem caused by the call to QUIT in read_a_line, - which results in the first character after a SIGINT/^C to be - dropped - - 12/30 - ----- -builtins/mkbuiltins.c - - changes to write long documentation to arrays as a single string by - default, rather than an array of strings -- enabled by default - - new option, -S, to restore old behavior of writing multiple strings - for long documentation - - changes to avoid filenames written when the separate-filenames option - (-H) has been supplied being run through gettext - -configure.in - - new cofiguration option, --enable-single-help-strings (on by default), - causes help text to be stored as a single string (or smaller set than - one string per line) - -builtins/Makefile.in - - pass `-S' to mkbuiltins if single-help-strings is turned off - -doc/bashref.texi - - documented new `single-help-strings' configure option - - 1/3/2005 - -------- -jobs.c - - make wait_for return a non-zero status if the job or processed - waited for is suspended. Returns 128 + stop signal. This fixes - the problem with `echo one && sleep 5 && echo two' displaying - `two' after the sleep is suspended - - 1/5 - --- -print_cmd.c - - change indirection_level_string so the code duplicates the first - character of $PS4 to indicate the indirection level, rather than - the first byte - - 1/8 - --- -variables.c - - new special variable hook function for COMP_WORDBREAKS; sets - rl_completer_word_break_characters back to NULL when the variable - is unset - - change bind_variable_value to understand dynamic variables with - assign_function set, and handle them correctly. If the variable is - being appended to, use make_variable_value to create the new - value - - change bind_variable_internal to understand dynamic variables with - assign_function set, and handle them the same way - - RANDOM and LINENO now get the integer attribute, so appending works - as expected - - ditto for HISTCMD, MAILCHECK, OPTIND - -lib/readline/display.c - - change _rl_make_prompt_for_search to set prompt_physical_chars - appropriately - - rl_save_prompt and rl_restore_prompt save and restore - prompt_prefix_length - - change redraw_prompt to use rl_save_prompt and rl_restore_prompt - - change rl_restore_prompt to set the `save' variables back to - NULL/0 so code can check whether or not the prompt has been saved - - change rl_message and rl_clear_message to save and restore the - prompt if the caller has not already done it (using a simple - semaphore-like variable) - - change rl_message to call expand_prompt, so that local_prompt and - local_prompt prefix are set before calling the redisplay functions, - in case the prompt is longer than a screenwidth (fixes bug - reported to debian by epl@unimelb.edu.au) - -lib/readline/doc/rltech.texi - - make sure to note that rl_save_prompt should be called before - rl_message, and rl_restore_prompt before rl_clear_message - -pcomplete.c - - make sure to save and restore the parser state around the call to - execute_shell_function in gen_shell_function_matches. Fixes bug - reported by a050106.1.keeLae3x@captaincrumb.com (cute) - -lib/readline/readline.c - - fix _rl_dispatch_subseq in the case where we're recursing back up - the chain (r == -2) and we encounter a key shadowed by a keymap, - but originally bound to self-insert. Calling rl_dispatch with - ANYOTHERKEY as the first argument will call rl_insert, but with - ANYOTHERKEY (256) as the char to insert. Use the shadow keymap - and set things up to dispatch to rl_insert with the shadowed key - as the argument. Fixes the bug reported by Thomas Glanzmann - (sithglan@stud.uni-erlangen.de) - - 1/13 - ---- -command.h - - new word flag: W_HASQUOTEDNULL - -make_cmd.c - - new function to allocate a WORD_DESC * without doing anything with a - containing string: alloc_word_desc - -make_cmd.h - - extern declaration for alloc_word_desc - -dispose_cmd.c - - new function to just free a WORD_DESC * without freeing the contained - string: dispose_word_desc - -dispose_cmd.h - - extern declaration for dispose_word_desc - -subst.c - - change some places to use alloc_word_desc - - make same changes to word_list_quote_removal as were made to - word_list_split - - set W_HASQUOTEDNULL when a word is created with w->word[0] == - CTLNUL and w->word[1] == '\0' - -subst.c - - parameter_brace_expand_word now returns a WORD_DESC * -- changed - callers to understand - - parameter_brace_expand_indir now returns a WORD_DESC * -- changed - callers to understand - - parameter_brace_expand_rhs now returns a WORD_DESC * -- changed - callers to understand - - remove W_HASQUOTEDNULL from a word's flags when remove_quoted_nulls - is called on the word's enclosed string - - 1/15 - ---- -subst.c - - param_expand now returns a WORD_DESC * -- changed callers to - understand - - parameter_brace_expand now returns a WORD_DESC * -- changed - callers to understand - - in expand_word_internal, only call remove_quoted_nulls after a word - is returned with W_HASQUOTEDNULL - - changes to pass W_HASQUOTEDNULL flag out of expand_word_internal; - changed callers to call remove_quoted_nulls only if return value has - W_HASQUOTEDNULL set. This is a mostly-complete fix for the - long-standing CTLNUL confusion between a quoted null expansion and - the expansion of a variable with a literal '\177' in its value - - change string_list_dollar_at to compute the separator character the - same way as string_list_dollar_star: using the already-computed - values generated in setifs() - - when expanding unquoted $*, if $IFS is empty, check whether or not - we're eventually going to split the results (e.g., on the rhs of an - assignment statement) and concatenate the positional parameters as - if the expansion were within double quotes if we're not going to - split - -tests/iquote.tests - - test cases based on old bug reports about the quoted-null vs. 0177 - problem the recent code fixes - - 1/16 - ---- -dispose_cmd.c - - set w->word to 0 before putting a WORD_DESC * back in the cache in - dispose_word_desc; changed callers to delete those assignments - -variables.c - - change assign_random and get_random_value so that the random number - generator only gets re-seeded once in a subshell environment, and - assigning a value to RANDOM counts as seeding the generator. This - makes the sequences a little more predictable - - 1/20 - ---- -lib/readline/history.c - - fix replace_history_entry, remove_history to return NULL if - passed index is < 0 - - 1/22 - ---- -lib/sh/netconn.c - - fix isnetconn() to understand that getpeername can return ENOTCONN - to indicate that an fd is not a socket - -configure.in - - set BUILD_DIR to contain backslashes to escape any spaces in the - directory name -- this is what make will accept in targets and - prerequisites, so it's better than trying to use double quotes - - set SIZE to the appropriate value if some cross-compiling tool - chain is being used; `size' by default (can be overridden by - SIZE environment variable) - -Makefile.in - - use $(SIZE) instead of size; set SIZE from configure - - 1/31 - ---- -arrayfunc.c - - in array_value_internal, return NULL right away if the variable's - value is NULL, instead of passing a null string to add_string_to_list - - 2/1 - --- -jobs.h - - new struct to hold stats and counters for child processes and jobs - - change some uses of global and static variables to use members of - new struct (struct jobstats) - - 2/2 - --- - -jobs.[ch] - - change PRUNNING to PALIVE - - new define INVALID_JOB - - new macro get_job_by_jid(ind), currently expands to jobs[ind] - - new define J_JOBSTATE, operates on a JOB * like JOBSTATE operates on - a job index - - new function, reset_job_indices, called from delete_job if - js.j_lastj or js.j_firstj are removed - - change various functions to keep counters and stats in struct jobstats - -pcomplete.c, builtins/common.c, builtins/{exit,fg_bg,jobs,kill,wait}.def - - change global variables (e.g., job_slots) to struct members - (e.g., js.j_jobslots) - - use INVALID_JOB define where appropriate - - use get_job_by_jid and J_JOBSTATE where appropriate - -trap.c - - change reset_or_restore_signal_handler to not free the exit trap - string if the function pointer is reset_signal, which is used when - the trap strings shouldn't be freed, like in command substitution - - 2/4 - --- -jobs.c - - new function, realloc_jobs_list, copies jobs array to newly-allocated - memory shrinking (or growing) size to have next multiple of JOB_SLOTS - greater than js.j_njobs - - change compact_jobs_list to just call reap_dead_jobs and then - realloc_jobs_list, simplifying it considerably - - discard_pipeline now returns `int': the number of processes freed - - slightly changed the logic deciding whether or not to call - compact_jobs_list: now non-interactive shells will compact the - list if it reaches MAX_JOBS_IN_ARRAY in size - -parse.y - - move test for backslash-newline after pop_string in shell_getc so - that things like - - ((echo 5) \ - (echo 6)) - - work right - - 2/8 - --- -jobs.h - - new structs for holding status of exited background processes, as - POSIX specifies - - new job flag: J_ASYNC - -jobs.c - - new functions to manipulate struct holding status of exited - background processes - - new members in struct jobstats to hold pointer to last created job - and last created asynchronous job - - initialize js.c_childmax in initialize_job_control - - if the `async' arg to stop_pipeline is non-null, set the J_ASYNC - flag in the job struct - - set js.j_last_made_job and js.j_last_asynchronous_job in - stop_pipeline - - new function: find_last_proc, returns the PROCESS * to the last proc - in a job's pipeline - - changed find_last_pid to call find_last_proc - - change delete_job to call bgp_add on the last proc of the job being - deleted - - change delete_all_jobs and wait_for_background_pids to call bgp_clear - - 2/9 - --- -jobs.c - - change wait_for_single_pid to look for pid in bgpids.list (using - bgp_search()) if find_pipeline returns NULL - - 2/10 - ---- -support/shobj-conf - - change the solaris-gcc stanza so that it auto-selects the appropriate - options for ld depending on which `ld' gcc says it's going to run - - 2/11 - ---- -jobs.h - - add support for PS_RECYCLED as a process state, add PRECYCLED macro - to test it. Change PALIVE and PRUNNING macros to not count processes - in PS_RECYCLED state - -execute_cmd.c - - restore use of last_pid as sentinel value; use NO_PID as sentinel - only if RECYCLES_PIDS is defined - -jobs.c - - change find_job to return a pointer to the PROCESS the desired pid - belongs to, analogous to find_pipeline returning pointer to JOB - - change find_job callers to add extra argument - - change running_only arguments to find_pipeline and find_job to - alive_only, since we don't want recycled pids returned here and it - better describes the result - - new function find_process, calls find_pipeline and searches the - returned pipeline for the PROCESS * describing the desired pid - - in make_child, if fork() returns the same pid as the value of - last_asynchronous_pid when RECYCLES_PIDS is defined, avoid pid - aliasing by resetting last_asynchronous_pid to 1 - - use PRUNNING instead of child->running, since we, for the most - part, don't want to consider recycled pids (e.g., in make_child()) - - call find_process instead of find_pipeline in waitchld() - - use PEXITED(p) instead of testing p->running == PS_DONE - - in make_child, call bgp_delete to remove a just-created pid from the - last of saved pid statuses - - in add_process, check whether or not pid being added is already in - the_pipeline or the jobs list (using find_process) and mark it as - recycled if so - - This set of fixes mostly came from Pierre Humblet - to fix pid aliasing and reuse problems on - cygwin - -variables.c - - set $_ from the environment if we get it there, set to $0 by - default if not in env - -doc/{bashref.texi,bash.1} - - a couple of clarifying changes to the description of $_ based on - comments from Glenn Morris - - 2/15 - ---- -shell.c - - use strstr instead of strmatch when checking whether $EMACS contains - `term' -- simpler and faster - - 2/18 - ---- -builtins/cd.def - - implement posix requirement that `pwd -P' set $PWD to a directory - name containing no symlinks - - add new function, setpwd(), just sets (and changes exported value) - of PWD - -doc/bashref.texi - - add note to posix mode section about pwd -P setting $PWD - -doc{bash.1,bashref.texi} - - added note that BASH_ARGC and BASH_ARGV are only set in extended - debug mode - - expand description of extdebug option to include everything changed - by extended debug mode - - 2/19 - ---- -pathexp.h - - new flag macro, FNMATCH_IGNCASE, evaluates to FNM_CASEFOLD if the - match_ignore_case variable is non-zero - -execute_cmd.c - - new variable, match_ignore_case - - change call to strmatch() in execute_case_command so it includes - FNMATCH_IGNCASE - -test.c - - change call to strmatch() in patcomp() so that pattern matching - calls for [[ ... ]] obey the match_ignore_case variable - -lib/sh/shmatch.c - - if match_ignore_case is set, enable REG_ICASE in the regexp match - flags - -builtins/shopt.def - - new settable option, `nocasematch', controls the match_ignore_case - variable. Currently alters pattern matching for case and [[ ... ]] - commands (==, !=, and =~ operators) - -doc/{bashref.texi,bash.1} - - updated descriptions of [[ and case to include reference to - nocasematch option - - 2/22 - ---- -builtins/mkbuiltins.c - - add `times' to the list of posix special builtins - - 2/23 - ---- -builtins/cd.def - - posix mode no longer turns on effect of -P option on $PWD if a - directory is chosen from CDPATH - -doc/bashref.texi - - clarified that in posix mode, reserved words are not alias expanded - only in a reserved word context - - removed item about cd, $CDPATH, and -P from posix mode section - - 2/24 - ---- -builtins/reserved.def - - minor cleanups to the description of `if' - - 3/2 - --- -subst.c - - change list_string and get_word_from_string to explicitly treat an - IFS character that is not space, tab, or newline *and any adjacent - IFS white space* as a single delimiter, as SUSv3/XPG6 says - -builtins/read.def - - check whether or not the number of fields is exactly the same as - the number of variables instead of just assigning the rest of the - line (minus any trailing IFS white space) to the last variable. - This parses a field and checks whether or not it consumes all of - the input (including any trailing field delimiters), falling back - to the previous behavior if it does not. This is what POSIX.2 - specifies, I believe (and the consensus of the austin-group list). - This requires a few tests in read.tests to be changed: backslashes - escaping IFS whitespace characters at the end of input cause the - whitespace characters to be preserved in the value assigned to the - variable, and the trailing non-whitespace field delimiter issue - - 3/7 - --- -configure.in - - add -D_POSIX_SOURCE to the LOCAL_CFLAGS for Interix - - 3/8 - --- -bashline.c - - make bash_directory_expansion a void function, since it doesn't have - any return value - - 3/9 - --- -builtins/read.def - - when testing for a pipe, use `fd' instead of hard-coding 0, since we - can read from other file descriptors now - -lib/sh/zread.c - - in zsyncfd, only set lind and lused to 0 if the lseek succeeds. - If the lseek fails, we might steal input from other programs, but - a failed lseek won't cause us to erroneously discard input - - 3/11 - ---- -builtins/evalstring.c - - don't allow parse_and_execute to short-circuit and call exec() if - the command's return value is being inverted - - 3/15 - ---- -builtins/printf.def - - new macro PC to call putchar and increment number of chars printed - - fixes bug in computation of value for %n format char - - `tw' is now a global var so printstr can modify it using PC() - - convert PF macro to use asprintf into a local buffer - Preparation for printf -v var - - add code to add the text printed to a `variable buffer' if -v option - supplied. The buffer grows as needed - - printf now takes a `-v var' option to put the output into the variable - VAR rather than sending it to stdout. It does not: - print partial output on error (e.g., format string error) - handle NULs in the variable value, as usual - - 3/16 - ---- -parse.y - - fix bug in prompt string decoding that caused a core dump when PS1 - contained \W and PWD was unset (null pointer deref) - -builtins/printf.def - - changed -v var behavior so it stores partial output into the named - variable upon an error - - 3/24 - ---- -lib/readline/bind.c - - bool_to_int now takes a `const char *' argument - -support/{printenv,recho,zecho}.c - - include config.h - - include "bashansi.h" for appropriate extern function declarations - -configure.in - - on MacOS X 10.4, compensate for loader not allowing static library - to override existing system dynamic library when compiling -dynamic - (affects readline and history libraries); so use absolute pathname - instead of -lreadline as library name - -lib/glob/{glob,sm_loop,smatch}.c - - make sure to cast arguments to (char *) or (unsigned char *) as - appropriate to avoid gcc4 warnings - -lib/glob/smatch.c - - collsym (single-byte version) now takes a (CHAR *) first argument to - match callers; cast argument to strncmp appropriately - -lib/sh/snprintf.c - - fix ldfallback and dfallback to handle width and precision specs in - the format passed to sprintf() - - fix STAR_ARGS macro to deal with negative field widths and precisions - - 3/25 - ---- -builtins/printf.def - - since a negative precision in a "x.x[fFgGeE]" format specifier should - be allowed but treated as if the precision were missing, let it - through - -lib/sh/snprintf.c - - fix * code to deal with a negative precision by treating it as if - the `.' and any digit string in the precision had not been specified - - fix format parsing code to deal with a negative inline precision, - e.g., "%4.-4f" by treating it as if the `'. and any digit string in - the precision had not been specified - - a `+' in a format specifier should only act as a flag if it comes - before a `.' (otherwise it is ignored) - -lib/readline/vi_mode.c - - new function, rl_vi_rubout, to rl_rubout as rl_vi_delete is to - rl_delete; saves deleted text for possible reinsertion as with any - vi-mode `text modification' command (fixes problem with `X' reported - by beat.wieland@gmx.ch) - -lib/readline/vi_keymap.c - - bind `X' in vi command mode to rl_vi_rubout - -lib/readline/funmap.c - - add a bindable `vi-rubout' command, runs rl_vi_rubout - -lib/readline/text.c - - rewrote internals of _rl_rubout_char to make structure cleaner - -lib/readline/{complete,text}.c - - changed code to remove #ifdef HANDLE_MULTIBYTE where possible - - 3/28 - ---- -lib/readline/examples/rl.c - - include instead of posixstat.h if READLINE_LIBRARY not - defined - -subst.c - - fix mbstrlen to treat invalid multibyte sequences as sequences of - single-byte characters - - 4/8 - --- -configure.in - - default SIZE to `:' if cross-compiling and an appropriate size for - the target is not found - - 4/11 - ---- -subst.c - - change match_upattern and match_wpattern to check whether or not the - supplied pattern matches anywhere in the supplied string, prefixing - and appending the pattern with `*' if necessary. If it doesn't we - can short-circuit immediately rather than waste time doing up to - N-1 unsuccessful calls to strmatch/wcsmatch (which kills for long - strings, even if the pattern is short) - - 4/12 - ---- -configure.in - - make sure the special case for MacOS X 10.4 only kicks in if the - `--with-installed-readline' option isn't supplied - -lib/readline/{callback,readline,signals}.c - - make sure rl_prep_term_function and rl_deprep_term_function aren't - dereferenced if NULL (as the documentation says) - -builtins/mkbuiltins.c - - don't bother with the special HAVE_BCOPY code; just use straight - assignments - -builtins/ulimit.def - - use _POSIX_PIPE_BUF in pipesize() if it's defined and PIPE_BUF is - not - - 4/13 - ---- -execute_cmd.c - - add cm_function_def to the list of control structures for which - child processes are forked when pipes come in or out - - 4/14 - ---- -builtins/read.def - - make sure the ^As added for internal quoting are not counted as - characters read when -n is supplied - - 4/20 - ---- -redir.c - - fix redir_open so that the repeat open on failure that AFS support - adds restores the correct value of errno for any error message - - 4/26 - ---- - -Makefile.in - - make sure mksignames and mksyntax are invoked with the $(EXEEXT) - extension - - 4/28 - ---- -lib/readline/readline.h - - new state variable: RL_STATE_CALLBACK, means readline is using the - callback interface - -lib/readline/callback.c - - set RL_STATE_CALLBACK in rl_callback_handler_install, unset in - rl_callback_handler_remove - - 4/29 - ---- -config-top.h - - DONT_REPORT_SIGPIPE is now on by default, since it apparently - interferes with scripts - -configure.in - - arrange things so PGRP_PIPE is defined on Linux-2.4+ and version 3 - kernels (ones that apparently schedule children to run before their - parent) - - 4/30 - ---- -builtins/caller.def - - add call to no_options, so it can handle `--' option - -doc/{bash.1,bashref.texi} - - note explicitly that test, :, true, and false don't understand -- - as meaning the end of options - - 5/7 - --- -support/shobj-conf - - darwin 8 needs the same LDFLAGS setting as darwin 7 - -parse.y - - in save_parser_state, make sure we cast the return value from - xmalloc() to the right type - - remove casts to (char *) in calls to yyerror() - -lib/readline/signals.c - - make SIGQUIT and SIGALRM code conditional on their definition - - use raise() to send a signal if we don't have kill() - -lib/readline/display.c - - some MS-DOS and MINGW changes from the cygwin and mingw folks - -config.h.in - - add HAVE_PWD_H for - - add HAVE_FCNTL, HAVE_KILL for respective system calls - - add HAVE_GETPW{ENT,NAM,UID} for passwd functions - -configure.in - - add check for - - add checks for fcntl, kill system calls - - add checks for getpw{ent,nam,uid} C library functions - - pass a flag indicating we're cross compiling through to - CFLAGS_FOR_BUILD in Makefile.in - -lib/readline/complete.c - - guard inclusion of with HAVE_PWD_H - - don't provide a missing declaration for getpwent if we don't have it - - guard calls to {get,end}pwent with HAVE_GETPWENT - -lib/readline/shell.c - - guard inclusion of with HAVE_PWD_H - - guard inclusion of with HAVE_FCNTL_H - - don't provide a missing declaration for getpwuid if we don't have it - - guard calls to getpwuid with HAVE_GETPWUID - - don't bother with body of sh_unset_nodelay_mode if we don't have - fcntl - -lib/tilde/tilde.c - - guard inclusion of with HAVE_PWD_H - - guard calls to getpw{nam,uid} with HAVE_GETPW{NAM,UID} - - guard calls to {get,end}pwent with HAVE_GETPWENT - -Makefile.in,builtins/Makefile.in - - @CROSS_COMPILE@ is substituted into CFLAGS_FOR_BUILD (equal to - -DCROSS_COMPILING if bash is being cross-compiled) - - 5/9 - --- -aclocal.m4 - - print version as `0.0' in RL_LIB_READLINE_VERSION if the - `rl_gnu_readline_p' variable isn't 1 (accept no imitations) - - 5/11 - ---- -lib/readline/rlprivate.h - - definition of a readline `search context', to be use for incremental - search initially and other types of search later. Original from - Bob Rossi as part of work on incremental searching problems when - using callback interface - -lib/readline/isearch.c - - functions to allocate and free search contexts - - function to take a search context and a character just read and - `dispatch' on it: change search parameters, add to search string, - search further, etc. - - isearch is now completely context-driven: a search context is - allocated and passed to the rest of the functions - - 5/12 - ---- -lib/readline/isearch.c - - an additional `isearch cleanup' function that can be called from - the callback interface functions when the search is to be terminated - - an additional `isearch callback' function that can be called from - rl_callback_read_char when input is available - - short-circuit from rl_search_history after initialization if - the callback interface is being used - -lib/readline/callback.c - - in rl_callback_read_char(), if RL_STATE_ISEARCH is set, call - _rl_isearch_callback to read the character and dispatch on it. - If RL_STATE_ISEARCH is unset when that call returns, and there is - input pending, call rl_callback_read_char() again so we don't - have to wait for new input to pick it up - -support/shobj-conf,configure.in - - add support for dragonfly bsd, the same as freebsd - - 5/13-5/15 - --------- -lib/readline/callback.c - - support for readline functions to `register' a function that will - be called when more input is available, with a generic data - structure to encapsulate the arguments and parameters. Primarily - intended for functions that read a single additional character, - like quoted-insert - - support for callback code reading numeric arguments in a loop, - using readline state and an auxiliary variable - - support for callback code performing non-incremental searches using - the same search context struct as the isearch code - -lib/readline/{callback,display}.c - - if a callback function sets `_rl_redisplay_wanted', the redisplay - function will be called as soon as it returns - -lib/readline/input.c - - changes to _rl_read_mbchar to handle reading the null multibyte - character and translating it into '\0' - -lib/readline/misc.c - - break rl_digit_loop() into component functions that can be called - individually from the callback code more easily - - share some of the functions with rl_digit_loop1() in vi_mode.c - -lib/readline/readline.h - - change the version #defines to reflect readline 5.1 - -lib/readline/search.c - - break code into smaller functions that can be composed to work with - the callback code more easily - -lib/readline/text.c - - in rl_quoted_insert(), don't mess around with the tty signals if - running in `callback mode' - -lib/readline/vi_mode.c - - changed set-mark, goto-mark, change-char, and char-search to work - when called by callback functions - - 5/17 - ---- - -lib/readline/rlprivate.h - - new struct declaration for a `reading key sequence' context - -lib/readline/readline.c - - new variable, _rl_dispatching_keymap, keeps track of which keymap - we are currently searching - - functions to allocate and deallocate contexts for reading multi-char - key sequences - - 5/18 - ---- -lib/readline/rlprivate.h - - new struct defining a context for multiple-key key sequences (the - base case is escape-prefixed commands) - -lib/readline/readline.c - - change structure of _rl_dispatch_subseq to allow for callback code - to use it - rudimentary support for supporting the existing - recursion using a stack of contexts, each with a reference to the - previous - - fix so that ^G works when in callback mode - -lib/readline/callback.c - - call the appropriate multiple-key sequence callback if the state is - set - - 5/19 - ---- -lib/readline/readline.c - - broke code from _readline_internal_char after call to rl_dispatch - out into separate function: _rl_internal_char_cleanup, callable by - other parts of the code - - change _rl_internal_char_cleanup to unset _rl_want_redisplay after - it calls (*rl_redisplay_func) - -lib/readline/callback.c - - call _rl_internal_char_cleanup from rl_callback_read_char when - appropriate - - 5/24 - ---- -lib/readline/callback.c - - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to - simulate the recursion used to decode multicharacter key sequences - (even things like ESC- as meta-prefix) - - call setjmp in rl_callback_read_char to give things like rl_abort - a place to jump, since the saved location in readline() will not - be valid - - keep calling _rl_dispatch_callback from rl_callback_read_char while - we are still decoding a multi-key key sequence - - keep calling readline_internal_char from rl_callback_read_char while - we are reading characters from a macro - -lib/readline/macro.c - - use a slightly different strategy upon encountering the end of a macro - when using the callback interface: when the last character of a - macro is read, and we are reading a command, pop the macro off the - stack immediately so the loop in rl_callback_read_char terminates - when it should - -lib/readline/readline.c - - if longjmp() is called and we end up at the saved location while - using the callback interface, just return -- don't go back into a - blocking read - - new function to dispose a chain of rl_keyseq_cxts - - only read new input in _rl_dispatch_callback if the KSEQ_DISPATCHED - flag is not set in the current keyseq context -- if it is, we are - traversing the chain back up and should use what we already saved - - use -3 as a magic value from _rl_dispatch_subseq to indicate that - we're allocating a new context and moving downward in the chain - (a special return value for the benefit of _rl_dispatch_callback) - -lib/readline/rlprivate.h - - new extern declaration for _rl_keyseq_chain_dispose - - 6/1 - --- -builtins/read.def - - fixed a bug that occurred when reading a set number of chars and - the nth char is a backslash (read one too many). Bug reported by - Chris Morgan - -execute_cmd.c - - fix execute_builtin so the `unset' builtin also operates on the - temporary environment in POSIX mode (as well as source and eval), - so that unsetting variables in the temporary environment doesn't - leave them set when unset completes. Report by Eric Blake - - -array.c - - fix from William Park for array_rshift when shifting right on an - empty array -- corrects calculation of array->max_index - -builtins/exec.def - - if an exec fails and the execfail option is set, don't call - restart_job_control unless the shell is interactive or job_control - is set - -jobs.c - - add a run-time check for WCONTINUED being defined in header files - but rejected with EINVAL by waitpid(). Fix from Maciej Rozycki - - - 6/20 - ---- -bashhist.c - - make sure calls to sv_histchars are protected by #ifdef BANG_HISTORY - - ditto for calls to history_expand_line_internal - - 6/23 - ---- -doc/bashref.texi - - remove extra blank lines in @menu constructs - -variables.c - - assign export_env to environ (extern char **) every time it changes - (mostly in add_to_export_env define), so maybe getenv will work on - systems that don't allow it to be replaced - - 6/29 - ---- -bashline.c - - in bash_directory_completion_hook, be careful about not turning `/' - into `//' and `//' into `///' for benefit of those systems that treat - `//' as some sort of `network root'. Fix from Eric Blake - - -lib/readline/complete.c - - in to_print, do the right thing after stripping the trailing slash - from full_pathname: // doesn't turn into /, and /// doesn't become - //. Fix from Eric Blake - - 6/30 - ---- -lib/malloc/trace.c - - include if it's available for a definition of size_t - -jobs.c - - in wait_for, if a child process is marked as running but waitpid() - returns -1/ECHILD (e.g., when the bash process is being traced by - strace), make sure to increment c_reaped when marking the child as - dead - - in without_job_control, make sure to close the pgrp pipe after - calling start_pipeline - - 7/1 - --- -Makefile.in - - only remove pathnames.h when the other files created by running - configure are removed (e.g., Makefile). Fix from William Park - -lib/sh/shquote.c - - since backslash-newline disappears when within double quotes, don't - add a backslash in front of a newline in sh_double_quote. Problem - reported by William Park - -jobs.c - - in notify_of_job_status, don't print status messages about - terminated background processes unless job control is active - -bashhist.c - - new variable, hist_last_line_pushed, set to 0 in really_add_history - (used by `history -s' code) - -bashhist.h - - new extern declaration for history -s - -builtins/history.def - - don't remove last history entry in push_history if it was added by - a call to push_history -- use hist_last_line_pushed as a sentinel - and set it after adding history entry. This allows multiple - calls to history -s to work right: adding all lines to the history - rather than deleting all but the last. Bug reported by Matthias - Schniedermeyer - - pay attention to hist_last_line_pushed in expand_and_print_history() - so we don't delete an entry pushed by history -s - - 7/4 - --- -print_cmd.c - - fix print_arith_for_command to not print so many blanks between - expressions in ((...)) - -command.h - - new word flag: W_DQUOTE. Means word should be treated as if double - quoted - -make_cmd.c - - add W_DQUOTE to word flags in make_arith_for_expr - -parse.y - - add W_DQUOTE to word flags for (( ... )) arithmetic commands - -subst.c - - don't perform tilde expansion on a word with W_DQUOTE flag set - - don't perform process substitution on a word with W_DQUOTE flag set - -arrayfunc.c - - expand an array index within [...] the same way as an arithmetic - expansion between (( ... )) - -lib/readline/input.c - - use getch() instead of read() on mingw - -lib/readline/readline.c - - add a few key bindings for the arrow keys on mingw - -lib/readline/rldefs.h - - if on mingw, define NO_TTY_DRIVER - -lib/readline/rltty.c - - compile in the stub functions for _rl_{disable,restore}_tty_signals - if on mingw - - compile in stub function for rl_restart_output on mingw - - make sure enough functions and macros are defined to compile if - NO_TTY_DRIVER is defined (lightly tested - builds on MacOS X, at - least) - - 7/7 - --- -command.h - - add a `flags' member to the PATTERN_LIST structure - -make_cmd.c - - intialize the `flags' member of a PATTERN_LIST when it's created - -builtins/psize.c - - protect extern declaration of errno with usual #ifdef errno - -configure.in, variables.c - - changes for QNX 6.x - - 7/9 - --- -parse.y - - fix parse_matched_pair to handle single and double quoted strings - inside old-style command substitution (``) since they can each - quote the ` and embedded $-expansions. Report by Eric Blake - - -{configure,Makefile}.in - - TILDE_LIB is now substituted into Makefile by configure - -configure.in - - if configuring --with-installed-readline on cygwin, set TILDE_LIB - to the empty string to avoid multiply-defined symbols. Cygwin - doesn't allow undefined symbols in dynamic libraries. Report by - Eric Blake - - 7/11 - ---- -input.c - - in duplicate_buffered_stream, don't call free_buffered_stream if the - two buffered streams share the same b_buffer object (e.g., if they - had already been duplicated with a previous call). Fixes Debian bug - reported by eero17@bigfoot.com - - 7/12 - ---- -shell.c - - make set_shell_name more resistant to a NULL argument - - in bind_args, use < instead of != when counting the arguments and - making the arg list - - in main(), make sure arg_index is not initialized to a value greater - than argc - - 7/14 - ---- -lib/readline/display.c - - in expand_prompt, don't set the location of the last invisible - char if the sequence is zero length (\[\]) - - 7/15 - ---- -doc/{bash.1,bashref.texi} - - document that the shell uses $TMPDIR when creating temporary files - - 7/20 - ---- -[bash-3.1-alpha1 frozen] - - 7/29 - ---- -builtins/evalstring.c - - make sure that parse_and_execute saves and restores the value of - loop_level, so loops in sourced scripts and eval'd strings don't - mess up the shell's parser state - -bashline.c - - change command_subst_completion_function to suppress appending - any character to a unique completion, instead of a space, unless - the last word in the quoted command substitution completes to a - directory name. In that case we append the expected slash - - 8/1 - --- -builtins/printf.def - - make sure variables are initialized if their values are tested later - -[bash-3.1-alpha1 updated and re-frozen] - - 8/2 - --- -variables.c - - make sure to call stifle_history with an `int' instead of an intmax_t. - Sometimes it makes a difference - - 8/3 - --- -[bash-3.1-alpha1 released] - -support/mksignames.c - - add `SIGSTKFLT' (RHE3) - - add `SIGXRES' (Solaris 9) - - 8/4 - --- -builtins/ulimit.def - - fix typo to make `x' the right option for locks - - add new options to short help synopsis - -variables.c - - use get_variable_value instead of direct reference to value_cell - in make_variable_value when appending to the current value, so - references to array variables without subscripts will be equivalent - to element 0 - -lib/readline/text.c - - rewrote rl_change_case to correctly change the case of multibyte - characters where appropriate - - 8/5 - --- -configure.in - - remove call to obsolete macro AC_ACVERSION - - remove special calls to AC_CYGWIN and AC_MINGW32; AC_CANONICAL_HOST - takes care of those cases - -general.h - - include `chartypes.h' for definition of ISALPHA - - fix definitions of ABSPATH and RELPATH for cygwin - - fix definition of ISDIRSEP for cygwin to allow backslash as a - directory name separator - - 8/9 - --- -builtins/setattr.def - - when setting a variable from the temporary environment in - set_var_attribute (e.g., `LC_ALL=C export LC_ALL'), make sure to - call stupidly_hack_special_variables after binding the variable in - the current context - -builtins/printf.def - - make sure to call stupidly_hack_special_variables if using `printf -v' - to put formatted output in a shell variable - - 8/11 - ---- -support/shobj-conf - - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults - to `lib' - - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library - version number - - new variable: SHLIB_DOT, separator character between library name and - suffix and version information (defaults to `.') - - new stanza for cygwin to generate windows-compatible dll - - 8/14 - ---- -variables.c - - new special variable function for Cygwin, so the export environment - is remade when HOME is changed. The environment is the only way to - get information from the shell to cygwin dlls, for instanace, when - bash is compiled to use an already-installed libreadline - -variables.h - - new extern declaration for sv_home - - 8/15 - ---- -lib/readline/display.c - - call init_line_structures from rl_redisplay if vis_lbreaks == 0 - to avoid consequences of a poorly-timed SIGWINCH - - 8/16 - ---- -subst.c - - fix logic for performing tilde expansion when in posix mode (don't - rely on W_TILDEEXP flag always being set, because it won't be when - expanding the RHS of assignment statement). Use W_TILDEEXP only - when deciding to expand a word marked as W_ASSIGNMENT that doesn't - precede a command name - - 8/17 - ---- -execute_cmd.c - - in execute_function, when subshell == 1, don't short-cut by using - the command contained in the group command -- if you do, any - redirections attached to the group command (function) don't get - executed - -general.h - - new #define, FS_READABLE, indicates file is readable by current - user - -findcmd.c - - rewrote file_status to use S_xxx POSIX file mode bits and to add - support for FS_READABLE (affects ./source and searching $PATH for - scripts whose names are supplied as arguments on the command line) - - change find_path_file to look for readable files -- source requires - it - - change find_in_path_element to do the right thing when FS_READABLE - is supplied as a flag - -doc/bashref.texi - - remove note about posix non-compliance in `.': we now require and - look for readable files when searching $PATH - - 8/20 - ---- -subst.c - - fix setifs to handle case where passed variable is non-zero but - v->value == 0 (as in an unset local variable); treat IFS as unset - in this case - -jobs.c - - in kill_pid, if asked to killpg a process or pgrp whose pgrp is - recorded as the same as the shell's, just call killpg and let the - chips fall where they may -- there may be other processes in that - pgrp that are not children of the shell, so killing each process - in the pipeline will not do a complete job, and killpg'ing each - such process will send too many signals in the majority of cases - -builtins/cd.def - - in posix mode, pwd needs to check that the value it prints and `.' - are the same file - -builtins/read.def - - if reading input from stdin in a non-interactive shell and calling - `read', call sync_buffered_stream to seek backward in the input - stream if necessary (XXX - should we do this for all shell builtins?) - - 8/23 - ---- -builtins/cd.def - - in posix mode, if canonicalization of the absolute pathname fails - because the path length exceeds PATH_MAX, but the length of the passed - (non-absolute) pathname does not, attempt the chdir, just as when - not in posix mode - -builtins/type.def - - don't have describe_command call sh_makepath if the full path found - is already an absolute pathname (sh_makepath will stick $PWD onto the - front of it) - - 8/24 - ---- - -jobs.c - - in posix mode, don't have start_job print out and indication of - whether the job started by `bg' is the current or previous job - - change start_job to return success if a job to be resumed in the - background is already running. This means that bg won't fail when - asked to bg a background job, as SUSv3/XPG6 requires - - new function, init_job_stats, to zero out the global jobstats struct - -{jobs,nojobs}.c - - change kill_pid to handle pids < -1 by killing process groups - -jobs.h - - extern declaration for init_job_stats - -lib/readline/history.c - - check whether or not the history list is null in remove_history - -builtins/history.def - - delete_last_history is no longer static so fc builtin can use it - -builtins/fc.def - - use free_history_entry in fc_replhist instead of freeing struct - members individually - - call delete_last_history from fc_replhist instead of using inline - code - - if editing (-l not specified), make sure the fc command that caused - the editing is removed from the history list, as POSIX specifies - -builtins/kill.def - - just call kill_pid with any pid argument and let it handle pids < -1 - This is the only way to let kill_pid know whether a negative pid or - a job spec was supplied as an argument to kill - -builtins/fg_bg.def - - force fg_bg to return EXECUTION_SUCCESS explicitly if called by bg - and start_job returns successfully - - bg now returns success only if all the specified jobs were resumed - successfully - -execute_cmd.c - - call init_job_stats from initialize_subshell to zero out the global - job stats structure - - 8/25 - ---- -bashline.c - - change vi_edit_and_execute_command to just call vi when in posix - mode, instead of checking $FCEDIT and $EDITOR - -lib/readline/search.c - - if in vi_mode, call rl_free_undo_list in make_history_line_current - to dispose of undo list accumulated while reading the search string - (if this isn't done, since vi mode leaves the current history - position at the entry which matched the search, the call to - rl_revert_line in rl_internal_teardown will mangle the matched - history entry using a bogus rl_undo_list) - - call rl_free_undo_list after reading a non-incremental search string - into rl_line_buffer -- that undo list should be discarded - -lib/readline/rlprivate.h - - add UNDO_LIST * member to search context struct - -lib/readline/isearch.c - - initialize UNDO_LIST *save_undo_list member of search context struct - - 8/27 - ---- -lib/readline/bind.c - - change rl_parse_and_bind to strip whitespace from the end of a - variable value assignment before calling rl_variable_bind - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - clarified the language concerning parsing values for boolean - variables in assignment statements - - 8/28 - ---- -lib/sh/pathphys.c - - fix small memory leak in sh_realpath reported by Eric Blake - - 8/31 - ---- -doc/bashref.texi - - add additional notes to posix mode section - - 9/3 - --- -parse.y - - if $'...' occurs within a ${...} parameter expansion within - double quotes, don't single-quote the expanded result -- the double - quotes will cause it to be expanded incorrectly - - 9/4 - --- -builtins/fc.def - - if STRICT_POSIX is defined, the posix mode default for the editor to - use is $FCEDIT, then ed - -shell.c - - if STRICT_POSIX is defined, initialize `posixly_correct' to 1 - -config.h.in - - add #undef STRICT_POSIX - - 9/5 - --- -configure.in - - add new option argument, --enable-strict-posix-default, configures - bash to be posix-conformant (including defaulting echo to posix - conformance) by default - -builtins/echo.def - - if STRICT_POSIX is defined, default echo to xpg-style - -doc/bashref.texi - - describe the --enable-strict-posix-default option to configure - - 9/10 - ---- -builtins/mkbuiltins.c - - change to not generate N_(""), because the translated empty string is - special to GNU gettext - - 9/13 - ---- -lib/readline/complete.c - - a negative value for rl_completion_query_items means to not ask - -lib/readline/doc/{{rltech,rluser}.texi,readline.3} - - documented new semantics for rl_completion_query_items/ - completion-query-items - - 9/14 - ---- -bashline.c - - bind M-TAB in emacs mode to dynamic-complete-history even if the - current binding is `tab-insert' (which is what it is by default), - not just if it's unbound - - 9/15 - ---- -eval.c - - call QUIT before calling dispose_command on current_command after - the `exec_done' label. If we dispose current_command first, the - longjmp might restore the value of current_command after we've - disposed it, and the subsequent call to dispose_command from the - DISCARD case will free memory twice - - 9/16 - ---- -lib/sh/strto[iu]max.c - - make sure the function being declared is not a cpp define before - defining it -- should fix problems on HP-UX - - 9/19 - ---- -Makefile.in - - make sure the binaries for the tests are at the front of $PATH - - 9/22 - ---- -parse.y - - new flag for parse_matched_pair: P_COMMAND, indicating that the - text being parsed is a command (`...`, $(...)) - - change calls to parse_matched_pair to include P_COMMAND where - appropriate - - if P_COMMAND flag is set and the text is unquoted, check for comments - and don't try to parse embedded quoted strings if in a comment (still - not exactly right yet) - - 9/24 - ---- -builtins/history.def - - if running history -n, don't count these new lines as history lines - for the current session if the `histappend' shell option is set. - If we're just appending to the history file, the issue that caused - history_lines_this_session to be recalculated doesn't apply -- the - history file won't be missing any entries - -lib/readline/isearch.c - - fix C-w handler for isearch string reader to handle multibyte chars - -lib/readline/rlmbutil.h - - new defines for _rl_to_wupper and _rl_to_wlower - -lib/readline/text.c - - use _rl_to_wupper and _rl_to_wlower as appropriate - - 9/26 - ---- -execute_cmd.c - - in shell_execve, if the exec fails due to E2BIG or ENOMEM, just print - the appropriate error message instead of checking out any interpreter - specified with #! - - 9/30 - ---- -bashhist.c - - make $HISTCMD available anytime remember_on_history is non-zero, - which indicates that we're saving commands to the history, and - let it evaluate to 1 if we're not - - 10/4 - ---- -lib/sh/snprintf.c - - in floating(), make sure d != 0 before calling chkinfnan -- gcc on the - version of Solaris 9 I have translates 0 to -inf on the call - -[bash-3.1-beta1 frozen] - - 10/6 - ---- -jobs.c - - set the_pipeline to NULL right away in cleanup_the_pipeline, and - dispose a copy of the pointer so we don't mess with the_pipeline - while we're in the process of destroying it - - block and unblock SIGCHLD around manipulating the_pipeline in - cleanup_the_pipeline - - 10/7 - ---- -[bash-3.1-beta1 released] - -lib/readline/isearch.c - - when switching directions, make sure we turn off the SF_REVERSE - flag in the search context's flags word if we're going from reverse - to forward i-search - -lib/readline/bind.c - - new function, rl_variable_value, returns a string representing a - bindable readline variable's value - - new auxiliary function, _rl_get_string_variable_value, encapsulates - everything needed to get a bindable string variable's value - - rewrote rl_variable_dumper to use _rl_get_string_variable_value - -lib/readline/readline.h - - new extern declaration for rl_variable_value - -lib/readline/doc/rltech.texi - - documented rl_variable_value - -bashline.c - - in command_word_completion_function, if readline sets - rl_completion_found_quote, but doesn't set rl_completion_quote_character, - we have an embedded quoted string or backslash-escaped character in - the passed text. We need to dequote that before calling - filename_completion_function. So far, this is in place only for - absolute program names (those containing a `/') - - in command_word_completion_function, use rl_variable_value to decide - whether or not we should ignore case, and use strncasecmp instead of - strncmp where appropriate - - 10/11 - ----- -builtins/fc.def - - fixed a typo when using POSIX_FC_EDIT_COMMAND - -redir.h - - new flag values for redirections: RX_INTERNAL and RX_USER (currently - unused) - -redir.c - - add_undo_redirect and add_undo_close_redirect now set RX_INTERNAL - flag when making new redirects - - in do_redirection_internal, only set file descriptors > 2 to CLEXEC - if they're marked as RX_INTERNAL - - 10/12 - ----- -jobs.c - - in wait_for_single_pid, if in posix mode, remove the waited-for pid - from the list of background pids, forgetting it entirely. POSIX - conformance tests test for this. - -lib/readline/{readline.h,vi_mode.c} - - new state flag, RL_STATE_VICMDONCE, set after entering vi command - mode the first time; reset on each call to readline() - - 10/13 - ----- -lib/readline/undo.c - - in rl_revert_line, make sure that revert-line in vi mode leaves - rl_point set to 0 no matter the state of the line buffer - -lib/readline/vi_mode.c - - when entering vi_command mode for the first time, free any existing - undo list so the previous insertions won't be undone by the `U' - command. This is how POSIX.2 says `U' should work (and the test - suite tests for it) - -lib/readline/bind.c - - change rl_parse_and_bind so only `set' commands involving boolean - readline variables have trailing whitespace stripped from the value - string - - 10/16 - ----- -lib/glob/sm_loop.c - - fix patscan() to correctly scan backslash-escaped characters - - 10/18 - ----- -lib/sh/{winsize.c,Makefile.in},{jobs,nojobs}.c,Makefile.in,externs.h - - moved get_new_window_size from jobs.c/nojobs.c to new file, - lib/sh/winsize.c, made function global - -{jobs,nojobs,sig}.c,{jobs,sig}.h - - moved SIGWINCH handling code to sig.c rather than duplicate it in - jobs.c and nojobs.c - - call set_sigwinch_handler from sig.c code rather than job control - signal initialization - -sig.[ch] - - new variable, sigwinch_received, acts like interrupt_state for - SIGWINCH, set by sigwinch_sighandler. sigwinch_sighandler no longer - calls get_new_window_size - -parse.y - - add call to get_new_window_size if sigwinch_received at top of - shell_getc - - 10/19 - ----- -lib/malloc/malloc.c - - to avoid orphaning memory on free if the right bucket is busy, use a - new function xplit(mem, bucket) to split the block into two or more - smaller ones and add those to the right bucket (appropriately marking - it as busy) - - audit bsplit(), bcoalesce(), and xsplit() for proper use of busy[], - since they're dealing with two separate buckets - - 10/22 - ----- -subst.c - - new flag for string_extract: EX_REQMATCH, means to return an error - if a matching/closing character is not found before EOS - - new static flag variables: extract_string_error and extract_string_fatal - - change expand_word_internal to check for new error returns from - string_extract and return errors if appropriate - - 10/23 - ----- -builtins/cd.def - - make sure we free TDIR in change_to_directory after calling - set_working_directory (which allocates new memory) and other places - we short-circuit and return - - 10/24 - ----- -subst.c - - modified fix from 10/22 to allow bare ` to pass through (for - some backwards compatibility and more correctness) - - 10/27 - ----- -conftypes.h - - make MacOS X use the RHAPSODY code that gets HOSTTYPE, et al. - at build rather than configure time, to support universal binaries - (fix from llattanzi@apple.com) - - 10/30 - ----- -builtins/evalstring.c - - make sure we don't turn on CMD_NO_FORK in parse_and_execute if - we're running a trap command on signal receipt or exit - -execute_cmd.c - - in shell_execve, improve the error message a little bit if the - interpreter name in a #! exec header ends with a ^M (as in a DOS- - format file) - - 11/1 - ---- -lib/readline/vi_mode.c - - fix vi-mode `r' command to leave the cursor in the right place - -[bash-3.1-rc1 frozen] - - 11/5 - ---- -execute_cmd.c - - make sure a DEBUG trap doesn't overwrite a command string passed to - make_child in execute_simple_command - -bashline.c - - rearrange some code in bash_quote_filename so filenames with leading - tildes containing spaces aren't tilde-expanded before being - returned to the caller - - 11/6 - ---- -lib/readline/display.c - - when deciding where to move the cursor in rl_redisplay and needing - to move the cursor back after moving it vertically and compensate - for invisible characters in the prompt string, make sure that - _rl_last_c_pos is treated as an absolute cursor position in a - multibyte locale and the wrap offset (number of invisible characters) - is added explicitly when deciding how many characters to backspace - - 11/10 - ----- -lib/readline/terminal.c - - _rl_set_screen_size now interprets a lines or columns argument < 0 - as an indication not to change the current value - - 11/11 - ----- - -lib/readline/terminal.c - - new function, rl_reset_screen_size, calls _rl_get_screen_size to - reset readline's idea of the terminal size - - don't call _rl_get_screen_size in _rl_init_terminal_io if both - _rl_screenheight and _rl_screenwidth are > 0 - - don't initialize _rl_screenheight and _rl_screenwidth to 0 in - _rl_init_terminal_io; let caller take care of it - - set _rl_screenheight and _rl_screenwidth to 0 before calling - _rl_init_terminal_io - -lib/readline/readline.h - - new extern declaration for rl_reset_screen_size - -lib/readline/doc/rltech.texi - - documented rl_reset_screen_size - -variables.c - - if readline is being used, compile in a special var function for - assignments to LINES and COLUMNS that calls rl_set_screen_size or - rl_reset_screen_size as appropriate. Only do this in posix mode - and only when STRICT_POSIX is defined at compile time - - new semaphore variable, winsize_assignment, set while doing an - assignment to LINES or COLUMNS - - new variable, winsize_assigned, says LINES or COLUMNS was assigned - to or found in the environment - - if in the middle of an assignment to LINES or COLUMNS, make - sh_set_lines_and_columns a no-op - -lib/sh/winsize.c - - get_new_window_size now takes two int * arguments, to return the - screen dimensions - -externs.h - - change extern declaration for get_new_window_size - -{jobs,nojobs}.c, parse.y - - change callers of get_new_window_size - - 11/12 - ----- -lib/readline/terminal.c - - new variable, rl_prefer_env_winsize, gives LINES and COLUMNS - precedence over values from the kernel when computing window size - -lib/readline/readline.h - - extern declaration for rl_prefer_env_winsize - -lib/readline/doc/rltech.texi - - document rl_prefer_env_winsize - - 11/13 - ----- -lib/readline/rltty.c - - change rl_prep_terminal to make sure we set and reset the tty - special characters in the vi insertion keymap if in vi mode. This - matters if we get accept-line for the previous line while in vi - command mode - - 11/14 - ----- -builtins/pushd.def - - make sure any call to cd_builtin includes a leading `--' from the - argument list (or constructs one) - - 11/16 - ----- -pcomplete.c - - fix small memory leak in gen_wordlist_matches - -[bash-3.1-rc2 frozen] - - 11/21 - ----- -[bash-3.1-rc2 released] - - 11/23 - ----- -lib/readline/display.c - - changes to rl_redisplay to compensate for update_line updating - _rl_last_c_pos without taking invisible characters in the line into - account. Important in multibyte locales where _rl_last_c_pos is an - absolute cursor position - - changes to _rl_move_cursor_relative to account for _rl_last_c_pos - being an absolute cursor position in a multibyte character locale - - rewrote _rl_move_cursor_relative to make it a little simpler - - 11/29 - ----- -lib/readline/display.c - - changes to rl_redisplay and update_line for update_line to communicate - upward that it took the number of invisible characters on the current - line into account when modifying _rl_last_c_pos - - in update_line, adjust _rl_last_c_pos by wrap_offset before calling - _rl_move_cursor_relative, so we pass correct information about the - true cursor position - - 12/1 - ---- -configure.in - - changed release status to `release' - -[bash-3.1 frozen] - - 12/8 - ---- -[bash-3.1 released] - - 12/9 - ---- -doc/{bash.1,version.texi},lib/readline/doc/version.texi - - remove `beta1' from man page footer and texinfo documents - -variables.c - - make sure winsize_assignment is protected by #ifdef READLINE, so - minimal shell will compile - -builtins/read.def - - make sure error cases free memory and run any unwind-protects to - avoid memory leaks - - 12/10 - ----- -execute_cmd.c - - change execute_command_internal to set $PIPESTATUS for ((...)) and - [[ ... ]] commands - -doc/{bash.1,bashref.texi,version.texi} - - add documentation for ulimit -[iqx] and bump revision date - - 12/12 - ----- -parse.y - - make sure parse_compound_assignment saves and restores the - PST_ASSIGNOK parser state flag around its calls to read_token. - Fixes bug reported by Mike Frysinger - - 12/13 - ----- -parse.y - - change parse_compound_assignment to save and restore the value of - last_read_token. Not sure why it was set unconditionally in the - first place after parsing the complete compound assignment - - 12/14 - ----- -lib/readline/text.c - - don't use return value of rl_kill_text (which always succeeds and - returns the number of characters killed) in rl_delete as an indication - of success or failure - - ditto for return value of rl_delete_text - -lib/readline/readline.c - - don't return the value of the called readline function as the return - value from _rl_dispatch_subseq; -1 means something different to the - callers (return 0 all the time to indicate that a readline function - was found and dispatched). Fix from Andreas Schwab for - bug in callback interface first reported by Mike Frysinger - -execute_cmd.c - - fixed a typo in execute_case_command - - 12/15 - ----- -aclocal.m4 - - add check for wctype() to BASH_CHECK_MULTIBYTE, define HAVE_WCTYPE - -config.h.in - - add HAVE_WCTYPE #define - -config-bot.h - - add HAVE_WCTYPE to the set of checks for HANDLE_MULTIBYTE. This - should catch the deficient NetBSD multibyte support - - 12/16 - ----- -parse.y - - use CTLESC instead of literal '\001' when decode_prompt_string - prefixes RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE - - 12/20 - ----- -lib/readline/display.c - - don't treat RL_PROMPT_START_IGNORE specially inside a sequence of - ignored characters - - keep track of the start of the current sequence of ignored - characters; make sure that an empty sequence of such characters - really is an empty sequence, not one that happens to end with '\001' - (RL_PROMPT_START_IGNORE) - - 12/21 - ----- -subst.c - - change expand_word_internal to process rest of `tilde-word' as a - regular part of the word if tilde expansion leaves the tilde-word - unchanged. This means that ~$USER expands to ~chet, which seems - more intuitive, and is effectively what bash-3.0 did - - 12/23 - ----- -subst.c - - when making a local array variable in do_compound_assignment, make - sure that we don't use a variable of the same name from a previous - context - -doc/bash.1 - - documented expansions for word and patterns in case statement - -builtins/ulimit.def,doc/{bashref.texi,bash.1} - - added new -e and -r (nice and rtprio) options to ulimit; documented - them - - 12/26 - ----- -variables.c - - use `hmax' instead of `num' in sv_histsize to avoid integer overflow - problems with intmax_t - -builtins/read.def - - add unwind-protect to restore rl_attempted_completion_function in - case of a timeout - -{bashline,variables}.c - - move initialization of HISTSIZE from initialization path to - load_history, so it can be overridden by a value assigned in a - startup file - -lib/readline/misc.c - - add a missing `return r' so that rl_digit_loop returns a meaningful - value - -lib/readline/{bind,callback,display,isearch,rltty,search,text,vi_mode}.c - - minor cleanups to satisfy compiler warnings, mostly removing unused - variables - - 12/27 - ----- -support/Makefile.in - - add LIBS_FOR_BUILD support; defaults to ${LIBS} - -Makefile.in - - add LIBS_FOR_BUILD with no default value; use when linking programs - using CC_FOR_BUILD (e.g., bashversion) - - 12/28 - ----- -lib/readline/bind.c - - fix rl_translate_keyseq bad translation of \M-\C-x sequences - -execute_cmd.c - - in execute_arith_command, if the expression expands to more than one - word, make sure we join the words into a single string and pass the - entire thing to evalexp() - -expr.c - - new functions: _is_arithop(c), returns true if C is a valid single- - character arithmetic operator; _is_multiop(c), returns true if C is - a token corresponding to a valid multi-character arithmetic operator - - if we encounter a character that isn't a valid arithmetic - operator, throw an error. Try to be intelligent about what type of - error message to print - -subst.c - - new function, expand_arith_string, calls expand_string_if_necessary; - used where an arithmetic expression needs to be expanded - -subst.h - - new extern declaration for expand_arith_string - -arrayfunc.c - - in array_expand_index, call expand_arith_string to expand the - subscript in a fashion consistent with other arithmetic expressions - -subst.c - - fix parameter_brace_patsub so that we don't try to anchor the pattern - at the beginning or end of the string if we're doing global - replacement -- that combination doesn't doesn't make sense, and - the changed behavior is compatible with ksh93 - -doc/{bash.1,bashref.texi} - - changed description of pattern substitution to match the new - semantics - -tests/new-exp.tests - - change tests to remove all ${pat//#rep} and ${pat//%rep} - expansions, since they don't mean the same thing anymore - - 12/29 - ----- -support/signames.c - - new file, initialize_signames() function from old mksignames.c. This - file builds the signal_names array - -support/mksignames.c - - strip out initialize_signames(), move to signames.c. This file only - writes signames.h - - set up to only write a stub signames.h if CROSS_COMPILING is defined, - with extern declaration for initialize_signames - - if not cross compiling, #define initialize_signames to nothing - -Makefile.in - - mksignames is now linked from mksignames.o and buildsignames.o - - add rules to build signames.o, assuming we're building it as part - of the shell (cross-compiling) - -trap.c - - call initialize_signames from initialize_traps - -configure.in - - set SIGNAMES_O to nothing (normal) or signames.o (cross-compiling), - substitute into Makefile - - don't set SIGNAMES_H if cross-compiling any more - - 12/30 - ----- -command.h - - new word flag: W_NOPROCSUB, inhibits process substitution on a word - -subst.c - - change expand_word_internal to suppress process substitution if the - word has the W_NOPROCSUB flag - -shell.c - - --wordexp turns on W_NOPROCSUB in addition to W_NOCOMSUB - -subst.c - - change string_list_dollar_at and string_list_dollar_star so that - MB_CUR_MAX is used to size an array only when using gcc, since gcc - can handle non-constant array sizes using a mechanism like alloca. - Other compilers, e.g. Sun's compiler, do not implement that - extension - - 12/31 - ----- -builtins/mkbuiltins.c - - when cross-compiling, don't include , since it's for the - target rather than the host system. Instead, choose a reasonable - set of default #defines based on a minimal POSIX system - -jobs.c - - change find_process to handle a NULL return value from find_pipeline - - return immediately from delete_job if jobs[index] is already NULL or - if it has a null pipeline associated with it - - in delete_job, if find_last_proc returns NULL, don't try to call - bgp_delete - - 1/7/2006 - -------- -doc/bash.1 - - patch from Tim Waugh to replace some literal single quotes with - \(aq, the groff special character for it - -jobs.c - - in realloc_jobs_list, make sure to zero out slots after j_lastj - in the new list - - 1/9 - --- -support/mksignames.c - - make sure to include to get right value of NSIG from - (usually) - - 1/10 - ---- -parse.y - - when calling parse_matched_pair on a $(...) command substitution, - don't pass the P_DQUOTE flag so that single quotes don't get - stripped from $'...' inside the command substitution. Bug report - and fix from Mike Stroyan - -jobs.c - - start maintaining true count of living children in js.c_living - - call reset_current in realloc_jobs_list, since old values for current - and previous job are most likely incorrect - - don't allocate a new list in realloc_jobs_list if the old size and - new size are the same; just compact the existing list - - make sure realloc_jobs_list updates value of js.j_njobs - - add some more itrace messages about non-null jobs after j_lastj in - jobs array - - 1/11 - ---- -bashjmp.h - - new value for second argument to longjmp: SIGEXIT. Reserved for - future use - - 1/12 - ---- -jobs.c - - add logic to make_child to figure out when pids wrap around - - turn second argument to delete_job into flags word, added flag to - prevent adding proc to bgpids list - - 1/13 - ---- -lib/readline/vi_mode.c - - move code that moves forward a character out of rl_vi_append_mode - into a separate function, _rl_vi_append_forward - - change _rl_vi_append_mode to save `a' as the last command, so it - can be redone properly - - new function _rl_vi_backup, moves point back a character taking - multibyte locales into account - - change rl_vi_redo to handle redoing an `a' command specially -- - it should be redone like `i' but after moving forward a character - - change rl_vi_redo to use _rl_vi_backup to move point backward - after redoing `i' or `a' - -jobs.c - - new function, delete_old_job (pid), checks whether or not PID is in - a job in the jobs list. If so, and the job is dead, it just removes - the job from the list. If so, and the job is not dead, it zeros - the pid in the appropriate PROCESS so pid aliasing doesn't occur - - make_child calls delete_old_job to potentially remove an already-used - instance of the pid just forked from the jobs list if pids have - wrapped around. Finally fixes the bug reported by Tim Waugh - - -trap.c - - new define, GETORIGSIG(sig), gets the original handling for SIG and - sets SIG_HARD_IGNORE if that handler is SIG_IGN - - call GETORIGSIG from initialize_traps, get_original_signal, and - set_signal - -jobs.c - - in wait_for, if the original SIGINT handler is SIG_IGN, don't set - the handler to wait_sigint_handler. This keeps scripts started in - the background (and ignoring SIGINT) from dying due to SIGINT while - they're waiting for a child to exit. Bug reported by Ingemar - Nilsson - -lib/readline/vi_mode.c - - don't save text to buffer unless undo pointer points to a record of - type UNDO_INSERT; zero it out instead. This fixes bug reported by - Craig Turner with redoing `ctd[ESC]' (empty - insert after change to) - -shell.c - - change set_shell_name so invocations like "-/bin/bash" are marked as - login shells - -doc/bash.1 - - add note about destroying functions with `unset -f' to the section - on shell functions - -lib/readline/terminal.c - - if readline hasn't been initialized (_rl_term_autowrap == -1, the - value it's now initialized with), call _rl_init_terminal_io from - _rl_set_screen_size before deciding whether or not to decrement - _rl_screenwidth. Fixes bug from Mike Frysinger - - 1/14 - ---- -lib/readline/input.c - - allow rl_set_keyboard_input_timeout to set the timeout to 0, for - applications that want to use select() like a poll without any - waiting - -lib/readline/doc/rltech.texi - - documented valid values for timeout in rl_set_keyboard_input_timeout - -jobs.c - - in stop_pipeline, don't have the parent shell call give_terminal_to - if subshell_environment contains SUBSHELL_ASYNC (no background - process should ever give the terminal to anything other than - shell_pgrp) - - in make_child, don't give the terminal away if subshell_environment - contains SUBSHELL_ASYNC - - 1/15 - ---- -subst.c - - in parameter_brace_expand, if extracting ${#varname}, only allow - `}' to end the expansion, since none of the other expansions are - valid. Fixes Debian bug reported by Jan Nordhorlz - - 1/17 - ---- -parse.y - - in parse_matched_pair, protect all character tests with the MBTEST - macro - - in parse_dparen, take out extra make_word after call to alloc_word_desc - (mem leak) - - 1/18 - ---- -parse.y - - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive - parse_matched_pair call when encountering a single or double quote - inside a ``-style command substitution - -execute_cmd.c - - add call to QUIT at beginning of execute_command_internal; better - responsiveness to SIGINT - - 1/21 - ---- -lib/readline/bind.c - - change rl_invoking_keyseqs_in_map to honor the setting of - convert-meta when listing key bindings, since if convert-meta is off, - using '\M-' as the prefix for bindings in, for instance, - emacs-escape-keymap, is wrong. This affects `bind -p' output - - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for - ESC - -execute_cmd.c - - add call to QUIT at end of execute_command - - 1/23 - ---- -lib/readline/display.c - - changed two places in update_line where a check of whether the cursor - is before the last invisible character in the prompt string to - differentiate between the multibyte character case (where - _rl_last_c_pos is a physical cursor position) and the single-byte - case (where it is a buffer index). This prevents many unnecessary - \r-redraw the line sequences. Reported by Dan Jacobson. - - 1/24 - ---- -quit.h - - wrap QUIT macro in do...while(0) like other compound statement - macros - - CHECK_TERMSIG define (placeholder for now); future use will be to - handle any received signals that should cause the shell to - terminate (e.g., SIGHUP) - -{input,jobs,nojobs}.c - - add calls to CHECK_TERMSIG where appropriate (reading input and - waiting for children) - - include quit.h if necessary - - 1/25 - ---- -parse.y - - undo change that makes `)' in a compound assignment delimit a token. - It messes up arithmetic expressions in assignments to `let', among - other things - -sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def - - rename termination_unwind_protect to termsig_sighandler - -sig.c - - split termsig_sighandler into two functions: termsig_sighandler, which - runs as a signal handler and sets a flag noting that a terminating - signal was received, and termsig_handler, which runs when it is `safe' - to handle the signal and exit - - new terminate_immediately variable, similar to interrupt_immediately - - termsig_sighandler calls termsig_handler immediately if - terminate_immediately is non-zero - -quit.h - - change CHECK_TERMSIG macro to check terminating_signal and call - termsig_handler if it's non-zero - - add same check of terminating_signal and call to termsig_handler to - QUIT macro - -{jobs,nojobs}.c - - change call to termsig_sighandler to call termsig_handler directly, - as was intended - -parse.y,builtins/read.def - - set terminate_immediately to non-zero value when reading interactive - input, as is done with interrupt_immediately - - 1/26 - ---- -doc/{bash.1,bashref.texi} - - reworded the POSIX standard references to remove mention of POSIX.2 - or 1003.2 -- it's all the 1003.1 standard now. Recommended by - Arnold Robbins - - 1/27 - ---- -lib/readline/complete.c - - move call to filename dequoting function into - rl_filename_completion_function; call only if directory completion - hook isn't set. This means that directory-completion-hook now needs - to dequote the directory name. We don't want to dequote the directory - name before calling the directory-completion-hook. Bug reported by - Andrew Parker - -bashline.c - - add necessary directory name dequoting to bash_directory_expansion - and bash_directory_completion_hook - -lib/readline/doc/rltech.texi - - add note to description of rl_directory_completion_hook that it - needs to dequote the directory name even if no other expansions are - performed - - 1/28 - ---- -braces.c - - make sure that we skip over braces that don't start a valid matched - brace expansion construct in brace_expand -- there might be a valid - brace expansion after the unmatched `{' later in the string - - brace_gobbler now checks that when looking for a `}' to end a brace - expansion word, there is an unquoted `,' or `..' that's not inside - another pair of braces. Fixes the a{b{c,d}e}f problem reported by - Tim Waugh - -builtins/declare.def - - when not in posix mode, and operating on shell functions, typeset - and declare do not require their variable operands to be valid - shell identifiers. The other `attribute' builtins work this way. - Fixes inconsistency reported by Mike Frysinger - -{configure,config.h}.in - - add test for setregid, define HAVE_SETREGID and HAVE_DECL_SETREGID - as appropriate - - add test for eaccess, define HAVE_EACCESS if found - -lib/sh/eaccess.c - - new file, with sh_stat and sh_eaccess functions, moved from test.c - - renamed old sh_eaccess as sh_stataccess, since it uses the stat(2) - information to determine file accessibility - - new function, sh_euidaccess, to call when uid != euid or gid != egid; - temporarily swaps uid/euid and gid/egid around call to access - - rewrote sh_eaccess to call eaccess, access, sh_euidaccess or - sh_stataccess as appropriate. access(2) will take into account - things like ACLs, read-only file systems, file flags, and so on. - -lib/sh/Makefile.in,Makefile.in - - add necessary entries for eaccess.[co] - -test.c - - change calls to test_stat to call sh_stat - -{test,general}.c - - change calls to test_eaccess to call sh_eaccess - -externs.h - - new extern declaration for sh_eaccess - -test.[ch] - - remove test_stat and test_eaccess - - 1/29 - ---- -braces.c - - make change from 1/28 dependant on CSH_BRACE_COMPAT not being - defined (since old bash behavior is what csh does, defining - CSH_BRACE_COMPAT will produce old bash behavior) - - 1/30 - ---- -bashline.c - - last argument of bash_default_completion is now a flags word: - DEFCOMP_CMDPOS (in command position) is only current value - - attempt_shell_completion now computes flags before calling - bash_default_completion - - if no_empty_command_completion is set, bash does not attempt command - word completion even if not at the beginning of the line, as long - as the word to be completed is empty and start == end (catches - beginning of line and all whitespace preceding point) - - 2/4 - --- -lib/readline/display.c - - change _rl_make_prompt_for_search to use rl_prompt and append the - search character to it, so the call to expand_prompt in rl_message - will process the non-printing characters correctly. Bug reported - by Mike Stroyan - - 2/5 - --- -lib/readline/display.c - - fix off-by-one error when comparing against PROMPT_ENDING_INDEX, - which caused a prompt with invisible characters to be redrawn one - extra time in a multibyte locale. Change from <= to < fixes - multibyte locale, but I added 1 to single-byte definition of - PROMPT_ENDING_INDEX (worth checking) to compensate. Bug reported - by Egmont Koblinger - - 2/8 - --- -lib/readline/terminal.c - - call _emx_get_screensize with wr, wc like ioctl code for consistency - - new function, _win_get_screensize, gets screen dimensions using - standard Windows API for mingw32 (code from Denis Pilat) - - call _win_get_screensize from _rl_get_screen_size on mingw32 - -lib/readline/rlconf.h - - define SYS_INPUTRC (/etc/inputrc) as system-wide default inputrc - filename - -support/shobj-conf - - changes to make loadable builtins work on MacOS X 10.[34] - -builtins/pushd.def - - changes to make it work as a loadable builtin compiled with gcc4 - - 2/9 - --- -lib/readline/bind.c - - add SYS_INPUTRC as last-ditch default (if DEFAULT_INPUTRC does not - exist or can't be read) in rl_read_init_file - -lib/readline/doc/rluser.texi - - add description of /etc/inputrc as ultimate default startup file - - 2/10 - ---- -lib/readline/bind.c - - fix problem with rl_function_of_keyseq that returns a non-keymap - bound to a portion of the passed key sequence without processing - the entire thing. We can bind maps with existing non-map - functions using the ANYOTHERKEY binding code. - -variables.c - - shells running in posix mode do not set $HOME, as POSIX apparently - requires - - 2/15 - ---- -braces.c - - mkseq() now takes the increment as an argument; changed callers - - 2/16 - ---- -builtins/hash.def - - print `hash table empty' message to stdout instead of stderr - - 2/17 - ---- -lib/readline/readline.c - - when resetting rl_prompt in rl_set_prompt, make sure rl_display_prompt - is set when the function returns - - 2/18 - ---- -lib/readline/display.c - - further fixes to _rl_make_prompt_for_search from Eric Blake to deal - with multiple calls to expand_prompt - - 2/21 - ---- -builtins/hash.def - - don't print `hash table empty' message in posix mode - - 2/27 - ---- -lib/glob/sm_loop.c - - change extmatch() to turn off FNM_PERIOD in flags passed to recursive - calls to gmatch() when calling it with a substring after the start - of the string it receives. Changed `+', `*', `?, `@', and `!' cases - to do the right thing. Fixes bug reported by Benoit Vila - - -braces.c - - add QUIT; statements to mkseq to make large sequence generation - interruptible - - 2/28 - ---- -lib/glob/glob.c - - initialize nalloca in glob_vector - - 3/1 - --- -lib/glob/glob.c - - in glob_vector, when freeing up the linked list after some error, - make sure to set `tmplink' to 0 if `firstlink' is set to 0, else we - get multiple-free errors - - 3/5 - --- -trap.c - - inheritance of the DEBUG, RETURN, and ERR traps is now dependent - only on the `functrace' and `errtrace' shell options, as the - documentation says, rather than on whether or not the shell is in - debugging mode. Reported by Philip Susi - -parse.y - - in parse_matched_pair, don't recursively parse ${...} or other - ${...} constructs inside `` - - in parse_matched_pair, remove special code that recursively parses - quoted strings inside `` constructs. For Bourne shell compatibility - - 3/6 - --- -builtins/pushd.def - - let get_directory_stack take take an `int flags' argument and convert - $HOME to ~ if flags&1 is non-zero - -builtins/common.h - - change extern declaration for get_directory_stack - -variables.c - - call get_directory_stack with an arg of 0 to inhibit converting - $HOME to ~ in the result. Fixes cd ${DIRSTACK[1]} problem - reported by Len Lattanzi (cd fails because - the tildes won't be expanded after variable expansion) - -jobs.c - - changed hangup_all_jobs slightly so stopped jobs marked J_NOHUP - won't get a SIGCONT - -general.c - - changed check_binary_file() to check for a NUL byte instead of a - non-printable character. Might at some point want to check - entire (possibly multibyte) characters instead of just bytes. Hint - from ksh via David Korn - - 3/7 - --- -builtins/reserved.def - - changed runs of spaces to tabs in variables help text to make - indentation better when displayed - -builtins/mkbuiltins.c - - changes to avoid the annoying extra space that keeps gettext from - being passed an empty string - - 3/9 - --- -lib/glob/glob.c - - make sure globbing is interrupted if the shell receives a terminating - signal - - 3/14 - ---- -lib/readline/search.c - - call rl_message with format argument of "%" in _rl_nsearch_init - to avoid `%' characters in the prompt string from being interpreted - as format specifiers to vsnprintf/vsprintf - - 3/19 - ---- -parse.y, eval.c, input.h - - change execute_prompt_command to execute_variable_command; takes the - variable name as a new second argument - - 3/25 - ---- -bashline.c - - command_word_completion_function keeps track of when it's searching - $PATH and doesn't return directory names as matches in that case. - Problem reported by Pascal Terjan - - command_word_completion_function returns what it's passed as a - possible match if it's the name of a directory in the current - directory (only non-absolute pathnames are so tested). - - 3/27 - ---- -subst.c - - expand_arith_string takes a new argument: quoted. Either 0 (outside - subst.c) or Q_DOUBLE_QUOTES (substitution functions); changed callers - -subst.h - - changed extern declaration for expand_arith_string - -arrayfunc.c - - changed call to expand_arith_string in array_expand_index - - 3/31 - ---- -lib/readline/histfile.c - - change read_history_range to allow windows-like \r\n line endings - -execute_cmd.c - - add new variable, line_number_for_err_trap, currently set but not - used - - 4/2 - --- -lib/sh/strtrans.c - - add code to echo -e and echo with xpg_echo enabled to require - a leading 0 to specify octal constants - - 4/3 - --- -subst.c - - slight change to wcsdup() replacement: use memcpy instead of wcscpy - -parse.y - - before turning on W_COMPASSIGN, make sure the final character in the - token is a `(' (avoids problems with things like a=(4*3)/2) - - 4/4 - --- -lib/sh/snprintf.c - - in number() and lnumber(), turn off PF_ZEROPAD if explicit precision - supplied in format - - change number() and lnumber() to correctly implement zero-padding - specified by a non-zero `.precision' part of the format - -subst.c - - new flag for extract_delimited_string: EX_COMMAND. For $(...), so - we can do things like skip over delimiters in comments. Added to - appropriate callers - - changes to extract_delimited_string to skip over shell comments when - extracting a command for $(...) (EX_COMMAND is contained in the - flags argument) - - 4/5 - --- -subst.c - - first argument to skip_single_quoted is now a const char * - - new function, chk_arithsub, checks for valid arithmetic expressions - by balancing parentheses. Fix based on a patch from Len Lattanzi - - 4/6 - --- -{configure,config.h}.in - - add separate test for isnan in libc, instead of piggybacking on - isinf-in-libc test - -lib/sh/snprintf.c - - separate the isnan replacement function so it's guarded by its own - HAVE_ISNAN_IN_LIBC define - -lib/sh/wcsdup.c - - new file, contains replacement wcsdup library function from subst.c - with change back to using wcscpy - -Makefile.in,lib/sh/Makefile.in - - make sure wcsdup.c is compiled and linked in - -subst.c - - wcsdup now found in libsh; removed static definition - - 4/10 - ---- -lib/readline/callback.c - - loop over body of rl_callback_read_char as long as there is additional - input rather than just calling readline_internal_char, which does - not handle multi-character key sequences or escape-prefixed chars - -lib/readline/macro.c - - make sure we turn off RL_STATE_MACROINPUT when the macro stack is - empty if we are reading additional input with RL_STATE_MOREINPUT - -support/shobj-conf - - Mac OS X no longer likes the `-bundle' option to gcc when creating a - dynamic shared library - - 4/11 - ---- -lib/tilde/tilde.c - - don't try to dereference user_entry if HAVE_GETPWENT isn't defined - -lib/readline/input.c - - make sure chars_avail is not used without being assigned a value in - rl_gather_tyi - - use _kbhit() to check for available input on Windows consoles, in - rl_gather_tyi and _rl_input_available - - 4/21 - ---- -lib/readline/display.c - - calculate (in expand_prompt) and keep track of length of local_prompt - in local_prompt_len; use where appropriate - - when using o_pos to check whether or not we need to adjust - _rl_last_c_pos after calling update_line, assume that it's correct - (a buffer index in non-multibyte locales and a cursor position in - multibyte locales) and adjust with wrap_offset as appropriate - - in update_line, set cpos_adjusted to 1 after calling - _rl_move_cursor_relative to move to the end of the displayed prompt - string - - in _rl_move_cursor_relative, check that the multibyte display - position is after the last invisible character in the prompt string - before offsetting it by the number of invisible characters in the - prompt (woff) - - 4/26 - ---- -lib/readline/doc/{rluser.texi,readline.3} - - make sure to note that key bindings don't allow any whitespace - between the key name or sequence to be bound and the colon - - 4/28 - ---- -lib/readline/display.c - - in update_line, make sure we compare _rl_last_c_pos as strictly less - than PROMPT_ENDING_INDEX, since it's 0-based, to avoid multiple - prompt redraws - - 5/4 - --- -parse.y - - in decode_prompt_string, only prefix the expansion of \[ or \] - with CTLESC if the corresponding readline escape character is - CTLESC (coincidentally the same as \[) or CTLNUL. Bug report sent - by Mike Frysinger prompted the discovery - -aclocal.m4 - - slight change to test for /dev/fd to compensate for a linux - failing; suggested by Mike Frysinger - - 5/9 - --- -arrayfunc.c - - broke assign_array_var_from_string into two functions: - expand_compound_array_assignment and assign_compound_array_list; - assign_array_var_from_string just calls those functions now - -arrayfunc.h - - new extern declarations for expand_compound_array_assignment and - assign_compound_array_list - -subst.c - - in do_compound_assignment, call expand_compound_array_assignment - before creating the local variable so a previous inherited - value can be used when expanding the rhs of the compound assignment - statement - - 5/11 - ---- -doc/{bash.1,bashref.texi} - - clarifed `trap' description to make it clear that trapped signals - that are not set to SIG_IGN are reset when a subshell is created - - 5/18 - ---- -locale.c - - change reset_locale_vars to call setlocale (LC_ALL, "") if LANG - is unset or NULL - - if LANG is unset or NULL, reset the export environment before - calling setlocale in reset_locale_vars, and trust that it will - change the environment setlocale() inspects - - 5/21 - ---- -lib/readline/history.c - - new function, HIST_ENTRY *alloc_history_entry (char *string, char *ts); - creates a new history entry with text STRING and timestamp TS (both - of which may be NULL) - - new function, HIST_ENTRY *copy_history_entry (HIST_ENTRY *hist), - which copies the line and timestamp entries to new memory but just - copies the data member, since that's an opaque pointer - - new function, void replace_history_data (int which, histdata_t *old, histdata_t *new) - which replaces the `data' member of specified history entries with - NEW, as long as it is OLD. WHICH says which history entries to - modify - - add calls to replace_history_data in rl_free_undo_list and - rl_do_undo - -lib/readline/undo.c - - new function, alloc_undo_entry (enum undo_code what, int start, int end, char *text) - takes care of allocating and populating a struct for an individual - undo list entry - - new function: _rl_copy_undo_entry(UNDO_LIST *entry) - - new function: _rl_copy_undo_list(UNDO_LIST *head) - -lib/readline/rlprivate.h - - new extern declarations for _rl_copy_undo_{entry,list} - -execute_cmd.c - - change execute_cond_node so that quoting the rhs of the =~ - operator forces string matching, like the == and != operators - - 5/23 - ---- -redir.c - - add_undo_redirect now takes as an additional argument the type of - redirection we're trying to undo - - don't add a "preservation" redirection for fds > SHELL_FD_BASE if - the redirection is closing the fd - - 5/24 - ---- -subst.c - - make sure that parameter_brace_substring leaves this_command_name - set to either NULL or its previous value after setting it so that - arithmetic evaluation errors while expanding substring values - contain meaningful information - - 6/9 - --- -execute_cmd.c - - make sure that SUBSHELL_ASYNC and SUBSHELL_PIPE are set as flag bits - in subshell_environment, rather than setting only a single value - - change execute_subshell_builtin_or_function to give the `return' - builtin a place to longjmp to when executed in a subshell or pipeline - (mostly as the last command in a pipeline). Bug reported by - Oleg Verych - - in execute_simple_command, make sure to call execute_disk_command - with the_printed_command_except_trap to keep DEBUG trap command - strings from overwriting the command strings associated with jobs - and printed in job control messages. Bug reported by Daniel Kahn - Gillmor - -[bash-3.2-alpha frozen] - - 6/22 - ---- -syntax.h - - add new CBLANK (for [:blank:] class) flag value for syntax table and - shellblank(c) character test macro - -mksyntax.c - - add support for setting CBLANK flag in the syntax table depending on - whether or not isblank(x) returns true for character x - -locale.c - - change locale_setblanks to set or unset CBLANK flag for each - character when locale changes - -parse.y - - change call to whitespace(c) in lexical analyzer (read_token()) to - call shellblank(c) instead, so locale-specific blank characters are - treated as white space. Fixes bug reported by Serge van deb Boom - - -print_cmd.c - - when printing redirections, add a space between <, >, and <> and the - following word, to avoid conflicts with process substitution. Bug - reported by Ittay Dror - - 6/26 - ---- -configure.in - - set CROSS_COMPILE to the empty string by default, so we don't inherit - a random value from the environment. Bug reported by - Lee Revell - - 6/29 - ---- -lib/glob/xmbsrtowcs.c - - make sure destp is non-null before assigning a 0 to *destp in - xdupmbstowcs. Fix from Louiwa Salem - -execute_cmd.c - - fix execute_in_subshell to make sure asynchronous isn't set to 0 - before subshell_environment is set appropriately and - setup_async_signals is run. Based on report by Louiwa Salem - - -lib/readline/bind.c - - in rl_generic_bind(), make sure that the keys array is freed before - an error return. Fix from Louiwa Salem - - 7/1 - --- -builtins/read.def - - make sure all editing code is protected with #ifdef READLINE, esp. - unwind-protect that restores the default completion function - -lib/readline/display.c - - make sure to set local_prompt_len in rl_message() [in bash-3.2-alpha] - - 7/5 - --- -builtins/printf.def - - add more of echo's write error handling to printf. Suggested by - martin.wilck@fujitsu-siemens.com - - 7/7 - --- -lib/readline/display.c - - save and restore local_prompt_len in rl_{save,restore}_prompt - [in bash-3.2-alpha] - - 7/8 - --- -[bash-3.2-alpha released] - - 7/9 - --- -lib/readline/display.c - - make sure that _rl_move_cursor_relative sets cpos_adjusted when it - offsets `dpos' by wrap_offset in a multi-byte locale. Bug reported - by Andreas Schwab and Egmont Koblinger - -subst.c - - make sure that the call to mbstowcs in string_extract_verbatim is - passed a string with enough space for the closing NUL. Reported - by Andreas Schwab - - 7/18 - ---- -lib/readline/{display,terminal}.c - - remove #ifdefs for HACK_TERMCAP_MOTION so we can use - _rl_term_forward_char in the redisplay code unconditionally - -lib/readline/rlprivate.h - - new extern declaration for _rl_term_forward_char - -lib/readline/display.c - - in _rl_move_cursor_relative, use `dpos' instead of `new' when - deciding whether or not a CR is faster than moving the cursor from - its current position - - in _rl_move_cursor_relative, we can use _rl_term_forward_char to - move the cursor forward in a multibyte locale, if it's available. - Since that function doesn't have a handle on where the cursor is in - the display buffer, it has to output a cr and print all the data. - Fixes rest of problem reported by Egmont Koblinger - - change variable denoting the position of the cursor in the line buffer - from c_pos (variable local to rl_redisplay) to cpos_buffer_position - (variable local to file) for future use by other functions - - 7/25 - ---- -lib/malloc/{stats,table}.h - - include for prototypes for memset, strlen - -lib/termcap/{termcap,tparam}.c - - include and provide macro replacement for bcopy if - necessary - - 7/27 - ---- -lib/readline/histexpand.c - - add support for `<<<' here-string redirection operator to - history_tokenize_word. Bug reported by agriffis@gentoo.org - -externs.h - - don't add prototype for strerror() if HAVE_STRERROR defined - - 7/29 - ---- -subst.c - - in list_string, use `string' instead of `s' -- s is not initialized - - 8/9 - --- -subst.c - - fix parameter_brace_expand to set W_HASQUOTEDNULL in the WORD_DESC it - returns if the result of parameter_brace_substring is a quoted null - ("\177"). Fixes bug reported by Igor Peshansky - - 8/16 - ---- -lib/readline/readline.h - - new #define, READERR, intended to be used to denote read/input errors - -lib/readline/input.c - - in rl_getc, if read() returns an error other than EINTR (after the - EWOULDBLOCK/EAGAIN cases are handled), return READERR rather than - converting return value to EOF if readline is reading a top-level - command (RL_STATE_READCMD) - -lib/readline/readline.c - - if rl_read_key returns READERR to readline_internal_char[loop], - abort as if it had read EOF on an empty line, without any conversion - to newline, which would cause a partial line to be executed. This - fixes the bug reported by Mathieu Bonnet - -aclocal.m4 - - when testing for validity of /dev/fd/3, use /dev/null instead of - standard input, since the standard input fails with linux and `su'. - Bug reported by Greg Shafer - - 8/17 - ---- -Makefile.in - - switch the TAGS and tags targets so TAGS is the output of `etags' and - tags is the output of `ctags'. Suggested by Masatake YAMATO - - 8/25 - ---- -execute_cmd.c - - change code to match documentation: set BASH_COMMAND (which takes its - value from the_printed_command_except_trap) only when not running a - trap. Rocky says the debugger is ok with this, and this is what his - original diffs did - - 8/29 - ---- -variables.c - - change set_if_not to create shell_variables if it is NULL, since - -o invocation options can cause variables to be set before the - environment is scanned - -[bash-3.2-beta frozen] - - 9/5 - --- -[bash-3.2-beta released] - - 9/8 - --- -variables.c - - change dispose_used_env_vars to call maybe_make_export_env - immediately if we're disposing a temporary environment, since - `environ' points to the export environment and getenv() will use - that on systems that don't allow getenv() to be replaced. This - could cause the temporary environment to affect the shell. Bug - reported by Vasco Pedro - -builtins/echo.def,doc/{bash.1,bashref.texi} - - clarify that `echo -e' and echo when the `xpg_echo' shell option is - enabled require the \0 to precede any octal constant to be expanded. - Reported by Vasco Pedro - - 9/12 - ---- -builtins/printf.def - - make sure `%q' format specifier outputs '' for empty string arguments - Bug reported by Egmont Koblinger - -make_cmd.c - - change make_here_document to echo lines in here-doc if set -v has - been executed. Reported by Eduardo Ochs - -aclocal.m4 - - change BASH_CHECK_MULTIBYTE: - o replace check for wctomb with check for wcrtomb - o add checks for wcscoll, iswctype, iswupper, iswlower, - towupper, towlower - o add call to AC_FUNC_MBRTOWC to check for mbrtowc and mbstate_t - define HAVE_MBSTATE_T manually - o add checks for wchar_t, wctype_t, wint_t - -config.h.in - - add defines for wcscoll, iswctype, iswupper, iswlower, towupper, - towlower functions - - replace define for wctomb with one for wcrtomb - - add defines for wchar_t, wint_t, wctype_t types - -config-bot.h, lib/readline/rlmbutil.h - - add check for HAVE_LOCALE_H before defining HANDLE_MULTIBYTE - - add checks for: ISWCTYPE, ISWLOWER, ISWUPPER, TOWLOWER, TOWUPPER - - add checks for: WCTYPE_T, WCHAR_T, WCTYPE_T - - 9/13 - ---- -lib/readline/display.c - - when displaying prompts longer than the screenwidth in rl_redisplay, - and looking for the index of the last character whose buffer index - is <= the screen width to set up the inv_lbreaks array, make sure to - catch the case where the index == the screen width (an off-by-one - error occurs otherwise with prompts one character longer than the - screen width). Bug reported by Alexey Toptygin - -configure.in - - change DEBUGGER_START_FILE to start with ${ac_default_prefix}/share, - like bashdb installs itself. Reported by Nick Brown - - - 9/14 - ---- -lib/readline/display.c - - make multibyte code that computes the buffer indices of line breaks - for a multi-line prompt dependent on MB_CUR_MAX, so we don't take - the function call hit unless we're in a locale that can have - multibyte characters - - 9/19 - ---- -subst.c - - make dequote_list extern so other parts of the shell can use it - -subst.h - - extern declaration for dequote_list - -builtins/read.def - - call dequote_list before assigning words read to array variable if - we saw an escape character. Old code left spurious CTLESCs in the - string after processing backslashes. Bug reported by Daniel Dawson - - - 9/21 - ---- -[bash-3.2 frozen] - - 10/9 - ---- -support/shobj-coonf - - change -fpic to -fPIC for FreeBSD systems (needed for SPARC at least) - - 10/11 - ----- -[bash-3.2 released] - - 10/12 - ----- -parse.y - - change parse_matched_pair to make sure `` command substitution does - not check for shell comments while parsing. Bug reported against - bash-3.2 by Greg Schaefer - - 10/14 - ----- -parse.y - - add new parser_state flag: PST_REGEXP; means we are parsing a - regular expression following the =~ conditional operator - - cond_node sets PST_REGEXP after reading the `=~' operator - - change read_token to call read_token_word immediately if the - PST_REGEXP bit is set in parser_state - - change read_token_word to skip over `(' and `|' if PST_REGEXP is - set, since those characters are legitimate regexp chars (but still - parse matched pairs of parens) - - 10/16 - ----- -builtins/ulimit.def - - add -e and -r to $SHORT_DOC usage string - -po/ru.po - - fix encoding; Russian text in the file is actually encoded in KOI8-R - - 10/23 - ----- -shell.c - - make sure that the call to move_to_high_fd in open_shell_script - passes 1 for the `check_new' parameter so open high file descriptors - don't get closed and reused. Bug reported by Mike Stroyan - - -doc/bashref.texi - - fixes for typos and misspellings sent in by Brian Gough - - 10/24 - ----- -support/shobj-conf - - make netbsd shared library creation like openbsd's until I hear - differently (called using `gcc -shared') - - 10/26 - ----- -subst.c - - fix bug in parameter_brace_patsub so if the first character of the - expanded pattern is a `/', it is not taken as a global replacement - specifier. Bug reported on forums.nekochan.net - - 10/27 - ----- -builtins/printf.def - - if we need an extern declaration for asprintf, make sure we include - stdarg.h or varargs.h, whichever is appropriate - - if we do not have asprintf, add an extern declaration using - stdarg format. This fixes the bugs with %G on IRIX reported by - Matthew Woehlke and Stuart Shelton - - - -lib/sh/snprintf.c - - add note to not call log_10 with 0 argument -- we don't want to do - what real log10 does (-infinity/raise divide-by-zero exception) - - make sure numtoa (used by dtoa) takes the precision into account - when computing the fractional part with an argument of `0.0' - - make sure `g' and `G' formats don't print radix char if there are - no characters to be printed after it (change to floating()) - - change callers of log_10 (exponent, 'g' and 'G' cases in - vsnprintf_internal) to not call it with 0 for argument. This fixes - the hang reported on IRIX by Matthew Woehlke - and Stuart Shelton - - 10/28 - ----- -builtins/{caller,pushd}.def - - changed longdoc strings in loadable builtin section to be single - strings, as put in the build directory builtins.c file, to aid - translators - - 11/1 - ---- -execute_cmd.c - - reset subshell_environment to 0 after make_child() call in - execute_null_command. Fix provided by Roy Marples - - - 11/7 - ---- -lib/tilde/tilde.c -lib/readline/{util,undo,callback,input,isearch,kill}.c - - make sure that memory allocated with xmalloc is freed with xfree - - 11/9 - ---- -lib/readline/display.c - - make sure that _rl_redisplay_after_sigwinch clears the last displayed - line instead of the current line (instead of assuming that the - cursor is on the last line). Fixes bug reported by Egmont - Koblinger - - 11/10 - ----- -lib/readline/display.c - - make sure that _rl_col_width is never called with MB_CUR_MAX == 1, - since it doesn't count invisible characters and they are not - compensated for. Added a warning in _rl_col_width if called when - MB_CUR_MAX == 1. Bug reported and solution suggested by Eric - Blake - - 11/11 - ----- -lib/readline/display.c - - make sure _rl_wrapped_line is initialized to inv_lbsize int chars. - inv_lbsize and vis_lbsize are the same at that point, but it makes - the intent clearer. Fix from jan.kratochvil@redhat.com. - - in rl_redisplay, make sure we call memset on _rl_wrapped_line with - its full initialized size: inv_lbsize*sizeof(int). Fix from - jan.kratochvil@redhat.com. - - wrap the invisible and visible line variables and _rl_wrapped_line - into line_state structures, which can be swapped more efficiently. - Have to watch the wrapped_line field, since there's now one for - each struct. Changes from jan.kratochvil@redhat.com. - -lib/readline/complete.c - - in stat_char, check for `//server' on cygwin and return `/', since - it will always behave as a directory. Fix from Eric Blake - -lib/readline/histfile.c - - Cygwin's mmap() works in recent versions, so don't #undef HAVE_MMAP. - Recommendation from Eric Blake - -lib/readline/rlwinsize.h - - make sure tcflow() is defined on SCO Unix. Fix from William Bader - -aclocal.m4 - - add check for localeconv to AM_INTL_SUBDIR macro - -config.h.in - - add HAVE_LOCALECONV - -lib/sh/snprintf.c - - add check for HAVE_LOCALECONV for GETLOCALEDATA macro - -general.[ch] - - first argument to legal_number is now `const char *' - - 11/14 - ----- -lib/readline/{readline,rlprivate}.h - - move rl_display_prompt declaration from rlprivate.h to readline.h - -lib/readline/util.h - - new function: rl_free(void *mem), for use by users of readline dlls - on Windows - -lib/readline/readline.h - - new extern declaration for rl_free - -lib/readline/doc/rltech.texi - - document rl_free and rl_display_prompt for use by application writers - - 11/15 - ----- -aclocal.m4 - - change tests for /dev/fd and /dev/stdin to use constructs of the form - (exec test ... ) instead of test ... to avoid bash's /dev/fd and - /dev/stdin emulation - - 11/16 - ----- -jobs.c - - in delete_job, reset_current was being called before the job slot - was cleared -- moved after job_slots[job] was set to NULL. Fixes - bug reported by Dan Jacobson - - 11/19 - ----- -findcmd.c - - when the checkhash option is set, fix the check for the hashed - pathname being an existing executable file. Old code required a - hash table deletion and re-addition. Bug reported by Linda - Walsh - - 11/21 - ----- -subst.c - - in pos_params, handle case of `start' == 0 by making the list of - positional parameters begin with $0 - - in parameter_brace_substring, increment `len' if start == 0, sicne - we will be adding $0 to the beginning of the list when we process it - -doc/{bash.1,bashref.texi} - - document new behavior of `0' offset when using substring expansion - with the positional parameters - -support/shobj-conf - - changes to shared object creation for loadable builtins on Mac OS X - 10.4 to use libtool instead of ld by specifying -dynamiclib - argument and changing options to be appropriate for libtool. This - winds up creating a dynamic shared library instead of an executable - - 11/24 - ----- -{jobs,nojobs}.c - - don't set last_asynchronous_pid to the child's pid in the child - for asynchronous jobs (for compatibility -- all other posix shells - seem to do it this way). This means that (echo $! )& echo $! should - display two different pids. Fix from discussion on the - austin-group-l list - -builtins/mkbuiltins.c - - change builtins.c file generation so short doc strings are marked for - gettext and available for subsequent translation. Suggestion by - Benno Schulenberg - -builtins/{bind,cd,hash,inlib,printf,pushd,test,times,ulimit}.def -lib/malloc/malloc.c -{shell,subst}.c - - fix a few strings that were not marked as translatable. Fix from - Benno Schulenberg - -lib/readline/misc.c - - new function, _rl_revert_all_lines(void). Goes through history, - reverting all entries to their initial state by undoing any undo - lists. - -lib/readline/rlprivate.h - - extern declaration for _rl_revert_all_lines - -rldefs.h - - add #undef HAVE_STRCOLL if STRCOLL_BROKEN is defined, prep to move - from config.h.in. Problem reported by Valerly Ushakov - - - 11/25 - ----- -lib/readline/readline.c - - call _rl_revert_all_lines from readline_internal_teardown if the - variable _rl_revert_all_at_newline is non-zero - - declare _rl_revert_all_lines initially 0 - - 11/27 - ----- -doc/{bash.1,bashref.texi} - - make sure to be explicit that `typeset +r' cannot remove the readonly - attribute from a variable - - 11/28 - ----- -lib/sh/zmapfd.c - - new file, implements zmapfd(), which takes a file and returns its - contents in a string - -externs.h - - extern declaration for zmapfd - - 11/29 - ----- -builtins/evalfile.c - - in _evalfile, use zmapfd to read the contents of the file into a - string, rather than using the size reported by stat and reading that - many characters, if the file is not a regular file (for things like - named pipes, stat reports the size as 0) - - 12/3 - ---- -lib/sh/snprintf.c - - make sure number() sets the FL_UNSIGNED flag for %x and %X, so - fmtulong treats them as unsigned numbers. Fixes bug reported by - James Botte - - 12/13 - ----- -lib/readline/util.c - - new function, _rl_ttymsg, for internal warning messages -- does - redisplay after printing message - - new function, _rl_errmsg, for internal warning/error messages -- - does not do redisplay after printing message - -lib/readline/rlprivate.h - - new extern declaration for _rl_ttymsg, _rl_errmsg - -lib/readline/{bind,callback,complete,display,rltty}.c - - use _rl_ttymsg/_rl_errmsg instead of direct writes to stderr - -lib/sh/tmpfile.c - - in get_tmpdir(), make sure that $TMPDIR names a writable directory; - otherwise skip it. This catches names longer than PATH_MAX, but in - case it doesn't test that the length does not exceed PATH_MAX. Fixes - heap overrun bug reported by Eric Blake - - 12/16 - ----- -builtin/{set,declare,shopt,trap,wait,bind,complete,enable,fc,history,read,setattr}.def -doc/{bash.1,bashref.texi} - - improvements and clarifications to the help text associated with - several builtins, in some cases bringing them into line with the - man page text. From Benno Schulenberg - -doc/{bash.1,bashref.texi} - - add `E' and `T' to the synopsis of the set builtin. - From Benno Schulenberg - -builtins/{break,exit,fg_bg,hash,jobs,type,ulimit}.def -builtins/{common,evalfile}.c -{error,expr,jobs,mksyntax,nojobs,shell,subst,version,siglist}.c - - add gettextizing marks to untranslated strings - From Benno Schulenberg - - 12/19 - ----- -builtins/common.c - - change display_signal_list (used by `trap -l' and `kill -l') to use - five columns instead of 4 to display signal names - -builtins/help.def - - use the true terminal width instead of assuming 80 when displaying - help topics, leaving two characters of whitespace between horizontal - descriptions instead of 1 - - change to print in columns with entries sorted down rather than across - (that is, like `ls' rather than `ls -x'). Change inspired by Benno - Schulenberg - -jobs.h - - give values to the JOB_STATE enumerations so they can be used as - bitmasks, too - - 12/22 - ----- -doc/{bash.1,bashref.texi} - - change description of `set' to make it clearer that you can use - `+' to turn off options - - clarify in the description of word splitting that sequences of - IFS whitespace at the beginning or end of the string are ignored - - 12/26 - ----- -doc/bashref.texi - - move `shopt' builtin to its own section; change internal references - from `Bash Builtins' to the new shopt builtin - - new section for builtins that modify shell behavior in `Shell - Builtin Commands'; move set and shopt to new section. Changes - inspired by Benno Schulenberg - -{redir,subst}.c - - add MT_USETMPDIR flag to calls to sh_mktmpfd and sh_mktmpname. Bug - reported by Eric Blake - -{configure,Makefile}.in - - changes so that the pathname for DEBUGGER_START_FILE is substituted - into pathnames.h at make time (allowing more flexibility in setting - `prefix' or `datadir') instead of at configure time. Suggested by - Nick Brown - -shell.c - - declaration for have_devfd; initialized from HAVE_DEV_FD - - declaration for check_jobs_at_exit; initialized to 0 - - declaration for autocd; initialized to 0 - -variables.c - - new dynamic variable, BASHPID, always set from return value from - getpid() (changes even when $$ doesn't change). Idea from Bruce - Korb - -builtins/exit.def - - if check_jobs_at_exit is non-zero, list jobs if there are any stopped - or running background jobs; don't exit shell if any running jobs - -execute_cmd.c - - in execute_simple_command, if the first word of a simple command is - a directory name (after looking for builtins, so `.' isn't caught) - that isn't found in $PATH, and `autocd' is non-zero, prefix a "cd" - to the command words - -builtins/shopt.def - - new `checkjobs' option, changes value of check_jobs_at_exit - - new `autocd' option, changes value of autocd - -pcomplete.c - - add COMP_TYPE, set to rl_completion_type, to list of variables set - by bind_compfunc_variables and unset by unbind_compfunc_variables - -doc/{bash.1,bashref.texi} - - document BASHPID - - document new shopt `checkjobs' option - - document new shopt `autocd' option - - document COMP_TYPE completion variable - - 12/29 - ----- -aclocal.m4 - - in BASH_SYS_SIGLIST, check HAVE_DECL_SYS_SIGLIST instead of the - obsolete and no-longer-supported SYS_SIGLIST_DECLARED - - 12/30 - ----- -lib/readline/vi_mode.c - - add ` (backquote) to the list of vi motion characters - - in rl_vi_delete_to, rl_vi_change_to, and rl_vi_yank_to, don't delete - character under the cursor if the motion command moves the cursor - backward, so add F and T to the commands that don't cause the - mark to be adjusted - - add ` to the characters that don't cause the mark to be adjusted - when used as a motion command, since it's defined to behave that way - - when a motion character that may adjust the mark moves point - backward, don't adjust the mark so the character under the cursor - isn't deleted - -lib/readline/complete.c - - add variable rl_sort_completion_matches; allows application to - inhibit match list sorting - - add variable rl_completion_invoking_key; allows applications to - discover the key that invoked rl_complete or rl_menu_complete - -lib/readline/readline.h - - extern declarations for rl_completion_invoking_key and - rl_sort_completion_matches - -lib/readline/doc/rltech.texi - - documented rl_completion_invoking_key and rl_sort_completion_matches - -pcomplete.c - - export variable COMP_KEY to completion functions; initialized from - rl_completion_invoking_key; unset along with rest of completion - variables - -doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi - - document COMP_KEY - -[many files] - - changes to make variables and function parameters `const' for better - text sharing. Changes originally from Andreas Mohr - - - 1/4/2007 - -------- -lib/intl/Makefile.in - - use cmp before copying libgnuintl.h to libintl.h -- maybe save a few - rebuilds - -lib/builtins/Makefile - - fixes to build LIBINTL_H if necessary, dependency on this for - mkbuiltins.o prevented `make -j 6' from working correctly - - 1/8 - --- -subst.c - - new function, fifos_pending(), returns the count of FIFOs in - fifo_list (process substitution) - -subst.h - - extern declaration for fifos_pending() - -execute_cmd.c - - in execute_simple_command, if CMD_NO_FORK is set before we call - execute_disk_command, make sure there are no FIFOs in the expanded - words (from process substitution) and turn off CMD_NO_FORK if there - are, so they can get unlinked when the command finishes - - 1/10 - ---- -subst.c - - read_comsub now takes a flags parameter and returns appropriate W_* - flags in it - - command_substitute now returns a WORD_DESC *, with the string it used - to return as the `word' and `flags' filled in appropriately - -subst.h - - changed extern declaration for command_substitute - -{pcomplete,subst}.c - - changed callers of command_substitute appropriately - -subst.c - - string_extract_verbatim now takes an additional int flags argument; - changed callers - - 1/11 - ---- -support/texi2html - - fix problem that caused index links to not be generated if the first - index node had a name different than the node name - -doc/bashref.texi - - encapsulated all indexes into a single `Indexes' appendix; works - around bug fixed in texi2html - - 1/12 - ---- -subst.c - - add call to sv_histtimefmt in initialize_variables so HISTTIMEFORMAT - from the environment is honored. Fix from Ark Submedes (heh) - - -lib/readline/histfile.c - - make sure that the first character following the history comment - character at the beginning of a line is a digit before interpreting - it as a timestamp for the previous line - -doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi - - added detail to make it clear exactly how history timestamps are - saved to and read from the history file - -subst.c - - change quote_escapes to add CTLESC before spaces if IFS is null, - just in case we have to split on literal spaces later on (e.g., in - case of unquoted $@). Corresponding changes to dequote_escapes. - Fixes a couple of problems reported by Brett Stahlman - - - 1/14 - ---- -subst.c - - make same change to read_comsub to add CTLESC before ' ' if $IFS is - null, since we will split on literal spaces later - - 1/15 - ---- -array.c - - new function, array_quote_escapes (ARRAY *a), calls quote_escapes - on each element of the array in the same way array_quote calls - quote_string - - call array_quote_escapes if match is not quoted in array_patsub - - array_slice is now used, so remove the #ifdef INCLUDE_UNUSED define - - change structure of array_subrange to call array_slice to create a - new array with the desired subset of elements, then call array_quote - or array_quote_escapes as necessary, like array_patsub. Convert to - a string by calling array_to_string on the sliced-out array - -array.h - - new extern declaration for array_quote_escapes - -subst.c - - since array_patsub now calls quote_escapes as necessary, callers - don't need to call it after array_patsub returns. Fixes first bug - reported by Brett Stahlman - - since array_subrange now calls quote_escapes as necessary, callers - don't need to call it after array_patsub returns. Same fix as - for array_patsub - - 1/31 - ---- -configure.in - - add -DSOLARIS to LOCAL_CFLAGS for solaris x - -config-bot.h - - don't #undef HAVE_GETCWD if GETCWD_BROKEN and SOLARIS are both - defined. Solaris's loopback mount implementation breaks some of the - file system assumptions the replacement getcwd uses. - -builtins/common.c - - if GETCWD_BROKEN is defined, call getcwd with PATH_MAX for the size - argument, so it will allocate a buffer for the current working dir - with that size, instead of one that's `big enough' - -config.h.in - - add #undef PRI_MACROS_BROKEN for AIX 4.3.3 - -pathexp.h - - new flag value for quote_string_for_globbing: QGLOB_REGEXP (quoting - an ERE for matching as a string) - -pathexp.c - - change quote_string_for_globbing to understand QGLOB_REGEXP - -execute_cmd.c - - change execute_cond_node to pass 2 (regexp match), 1 (shell pattern - match), or 0 (no matching) to cond_expand_word - -subst.c - - change cond_expand_word to translate SPECIAL==2 into passing - QGLOB_REGEXP to quote_string_for_globbing - -locale.c - - by default, if all else fails, set shell's idea of locale to "" - instead of its idea of `default_locale' -- the library functions - behave better with that value - - 2/2 - --- -builtins/printf.def - - if PRI_MACROS_BROKEN is defined, #undef PRIdMAX (AIX 4.3.3 broken) - - 2/3 - --- -Makefile.in,{builtins,doc}/Makefile.in,lib/*/Makefile.in - - add assignment for datarootdir as per GNU coding standards - -Makefile.in,builtins/Makefile.in,lib/intl/Makefile.in,po/Makefile.in.in - - use @localedir@ instead of $(datadir)/locale in assignment - - 2/13 - ---- -jobs.c - - fix compact_jobs_list to not return js.j_lastj, since that is in use - and should not be overwritten. Fix from Len Lattanzi - - - 2/16 - ---- -lib/readline/text.c - - change rl_forward_char to allow moving to the end of the line when - using the arrow keys in vi insertion mode, rather than having the - behavior identical between vi command and insertion modes. Change - suggested by Hugh Sasse - - 2/19 - ---- -CWRU/audit-patch - - patch from Steve Grubb of RedHat to make bash - audit root's behavior by logging commands using his audit - framework. Enabled if the shell's name is `aubash'. - - 3/8 - --- -jobs.c - - use WSTATUS (p->status) instead of bare p->status. Fix from - Jim Brown - - 3/9 - --- -lib/readline/{complete,input,isearch,misc,readline,text,vi_mode}.c - - make sure cases where rl_read_key returns -1 (usually due to EIO - because the controlling tty has gone away) are handled correctly. - Prompted by report from Thomas Loeber - - 3/10 - ---- -sig.c - - new function, top_level_cleanup, callable from contexts where some - cleanup needs to be performed before a non-fatal call to - jump_to_top_level - -sig.h - - new extern declaration for top_level_cleanup - -builtins/common.c - - add calls to top_level_cleanup before calls to jump_to_top_level - in a builtin command context (no_args(), get_numeric_arg()). Fixes - bug reported by Ian Watson - -lib/readline/display.c - - in _rl_move_cursor_relative, use `new' when comparing against - the last invisible character in the prompt, since they both denote - buffer indices when in a multibyte locale, whereas `dpos' is a - display position - - 3/13 - ---- -lib/readline/complete.c - - set rl_completion_append_character to the default (' ') in - set_completion_defaults(). Fixes bug reported by David Emerson - - - 3/23 - ---- -builtins/evalfile.c - - make sure read() returns a value >= 0 before using it as an index - into string[] - - use a variable of type `ssize_t' for return value from read() - - only try to read the entire contents of a regular file in one shot - if the file size is less than SSIZE_MAX. These fix problems - reported by hooanon05@yahoo.co.jp. - -include/typemax.h - - define SSIZE_MAX as 32767 if it's not defined - -lib/readline/display.c - - in rl_redisplay() and update_line(), if redrawing the prompt because - it contains invisible characters, make sure we redraw the character - indicating a modified history line and take it into account when - computing _rl_last_c_pos - - in update_line, if deleting characters and redrawing the new text, - make sure we adjust _rl_last_c_pos by wrap_offset in a multibyte - locale if the text we're drawing starts before or at the last - invisible character in the prompt string. Fixes bug reported on - bug-readline by J Pelkey - -parse.y - - when adding at CTLESC character to the current token, do not - escape it with CTLESC if pass_next_character indicates that the - CTLESC was escaped by a backslash. Fixes bug reported by - Paul Bagshaw . - - 3/25 - ---- -lib/readline/text.c - - in rl_forward_char, short-circuit the loop if in emacs mode and - rl_point == rl_end. Fixes problem with multibyte locales - reported by Len Lattanzi - - 3/29 - ---- -command.h - - new flag for subshell_environment: SUBSHELL_PROCSUB, for process - substitution - -subst.c - - add SUBSHELL_PROCSUB to subshell_environment in process_substitute - - 3/30 - ---- -doc/Makefile.in - - fix installation of bash.info to understand that it is in the build - directory, not the source directory - -mailcheck.c - - new function, init_mail_dates, calls remember_mail_dates only if - there are no mailboxes in `mailfiles' - - new function, init_mail_file, initializes a FILEINFO, using the - last time mail was checked as the mtime and atime (or the time the - shell was started if last_time_mail_checked is uninitialized) - - call init_mail_file instead of update_mail_file in add_mail_file, - called from remember_mail_dates (which is supposed to initialize - the list of mail files) - - new convenience functions, alloc_mail_file and dispose_mail_file to - allocate and free FILEINFO structs - -mailcheck.h - - extern declaration for init_mail_dates - -shell.c - - call init_mail_dates instead of remember_mail_dates - - 4/4 - --- -builtins/read.def - - changes to print $PS2 when a line is continued with a backslash in - an interactive shell. This is as POSIX requires - - 4/5 - --- -subst.c - - make sure quote_escapes is only ever called when the word to be - escaped is not marked as double-quoted -- cleaner, and allows us - to make certain assumptions - - 4/6 - --- -subst.c - - change all EX_* defines to begin with SX_ - - new flag, SX_NOCTLESC, obeyed by string_extract_verbatim, tells it - to not obey CTLESC quoting - - change quote_escapes to not quote CTLESC with CTLESC if one of the - chars in $IFS is CTLESC, since the return value from quote_string - will be passed to word splitting and filename generation - - change read_comsub to do the same thing for unquoted command - substitutions - - change list_string to pass SX_NOCTLESC if CTLESC is one of the - chars in $IFS, so it will split on CTLESC instead of using it as a - quote character - - 4/7 - --- -subst.c - - slight change to string_extract_verbatim to allow CTLESC to quote - CTLNUL even if SX_NOCTLESC is set in the flags passed, to protect - the CTLNULs from future calls to remove_quoted_nulls. Only - matters when $IFS contains CTLESC - - changes to cope with $IFS containing CTLNUL in the same way as the - CTLESC changes - -builtins/read.def - - changes to cope with $IFS containing CTLNUL in the same way as the - CTLESC changes - - 4/16 - ---- -lib/sh/strftime.c - - a couple of fixes to the `%z' code - -eval.c - - add an fflush after printing the auto-logout message - - 4/24 - ---- -subst.c - - add call to top_level_cleanup in exp_jump_to_top_level to get things - like unwind-protects and the loop levels cleaned up - -{arrayfunc,expr,variables}.c - - add calls to top_level_cleanup before jump_to_top_level() - - 4/27 - ---- -builtins/complete.def - - make sure the `command' argument to the -C option is printed with - single quotes, since multi-word commands will require them. Bug - reported by martin@snowplow.org - -execute_cmd.c - - change execute_builtin_or_function and execute_subshell_builtin_or_function - to call fflush(stdout) after the builtin or function returns, to - make sure that all output is flushed before the call returns. It - matters on cygwin. Fix suggested by Eric Blake - -redir.c - - in do_redirection_internal, if the file descriptor being acted upon - is the same one used by the stdout stream, call fflush(stdout) to - make sure all output is flushed before changing the underlying fd - out from underneath stdio. Fix suggested by Eric Blake - - - 4/30 - ---- - -builtins/common.c - - new function, sh_chkwrite(int), fflushes stdout and checks for error; - printing an error message and returning a new exit status if there's - an error on stdout. Takes exit status as argument; returns new exit - status (EXECUTION_FAILURE if write error) - -builtins/common.h - - new extern declaration for sh_chkwrite - -builtins/{alias,cd,complete,echo,fc,history,pushd,shopt,times,trap,type,ulimit,umask}.def - - change to use sh_chkwrite to report write errors - -builtins/fc.def - - if an error occurs while writing commands from the history to a file - to be executed, report a write error and return failure without - attempting to execute any commands - - 5/1 - --- -builtins/{bind,declare,set,setattr}.def - - change to use sh_chkwrite to report write errors - - 5/2 - --- -lib/readline/input.c - - fix off-by-one errors in _rl_get_char (pop_index) and rl_stuff_char - (push_index) that caused the 511th character in the buffer to be - discarded. Fixes bug reported by Tom Bjorkholm - - 5/8 - --- -subst.c - - fix parameter_brace_remove_pattern to pass getpattern() newly-allocated - memory. If word expansions (particularly brace expansions) are - required, the expansion code will free the string passed to - expand_word_internal, and we don't want to free unallocated memory - (patstr++) or have duplicate frees (patstr). Fixes bug reported on - Red Hat bugzilla - - 5/9 - --- -lib/readline/signals.c - - fix bug in rl_set_signals that caught SIGINT twice and didn't catch - SIGTERM. Bug reported by Ed Kwan - - 5/18 - ---- -jobs.c - - change compact_jobs_list to return 1 if js.j_lastj == 0 and there is - a job in jobs[0]; compact_jobs_list should never return an index - already occupied - - change reset_job_indices to avoid infinite looping when js.j_firstj - == 0 or js.j_firstj == js.j_jobslots upon function entry. Fixes - bug reported by osicka@post.cz - - 5/20 - ---- - -execute_cmd.c - - new variable, executing_builtin, keeps track of number of "levels" - of builtins being executed; incremented by execute_builtin; saved - and restored by execute_simple_command - -subst.c - - new variable, assigning_in_environment, set and unset around calls - to assign_in_env by the expansion code - -variables.c - - use executing_builtin and assigning_in_environment to decide whether - or not to look into temporary_env when calling find_variable_internal. - Fixes problem reported by Kevin Quinn - - 5/22 - ---- -redir.c - - change add_undo_redirect to differentiate between file descriptors - greater than SHELL_FD_BASE (currently 10) used internally to save - others and then being the targets of user redirection and fds that - are just the target of user redirections. The former need to have - an `exec undo' redirect added to undo it in case exec throws away - redirections; the latter does not. We use the close-on-exec flag - for this: if it's set, we assume that the file descriptor is being - used internally to save another. Fixes problem reported by Ian - Jackson - -shell.c - - new function, init_interactive_script(), does interactive initialization - for a script run with `bash -i script' -- does everything the same - as init_interactive except set `interactive == 1', which causes the - shell to read from the standard input, after calling - init_noninteractive - - call init_interactive_script if a script is run as `bash -i script'. - Fixes problem reported by Joseph Michaud - - 5/24 - ---- -builtins/printf.def - - change vbadd to only call FASTCOPY if the passed buffer length is - > 1 - - if the `-v' option is supplied and `vbuf' is already non-null from a - previous `printf -v var' call, set vbuf[0]=0 explicitly instead of - relying on vbadd to do it -- vbadd may not be called. - - fix PRETURN macro to set vbuf[0] == 0 if vbuf is not freed. These - should fix problem reported by Elmar Stellnberger - -lib/readline/display.c - - fix update_line to deal with the case where col_lendiff > 0 (meaning - the new string takes up more screen real estate than the old) but - lendiff < 0 (meaning that it takes fewer bytes to do so). This can - happen when a multibyte prompt string is replaced with a longer one - containing only single-byte characters (e.g., when doing a reverse - i-search). Fixes gentoo bug reported by Peter Volkov - - -builtins/read.def - - make sure we only print $PS2 if the standard input is a terminal - - new function, read_mbchar, to read a multibyte character so we - can make sure we read entire multibyte chars when `read -n' is - used, rather than bytes. Only called when -n is supplied. - Fixes problem reported by Stanislav Brabec - - 5/25 - ---- -externs.h - - new #defines for third argument to named_function_string: - FUNC_MULTILINE (don't suppress newlines) and FUNC_EXTERNAL (convert - to external display form) - -subst.h - - new extern declaration for remove_quoted_escapes - -subst.c - - remove_quoted_escapes is now global - -print_cmd.c - - in named_function_string, if FUNC_EXTERNAL is in the flags argument, - call remove_quoted_escapes to convert from internal to external form. - Fixes bug reported by Bo Andresen - -variables.c,builtins/{declare,setattr,type}.def - - use FUNC_MULTILINE in calls to named_function_string as appropriate - - add FUNC_EXTERNAL to calls to named_function_string as appropriate - - 5/27 - ---- -{make_cmd,variables}.c - - changes to enable the shell to compile when debugger support is - configured out (function_def hash table and access functions). Fixes - bug reported by Horst Wente - -builtins/help.def - - fix bug in `help' two-column printing to avoid referencing - shell_builtins[num_shell_builtins] - -error.c - - in get_name_for_error, use dollar_vars[0] if the name returned from - looking in $BASH_SOURCE[0] is the empty string as well as if it's - null - - 5/31 - ---- -arrayfunc.c - - change array_value_internal to set *RTYPE to 1 if the reference is - array[*] and 2 if the reference is array[@] - -subst.c - - in parameter_brace_expand_word, set the flags returned by the word - desc to include W_HASQUOTEDNULL if array_value returns QUOTED_NULL - for an array reference like x[*] and the word is quoted. Fixes bug - reported by Christophe Martin - - 6/1 - --- -jobs.c - - several changes to preserve errno if tcgetpgrp/tcgetattr/tcsetattr - fail, for subsequent error messages - - change initialize_job_control to turn off job control if the terminal - pgrp == -1 or is not equal to shell_pgrp (with an error message) - - in initialize_job_control, if the shell has been forced interactive - with -i, make sure stderr is hooked to a tty before using it as - the controlling terminal. If it's not, try to open /dev/tty and - assign it to shell_tty. Fixes problems reported by Derek Fawcus - - - 6/13 - ---- -support/shobj-conf - - changes to support shared object and shared library creation on AIX - 5.x and later versions. From Niklas Edmundsson - - 6/17 - ---- -builtins/mkbuiltins.c - - new array of builtins, posix_builtins, containing builtins listed - as special to the command search order by POSIX - - add POSIX_BUILTIN to the builtin flags if the builtin name is one - that's special to the posix command search order - -builtins.h - - new define, POSIX_BUILTIN, means that a builtin is special to the - posix command search order - - 6/22 - ---- -lib/readline/display.c - - new macro, WRAP_OFFSET, intended to replace W_OFFSET. Takes prompt - strings longer than one physical line with invisible characters on - the second line into account when calculating the number of - invisible characters on the current screen line - - use WRAP_OFFSET where appropriate (update_line, _rl_move_cursor_relative) - - change update_line to deal with adjusting _rl_last_c_pos in a - multibyte environment when the prompt has invisible chars on the - second line and redisplay has output the invisible characters - - change _rl_move_cursor_relative to adjust _rl_last_c_pos in a - multibyte environment when the prompt has invisible chars on the - second line and the redisplay draws the invisible character. Fixes - redisplay bug reported by Andreas Schwab - - - 7/11 - ---- - -lib/readline/rltty.c - - enable flush-output code for systems other than AIX 4.1. Problem - reported by Jan Kratochvil - - 7/12 - ---- -lib/readline/display.c - - set prompt_invis_chars_first_line from the portion of the prompt - following the final newline, instead of from the prefix. Fixes - bug reported on the Ubuntu bug list by dAniel hAhler - - - 7/13 - ---- -variables.c - - use native __QNX__ and __QNXNTO__ cpp defines instead of qnx and - qnx6, respectively. Patch from Sean Boudreau - -lib/sh/getcwd.c - - #undef HAVE_LSTAT on qnx, so it uses stat instead. Patch from - Sean Boudreau - - 7/21 - ---- -builtins/common.c - - change sh_invalidnum to be a little smarter about octal and hex - numbers and change the message appropriately. Bug originally - reported on coreutils list by Jürgen Niinre - - 7/26 - ---- -test.c - - make sure the string passed to test_unop has only a single character - following the `-'. Fixes bug reported by Michael A. Smith - - -parse.y - - better input validation: make sure a word looks like a conditional - unary operator (-X) before calling test_unop - - 7/28 - ---- -trap.c - - in trap_handler, if it's called directly from the signal handler - (e.g., SIGINT sighandler, set by set_sigint_handler), but the - trap disposition has been reset to the default between the - assignment and receipt of the signal, check that the signal is - trapped and issue a warning if the shell was compiled with - debugging enabled. Fixes bug reported by Fergus Henderson - - - 8/1 - --- -lib/readline/{util,histexpand}.c - - fixes for small memory leaks from Michael Snyder - - 8/18 - ---- -Makefile.in - - add dependency on builtins/builtext.h to nojobs.o list. Fixes - `make -j 5' issue reported by Chris MacGregor - -examples/loadables/Makefile.in - - add @LDFLAGS@ to SHOBJ_LDFLAGS assignment -- experimental. Suggested - by Mike Frysinger - -examples/loadables/{basename,cut,dirname,finfo,head,ln,logname,mkdir,pathchk,print,printenv,push,realpath,rmdir,sleep,tee,truefalse,tty,uname,unlink,whoami}.c - - fix up some includes. Fix from Mike Frysinger - - 8/21 - ---- -histexpand.c - - fix another memory leak in history_find_word. Bug report originally - from Michael Snyder ; test case suggested by Jim - Blandy - - 8/26 - ---- -subst.c - - change to do_assignment_internal to make an assignment to a variable - with the `noassign' internal attribute not a variable assignment - error. - - fix do_assignment_internal so assignment to a `noassign' variable - does not cause it to suddenly become visible if it's currently - invisible - - 9/3 - --- -stringlib.c - - change strsub to check whether or not temp is non-null before - trying to null-terminate it. Also make sure temp is allocated - even if the pattern and replacement strings are empty, and set - to a copy of string (like ${foo//}) - Bug report from Timo Lindfors - - 9/10 - ---- -{config.h,Makefile,configure}.in,aclocal.m4 - - new tests for fpurge and __fpurge - -lib/sh/fpurge.c, externs.h - - new file, fpurge(3) implementation with external decl in externs.h - -builtins/common.c - - add call to fpurge(stdout) to sh_chkwrite - -{redir,execute_cmd}.c - - add call to fpurge(stdout) after fflush(stdout) before changing - stdout file descriptor and after a builtin or function executes - - 9/12 - ---- -expr.c - - make sure noeval is set to 0 when a longjmp occurs, since it will - not be reset otherwise, and it can be set to 1 while processing - a {pre,post}-increment or {pre,post}-decrement token - - set noeval to 0 at the beginning of evalexp, since it's never - called recursively - - 9/14 - ---- -config-top.h - - new builder-modifiable define: DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS - Turning it on will cause errors from EPIPE to not be reported by - the normal shell write error message mechanism - -builtins/common.c - - if DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS is defined, don't print an - error message from sh_wrerror if errno == EPIPE. Suggestion from - Petr Sumbera - - 9/19 - ---- -{jobs,nojobs}.c,jobs.h - - add code to retry fork() after EAGAIN, with a progressively longer - sleep between attempts, up to FORKSLEEP_MAX (16) seconds. Suggested - by Martin Koeppe - - 9/21 - ---- -version.c - - change copyright year to 2007 - - 9/25 - ---- -pathexp.c - - change quote_string_for_globbing to add a backslash in front of a - backslash appearing in the pathname string, since the globbing - code will interpret backslashes as quoting characters internally. - Bug reported by on the debian list - (443685) - - 10/8 - ---- -lib/readline/display.c - - in update_line, make sure _rl_last_c_pos is > 0 before setting - cpos_adjusted (or we actually moved the cursor to column 0 in - _rl_move_cursor_relative). Fixes redisplay bug with prompt with - only invisible characters reported by dAniel hAhler - - - 10/10 - ----- -lib/readline/display.c - - in rl_redisplay, when calculating the new physical cursor position - in a multibyte locale (`tx'), do not call rl_backspace if tx ends - up < 0. Rest of fix for bug reported by dAniel hAhler - - - 10/12 - ----- -lib/sh/getcwd.c - - fix memory overwrite problem that's possible if buf is NULL and - passed size is greater than the pathname length. Reported by - Ian Campbell - -builtins/ulimit.def - - change the multiplier for the -c and -f options (`blocks') to 512, - the traditional value (and the one POSIX specifies). Bug reported - by Pete Graner - -braces.c - - pass process substitution through unchanged the same as command - substitution. Prompted by suggestion from Stephane Chazelas - - -lib/readline/input.c - - in rl_unget_char, fix off-by-one error when resetting pop_index if - it's < 0. Bug reported by Uwe Doering - -builtins/type.def - - change exit status of `type' to not successful if any of the - requested commands are not found. Reported by Stephane Chazleas - - -pcomplete.c - - change command_line_to_word_list to use rl_completer_word_break_characters - instead of the shell metacharacters to split words, so programmable - completion does the same thing readline does internally. Reported - by Vasily Tarasov - - 10/16 - ----- -bashline.c - - When completing a command name beginning with a tilde and containing - escaped specical characters, dequote the filename before prefixing - it to the matches, so the escapes are not quoted again. Reported - by neil@s-z.org - - 10/17 - ----- -expr.c - - in readtok(), don't reset lasttp if we've consumed the whitespace - at the end of the expression string. Fixes error message problem - reported by - - 11/1 - ---- -builtins/printf.def - - change asciicode() to return intmax_t; add multibyte character - support instead of assuming ASCII (depending on behavior of system - multibyte support functions). Fixes bug reported by Rich - Felker - - 11/5 - ---- -execute_cmd.c - - if redirections attached to a compound command fail, make sure to - set last_command_exit_value when returning EXECUTION_FAILURE. - Fixes bug reported separately by Andreas Schwab - and Paul Eggert - - 11/9 - ---- -builtins/read.def - - make sure the return value from get_word_from_string is freed if - non-null. Fixes memory leak bug reported by Lars Ellenberg - - - 11/10 - ----- -variables.c - - use getpid() as value of seeded_subshell to avoid problems with - random number generator not getting re-seeded correctly when - subshells are created. Fix from Tomas Janousek - -lib/readline/display.c - - in update_line(), when outputting characters at the end of the line, - e.g., when displaying the prompt string, adjust _rl_last_c_pos by - wrap_offset if the text we're drawing begins before the last - invisible character in the line. Similar to fix from 5/24. Fixes - bug reported by Miroslav Lichvar - - 11/14 - ----- -subst.c - - fix $[ expansion case to deal with extract_arithmetic_subst - returning NULL (if the `]' is missing) and return the construct - unchanged in that case. Fixes tab completion bug reported by - Heikki Hokkanen (debian bug 451263) - -lib/readline/mbutil.c - - fix _rl_find_next_mbchar_internal to deal with invalid multibyte - character sequences when finding non-zero-length chars. Fixes - bug reported by Morita Sho - - 11/15 - ----- -variables.c - - add new function `seedrand' to seed the bash random number - generator from more random data. Suggestion from Steve Grubb - - - replace the rng in brand() with a slightly better one from FreeBSD - (filtered through Mac OS X 10.5). Replacement suggested by - Steve Grubb - - 11/21 - ----- -configure.in - - darwin 9 also requires linking against libreadline.a and - libhistory.a because of Apple's questionable decision to ship a - libreadline "replacement" that doesn't provide all functions - -doc/{bash.1,bashref.texi} - - slight change to the text describing the effect of set -e when - in a || or && list - - 12/5 - ---- -jobs.c - - fix raw_job_exit_status to correct mixing of int/WAIT values (need - to return a WAIT) - - arrange so that children run as part of command substitutions also - set the SIGINT handler to wait_sigint_handler, since they effectively - don't do job control - - in wait_for, if a child run as part of a command substitution exits - due to SIGINT, resend the SIGINT to the waiting shell with kill(2). - This makes sure the exit status propagates - -doc/{bash.1,bashref.texi} - - tighten up the language describing when bash tries to see if its - stdin is a socket, so it can run the startup files. Suggested by - Vincent Lefevre - -eval.c - - in the DISCARD case of a longjmp to top_level, make sure - last_command_exit_value is set to EXECUTION_FAILURE if it's 0, - but leave existing non-zero values alone - -subst.c - - in command_substitute, don't reset pipeline_pgrp in the child - process -- this means that second and subsequent children spawned by - this comsub shell get put into the wrong process group, not the - shell's. Fix for bug reported by Ingo Molnar - - 12/6 - ---- -support/shobj-conf - - make sure the cases for darwin8.x (Mac OS X 10.4.x) are extended to - darwin9.x (Mac OS X 10.5.x). Fixes problem originally reported - against readline-5.2 by schneecrash@gmail.com - - 12/8 - ---- -subst.c - - make sure to add the results of (successful) tilde expansion as a - quoted string, to inhibit pathname expansion and word splitting. - From recent Austin Group interpretation. - -include/shtty.h, lib/sh/shtty.c - - add ttfd_onechar, ttfd_noecho, ttfd_eightbit, ttfd_nocanon, and - ttfd_cbreak to set tty attributes associated with a particular - file descriptor (which is presumed to point to a terminal). Support - for fix for bug reported by b_bashbug@thebellsplace.com - -lib/readline/display.c - - make sure we only use rl_invis_chars_first_line when the number of - physical characters exceeds the screen width, since that's the - only time expand_prompt sets it to a valid value - - 12/12 - ----- -builtins/set.def - - change set_minus_o_option to return EX_USAGE if an invalid option - name is supplied. All callers can handle it. - - change set_builtin to return what set_minus_o_option returns if it's - not EXECUTION_SUCCESS. This allows EX_USAGE errors to abort a - shell running in posix mode - - 12/14 - ----- -builtins/read.def - - generalize the calls to the tty attribute functions to maintain a - local copy of the terminal attributes and use the fd supplied as - the argument to the -u option (default 0). Fix for bug reported - by b_bashbug@thebellsplace.com - -doc/bashref.texi, lib/readline/doc/{history,rlman,rluser,rluserman}.texi - - Slight changes to conform to the latest FSF documentation standards. - Patch from Karl Berry - - 12/20 - ----- -execute_cmd.c - - after calling clear_unwind_protect_list, make sure we reset - parse_and_execute_level to 0, since there's nothing left to - restore it if top_level_cleanup tests it. Fixes bug reported - by Len Lattanzi - - 12/31 - ----- -lib/sh/getcwd.c - - new function, _path_checkino, checks whether the inode corresponding - to the path constructed from the first two arguments is the same as - the inode number passed as the third argument - - if BROKEN_DIRENT_D_INO is defined, meaning the d_ino/d_fileno - member of struct dirent doesn't contain valid values, use - _path_checkino instead of directly comparing against d_fileno. - Fixes Interix problem reported by Michael Haubenwallner - - - 1/7/2008 - -------- -array.c - - fix array_subrange to separate elements in returned string with - first char of $IFS if QUOTED is non-zero, since this indicates - the caller used ${array[@]:foo}. Fixes bug reported by Lea - Wiemann - - 1/8 - --- -subst.c - - new function returning a string containing the first character of - $IFS: char *ifs_firstchar(int *) - -subst.h - - extern declaration for ifs_firstchar() - -array.c - - call ifs_firstchar() to get first character of $IFS when needed - (array_subrange() and array_patsub()) - - 1/11 - ---- -lib/readline/display.c - - use sentinel variable set at end of init_line_structures to decide - whether to call it from rl_redisplay, since early SIGWINCH on - Mac OS X that hits during this function can cause _rl_wrapped_line - to be referenced before initialization. Fix for bug reported by - Len Lattanzi - -subst.[ch] - - skip_to_delim is now compiled into the shell all the time, not just - when readline is linked in - -subst.c - - use skip_to_delim to find the `/' denoting the end of a pattern - in pattern substitution, since it knows more shell syntax than - quoted_strchr and understands multibyte characters. Fixes bug - reported by Dmitry V Golovashkin - - 1/15 - ---- -subst.c - - add `flags' argument to skip_to_delim telling it whether or not to - set no_longjmp_on_fatal_error; set this flag when calling from the - readline completion code - -subst.h - - update extern declaration for skip_to_delim - - 1/17 - ---- -subst.c - - expand_prompt_string takes a third argument: the initial flags for - the WORD - -subst.h - - change extern declaration for expand_prompt_string to add third arg - -bashline.c - - pass W_NOCOMSUB as third argment to expand_prompt_string when - calling from bash_directory_completion_hook, since we don't want - to do command substitution from the completion code - -parse.y - - change call to expand_prompt_string - - 1/18 - ---- -doc/Makefile.in - - added an `install_builtins' rule to install the builtins.1 man page, - preprocessing it with sed to force `.so man1/bash.1', which some - versions of man require. Suggestion from Peter Breitenlohner - - - new target `install_everything' that will install normal documentation - and builtins man page - - changed uninstall target to remove bash_builtins page from man - directory - -lib/readline/vi_mode.c - - new function, rl_vi_insert_mode, which calls rl_vi_start_inserting - to make sure the value of `last command to repeat' is set correctly. - Fix from Thomas Janousek - - add support for redoing inserts made with the `I' command. Fix - from Thomas Janousek - - add support for redoing inserts made with the `A' command - -lib/readline/readline.h - - new extern declaration for rl_vi_insert_mode - -lib/readline/{misc,readline,vi_mode,vi_keymap}.c - - change calls to rl_vi_insertion_mode to rl_vi_insert_mode - - 1/19 - ---- -builtins/read.def - - change timeout behavior when not reading from a tty device to save - any partial input in the variable list, but still return failure. - This also causes variables specified as arguments to read to be - set to null when there is no input available. Fix inspired by - Brian Craft - - 1/21 - ---- -builtins/fc.def - - change computation of last_hist to use remember_on_history instead - of a hard-coded `1'. This keeps fc -l -1 in PROMPT_COMMAND from - looking too far back - - 1/25 - ---- -lib/readline/complete.c - - fix fnwidth to use string[pos] instead of *string when testing the - current character for a control character or rubout - - 2/2 - --- -general.c - - change posix_initialize to turn off source/. searching $PWD when - the file sourced is not found in $PATH. Fixes bug reported by - Paolo Bonzini and Eric Blake - - 2/9 - --- -builtins/*.def - - changes to text and formatting suggested by Jan Schampera - - - 2/16 - ---- -bashline.c - - change command_word_completion_function to use the word completion - found by readline, which matters only when ignoring case is on - and the completion found in the file system differs in case from - the text the user typed (this is what readline does for normal - filename completion). Fixes issue reported by Jian Wang - . - - 2/18 - ---- -builtins/source.def - - if the filename passed as an argument contains a `/', don't search - $PATH. Not sure why it wasn't like this before - - 2/21 - ---- -lib/readline/terminal.c - - change rl_crlf so that the MINT system on ATARI systems adds a - carriage return before the \n - - 2/22 - ---- -doc/{bash.1,bashref.texi} - - added text to the EXIT STATUS section noting that exit statuses - fall between 0 and 255, inclusive - -support/mkversion.sh - - output a #define for DEFAULT_COMPAT_LEVEL (${major}${minor}; e.g. 32) - to version.h - -version.c - - int variable, shell_compatibility_level, set to DEFAULT_COMPAT_LEVEL - by default - -builtins/shopt.def - - new shopt variable, compat31, sets shell_compatibility_level to 31 - (or back to default if unset) - -execute_cmd.c - - in execute_cond_node, restore bash-3.1 behavior of quoted rhs of - regexp matches if shell_compatibility_level == 31 - - 2/28 - ---- -lib/readline/rltty.c - - set readline_echoing_p = 1 if tcgetattr fails and sets errno to - EINVAL, as Linux does when the fd is a pipe. Reported by Mike - Frysinger - - 3/6 - --- -{MANIFEST,Makefile.in},lib/sh/{casemod,uconvert,ufuncs}.c - - new library sources from bash-4.0-devel tree - -lib/sh/spell.c - - moved cdspell() here from builtins/cd.def, renamed dirspell() - -externs.h - - new declarations for extern functions from new library files - - new extern declaration for lib/sh/spell.c:dirspell() - -builtins/cd.def - - call extern library function dirspell(); remove static cdspell() - -builtins/read.def - - when read times out, make sure input_string is null-terminated before - assigning any partial input read to the named variables - - 3/10 - ---- -lib/glob/xmbsrtowcs.c - - cut the number of memory allocations in xdupmbstowcs by not keeping - track of the indices if the caller hasn't asked for it - - 3/17 - ---- -builtins/fc.def - - make sure the adjustment to i in fc_gethnum uses the same formula - fc_builtin uses to calculate last_hist - - make sure that every time fc_gethnum is called, the fc command last - in the history list has not yet been deleted, since fc_gethnum - assumes that it has not. Fix from John Haxby - -lib/readline/complete.c - - new private library function, _rl_reset_completion_state(), used to - reset any completion state internal to the library when a signal - is received - - call _rl_reset_completion_state() before returning from - rl_complete_internal - -lib/readline/rlprivate.h - - new extern declaration for _rl_reset_completion_state - -lib/readline/signals.c - - call _rl_reset_completion_state from rl_signal_handler on SIGINT. - This fixes one of the problems identified by Mika Fischer - - -pcomplete.c - - programmable_completions now saves pointer to the compspec it's - working with in new global variable CURCS - - new function, pcomp_set_readline_variables, that sets or unsets - readline variables based on a passed flags value (COPT_FILENAMES, - etc.) - - new function, pcomp_set_compspec_options, to set or unset bits in - the options word of a passed compspec (default CURCS) - - only call bash_dequote_filename (via rl_filename_dequoting_function) - from pcomp_filename_completion_function if the readline state - word indicates word completion is in progress - -pcomplete.h - - new extern declaration for curcs - - new extern declaration for pcomp_set_readline_variables - - new extern declaration for pcomp_set_compspec_options - -bashline.c - - fix bash_dequote_filename to implement shell quoting conventions: - 1. Inhibit backslash stripping within single quotes - 2. Inhibit backslash stripping within double quotes only if - the following character is one of the special ones - - call pcomp_set_readline_variables from attempt_shell_completion - instead of doing the equivalent inline - - 3/18 - ---- -bracecomp.c - - make sure we sort array of matches in byte order (using strcmp). so - the brace calculations work correctly even when the locale orders - characters like aAbBcC...zZ. Fixes bug reported by Torsten Nahm - - - 3/20 - ---- -lib/readline/{rltty,signals}.c - - move block_sigint and release_sigint from rltty.c to signals.c; add - _rl_ prefix to make them public to the library; change callers. - From Jan Kratochvil - -lib/readline/rlprivate.h - - new extern declarations for _rl_block_sigint and _rl_release_sigint - -lib/readline/display.c - - add calls to _rl_block_sigint and _rl_release_sigint to rl_redisplay, - since it maniupluates global data structures. Fix from Jan - Kratochvil - -builtins/printf.def - - change calls to asprintf and manually adding to vbuf to use calls - to vsnprintf against vbuf directly -- if the number of characters - to be written overflows the buffer, realloc the buffer and use - vsnprintf again. This should reduce the memory used by printf. - Idea from Yuya Katayama - -lib/readline/doc/rltech.texi - - documented rest of readline's state flags, including RL_STATE_CALLBACK - - documented rl_save_state and rl_restore_state - - 3/27 - ---- -lib/readline/{rlprivate.h,{display,readline,rltty,terminal,text}.c} - - rename readline_echoing_p to _rl_echoing_p for namespace consistency - -lib/readline/{rlprivate.h,{callback,readline,util}.c} - - rename readline_top_level to _rl_top_level for namespace consistency - -builtins/ulimit.def - - new -b (socket buffer size) and -T (number of threads) options - -array.c - - fix bug in calculation of the array element assignment string length: - use length of `is' instead of `indstr'. Reported as ubuntu bug - #202885 by John McCabe-Dansted - -builtins/setattr.def - - new function, show_all_var_attributes, displays attributes and - values for all shell variables (or shell functions) in a reusable - format - -builtins/common.h - - new extern declaration for show_all_var_attributes - -builtins/declare.def - - change `declare -p' to print out all variable attributes and values, - and `declare -fp' to print out all function attributes and - definitions. Inspired by request from John Love-Jensen - - -doc/{bash.1,bashref.texi} - - document new -b and -T options to ulimit - - tighten up language describing AND and OR lists - - add description of new behavior of `declare -p' - - 3/28 - ---- -pcomplete.c - - rename curcs -> pcomp_curcs - - new global completion variable, pcomp_curcmd, the current command - name being completed - -builtins/complete.def - - new builtin, compopt, allows completion options for command names - supplied as arguments or the current completion being executed to - be modified. Suggested by Mika Fischer - - 3/30 - ---- -doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi - - document new compopt builtin - - 4/5 - --- -support/shobj-conf - - change solaris10 stanza to use -fPIC to fix 64-bit sparc_v9/solaris10 - compilations. Fix from Fabian Groffen - -builtins/read.def - - added `-i text' option, inserts `text' into line if using readline. - Suggested by many, used some ideas from Kevin Pulo - -doc/{bash.1,bashref.texi} - - document new `-i text' option to read builtin - - 4/7 - --- -lib/readline/bind.c - - new settable variable, `history-size', sets the max number of - entries in the history list - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - document new `history-size' settable readline variable - - 4/8 - --- -builtins/complete.def - - change build_actions calling sequence to take a struct with `other' - (non-action) flag arguments (-p, -r) - - add support for `-E' option to build_actions and complete builtin -- - modifies or displays (internal) `_EmptycmD_' completion spec - -bashline.c - - change attempt_shell_completion to try programmable completion on an - `empty' command line and return the results - -doc/bash.1,lib/readline/doc/rluser.texi - - documented new `-E' option to `complete' - - 4/9 - --- -bashhist.c - - new variable, `enable_history_list', used to reflect setting of - `-o history' option - - change bash_history_{enable,disable,reinit} to set enable_history_list - as well as remember_on_history - -builtins/set.def - - use `enable_history_list' instead of `remember_on_history' to keep - value of `-o history' option - -builtins/evalstring.c - - instead of unwind-protecting remember_on_history, use a function to - restore it to the value of `enable_history_list' after - parse_and_execute runs the commands in the string. This allows - history to be turned off in a startup file, for instance. Problem - reported by Dan Jacobson - - 4/11 - ---- -bashline.c - - limited support for completing command words with globbing characters - (only a single match completed on TAB, absolute or relative - pathnames supported, no $PATH searching, some support for displaying - possible matches, can be used with menu completion). - Suggested by Harald Koenig - -print_cmd.c - - change redirection printing to output r_err_and_out as `&>file', - since the man page says that's the preferred form - - 4/12 - ---- -builtins/*.def - - change long doc so the first line is a short description - - add `Exit Status:' section to each longdoc describing exit values - -builtins/help.def - - new `-d' option to print short description of each utility - - new `-m' option to print description of each builtin in a - pseudo-manpage format (inspired by ksh93) - -doc/{bash.1,bashref.texi} - - document new `-d' and `-m' options to `help' - -builtins/mapfile.def - - new builtin, `mapfile', imported from bash-4.0-devel branch - -tests/{mapfile.{data,right,tests},run-mapfile} - - tests for `mapfile' builtin - -doc/{bash.1,bashref.texi} - - added description of `mapfile' builtin - -MANIFEST,Makefile.in,builtins/Makefile.in - - added entries for mapfile source files - -arrayfunc.[ch] - - new function, bind_array_element, to support mapfile builtin - - 4/20 - ---- -expr.c - - fix operator precendence in expcond(): term after the `:' is - a conditional-expression, not a logical-OR-expression (using C - terminology). Bug reported by - - 4/22 - ---- -bashintl.h - - new P_ define for using ngettext to decide on plural forms - (currently unused) - - 4/25 - ---- -execute_cmd.c - - in execute_disk_command, if the command is not found, search for - a shell function named `command_not_found_handle' and call it - with the words in the command as arguments. Inspired by Debian - feature. - -doc/{bash.1,bashref.texi} - - document new command_not_found_handle behavior in COMMAND EXECUTION - section - -configure.in - - change default version to bash-4.0-devel - - 4/28 - ---- -variables.c - - change push_func_var and push_exported_var to call - stupidly_hack_special_variables if the temporary variable is going - to be disposed. This undoes any internal changes caused by a local - variable assignment in the environment or in a shell function. Bug - reported by Morita Sho in - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096 - - 5/3 - --- -builtins/fc.def - - fixed a problem caused by change of 1/21 to use remember_on_history, - since it's turned off by parse_and_execute(), but can cause the - last command in history to be deleted and leave last_hist pointing - beyond the end of the history list. edit_and_execute_command can - do this. - -bashline.c - - new define, RL_BOOLEAN_VAR_VALUE, to take a readline boolean variable - and get its value as 0 or 1 (consider making readline global) - - put tty back into canonical mode before calling parse_and_execute in - edit_and_execute_command and then back into raw mode after it - returns. Fixes problem identified by . - - 5/4 - --- -lib/glob/glob.c - - code to support `globstar' option: GX_GLOBSTAR and two internal - flags. Changes to skipname, glob_vector, mbskipname, glob_filename. - New function finddirs(). - -lib/glob/glob.h - - new defines to support globstar code - -builtins/shopt.def - - new shell option, `globstar', enables special handling of `**' in - glob patterns -- matches all directories recursively - -pathexp.h - - extern declaration for glob_star - -pathexp.c - - break inline code out of quote_globbing_chars into a separate - function to decide whether a character is a globbing char: - glob_char_p - - change shell_glob_filename to call glob_filename with the - GX_GLOBSTAR flag if glob_star is set - -doc/{bash.1,bashref.texi} - - document new `globstar' shell option - -arrayfunc.c - - new function, broken out of quote_array_assignment_chars: - quote_assign; extended from old code to make sure that globbing - chars and chars in $IFS are quoted when displaying assignment - statements, especially in compound array assignments - - 5/5 - --- -bashline.c - - new variable, dircomplete_spelling, controls spelling correction - of directory names when doing filename completion - - change bash_directory_completion_hook to incorporate spelling - correction if initial canonicalization of directory name fails - -builtins/shopt.def - - new shell option, `dirspell', enables and disables spelling - correction of directory names during word completion - -builtins/read.def - - support for fractional timeout values (ival.uval); uses uconvert - and falarm/setitimer - -config.h.in - - new `HAVE_SETITIMER' define - -configure.in - - look for setitimer(2), define HAVE_SETITIMER if found - -doc/{bash.1,bashref.texi} - - document new `dirspell' shopt option - - document new fractional values to `read -t timeout' - - 5/6 - --- -assoc.[ch] - - new files, basic support for associative array implementation - -general.h - - new extern declarations for sh_openpipe, sh_closepipe, trim_pathname - -general.c - - new functions: sh_openpipe to create a pipe and move the file - descriptors to a high range; sh_closepipe, to close pipe fds and - clean up, and trim_pathname, to replace portions of a pathname - with `...' (for prompting) - -jobs.c - - don't set last_asynchronous_pid in child shell (messes up $!, among - other things) - -parse.y,parser.h - - moved definitions of parser flags to parser.h - -array.c - - imported array_modcase (case-changing operations on arrays) from - 4.0-devel branch - -array.h - - new extern declaration for array_modcase - -lib/readline/complete.c - - new variable, rl_menu_completion_entry_function, generator for - rl_menu_complete - - new menu completion `browsing' implementation, with several - improvements over the old code. Inspired by Sami Pietila - - -lib/readline/readline.h - - extern declaration for rl_menu_completion_entry_function - - 5/8 - --- -lib/readline/complete.c - - add support for a third argument to fnprint and print_filename, - which supports replacing a specified portion of the pathnames - printed when displaying possible completions with a `...' (or - `___', if the prefix would be confused with a portion of the - filename) - - new variable, _rl_completion_prefix_display_length, sets the - number of characters in a common prefix to be replaced with an - ellipsis when displaying possible completions - - add support to _rl_display_match_list to find the length of the - common prefix of all items being displayed, and passing that - value to print_filename for possible replacement with an ellipsis - if that length is longer than _rl_completion_prefix_display_length - -lib/readline/bind.c - - add support for retrieving value of history-size variable to - _rl_get_string_variable_value - - new bindable variable, completion-prefix-display-length. When - displaying possible completions, matches with a common prefix - longer than this value have the common prefix replaced with an - ellipsis - - support for retrieving value of completion-prefix-display-length - variable to _rl_get_string_variable_value - - new bindable variable, revert-all-at-newline: if enabled, causes - all changes in history lines to be undone before readline returns - after processing a newline - -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - document new `completion-prefix-display-length' variable - - document new `revert-all-at-newline' variable - -execute_cmd.c - - change execute_builtin to not inherit the `-e' flag into commands - executed by the `command' or `source/.' builtins if we are supposed - to be ignoring the return value. This is like `eval'. Fixes bug - reported by Hiroshi Fujishima - - 5/10 - ---- -variables.c - - when reading the initial environment, don't create variables with - names that are not valid shell identifiers. Fixes bug reported by - Stephane Chazleas - - 5/13 - ---- -subst.c - - fix string_quote_removal to gracefully handle the case where a - backslash is the final character in the string (leaves the backslash - in place). Fixes bug reported by Ian Robertson - - - 5/16 - ---- -support/checkbashisms - - Perl script that purports to check for bash-specific features in a - shell script. Lifted from Debian via ubuntu - - 5/20 - ---- -lib/readline/display.c - - in update_line, when deciding whether or not to adjust _rl_last_c_pos - in a multibyte environment after printing the last line of a multiline - prompt with invisible characters on the first and last lines, use - the number of inivisible chars on the first line in the calculation - deciding whether or not we're past the last invisible character and - need to adjust the cursor position. Old code used the number of - invisible chars on the last prompt line. Fixes bug reported by - stuff@slinkp.com. - - in update_line, when fixing _rl_last_c_pos after drawing the first - line of the prompt, use the number of invisible chars on the first - line as the offset, instead of the total number of invisible chars - - use prompt_multibyte_characters, the number of multibyte chars in - the prompt string, to short-circuit some relatively expensive - multibyte text processing in rl_redisplay - - 5/21 - ---- -variables.c - - new function, reinit_special_variables(), a hook for special - vars that need their hook functions called when they're unset as - a result of the shell reinitializing itself to run a script - -shell.c - - shell_reinitialize now calls reinit_special_variables - - shell_reinitialize now calls bashline_reset - -variables.h - - new extern declaration for reinit_special_variables - -bashline.c - - new function, bashline_reset(), called when the shell reinitializes - in shell_reinitialize. Right now, just resets - bash_readline_initialized to 0. - -bashline.h - - new extern declaration for bashline_reset() - - 5/23 - ---- -bashhist.c - - new function, bash_clear_history, clears the history and resets any - associated internal bash state - -bashhist.h - - extern declaration for bash_clear_history - -builtins/history.def - - call bash_clear_history instead of clear_history for `history -c'. - Fixes part of problem reported by Scott McDermott - - - decrement history_lines_this_session in delete_histent, called for - `history -d' - -builtins/history.def,bashhist.[ch] - - move delete_histent() to bashhist.c; rename to bash_delete_histent - - move delete_last_history() to bashhist.c; rename to - bash_delete_last_history() - - 5/25 - ---- -braces.c - - add another parameter to mkseq(), the number of digits to put into - each member of a numeric sequence (width), changes to determine - any zero-padding go into expand_seqterm - - changes to expand_seqterm to allow user-specified increments - -bashline.[ch],shell.c,sig.c - - switched names of bashline_reinitialize and bashline_reset to better - reflect their functions - - when searching $PATH for directories to use for command completion, - make sure to free `current_path' before going out of scope - - new bindable function `dabbrev-expand', which is more or less - menu completion using dynamic history completion as the generator - - changes to bash_execute_unix_command to set variables for the - executed command like programmable completion: READLINE_LINE - (rl_line_buffer) and READLINE_POINT (rl_point) - - change to bash_execute_unix_command to allow the executed command - to change the readline line buffer by modifying the value of - READLINE_LINE and to change rl_point by modifying the value of - READLINE_POINT - -common.h - - new SEVAL_ defines for later parse_string changes from 4.0-devel - branch - -command.h - - new defines for new &>> r_append_err_and_out redirection - -builtins/evalstring.c - - new function, parse_string, parses a command from a passed string - and returns the number of characters consumed. For satisfying - Posix rules when parsing command substitutions, from bash-4.0-devel - branch - - split out common prolog code from parse_string and - parse_and_execute into a separate function called from both - -parse.y - - small changes to add symbols needed for parse_string - - parser change to add `|&' as synonym for `2>&1 |'; translation is - performed at parse time so |& never shows up in output of - print_command, for instance. Picked up from zsh, merged in from - bash-4.0-devel branch - -parse.y,{redir,copy_cmd,dispose_cmd,make_cmd,print_cmd}.c - - implement new &>> r_append_err_and_out (like >>foo 2>&1); merged - in from bash-4.0-devel branch - -doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi - - document new optional increment in brace expansion - - document new zero-padded fixed-width integer brace expansion - - document new `dabbrev-expand' bindable readline command - - document new effects of `bind -x' setting and reading the values of - READLINE_LINE and READLINE_POINT - - document new |& synonym for `2>&1 |' pipeline operator - - 5/26 - ---- -parse.y - recognize new ;& and ;;& case action list terminator tokens and - implement them in the grammar, setting CASEPAT_FALLTHROUGH and - CASEPAT_TESTNEXT flags as appropriate - -print_cmd.c - - print new ;& and ;;& case clause action list terminators as - appropriate - -execute_cmd.c - - implement new case clause action list terminators: - ;& - fall through to actions associated with next pattern list - ;;& - fall through to tests in next pattern list - -doc/{bash.1,bashref.texi} - - document new ;& and ;;& case clause action list terminators - - 5/28 - ---- -jobs.c - - change waitchld so it treats SIGCHLD like SIGINT if `wait' is being - executed, and allows wait to jump out before running any trap set - on SIGCHLD. Fixes debian bug #483016 reported by Miroslav Rudisin - - - run_sigchld_trap is no longer static, so the trap code in trap.c - can call it - - change run_sigchld_trap to call set_impossible_sigchld_trap instead - of just using a call to restore_default_signal - -jobs.h - - new extern declaration for run_sigchld_trap - -trap.c - - fix run_pending_traps to run a SIGCHLD trap if the trap handler isn't - set to IMPOSSIBLE_TRAP_HANDLER - - in trap_handler, don't reset the SIGCHLD trap handler to trap_handler - if MUST_REINSTALL_SIGHANDLERS is defined - - new function, set_impossible_sigchld_handler, sets the trap string - associated with SIGCHLD to IMPOSSIBLE_TRAP_HANDLER; used as a sentinel - by run_sigchld_trap and maybe_set_sigchld_handler - - change maybe_set_sigchld_handler to set the SIGCHLD trap string only - if the current value is IMPOSSIBLE_TRAP_HANDLER. This ensures that - any traps on SIGCHLD set in a SIGCHLD handler will persist. Fixes - debian bug #483016 reported by Miroslav Rudisin - - -trap.h - - new extern declaration for set_impossible_sigchld_trap - - 5/31 + 8/27 ---- -parse.y - - new function: parse_comsub(), parses $(...) by parsing command - between parens and making sure the next token is `)'. From - the bash-4.0-devel branch - - new function: xparse_dolparen, helper function for parsing - command substitutions in $(...). Called from subst.c to extract - a command substitution during word expansion. From bash-4.0-devel - branch - - new function: rewind_input_stream(). Rewinds bash_input.location.string - back to where it was before the shell parsed a $() command - substitution. From bash-4.0-devel branch - - changes to parse_matched_pair to combine most of the flag variables - (was_dollar, in_comment, and so on) into a local flags word - - 6/2 - --- -parse.y - - call trim_pathname, which retains only the last $PROMPT_DIRTRIM - directories and replaces the intervening characters with `...', - when expanding \w and \W - doc/{bash.1,bashref.texi} - - document the effect of setting PROMPT_DIRTRIM - - 6/3 - --- -builtins/ulimit.def - - make the multiplier (block size) for -c and -f 512 bytes only if in - Posix mode and 1024 bytes otherwise (as in previous versions). Uses - POSIXBLK and BLOCK_SIZE defines to parameterize size based on value - of posixly_correct - -doc/bashref.texi - - document this addition to posix mode - -builtins/common.c - - change get_numeric_arg to have a calling sequence and return value - more closely mimicking general.c:legal_number(), with the addition - of a flags word - - add extra value for `fatal' argument to get_numeric_arg to force it - to return failure to the caller rather than longjmping - -builtins/common.h - - change prototype declaration for get_numeric_arg - -builtins/{break,shift}.def - - change calls to get_numeric_arg to deal with new semantics and calling - sequence - -builtins/history.def - - display_history now returns an int - - change calling sequence for get_numeric_arg in display_history - - display_history now returns failure to the caller if get_numeric_arg - detects an invalid number, rather than jumping back to the top level - - use value returned by display_history as return status of history - builtin, filtered through sh_chkwrite - - history no longer aborts compound commands on invalid arguments. - fixes problem reported by Chu Li - -{braces,subst}.c - - extract_command_subst now takes a third flags argument; passed flags - are ORd into flags passed to other functions; changed callers - -subst.h - - move SX_* defines here from subst.c so parse.y:xparse_dolparen can - see them and behave appropriately - - extract_command_subst now takes a third flags argument; change - prototype - -subst.c - - change extract_command_subst to call xparse_dolparen when extracting - a $() construct - - change calls to extract_delimited_string to extract_command_subst - as appropriate - - if command_substitute returns a NULL word desc, don't call - dispose_word_desc on it - -parse.y - - change xparse_dolparen to use the SX_* flags now in subst.h - - 6/16 - ---- -subst.c - - in quote_list, set W_HASQUOTEDNULL flag in the word if quote_string - turns "" into CTLNUL - - in dequote_list, turn off W_HASQUOTEDNULL flag in the word if - dequote_string turns CTLNUL into "" - - new function, string_list_pos_params, encapsulates everything - needed to turn the positional parameters or an array indexed with - '@' or '*' into a string, including taking care of quoting and - using the first char of $IFS, when used in another expansion like - pattern removal or pattern substitution - - change list_remove_pattern, pos_params, pos_params_pat_subst to - call string_list_pos_params. Fixes problems reported by - Stephane Chazelas - - 6/22 - ---- -variables.h - - include assoc.h for associative arrays - - defines for case-modifying expansions and associative array variables - - sh_var_assign_func_t functions now take an extra char * parameter + - minor changes to the here string description to clarify the + expansions performed on the word - 6/25 - ---- -variables.c - - change declarations and definitions of sh_var_assign_func_t functions - to add the extra char * parameter: null_assign, null_array_assign, - assign_seconds, assign_random, assign_lineno, assign_subshell, - assign_dirstack - - change calls to var->assign_func to add extra char * argument - - broke part of body of dispose_variable out into a new function, - dispose_variable_value, which knows how to free all kinds of shell - variable data - - changes to deal with variables with the internal `nofree' attribute - -arrayfunc.c - - change calls to var->assign_func to add extra char * argument - - bind_array_var_internal now takes an extra `char *key' argument - - additions for associative array implementation; from bash-4.0-devel - tree - -arrayfunc.[ch],subst.c - - expand_compound_array_assignment now takes the variable as the first - argument (SHELL_VAR *); changed function definition and callers - -builtins/set.def - - changes to handle associative arrays in `unset' - -{execute_cmd,command}.h - - definitions for coproc implementation; from bash-4.0-devel tree - -variables.c - - new functions for associative arrays: make_new_assoc_variable, - make_local_assoc_variable - - 6/26 - ---- -variables.c - - more infrastructure for associative arrays; from bash-4.0-devel tree - - infrastructure for handling assignments to variables with - case-modifying attributes; from bash-4.0-devel tree - -config.h.in - - add #defines controlling case-modifying variable attributes and word - expansions - -configure.in - - add enable options for case-modifying variable attributes and word - expansions (--enable-casemod-attributes and --enable-casemod-expansions, - respectively); from bash-4.0-devel tree - -execute_cmd.c - - add code to fix_assignment_words to handle assignment statements to - "assignment builtins" that seem to be associative arrays. Imperfect - -subst.c - - array_remove_pattern now takes a SHELL_VAR * as its first argument - instead of an ARRAY *; from the bash-4.0-devel tree - - changes to array_length_reference for associative arrays; from the - bash-4.0-devel tree - - changes to get_var_and_type for associative arrays; from the - bash-4.0-devel tree - - changes to parameter_brace_substring for associative arrays; from the - bash-4.0-devel tree - - changes to param_expand for associative arrays; from the - bash-4.0-devel tree +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 -builtins/declare.def - - changes for associative arrays: new `-A' option, changes to make - local and global associative array variables; from the bash-4.0-devel - tree +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 - 6/27 + 8/30 ---- -execute_cmd.c - - in execute_command_internal, when short-circuiting execution - because `breaking' or `continuing' is non-zero, preserve the exit - status by returning `last_command_exit_value' instead of an - unconditional EXECUTION_SUCCESS. Fixes bug reported by Roman - Rakus +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 + - 6/28 - ---- -variables.c - - fix get_var_and_type to appropriately handle references like - ${varname[0]}, where `varname' is a scalar variable + 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; -make_cmd.[ch],parse.y - - make_here_document now takes a second argument: the current line - number; changed caller (gather_here_documents) +externs.h + - sh_backslash_quote: add second argument to function prototype -builtins/setattr.def - - added support for associative arrays and the `-A' variable attribute - option; from the bash-4.0-devel tree +bashline.c,braces.c,parse.y,builtins/printf.def + - change callers of sh_backslash_quote to add second argument -subst.c - - change code that transforms `declare -A xxx=(yyy)' to perform the - internal `declare -A xxx' before doing the variable assignment, - because associative arrays have to be declared before being assigned - to as such; uses new function make_internal_declare +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 - 6/30 + 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 ---- -subst.[ch] - - dequote_escapes is now external; add declaration in subst.h - - remove_quoted_nulls is now external; add declaration in subst.h +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 -array.[ch] - - new functions for completeness: array_dequote, array_dequote_escapes, - array_remove_quoted_nulls - - array_subrange now calls array_remove_quoted_nulls for "${array[*]}". - Fixes bug reported by Vitor De Araujo - - array_patsub now calls array_remove_quoted_nulls for "${array[*]}" - - array_modcase now calls array_remove_quoted_nulls for "${array[*]}" - - array_patsub now handles the mflags&MATCH_QUOTED case appropriately - (that implies "${array[@]}") + 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 -subst.c - - new functions for case-modifying word expansion suppport: - pos_params_casemod, parameter_brace_casemod; from bash-4.0-devel branch + 9/19 + ---- +expr.c + - exppower: replace the simple exponentiation algorithm with an + implementation of exponentiation by squaring. Inspired by report + from Nicolas ARGYROU -assoc.c - - new functions for completeness: assoc_remove_quoted_nulls - - assoc_patsub now calls assoc_remove_quoted_nulls for "${assoc[*]}" - - assoc_modcase now calls assoc_remove_quoted_nulls for "${array[*]}" - - assoc_patsub now handles the mflags&MATCH_QUOTED case appropriately - (that implies "${assoc[@]}") +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 - 7/1 - --- -assoc.[ch] - - new function, assoc_subrange: takes a hash table, converts it to a - word list, and performs the subrange and indexing on that list - - new functions for completeness: assoc_dequote, assoc_dequote_escapes +doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi + - minor editorial changes inspired by suggestions from + Roger Zauner -subst.c - - verify_substring_values now takes the variable SHELL_VAR * as its - new first argument; changed callers - - change verify_substring_values to handle associative arrays using the - number of elements as the upper bound - - brought in code to do case-modifying word expansions from - bash-4.0-devel branch, conditional on CASEMOD_EXPANSIONS + 9/20 + ---- +lib/intl/localealias.c + - read_alias_file: close resource leak (fp) when returning on error -input.c - - if the read(2) in getc_with_restart returns -1/EAGAIN, turn off - non-blocking mode on the file descriptor and try again. Fixes - problem reported by Glynn Clements + 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 - 7/2 - --- + 9/25 + ---- doc/{bash.1,bashref.texi} - - documented new case-modifying word expansions + - formatting and some content changes from Benno Schulenberg + + - document new posix-mode behavior from interp 383 change of 9/22 -make_cmd.c - - change make_here_document to display a warning message including the - start line of a here document if it ends up delimited by EOF. - Addresses issue raised by Richard Neill + 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 -subst.c - - in do_assignment_internal, make sure the `invisible' attribute is - unset before returning success + 10/1 + ---- +bashhist.c + - maybe_add_history: act as if literal_history is set when parser_state + includes PST_HEREDOC, so we save the bodies of here-documents just + as they were entered. Fixes bug reported by Jonathan Wakely + + - bash_add_history: make sure that the second and subsequent lines of + a here document don't have extra newlines or other delimiting + chars added, since they have the trailing newline preserved, when + `lithist' is set and history_delimiting_chars isn't called - 7/3 - --- -config-top.h - - add `CASEMOD_CAPCASE' define to include or exclude the ~[~] word - expansion and the `capcase' variable attribute (declare -c) +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 -builtins/declare.def - - add support for manipulating the case-modifying attributes (new - declare -clu); from bash-4.0-devel branch +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. -builtins/setattr.def - - add support for reporting case-modifying attributes (-clu attributes); - from bash-4.0-devel branch +bashline.c + - bash_default_completion: if variable completion returns a single + match, use bash_filename_stat_hook and file_isdir to determine + whether or not the variable name expands to a directory. If it + does, set the filename_append_character to `/'. This is not + perfect, so we will see how it works out. Adds functionality + requested by Peter Toft and Patrick Pfeifer + + - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things + like $HOME/Downloads (after completion) have a slash appended. + In general, this causes the stat hook to be called whenever + filename completion is appended. Adds functionality requested by + Patrick Pfeifer -doc/{bash.1,bashref.texi} - - specify that the read builtin timing out results in a return value - greater than 128 - - document new `-l' and `-u' options to declare/typeset/local. Leave - `-c' undocumented for now +lib/readline/readline.h + - new extern declaration for rl_filename_stat_hook - 7/4 - --- -make_cmd.[ch] - - make_coproc_command: construct a coproc; from bash-4.0-devel tree +lib/readline/doc/rltech.texi + - rl_directory_rewrite_hook: now documented + - rl_filename_stat_hook: document -dispose_cmd.c - - dispose coproc command; from bash-4.0-devel tree +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 -copy_cmd.c - - copy a coproc command; from bash-4.0-devel tree +assoc.[ch] + - assoc_replace: new function, takes the same arguments as + assoc_insert, but returns the old data instead of freeing it + - assoc_insert: if the object returned by hash_insert doesn't have + the same value for its key as the key passed as an argument, we + are overwriting an existing value. In this case, we can free the + key. Fixes bug reported by David Parks + 10/5 + ---- print_cmd.c - - print a coproc command; from bash-4.0-devel tree - -shell.c - - dispoe the current coproc on shell exit; from bash-4.0-devel tree + - indirection_level_string: small change to only re-enable `x' + option after calling decode_prompt_string if it was on before. In + normal mode, it will be, but John Reiser + has a novel use for that code in conjunction with a pre-loaded + shared library that traces system call usage in shell scripts -redir.c - - when closing redirects as part of user redirections, check whether - or not active coprocess fds are being closed and close the coproc - if so; from bash-4.0-devel tree - -config.h.in - - add define for COPROCESS_SUPPORT to include coprocesses + 10/10 + ----- +Makefile.in + - Fix from Mike Frysinger to avoid trying to + build y.tab.c and y.tab.h with two separate runs of yacc if + parse.y changes. Problem with parallel makes + - Fix from Mike Frysinger to avoid subdirectory + builds each trying to make version.h (and all its dependencies) -configure.in - - add support for configuring coprocesses into and out of the build +lib/sh/Makefile.in + - remove some dependencies on version.h where it doesn't make sense -jobs.c - - in waitchld, check whether or not a coproc processs has exited; - from the bash-4.0-devel tree +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 - 7/5 - --- -doc/bashref.texi - - document new --enable-coprocesses option that includes coprocess - support + 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 + -execute_cmd.c - - add functions for coprocess support, including execute_coproc and - code to call it when command->type == cm_coproc; from - bash-4.0-devel tree + 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 -lib/sh/fdprintf.c - - new library function fdprintf(int fd, const char *format, ...); - printf to a file descriptor + 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 -{configure,config.h}.in - - support for detecting fdprintf and compiling in replacement + 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 -Makefile.in,lib/sh/Makefile.in - - add rules to include fdprintf.o +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 -doc/{bash.1,bashref.texi} - - documented coprocesses and `coproc' reserved word + 10/25 + ----- +expr.c + - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1 + for DIV and MOD and avoid SIGFPE. Bug report and pointer to fix + from Jaak Ristioja + - expassign: same changes for arithmetic overflow for DIV and MOD - 7/7 - --- + 10/28 + ----- subst.c - - fix array_length_reference to use MB_STRLEN instead of STRLEN, so - multibyte characters in array values are computed correctly. Fixes - bug reported by Wang Xin - - 7/10 - ---- -jobs.c - - new function, maybe_give_terminal_to (old, new, flags), sets the - terminal pgrp to NEW if and only if it's currently set to OLD - - call maybe_give_terminal_to when the parent sets the terminal pgrp - to the pipeline pgrp in stop_pipeline, so we don't give the - terminal to the new job's pgrp unless it's currently owned by the - shell. Fixes race condition described by Joe Peterson - , where parent bash may change tty pgrp after a - grandchild (interactive bash child of su) has changed it to - something else. The call to maybe_give_terminal_to makes explicit - a previously-implicit assumption + - 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 -aclocal.m4 - - remove dependency on writable /tmp by creating directories in - build directory +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 -shell.c - - make changes to how bash sets no_line_editing and running_under_emacs - to deal with various emacs terminal emulators; use better check - for `eterm', since bash sends $PWD to eterm with control sequences - that confuse other programs. Problem reported by Micah Cowan - +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 - 7/12 - ---- -print_cmd.c - - break code that prints here-documents into two functions: - print_heredoc_header, which prints the operator and delimiter, and - print_heredoc_body, which prints the body text and closing delimiter - - change print_redirection to call print_heredoc_{header,body} - - sentinel variable, printing_connection, used when printing a command - of type `connection' (|, &&, ||, etc.) - - change print_redirection_list to save any here documents it finds - while printing a connection and save them in `deferred_heredocs' - - new function, print_deferred_heredocs, called from print_redirection - in the cm_connection case, calls print_heredoc_header for all the - here documents, then prints the operator (|, &&, ||, etc.), then - the here-document body. This preserves syntactic correctness; the - old code printed the control operator after the body of the here - document. Fixes bug reported by - - 7/16 + 11/2 ---- -locale.c - - in set_locale_var, print a warning message if setlocale() fails any - time it's called -- required some code restructuring +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 - 7/19 + 11/5 ---- -support/shobj-conf - - support for mingw32, contributed by Carlo Bramix - +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 - 7/23 - ---- execute_cmd.c - - added support (currently unused) to manage a list of coprocs + - 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 - 7/25 - ---- bashline.c - - add extern declarations for literal_history and force_append_history + - 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 -builtins/shopt.def - - include "bashhist.h" instead of having extern declarations for the - appropriate history variables +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 -parser.h - - new parser_state value: PST_HEREDOC, set when reading body of here- - document in parse.y:read_secondary_line +redir.c + - redirection_error: free `filename' if the redirection operator is + REDIR_VARASSIGN by assigning allocname -parse.y - - set PST_HEREDOC bit in parser_state when reading a secondary line - for the body of a here-document - - change read_secondary_line to save lines in the body of a here- - document in the shell history list if remember_on_history is - set. Fixes bug reported by Gene Golub +eval.c + - send_pwd_to_eterm: fix memory leak by freeing value returned by + get_working_directory() - 8/4 - --- -configure.in - - changed to 4.0-alpha +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() -lib/readline/readline.h - - changed constants to reflect readline-6.0 version +builtins/type.def + - describe_command: free `full_path' before overwriting it with return + value from sh_makepath - 8/11 - ---- -lib/readline/signals.c - - make sure we don't use SIGWINCH without checking whether or not it's - defined. Fix from Pedro Alves +builtins/complete.def + - compgen_builtin: fix memory leak by calling strlist_dispose (sl) + before overwriting sl with return value from completions_to_stringlist - 8/12 - ---- +builtins/hash.def + - list_hashed_filename_targets: fix memory leak by freeing `target' -COPYING - - updated to GPLv3; edits in every file with a copyright or license - declaration to update to gpl3 +make_cmd.c + - make_arith_for_command: free `init', `test', and `step' before + returning error on parse error -version.c - - update extended version info to latest gnu standard +jobs.c + - initialize_job_control: don't call move_to_high_fd if shell_tty == -1 - 8/17 - ---- -subst.c - - change exp_jump_to_top_level to only call top_level_cleanup if - parse_and_execute_level is 0. If it's not, the longjmp to - parse_and_execute will run the unwind-protect stack. Fixes bug - most recently reported by Roman Rakus +general.c + - check_dev_tty: don't call close with an fd < 0 + - legal_number: deal with NULL `string' argument, return invalid - 8/18 - ---- -support/config.{guess,sub} - - updated to newer versions from autoconf-2.62 distribution +lib/sh/fmtulong.c + - fmtulong: if the `base' argument is invalid, make sure we index + buf by `len-1' at maximum - 8/20 - ---- -subst.c - - fixed parameter_brace_substring to differentiate between indexed and - associative arrays when computing second offset, instead of - assuming indexed array +print_cmd.c + - print_deferred_heredocs: don't try to dereference a NULL `cstring' + - cprintf: make sure to call va_end (args) - 8/21 - ---- -support/xcase.c - - simple program to convert input from lower to uppercase and vice - versa. Now used by coproc test suite, since `tr -u' is not - portable. +variables.c + - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *) + instead of sizeof (WORD_LIST **) - 8/22 +lib/sh/zmapfd.c + - zmapfd: if read returns error, free result and return -1 immediately + instead of trying to reallocate it + + 11/6 ---- -doc/bash.1 - - fixed description of the bindable edit-and-execute commands to note - they check $VISUAL first, instead of $FCEDIT. Fixed bug reported - by +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 -[bash-4.0-alpha frozen] + 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 + - 8/28 - ---- -[bash-4.0-alpha released] +lib/readline/callback.c + - change CALLBACK_READ_RETURN to clear signal handlers before returning + from rl_callback_read_char so readline's signal handlers aren't + installed when readline doesn't have control. Idea from Jan + Kratochvil and the GDB development + team - 9/1 - --- -builtins/evalstring.c - - fixed typo in parse_string (ostring used uninitialized). Bug - reported by Andreas Schwab +pcomplete.h + - COPT_NOQUOTE: new complete/compgen option value -subst.c - - fix return value of parameter_brace_expand to set the - W_HASQUOTEDNULL flag in the returned WORD_DESC * if the return value - from parameter_brace_remove_pattern is a quoted null string. Fixes - bug reported by Andreas Schwab - - set the W_HASQUOTEDNULL flag in the return value from - parameter_brace_expand if the return value from parameter_brace_patsub - is a quoted null string - - 9/6 - --- -builtins/read.def - - change read -t 0 to return success if there is input available to be - read -- allows scripts to poll for input. Uses input_avail libsh - function +builtins/complete.def + - noquote: new complete/compgen option; will be used to disable + filename completion quoting - 9/9 - --- -externs.h - - fix extern fpurge declaration -- use HAVE_DECL_FPURGE instead of - NEED_FPURGE_DECL, since the former is set by `configure' +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) -jobs.h - - add extern declaration for close_pgrp_pipe - - add a new job state JNONE (-1) to the enum +doc/bash.1,lib/readline/doc/rluser.texi + - document new -o noquote option to complete/compgen/compopt -jobs.c - - include execute_cmd.h for extern declarations for coproc functions +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 + -subst.c - - include builtins/builtext.h for extern declarations for functions - implementing builtins (e.g., declare_builtin) +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 -arrayfunc.c - - include "pathexp.h" for extern declaration for glob_char_p +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 -braces.c - - add extern declaration for `asprintf' +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 -lib/readline/rlprivate.h - - add extern declarations for _rl_trace, _rl_tropen + 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 -lib/sh/zgetline.c - - add extern declarations for zread, zreadc +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 -lib/sh/mktime.c - - include "bashansi.h" for string function declarations + 11/23 + ----- +parse.y + - save_input_line_state: add missing `return ls' at the end, since the + function is supposed to return its argument. Pointed out by + Andreas Schwab -builtins/common.h - - add extern declaration for parse_string +builtins/read.def + - skip over NUL bytes in input, as most modern shells seem to. Bug + report by Matthew Story -trap.c - - include jobs.h for extern declaration for run_sigchld_trap +lib/readline/vi_mode.c + - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key -general.c - - fix call to strtoimax in legal_number; if ep == string when function - returns, the number was not converted, even if errno is not set. - Fix from Paul Jarc + 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 + - 9/11 - ---- -[prayers for the victims of 9/11/2001] +lib/readline/vi_mode.c + - rl_vi_replace: initialize characters before printing characters in + vi_replace_keymap to their default values in vi_insertion_keymap, + since we're supposed to be in insert mode replacing characters + - rl_vi_replace: call rl_vi_start_inserting to set last command to + `R' for undo + - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future + use by _rl_vi_done_inserting + - vi_save_insert_buffer: new function, broke out code that copies text + into vi_insert_buffer from _rl_vi_save_insert + - _rl_vi_save_replace: new function, saves text modified by + rl_vi_replace (using current point and vi_replace_count to figure + it out) to vi_replace_buffer + - _rl_vi_save_insert: call vi_save_insert_buffer + - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call + _rl_vi_save_replace to save text modified in replace mode (uses + vi_save_insert_buffer) + - _rl_vi_replace_insert: new function, replaces the number of chars + in vi_insert_buffer after rl_point with contents ov vi_insert_buffer + - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and + there's something in vi_insert_buffer. Fixes bug with `.' not + redoing the most recent `R' command, reported by Geoff Clare + in readline area on savannah -builtins/return.def - - call no_options, as Posix requires. This also has the effect of - disallowing negative return values unless they're prefixed by `--' + 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 - 9/13 - ---- -builtins/bind.def - - add an error message when bind is used without line editing active, - instead of just returning an error status +lib/readline/complete.c + - remove all mention of _rl_interrupt_immediately + - rl_completion_matches: check RL_SIG_RECEIVED after each call to + the entry function, call RL_CHECK_SIGNALS if true to handle the + signal + - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free + and zero out the match_list this function allocated + - rl_completion_matches: if the completion entry function is + rl_filename_completion_function, free the contents of match_list, + because that function does not keep state and will not free the + entries; avoids possible memory leak pointed out by + Garrett Cooper + - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after + calling rl_attempted_completion_function, free the returned match + list and handle the signal with RL_CHECK_SIGNALS; avoids + possible memory leak pointed out by Garrett Cooper + + - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after + calling rl_completion_matches, free the returned match list and + handle the signal with RL_CHECK_SIGNALS -variables.c - - make sure make_local_variable never creates visible variables with - a value, whether or not a variable with the same name existed in a - previous context. This is consistent with ksh93. Fix from - +lib/readline/util.c + - rl_settracefp: new utility function to set the tracing FILE * - 9/16 - ---- -execute_cmd.c - - add call to CHECK_TERMSIG in shell_execve after the call to execve - returns. Recommended by Roman Rakus - - add QUIT check in execute_connection after executing first command - in a `&' connection +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) - 9/22 - ---- -execute_cmd.c - - new semaphore variable, executing_list, incremented every time a - list (command1;command2 or command1 || command2 or command1 && - command2) is executed; used as sentinel for rest of shell +lib/readline/rlprivate.h + - extern declarations for _rl_sigcleanup and _rl_sigcleanarg -sig.c,builtins/evalstring.c - - set executing_list to 0 when throwing execution back to top level; - make sure to unwind-protect it in appropriate places +lib/readline/complete.c + - _rl_complete_sigcleanup: signal cleanup function for completion code; + calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT + - rl_complete_internal: before calling display_matches if what_to_do + == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match + list gets freed on SIGINT; avoids possible memory leak pointed out + by Garrett Cooper + - rl_complete_internal: in default switch case, call _rl_free_match_list + before returning to avoid memory leak -jobs.c - - if a pipeline is killed by SIGINT while executing a list (when - executing_list is non-zero), make sure the shell acts as if an - interrupt occurred. The behavior is dependent on the shell - compatibility level being > 32 (bash-4.0 and above) +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 - 9/23 + 12/1 ---- -redir.c - - don't bother reporting an error with a file descriptor, even if - the errno is EBADF, if the redirection error (e.g., NOCLOBBER) - can't have anything to do with the fd. Fixes bug reported by - "David A. Harding" , debian bug #499633. +lib/glob/gmisc.c + - extglob_pattern: new function, returns 1 if pattern passed as an + argument looks like an extended globbing pattern - 9/24 - ---- -builtins/declare.def - - make `declare [option] var' (and the `typeset' equivalent) create - invisible variables, instead of assigning the null string to a - visible variable. Fixes bug reported by Bernd Eggink +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 + - 9/25 + 12/2 ---- -builtins/common.[ch] - - new function, builtin_warning(), like builtin_error but for warning - messages +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 -builtins/bind.def - - experimental: print a warning, but go on, if line editing not active - when bind is invoked. Suggested by Rocky Bernstein - +lib/glob/glob.c + - extern declarations for glob_patscan, glob_patscan_wc + - wchkname: new function, does skipname on wchar_t pattern and dname, + old body of mbskipname after converting to wide chars + - extglob_skipname: new function, checks all subpatterns in an extglob + pattern to determine whether or not a filename should be skipped. + Calls skipname for each subpattern. Dname is only skipped if all + subpatterns indicate it should be. Better fix for bug reported by + Yongzhi Pan + - wextglob_skipname: wide-char version of extglob_skipname, calls + wchkname instead of calling back into mbskipname for each + subpattern to avoid problems with char/wchar_t mismatch + - skipname: call extglob_skipname if extglob_pattern returns non-zero + - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero + - mbskipname: short-circuit immediately if no multibyte chars in + pattern or filename - 10/3 - ---- -test.c - - use same_file instead of directly comparing st_dev and st_ino when - comparing files in filecomp(). From mingw32 patches submitted - by Hector Chu +execute_cmd.c + - execute_cond_node: added parens to patmatch assignment statement to + make intent clearer - 10/4 + 12/3 ---- +configure.in,config.h.in + - check for imaxdiv, define HAVE_IMAXDIV if present -redir.c - - in redirection_error(), use `error' instead of errno when comparing - against EBADF. From mingw32 patches submitted by Hector Chu - +expr.c + - expassign, exp2: use imaxdiv if available. Doesn't help with checks + for overflow from 10/25 -shell.c - - in unset_bash_input(), reset bash_input.type to st_none after - closing the default buffered fd. From mingw32 patches submitted - by Hector Chu + 12/6 + ---- +lib/readline/complete.c + - compute_lcd_of_matches: if we're ignoring case in the matches, only + use what the user typed as the lcd if it matches the first match + (after sorting) up to the length of what was typed (if what the + user typed is longer than the shortest of the possible matches, use + the shortest common length of the matches instead). If it doesn't + match, use the first of the list of matches, as if case were not + being ignored. Fixes bug reported by Clark Wang + + 12/7 + ---- builtins/cd.def - - ignore CDPATH when in privileged mode. Suggested by Paul Jarc - + - 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) -variables.c - - change sv_globignore to only act if privileged mode is not enabled. - Suggested by Paul Jarc +doc/{bash.1,bashref.texi} + - note that additional arguments to cd following the directory name + are ignored. Suggested by Vaclav Hanzl -doc/bash.1,bashref.texi - - document new treatment of CDPATH and GLOBIGNORE when privileged - mode is enabled + 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 -builtins/read.def - - change prompt printing to occur after terminal is set to no-echo - mode. Based on suggestion from Stephane Chazelas - +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/signals.c - - new variables to keep track of special characters corresponding to - SIGINT, SIGQUIT, and SIGTSTP - - new variable to keep track of whether tty is echoing control - characters corresponding to SIGINT, SIGQUIT, and SIGTSTP - - new function, _rl_echo_signal_char(int sig) to display the tty - special char generating SIGINT, SIGQUIT, or SIGTSTP. Based on - idea and code from Joe Peterson - - call rl_echo_signal_char in rl_signal_handler: if the terminal - settings indicate it, readline will echo characters that generate - keyboard signals +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/rltty.c - - set _rl_intr_char, _rl_quit_char, and _rl_susp_char to special - characters that generate signals from keyboard - - set _rl_echoctl if ECHOCTL tty flag is set +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 - - extern declarations for _rl_intr_char, _rl_quit_char, and - _rl_susp_char - - extern declaration for _rl_echoctl - -lib/readline/readline.h - - extern declaration for rl_echo_signal_char() + - new extern declaration for _rl_executing_keyseq_size, buffer size + for rl_executing_keyseq lib/readline/doc/rltech.texi - - document rl_echo_signal_handler(): available for applications - that install their own signal handlers - - 10/5 - ---- -execute_cmd.c - - fix errexit logic to not cause the shell to exit when a command in - a pipeline fails. Fixes bug reported by Marcin Owsiany - + - documented new variables: rl_executing_key, rl_executing_keyseq, + rl_key_sequence_length - 10/14 + 12/13 ----- -builtins/evalstring.c - - don't short-circuit execution in parse_and_execute if we want to - run an exit trap. Fixes bug reported by Steffen Kiess - +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 + - 10/18 + 12/15 ----- -parse.y - - fix error production to only call YYACCEPT if the shell is currently - interactive and not in parse_and_execute (so parser errors in - things like eval will correctly set $?). Fixes bug reported by - marco-oweber@gmx.de +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 - - make sure variable name errors in execute_for_command and non- - identifier function names in execute_intern_function set the - return status to EX_BADUSAGE (2), not EX_USAGE (258) - -parser.h - - new parser state, PST_REPARSE + - 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 -parse.y - - turn PST_REPARSE on in parse_string_to_word_list - - in parse_matched_pair, if parsing a single-quoted string and - PST_REPARSE is set, don't requote CTLESC or CTLNUL. Fixes bug with - compound array assignment using $'\x7f' reported by Antonio Macchi - +expr.c + - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1; + fix typos and logic errors - 10/23 + 12/16 ----- -configure.in - - define LOCAL_LDFLAGS as `-z interpose' on Solaris 8, 9, and 10 to - allow the bash malloc to interpose the libc malloc when called by - library functions pre-bound to the libc malloc. Suggested by - Serge Dussud +bashline.c + - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over + command substitutions and doesn't treat them as command separators + - attempt_shell_completion: instead of taking first return from + find_cmd_name as command name to use for programmable completion, + use loop to skip over assignment statements. Fixes problem reported + by Raphael Droz + - attempt_shell_completion: if we don't find a command name but the + command line is non-empty, assume the other words are all assignment + statements and flag that point is in a command position so we can + do command name completion + - attempt_shell_completion: if the word being completed is the first + word following a series of assignment statements, and the + command line is non-empty, flag that point is in a command position + so we can do command name completion - 10/26 - ----- -doc/bash.1 - - add single-sentence descriptions to rest of parameter expansions. - Suggested by Ken Irving +lib/readline/history.c + - history_get_time: atol -> strtol - 10/27 + 12/18 ----- -subst.c - - rearrange code in skip_to_delims to allow quote characters and other - shell expansion characters to be delimiters - - add new flags value for inverting search: skip to the next character - NOT in the set of delimiters passed as an argument +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 -subst.h - - define for new SD_INVERT flag value for skip_to_delims +externs.h + - extern declaration for parser_in_command_position - 10/28 + 12/19 ----- -bashline.c - - new bindable functions: shell-forward-word and shell-backward-word. - Like forward-word and backward-word, but understand shell quoting - and use shell metacharacters and whitespace as delimiters. - Suggested by Andre Majorel - - new bindable functions: shell-kill-word and shell-backward-kill-word. - Like kill-word and backward-kill-word, but understand shell quoting - and use shell metacharacters and whitespace as delimiters. - Suggested by Andre Majorel - -doc/bash.1,lib/readline/doc/rluser.texi - - documented shell-forward-word and shell-backward-word - - documented shell-kill-word and shell-backward-kill-word - - 11/1 - ---- -redir.c - - add extra argument to add_undo_redirect: fdbase. FD used to save - a file descriptor must be > fdbase if fdbase >= SHELL_FD_BASE. A - value of -1 for fdbase means to just use SHELL_FD_BASE. Fixes bug - with 0<&10 reported by Clark Jian Wang - 11/5 - ---- -unwind_prot.c - - new function: have_unwind_protects(); returns 1 if unwind_protect_list - is not empty - -unwind_prot.h - - extern declaration for have_unwind_protects - -builtins/evalstring.c - - in parse_and_execute_cleanup, make sure that we don't call - run_unwind_frame and expect it to decrement parse_and_execute_level - if there's no unwind_protect_list, since there's a while loop in - throw_to_top_level that calls parse_and_execute_cleanup as long as - parse_and_execute_level is non-zero - - 11/9 - ---- -variables.c - - fix the assign function for COMP_WORDBREAKS to allocate new memory - to store as the variable's value, to avoid freeing memory twice - if the variable is unset after rl_completer_word_break_characters - is freed and reallocated. Fix from Mike Stroyan - 11/11 - ----- bashline.c - - new function to reset the value of rl_completer_word_break_characters - while honoring setting of `hostcomplete': reset_completer_word_break_chars. - -bashline.h - - new extern declaration for reset_completer_word_break_chars. + - 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 -variables.c - - call reset_completer_word_break_chars in sv_comp_wordbreaks when the - variable is unset + 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 -[bash-4.0-beta frozen] +lib/readline/rlprivate.h + - _rl_untranslate_macro_value: extern declaration - 11/16 - ----- -subst.c - - call set_pipestatus_from_exit in exp_jump_to_top_level so that - failed expansions that set $? will set $PIPESTATUS. Fixes bug - reported by Eric Blake +lib/readline/{macro.c,readline.h} + - rl_print_last_kbd_macro: new bindable function, inspired by patch + from Mitchel Humpherys - 11/20 - ----- -general.c - - new 'file_exists(fn)' primitive; just calls stat(2) +lib/readline/funmap.c + - print-last-kbd-macro: new bindable command, bound to + rl_print_last_kbd_macro -general.h - - new extern declaration for file_exists +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - print-last-kbd-macro: document. -bashline.c - - add `~' to rl_filename_quote_characters so make_quoted_replacement - will call bash_quote_filename for words containing `~'. Then - bash_quote_filename can make choices based on that - - change quote_word_break_chars to backslash-quote the tilde in a - filename with a leading tilde that exists in the current directory, - since we want to inhibit tilde expansion in this case +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) -execute_cmd.c - - call file_isdir from shell_execve instead of stat(2) directly +bashline.[ch] + - print_unix_command_map: new function, prints all bound commands in + cmd_xmap using rl_macro_dumper in a reusable format -bashhist.c - - use file_exists and file_isdir primitives instead of calling stat +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) - 11/21 - ----- -redir.c - - When undoing saving of non-standard file descriptors (>=3) using - file descriptors >= SHELL_FD_BASE, we set the saving fd to be - close-on-exec and use a flag (RX_SAVCLEXEC) to decide how to set - close-on-exec when the fd is restored. Set flag in add_undo_redirect, - check in do_redirection_internal. Fixes problem reported by Andreas - Schwab +doc/{bash.1,bashref.texi} + - document new `bind -X' option - 11/26 + 12/24 ----- -subst.c - - fix param_expand to have expansions of $@ and $* exit the shell if - there are no positional parameters and `set -u' is enabled. Fixes - bug reported by Dan Jacobson - 11/27 - ----- -lib/readline/display.c - - fix update_line to not call space_to_eol if current cursor position - (_rl_last_c_pos) indicates that we're already at end of line. - Partial fix for bug reported by Mike Frysinger - - in update_line, don't call insert_some_chars if that will start - before the last invisible character in the prompt string and not - draw the entire prompt string. More of the partial fix for bug - reported by Mike Frysinger - - fix update_line to adjust _rl_last_c_pos by wrap_offset when adding - characters beginning before the last invisible character in the - prompt. New code is same as previously existed in a different code - path. Rest of fix for bug from Mike Frysinger - - fix assignment of newline breaks (inv_lbreaks) to correctly account - for prompts longer than two screen lines containing invisible - characters. The assumption is that part of the invisible characters - are on the first line (prompt_invis_chars_first_line) and the - remainder are on the last (wrap_offset - prompt_invis_chars_first_line). - Fix is in rl_redisplay. part of fix for bug reported by - "Wesley J. Landaker" in - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265182 - [TENTATIVE] - - fix _rl_move_cursor_relative to correctly offset `dpos' by `woff' - when there are invisible characters on lines after the second by - using (_rl_screenwidth*_rl_last_v_pos) when seeing whether or not - we just wrote some invisible characters. Rest of fix for bug - reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265182 - [TENTATIVE] +doc/{bash.1,bashref.texi} + - add a couple of sentences to the description of the case modification + operators making it clearer that each character of parameter is + tested against the pattern, and that the pattern should only attempt + to match a single character. Suggested by Bill Gradwohl + - 12/11 + 12/28 ----- -sig.c - - reset the execution context before running the exit trap in - termsig_handler - -general.c - - set and unset terminate_immediately like interrupt_immediately in - bash_tilde_expand +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 -builtins/read.def - - change terminate_immediately to a counter instead of a flag, as - interrupt_immediately is used +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) -lib/readline/display.c - - slight change to fix from 11/27 to deal with prompts longer than a - screen line where the invisible characters all appear after the - line wrap. Fixes bug reported by Andreas Schwab + 12/29 + ----- -builtins/{echo,printf}.def - - increment terminate_immediately at entry; decrement before returning. - Fix for bug reported by Ralf.Wildenhues@gmx.de +flags.h + - new extern declaration for jobs_m_flag - 12/16 - ----- -subst.c - - fix off-by-one error in /dev/fd version of add_fifo_list; make - sure we add to totfds when it is == fd, not just when fd > totfds. - Fixes bug reported by marciso@gmail.com +builtins/{cd,set}.def,doc/{bash.1,bashref.texi} + - added text clarifying the descriptions of cd -L and -P, suggested by + Padraig Brady + - slight change to the description of `set -P' about resolving symbolic + links -[bash-4.0-beta2 frozen] +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 - 12/29 - ----- -doc/{bash.1,bashref.texi} - - document more clearly that when not in Posix mode, command - substitution does not inherit the -e option. From bug report from - Freddy Vulto - -{execute_cmd,sig,builtins/evalstring}.c - - sentinel variable to keep track of whether or not we're supposed to - ignore the failure status of a command executed in a command - substitution even if the `-e' option is set: comsub_ignore_return - - increment and decrement comsub_ignore_return in execute_simple_command - before calling expand_words - - in parse_and_execute, if comsub_ignore_return is non-zero and the - SUBSHELL_COMSUB bit is set in subshell_environment, enable the - CMD_IGNORE_RETURN flag in every command executed from the passed - string. Fixes problem reported by Freddy Vulto - - make sure to reset comsub_ignore_return every time we throw to the - top level, like executing_list flag - - 1/2/2009 + 1/1/2012 -------- -parse.y - - fix to rewind_input_stream to handle case of $(...) command - substitution followed by a quoted literal newline. Report and fix - from Andreas Schwab +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/7 + 1/5 --- +quit.h + - LASTSIG(): new macro, expands to signal number of last terminating + signal received (terminating_signal or SIGINT) -subst.c - - fix match_wpattern and match_upattern to prefix a `*' to the - pattern even if it starts with a `*(' (if extglob is enabled) - before checking whether or not it can match anywhere in the - string. Fixes bug reported by os@sernet.de. - -[bash-4.0-rc1 frozen] +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 - 1/9 - --- -locale.c - - since setlocale() doesn't set errno to anything meaningful, - don't include the strerror() result in the error message if - it fails - - make sure the error messages printed when setlocale fails are - localizable +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 ---- -lib/readline/histexpand.c - - make sure that every time history_no_expand_chars is tested, we - also call the history_inhibit_expansion_function if it's set. - Fixes bug reported by Yang Zhang +doc/{bash.1,bashref.texi} + - slight changes to the descriptions of the compat32 and compat40 shell + options to clarify their meaning 1/12 ---- -trap.c - - make sure to call parse_and_execute with the SEVAL_RESETLINE bit - set in the flags so it will reset the line number when running - the trap commands. Partial fix for bug reported by - peter360@fastmail.us +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 ---- -builtins/reserved.def - - document `coproc' so it can be used with `help' builtin. Pointed - out by Pierre Gaston - -lib/sh/casemod.c - - added two new flags: CASE_UPFIRST and CASE_LOWFIRST to casemod - the first character of the passed string and pass the rest - through unchanged. Fixes bug reported by Jan Schampera - +lib/readline/bind.c + - colored_stats: new bindable variable, enables using colors to + indicate file type when listing completions -externs.h - - new defines for CASE_UPFIRST and CASE_LOWFIRST +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 + -subst.c - - use CASE_UPFIRST for ^ and CASE_LOWFIRST for , casemod operators +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) -builtins/mapfile.def - - call zreset() before calling first zgetline(), to clean out any - remaining data in local buffer used by zreadc. Fixes bug - reported by Pierre Gaston +lib/readline/rlprivate.h + - _rl_colored_stats: new extern declaration - 1/15 - ---- -lib/sh/zread.c - - renamed zreadintr to zreadretry -- not perfect, but better - - new functions: zreadintr, which just calls read so it can be - interruptible, and zreadcintr, which is like zreadc but uses - zreadintr to fill the buffer +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - colored-stats: document new bindable readline variable -lib/sh/zgetline.c - - in zgetline, when zread/zreadc return <= 0, make sure line is - non-null before assigning to line[nr] +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 -builtins/mapfile.def - - return an error right away if the supplied array variable name - refers to a readonly or noassign array - - set interrupt_immediately so calls to zgetline can be - interrupted. Fixes bug reported by Pierre Gaston - - - if interactive, pass the SEVAL_INTERACT and SEVAL_NOHIST flags - to parse_and_execute when calling callbacks. Fixes bug reported - by Pierre Gaston - - add `readarray' as a synonym for mapfile +lib/readline/complete.c + - stat_char: call rl_filename_stat_hook before calling lstat/stat -doc/{bash.1,bashref.texi} - - document behavior of mapfile builtin adding index of array element - to be assigned as additional argument to callback string. Reported - by Pierre Gaston - - document readarray as synonym for mapfile +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) -builtins/common.c - - new error function, sh_ttyerror(set), prints an error message having - to do with setting or getting terminal attributes +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 -builtins/read.def - - print error message if read fails to set terminal attributes +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/16 + 1/17 ---- -execute_cmd.c - - new function, coproc_reap, calls coproc_dispose if sh_coproc is - marked as COPROC_DEAD - - new function, cpl_reap, disposes coprocs marked as COPROC_DEAD - from coproc list - - change coproc_pidchk to just mark the coproc as dead instead of - calling coproc_dispose, so we don't call unsafe functions from - a signal handler. Fixes bug reported by Andreas Schwab - - -execute_cmd.h - - new extern declaration for coproc_reap +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 -command.h - - new flags for c_flags member of a struct coproc + 1/18 + ---- -{jobs,nojobs}.c - - add call to coproc_reap in cleanup_dead_jobs, which will do the - right queueing or blocking of SIGCHLD +{configure,config.h}.in + - new check: check for AUDIT_USER_TTY defined in , + define HAVE_DECL_AUDIT_USER_TTY if both are found -trap.c - - modify change from 1/12 to not reset the line number when running - the DEBUG and RETURN traps +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 - 1/18 - ---- -lib/sh/casemod.c - - change default operations to work on entire passed string instead - of breaking into words at non-alpha-numerics. Use new - CASE_USEWORDS flag to enable by-word behavior. Fixes bug reported - by Jan Schampera +lib/readline/util.c + - _rl_audit_tty: new function, send a string to the kernel tty audit + system -builtins/printf.def - - in vbprintf, bracket each call to vsnprintf (which uses the args - passed to vbprintf) with SH_VA_START and va_end, so we can - reninitialize the argument list for each call. This is actually - what the C standard requires. Fixes bug that caused printf -b - to `ignore' first % format specifier if it came first in the - string. Reported by David Leverton +lib/readline/rlprivate.h + - _rl_audit_tty: new extern declaration -builtins/mapfile.def - - start the line count at 1, since it doesn't get incremented before - (or after) reading the first line, so things like - `mapfile -n 5 -c 1 -C 'echo foo' array < file' work right and call - the callback after the first line is read. Fixes bug reported by - Pierre Gaston +lib/readline/readline.c + - readline: call _rl_audit_tty with line to be returned before returning + it if the Linux tty audit system is available and it's been enabled + in rlconf.h Original patch from Miroslav Trmac; recent request + from Miroslav Lichvar - 1/22 + 1/21 ---- -lib/readline/complete.c - - set _rl_interrupt_immediately non-zero before reading from the file - system or calling an application-defined completion function -lib/readline/signals.c - - renamed rl_signal_handler to _rl_handle_signal; new version of - rl_signal_handler that just calls _rl_handle_signal (for now) - - new function _rl_signal_handler that calls _rl_handle_signal without - any checking +lib/readline/readline.c: + - _rl_dispatch_subseq: add an inter-character timeout for multi-char + key sequences. Suggested by . Still needs + work to make a user-settable variable -lib/readline/rlprivate.h - - new extern declaration for _rl_signal_handler - - new define, RL_CHECK_SIGNALS, checks whether or not _rl_caught_signal - is set and calls _rl_signal_handler if so +parse.y + - shell_getc: make code that uses the pop_alias dependent on ALIAS + define -lib/readline/{bind,input,readline}.c - - add RL_CHECK_SIGNALS in appropriate places +variables.h + - sv_tz: extern define should only depend on HAVE_TZSET -lib/readline/signals.c - - change rl_signal_handler to set a flag and return rather than - run through the entire signal handling process. If - _rl_interrupt_immediately is set, call the signal handling code - right away instead of setting the flag. Initial fix for crash - bug reported by Roman Rakus +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 -aclocal.m4 - - new macro, BASH_TYPE_SIG_ATOMIC_T, tests for sig_atomic_t in - , defines as int if not defined +arrayfunc.h + - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not + defined; used in subst.c unconditionally -configure.in - - call BASH_TYPE_SIG_ATOMIC_T - - call AC_C_VOLATILE +sig.h + - make the signal blocking functions not dependent on JOB_CONTROL -config.h.in - - empty define for sig_atomic_t - - empty define for volatile +sig.c + - sigprocmask: make the replacement definition not dependent on + JOB_CONTROL - 1/27 +trap.c + - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on + HAVE_POSIX_SIGNALS and BSD signals + + 1/24 ---- -subst.c - - audit calls to add_character and change to add_ifs_character (which - quotes characters in $IFS). Affects primarily `:', `=', and `~'. - Fixes bug reported by Jan Schampera ; fix - suggested by Stephane Chazelas - 2/1 - --- -configure.in - - call AC_C_RESTRICT +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 -config.h.in - - add empty defintion for `restrict' -pcomplete.c - - use unwind_protects around call to execute_shell_function in - gen_shell_function_matches to prevent data corruption if - throw_to_top_level is called. Bug report and fix from - werner@suse.de. + 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 + -execute_cmd.c - - don't clamp CPU usage at 100% in print_formatted_time. Bug reported +doc/{bash.1,bashref.texi} + - small modifications to the introduction to the REDIRECTION section + to describe how redirections can modify file handles + - small modification to the section describing base#n to make it + clearer that n can be denoted using non-numerics. From a posting by Linda Walsh - 2/5 + 2/2 --- -locale.c - - in set_locale_var, set errno to 0 before calling setlocale(), and - print strerror (errno) if setlocale fails and errno ends up non-zero +builtins/printf.def + - printf_builtin: make sure vbuf is intialized and non-null when -v + is supplied, since other parts of the code assume that it's not + null (e.g., bind_printf_variable()). Fixes bug reported by Jim + Avera - 2/6 + 2/4 --- -configure.in - - backed out of solaris change from 10/23/2008 (adding `-z interpose' - to LDFLAGS) due to solaris updates to fix a linker problem. - Updatted by Serge Dussud +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 - 2/12 - ---- -execute_cmd.c - - change execute_connection so failure of a pipeline will cause the - shell to exit if -e is on. From discussion on austin-group - mailing list - - change execute_command_internal so failure of a user-specified - subshell will cause the shell to exit if -e is on. From discussion - on austin-group mailing list +lib/readline/rlprivate.h + - _rl_free_undo_list: new extern declaration + - _rl_keyseq_timeout: new extern declaration (see below) - 2/13 - ---- -doc/{bash.1,bashref.texi} - - clarified description of set -e option to accurately reflect current - implementation +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 - 2/19 - ---- -print_cmd.c - - fix print_deferred_heredocs to not print a space if the separator - string is null - - change print_deferred_heredocs to set `was_heredoc' after printing - something - - change connection printing code to only print the `;' separator - if we haven't just printed a here-document - - change connection printing code to print any deferred here - documents after the rhs of the connection. Fixes bug reported by - Bo Andresen - -[bash-4.0 frozen] +lib/readline/doc/rltech.texi + - rl_clear_history: documented - 2/20 - ---- +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 -[bash-4.0 released] +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 - 2/22 - ---- +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - keyseq-timeout: documented -parse.y - - fix parse_comsub to not test a character for being a possible shell - metacharacter if LEX_PASSNEXT flag is set. Fixes bug reported by - Mike Frysinger +lib/readline/isearch.c + - _rl_isearch_dispatch: modification to fix from 7/18 to not use + cxt->keymap and cxt->okeymap, since by the time this code is + executed, they are equal. Use `f' to check for rl_insert or + unbound func + - _rl_isearch_dispatch: if we're switching keymaps, not in + callback mode, and don't have pending or pushed input, use + _rl_input_queued to resolve a potentially ambiguous key sequence. + Suggested by Roger Zauner + - _rl_isearch_dispatch: if we have changed keymaps and resolved to + an editing function (not self-insert), make sure we stuff the + right characters back onto the input after changing the keymap + back so the right editing function is executed after the search + is terminated. Rest of fix for bug reported by Roger Zauner + -pcomplete.c - - add call to save_parser_state (accidentally dropped from patch) to - gen_shell_function_matches. Fixes bug with bash_completion and - file/directory completion reported by phil@Arcturus.universe + 2/5 + --- +builtins/gen-helpfiles.c + - new file: reads struct builtin and writes the long docs to files + in the `helpdirs' subdirectory. The filename is given in the + previously-unused `handle' member of the struct builtin. Links + with `tmpbuiltins.o', which is created by Makefile to have the + right long documentation. When not cross-compiling, gets the + right #defines based on configuration options from config.h instead + of trying to parse conditional parts of def files. Fixes + shortcoming pointed out by Andreas Schwab + +builtins/Makefile.in + - tmpbuiltins.c: new generated file, created to enable creation of + separate helpfiles based on correct #defines instead of trying to + parse conditional parts of def files + - gen-helpfiles: new program to generate helpfiles, links with + tmpbuiltins.o + - HELPFILES_TARGET: new target, substituted by configure to `helpdoc' + if separate helpfiles requested + - targets: new target, libbuiltins.a and $(HELPFILES_TARGET) + - CREATED_OBJECTS: new variable, holds created object files for + make clean; changed make clean to remove created objects + - helpdoc: changed to call gen-helpfiles instead of mkbuiltins Makefile.in - - fix assignment to LDFLAGS_FOR_BUILD to match those in subdir - Makefiles. Fixes bug reported by Mike Frysinger + - when building libbuiltins.a, recursively call make with `targets' + argument to make sure separate helpfiles get built -builtins/mapfile.def - - make sure the callback quantum (-c option argument) is > 0. Fixes - bug reported by Stephane Chazleas +configure.in + - substitute `helpdoc' as value of HELPFILES_TARGET if + --enable-separate-helpfiles supplied as configure argument - 2/23 - ---- -parse.y - - fix save_token_state and restore_token_state to save and restore - current_token. Fixes bug reported by Bernd Eggink - +builtins/mkbuiltins.c + - `-nofunctions': new argument, causes mkbuiltins to not write value + for function implementing a particular builtin to struct builtin + and to write document file name to `handle' member of struct builtin + - no longer writes separate helpfiles; that is left to gen-helpfiles + + 2/8 + --- +subst.c + - make sure last_command_exit_value is set to a non-zero value before + any calls to report_error, since `-e' set will short-circuit + report_error. Fixes bug reported by Ewan Mellor + + +variables.c + - make_local_array_variable: added second argument; if non-zero, + function will return an existing local associative array variable + instead of insisting on an indexed array + +variable.h,subst.c + - make_local_array_variable: changed prototype and caller -builtins/exit.def - - check jobs[i] before checking whether or not it's running when - the checkjobs option is set and we're looking for running jobs - at exit. Fixes bug reported by Mike Frysinger +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/24 + 2/14 ---- -siglist.c - - include bashintl.h for definition of _. Fixes bug reported by - Greg Wooledge - 2/25 +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 ---- -subst.c - - new function, skip_matched_pair. Similar to skip_to_delim and - the extract_XXX family - - move skipsubscript here from arrayfunc.c; re-implement in terms of - skip_matched_pair. Fixes bugs reported by +{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 -arrayfunc.c - - remove skipsubscript; moved to subst.c +builtins/common.c + - get_job_by_name: call internal_error instead of report_error so this + doesn't exit the shell + + 2/18 + ---- +builtins/evalstring.c + - parse_and_execute: make sure the file descriptor to be redirected to + is 1 before calling cat_file. One fix for bug reported by Dan Douglas + parse.y - - change reset_parser to set current_token to '\n'. Rest of fix for - bug reported by Bernd Eggink ; earlier fix on - 2/23 + - read_token_word: don't return NUMBER if a string of all digits + resolves to a number that overflows the bounds of an intmax_t. + Other fix for bug reported by Dan Douglas - 2/26 + 2/19 ---- -builtins/declare.def - - when given something like array[x]=y (which sets making_array_special - to 1), don't convert an associative array to an indexed array (line - 493). Part of fix for bug reported by Pierre Gaston - - - if offset == 0, indicating that we do not have a valid assignment, - make sure any `name' containing a `[' is a valid array reference - before trying to go on. Not doing this leads to creating crazy - variables like `name[foo[bar]=bax'. Rest of fix for bug reported - by Pierre Gaston +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 -assoc.c - - change assoc_to_assign to single-quote the array keys if `quoted' is - non-zero. Makes things easier to read with weird characters in the - key +builtins/printf.def + - tescape: ditto for printf \u and \U escape sequences -parse.y - - fix parse_comsub to not set LEX_HEREDELIM when it sees "<<<". Fixes - bug reported by Mike Frysinger + 2/20 + ---- +lib/sh/unicode.c + - u32toutf8: fix to handle encodings up to six bytes long correctly + (though technically UTF-8 only has characters up to 4 bytes long). + Report and fix from John Kearney + - u32toutf8: first argument is now an unsigned 32-bit quantity, + changed callers (u32cconv) to pass c instead of wc + - u32reset: new function, resets local static state to uninitialized + (locale information, currently) - 2/27 +locale.c + - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the + cached locale information used by u32cconv. From a report from + John Kearney + + 2/21 ---- -parse.y - - fix report_syntax_error to set last_command_exit_value to - EX_BADUSAGE (2) instead of EX_USAGE (258), since there's nothing - that will translate that to something < 128 before reading the - next command. Partial fix for bug reported by Mike Frysinger - +doc/{bash,builtins}.1 + - minor changes from Bjarni Ingi Gislason -sig.c - - fix sigint_sighandler to set last_command_exit_value to sig+128 - before calling throw_to_top_level. Rest of fix for bug reported - by Mike Frysinger +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 -jobs.c - - if fork() fails, set last_command_exit_value to 126 before calling - throw_to_top_level +lib/readline/parens.c + - _rl_enable_paren_matching: make paren matching work in vi insert + mode. Bug report from + + 2/22 + ---- +lib/sh/shquote.c + - sh_backslash_quote: quote tilde in places where it would be + expanded. From a report from John Kearney + 2/23 + ---- execute_cmd.c - - defer calling unlink_fifo_list in parent branch of - execute_disk_command if we're executing in a shell function - - change execute_function to call unlink_fifo_list before returning - if it's the top-level function + - execute_pipeline: wrap the discard_unwind_frame call in #ifdef + JOB_CONTROL, since the frame is only created if JOB_CONTROL is + defined. Bug and fix from Doug Kehn + + 2/25 + ---- +error.c + - report_error: make sure last_command_exit_value is non-zero before + we call exit_shell, since the exit trap may reference it. Call + exit_shell with last_command_exit_value to allow exit statuses + other than 1 + +unicode.c + - stub_charset: use local static buffer to hold charset, don't change + value returned by get_locale_var. Based on idea and code from + John Kearney + - u32toutf16: function to convert unsigned 32-bit value (unicode) to + UTF-16. From John Kearney + - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t + is two bytes, send result to wcstombs, return if not encoding error. + From John Kearney + - u32cconv: return UTF-8 conversion if iconv conversion to local + charset is unsupported 3/2 --- -builtins/read.def - - if read times out, make sure we remove the top element from the - unwind-protect stack (the free of input_string) and run the rest, - to reset the tty and readline and alarm states. Then we jump to - assigning the variables to any partial input. Fixes bug reported - by Christopher F. A. Johnson +lib/readline/complete.c + - print_filename: if there is no directory hook, but there is a stat + hook, and we want to append a slash to directories, call the stat + hook before calling path_isdir on the expanded directory name. + Report and pointer to fix from Steve Rago 3/3 --- -parse.y - - break comment checking code into a common COMMENT_BEGIN define so - we can use it in multiple places in parse_comsub - - in parse_comsub, don't alter the LEX_RESWDOK flag if we read a - `#' and we're checking comments, even though `#' isn't a `shell break' - character. Fixes bug reported by Mike Frysinger +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 -braces.c - - in expand_seqterm, decrease the total length of the rhs by the length - of any (optional) increment, so we don't end up with unwanted zero - padding because the rhs length is wrong. Fixes bug reported by - Carl Albing +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 --- -doc/{bash.1,bashref.texi} - - changes to clean up some of the language describing the effects of - terminal process groups on the ability to read from and write to - the terminal +lib/readline/complete.c + - rl_menu_complete: fix to make show-all-if-ambiguous and + menu-complete-display-prefix work together if both are set. Fix + from Sami Pietila 3/5 --- -support/shobj-conf - - add host_vendor to string tested in switch to handle things like - gentoo/freebsd - - beginning with version 7, FreeBSD no longer has /usr/bin/objformat - or a.out binaries and libraries. It's always ELF. Fix from - Timothy Redaelli - -parse.y - - in parse_comsub, allow comments if we are ready to read a - reserved word (tflags & LEX_RESWDOK), haven't read anything from - one yet (lex_rwlen == 0) and the current character is a '#' - - 3/6 - --- -parse.y - - new lex flag for parse_comsub: LEX_INWORD. Turn it off when - we see a shell break character; turn it on or keep it on when - not a break character. Keep track of word length (reset to 0 - when we turn on LEX_INWORD when it was off). - - don't use COMMENT_BEGIN in parse_comsub any more; test - whether or not LEX_INWORD is set and lex_wlen == 0 in addition - to tests for LEX_RESWDOK and lex_rwlen. Comments are valid - when at the start of a word - - move LEX_PASSNEXT code to the top of parse_comsub, so the rest - of the function doesn't have to check for the flag at different - places +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 --- -parse.y - - in parse_comsub, when looking for a reserved word (LEX_RESWDOK - non-zero), and in a case statement, we can see either an esac - or a pattern list. We handle an esac separately. We should - turn off LEX_RESWDOK if we see anything but a newline, since - we'll be reading a pattern list. Other part of fix for bug - reported by Mike Frysinger (rest of fix - on 3/3) +m4/timespec.m4 + - new macros, cribbed from gnulib and coreutils: find out whether we + have `struct timespec' and what file includes it + +m4/stat-time.m4 + - new macros, cribbed from gnulib and coreutils: find out whether the + mtime/atime/ctime/etctime fields of struct stat are of type + struct timespec, and what the name is + +include/stat-time.h + - new file, cribbed from gnulib, with additions from coreutils: include + the right file to get the struct timespec define, or provide our own + replacement. Provides a bunch of inline functions to turn the + appropriate members of struct stat into `struct timespec' values, + zeroing out the tv_nsec field if necessary + +test.c + - include "stat-time.h" for the nanosecond timestamp resolution stuff + - stat_mtime: new function, returns struct stat and the mod time + normalized into a `struct timespec' for the filename passed as the + first argument + - filecomp: call stat_mtime instead of sh_stat for each filename + argument to get the mtime as a struct timespec + - filecomp: call timespec_cmp instead of using a straight arithmetic + comparison for the -nt and -ot operators, using timespec returned by + stat_mtime. Added functionality requested by by Werner Fink + for systems that can support it 3/10 ---- -{.,lib/readline}/doc/fdl.texi - - updated to FDL version 1.3 +include/posixdir.h + - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature + test macros to decide whether dirent.d_ino is present and usable; + define D_INO_AVAILABLE. Report and fix from Fabrizion Gennari + + - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno - 3/11 - ---- -parse.y - - when using the |& construct with a simple command preceding it, add - the implicit redirection to the simple command's redirection list, - since the redirections associated with the command struct are never - executed. Fixes bug reported by Matt Zyzik +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 - 3/14 - ---- -execute_cmd.c - - in execute_case_command, if ;& is used with no following pattern - list, make sure we don't reference a NULL pointer. Bug report and - fix from Clark Jian Wang +lib/readline/signals.c + - make sure all occurrences of SIGWINCH are protected by #ifdef -parse.y - - make parser_state global, so other files can use it - - command_word_acceptable now returns non-zero if PST_REDIRLIST bit - set in parser_state, so we accept assignment statements and - perform alias expansion. Fix for bug reported by Vincent - Lefevre (2/24/2009) +sig.c + - make sure all occurrences of SIGCHLD are protected by #ifdef -parser.h - - add PST_REDIRLIST flag, notes that parser is currently parsing a - redirection list preceding a simple command +nojobs.c + - make sure SA_RESTART is defined to 0 if the OS doesn't define it -make_cmd.c - - make_simple_command now turns on PST_REDIRLIST in parser_state when - creating a new simple command - - make_simple_command turns off PST_REDIRLIST in parser_state if it - adds a non-redirection to the command it's building - - clean_simple_command turns off PST_REDIRLIST to make sure it's off +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 -subst.c - - new flag for param_expand: PF_IGNUNBOUND, means to not exit if the - variable is unbound even if `set -u' is enabled - - change param_expand to not call err_unboundvar if the `pflags' - argument has the PF_IGNUNBOUND bit set - - parameter_brace_expand_word now takes an extra `pflags' argument to - pass down to param_expand; changed callers - - changed call to parameter_brace_expand_word in parameter_brace_expand - to add PF_IGNUNBOUND flag so ${@:-foo} doesn't cause the shell to - exit (but ${@} does) when there are no positional parameters. Fixes - Debian bug 519165 from Dan Jacobson +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() -parse.y - - add code to parse_comsub to allow here-documents within command - substitutions to be delimited by the closing right paren, with the - usual warning about here documents delimited by EOF on execution. - Fixes regression from bash-3.2 noted in Red Hat bugzilla 485664 by - Ralf Corsepius +trap.h + - queue_sigchld_trap: new extern declaration - 3/15 +jobs.c + - waitchld: if called from the SIGCHLD signal handler (sigchld > 0), + then call queue_sigchld_trap to avoid running the trap in a signal + handler context. Report and original fix from Siddhesh Poyarekar + + +lib/sh/unicode.c + - u32tocesc: take an unsigned 32-bit quantity and encode it using + ISO C99 string notation (\u/\U) + - u32cconv: call u32tocesc as a fallback instead of u32cchar + - u32cconv: call u32tocesc if iconv cannot convert the character. + Maybe do the same thing if iconv_open fails + - u32reset: call iconv_close on localconv if u32init == 1 + + 3/11 ---- -subst.c - - string_list_dollar_at now checks for Q_PATQUOTE, which getpattern() - uses to denote Q_DOUBLE_QUOTES (?). Fixes a=abcd echo "${a#$*}" - when IFS= and args are `a b' as noted by Stephane Chazleas - - - param_expand now checks for Q_PATQUOTE and treats it identically - to Q_DOUBLE_QUOTES when expanding $* - - expand_word_unsplit now sets W_NOSPLIT in the flags of the word it - passes to expand_word_internal if $IFS is NULL - - expand_word_leave_quoted now sets expand_no_split_dollar_star and - the W_NOSPLIT bit in the word flags before calling - expand_word_internal if $IFS is NULL, just like expand_word_unsplit. - It is now virtually identical to expand_word_unsplit. Rest of fix for - problems reported by Stephane Chazleas +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 - 3/20 +{jobs,nojobs}.c + - check_window_size: default initial value to CHECKWINSIZE_DEFAULT + + 3/13 ---- -trap.c - - in _run_trap_internal, don't pass SEVAL_RESETLINE as flag to - parse_and_execute if running the ERR trap (further modification - of change from 1/12) +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) -execute_cmd.c - - in execute_simple_command, set line_number to line_number_for_err_trap - before calling run_error_trap. Part of fix for bug reported by - Brian J. Murrell - - change other places calling run_error_trap() to set and use - line_number_for_err_trap +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/21 + 3/15 ---- -builtins/fc.def - - Even though command substitution through parse_and_execute turns - off remember_on_history, command substitution in a shell when - set -o history has been enabled (interactive or not) should use it - in the last_hist calculation as if it were on. Same calculation - in fc_gethnum and fc_builtin. Fixes bug reported by - Ian Kelling +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 -sig.c - - change termsig_sighandler to terminate immediately if it gets called - twice with the same signal before termsig_handler gets called. This - fixes the `looping on SIGSEGV' phenomenon reported by Linux users. + 3/16 + ---- +array.c + - array_insert: fix memory leak by deleting element to be added in the + case of an error -parse.y - - in read_secondary_line, don't try to add NULL lines to the history - list. Report and patch from Lubomir Rintel + 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/22 + 3/19 ---- -sig.c - - Augment change from 3/21 with explicit check for signals we *don't* - want this to happen for. Patch from Lubomir Rintel +stringlib.c + - substring: use memcpy instead of strncpy, since we know the length + and are going to add our own NUL terminator + + 3/20 + ---- +subst.c + - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted + null string (a list with one element for which + QUOTED_NULL(list->word->word) returns true), return the quoted null + and set the flags in the returned word to indicate it. Fixes bug + reported by Mark Edgar + +lib/sh/tmpfile.c + - use random(3) instead of get_random_number to avoid perturbing the + random sequence you get using $RANDOM. Bug report and fix from + Jurij Mihelic - 3/28 + 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 - - in array_reference, return NULL immediately if the desired index - is larger than the maximum - - add cache of last array referenced and last array element referenced; - use in array_reference to optimize case of sequential access; - invalidated where necessary in other functions - - array_rshift needs to set max_index to 0 if the array was empty - before shifting in the new element 0 - - array_shift needs to use element_index(a->head->prev) to set the - max_index, not a simple decrement, to deal with sparse arrays + - 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 --- -bashline.c - - in bash_dequote_filename, return right away after copying the - backslash if the last character in the string to be expanded - is a backslash. The old code copied an extra NUL and overwrote - the bounds checking. Fixes bug reported by Shawn Starr - https://bugzilla.redhat.com/show_bug.cgi?id=488649 +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 - 4/3 - --- subst.c - - in pat_subst.c, make sure to copy one character from the input - string in the case of a null pattern match, since we substitute - on the null match and then increment past the current character. - Not doing this means that each character of the original string - is replaced because of the null matches. Fixes debian bug - reported bhy Louis-David Mitterrand - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=522160 - -lib/sh/winsize.c - - incorporate contents of readline/rlwinsize.h to get all the various - system dependencies right when trying to find TIOCGWINSZ. Fixes - bug reported by Dan Price + - dump_word_flags: print out W_ASSNGLOBAL if present + - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set + and W_ASSNGLOBAL is not. Don't want to create a local variable even + if variable_context is non-zero if ASSNGLOBAL is set. Fixes bug + reported by Bill Gradwohl - 4/6 + 4/7 --- -doc/{bash.1,bashref.texi} - - fix description of conditional `>' and `<' to remove statement that - the comparison pays attention to the current locale -- it has - always used strcmp +lib/readline/readline.c + - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to + ESC processing when in vi mode. After hitting ESC, readline will + wait up to _rl_keyseq_timeout*1000 microseconds (if set) for + additional input before dispatching on the ESC and switching to + command/movement mode. Completes timeout work suggested by + ; this prompted by report from Barry Downes + -lib/glob/glob.c - - fixed a bug in glob_filename that caused glob_dir_to_array to be - called to prepend a (globbed) directory name onto the results from - glob_vector, which, if we were globbing `**', glob_vector has - already done. Effect is to have the directory name(s) on there - twice. Fixes "dir*/**" bug reported by Matt Zyzik - +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 - 4/8 - --- doc/{bash.1,bashref.texi} - - fix short syntax summary of for command to reflect full bash - syntax (which is a superset of Posix syntax). Fixes bug reported - by Reuben Thomas + - TMOUT: fix description to make it explicit that TMOUT is the timeout + period for a complete line of input, not just any input. Fixes + problem reported in Ubuntu bug 957303: + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303 + - HISTFILE: document change to write history list to history file in + any shell with history enabled, not just interactive shells. This + seems to be more logical behavior. Suggested by Greg Wooledge + - 4/10 + 4/12 ---- -{expr,subst}.c - - make sure last_command_exit_value is set to EXECUTION_FAILURE - before calling err_unboundvar, in case set -e is enabled and - the shell exits from there. Fixes bug reported by Freddy - Vulto and Piotr Zielinski - +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' - 4/11 +lib/readline/parse-colors.[ch] + - don't try to include at all; rely on colors.h to do it + +lib/sh/snprintf.c + - vsnprintf_internal: only treat '0' as a flag to indicate zero padding + if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat + it as the first digit of a precision specifier. Fixes bug reported + by Petr Sumbera + + 4/15 ---- -jobs.c - - in restore_pipeline, don't call discard_pipeline with a NULL - argument +lib/sh/snprintf.c + - vsnprintf_internal: if the '0' and '-' flags both occur, the '0' + flag is ignored -- Posix. Start of a series of fixes based on + tests and patches from Petr Sumbera + - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+' + - vsnprintf_internal: when '+' is read as a flag, don't set right- + justify flag if the LADJUST (`-') flag has already been supplied + - floating: make sure to output space padding before the `+', zero + padding after + - exponent: make sure to output space padding before the `+', zero + padding after + - exponent: only subtract one from the width for the decimal point + if we're really going to print one + - floating: use presence of PF_PLUS flag to decide whether to account + for the `+' in the padded field width. Ditto for exponent() -trap.c - - in run_debug_trap, make sure to save and restore the pipeline, - pipeline_pgrp, and state of the pipeline around running the debug - trap, then remove any job created by running the debug trap from - the jobs table when it completes. Fixes for two bugs reported - by lex@upc.ua + 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/12 + 4/18 ---- -lib/readline/signals.c - - new functions to block and release SIGWINCH like the SIGINT blocking - and releasing functions +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) -lib/readline/rlprivate.h - - new extern declarations for _rl_block_sigwinch and _rl_release_sigwinch + 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" -lib/readline/display.c - - block SIGWINCH during redisplay like SIGINT. Should fix bug reported - by Nicolai Lissner + 4/20 + ---- +lib/sh/strftime.c + - incoporated new version from Aharon Robbins - 4/13 + 4/22 ---- -lib/readline/readline.h - - new readline state variable: RL_STATE_REDISPLAYING +doc/{bash.1,bashref.texi} + - slight change to the description of /dev/tcp and /dev/udp -lib/readline/display.c - - in rl_redisplay, don't block SIGWINCH during redisplay; just set - the REDISPLAYING state +subst.c + - match_wpattern: logic fix to the calculation of `simple' (was |=, + needs to be &=). Bug report from Mike Frysinger , + fix from Andreas Schwab -lib/readline/terminal.c - - in rl_resize_terminal, don't call rl_redisplay_after_sigwinch() if - we're already in the middle of redisplay (RL_STATE_REDISPLAYING). - Fix for bug reported by Nicolai Lissner +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/15 + 4/25 ---- -parse.y - - fix parse_comsub to add check for \n when seeing whether the current - character can change to a state where a reserved word is legal, - since it is not a shell meta character. Fixes bug reported by - Bernd Eggink . +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 - 4/17 - ---- -jobs.c - - new functions to save and restore the pgrp_pipe (since there's only - one): save_pgrp_pipe and restore_pgrp_pipe + 5/6 + --- +subst.c + - expand_word_internal: case '$': after calling param_expand and + setting had_quoted_null, set TEMP to null. The code that builds the + returned string at the end of the function will take care of making + and returning a quoted null string if there's nothing else in + ISTRING. If there is, the quoted null should just go away. Part of + fix for bug reported by Ruediger Kuhlmann + - expand_word_internal: when processing ISTRING to build return value, + only set W_HASQUOTEDNULL in the returned word flags if the word is + a quoted null string AND had_quoted_null is set. Rest of fix -trap.c - - run_debug_trap now saves and restores the pgrp_pipe before and - after calling the debug trap - - run_debug_trap now makes sure the terminal is owned by the pipeline - pgrp after the debug trap runs. Rest of fix for bug reported by - Oleksly Melnyk (lex@upc.ca) + 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 - 4/19 - ---- -include/posixselect.h - - new include file, encapsulates select(2) includes and defines for - bash and readline. Inspired by patch from Mike Frysinger - +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 -lib/sh/input_avail.c - - include "posixselect.h" +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 -lib/readline/{input,parens}.c - - include "posixselect.h" instead of using inline includes - - use new USEC_TO_TIMEVAL define to make sure that values for timeouts - greater than one second are handled properly + 5/24 + ---- -lib/sh/fpurge.c - - updated implementation, taken from gnulib +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 - 4/21 + 5/25 ---- -lib/glob/glob.c - - in finddirs, don't try to free a return value of glob_error_return - from glob_vector. Bug and fix from werner@suse.de +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 -lib/readline/signals.c - - in rl_echo_signal_char, check that SIGQUIT and SIGTSTP are defined - before trying to use them. Bug report and fix from Volker Grabsch - +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 - 4/24 + 5/27 ---- -aclocal.m4 - - add conditional inclusion of to BASH_CHECK_TYPE +subst.c + - expand_word_internal: make sure has_dollar_at doesn't get reset before + recursive calls to param_expand or expand_word_internal, since it has + to save state of what came before. Use temp variable and make sure + has_dollar_at is incremented if recursive call processes "$@". + Fixes bug reported by gregrwm and + supplemented by Dan Douglas -bashtypes.h,lib/sh/strto[iu]max.c - - include if present for any existing declaration of - intmax_t and uintmax_t. Fixes Interix problem reported by - Markus Duft +doc/{bash.1,bashref.texi} + - changes to the description of substring expansion inspired by + suggestions from Bill Gradwohl -lib/sh/strindex.c,externs.h,builtins/common.h - - renamed strindex to strcasestr to agree with other implementations - (e.g., BSD, MacOS X, gnulib); changed callers +doc/bashref.texi + - added substring expansion examples inspired by suggestions from + Bill Gradwohl -lib/sh/{strindex.c,Makefile.in},Makefile.in - - renamed strindex.c to strcasestr.c +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 -configure.in - - add strcasestr to call to AC_REPLACE_FUNCS, take advantage of - existing libc implementations +variables.h + - find_shell_variable: extern declaration + - find_variable_tempenv: extern declaration + - find_variable_notempenv: extern declaration -config.h.in - - add define for HAVE_STRCASESTR +arrayfunc.c + - bind_array_variable: call find_shell_variable instead of calling + var_lookup directly -lib/sh/mbscmp.c - - fix mbscmp to return correct values when the strings do not contain - valid multibyte characters. Ideas from gnulib +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 -xstrchr.c - - only compare current character against C if mblength == 1 +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 -{shell,variables}.c - - changed some xstrchr calls back to strchr when the arguments cannot - contain multibyte characters + 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/sh/{xstrchr.c,Makefile.in},Makefile.in - - renamed xstrchr to mbschr; renamed file to mbschr.c +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 -aclocal.m4 - - change BASH_CHECK_MULTIBYTE to use AC_REPLACE_FUNCS(mbschr) + 6/4 + --- +lib/sh/mktime.c + - current versions of VMS do not need to include . Fix from + John E. Malmberg -externs.h - - extern declarations for mbscmp and mbschr, conditional on the usual - HAVE_MBSCMP and HAVE_MBSCHR defines + 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 + -general.h,{alias,arrayfunc,bashline,general,execute_cmd,subst}.c - - changed calls to xstrchr to mbschr + 6/5 + --- +braces.c + - expand_seqterm: check errno == ERANGE after calling strtoimax for + rhs and incr. Part of a set of fixes from Scott McMillan + + - expand_seqterm: incr now of type `intmax_t', which changes + arguments to mkseq + - mkseq: a better fix for detecting overflow and underflow since it's + undefined in C and compilers `optimize' out overflow checks. Uses + ADDOVERFLOW and SUBOVERFLOW macros + - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t + variables + - mkseq: don't allow incr to be converted to -INTMAX_MIN + - mkseq: make sure that strvec_create isn't called with a size argument + greater than INT_MAX, since it only takes an int -doc/bash.1 - - use `pathname expansion' consistently, not `filename expansion' or - `filename generation' + 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 -doc/bashref.texi - - use the phrase `filename expansion' consistently (since this is - what the Gnu people prefer) instead of `pathname expansion' or - `filename generation' + 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" -aclocal.m4,config.h.in - - check for mbscasecmp in BASH_CHECK_MULTIBYTE, define HAVE_MBSCASECMP - if found + 6/8 + --- +bashline.c + - bash_directory_completion_hook: don't attempt spelling correction + on the directory name unless the direxpand option is set and we are + going to replace the directory name with the corrected one in the + readline line. Suggested by Linda Walsh -lib/sh/{mbscasecmp.c,Makefile.in} - - new file, case-insensitive multibyte string comparison +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 - - extern declaration for mbscasecmp + - sh_backslash_quote: declaration now takes a third argument - 4/25 +builtins/printf.def + - printf_builtin: call sh_backslash_quote with 1 as third argument + so tildes get escaped + +{bashline,bracecomp}.c + - call sh_backslash_quote with 0 as third argument so tildes are not + escaped in completed words + +doc/bash.1 + - add `coproc' to the list of reserved words. From a report by + Jens Schweikhardt + + 6/10 ---- -lib/readline/display.c - - in _rl_move_cursor_relative, don't adjust dpos by woff if it's - already less than woff (don't want it less than 0) - - in _rl_move_cursor_relative, short-circuit right away if the cursor - is at columns 0 and `new' is 0 (doesn't matter if it's a multibyte - locale or not, or whether there are invisible chars in the prompt) - - in _rl_move_cursor_relative, go ahead and adjust dpos if - prompt_physical_chars >= _rl_screenwidth (previous check was just > ) - Fixes bug reported by Andreas Schwab +execute_cmd.c + - line_number_for_err_trap: now global, so parse_and_execute can save + and restore it with unwind-protect - 4/28 +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/glob/glob.c - - in glob_vector, don't add an empty pathname ("") if we're adding the - currect directory to the dirlist and GX_NULLDIR is set -- we can just - ignore it, since the passed directory name (".") was created by - the caller. Fixes bug reported by Matt Zyzik +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 + - 5/5 - --- -subst.c - - make expansion of $@ and $* when set -u is in effect and there are - no positional parameters be a non-fatal error. This is the - consensus of the austin group, though it is not historical practice. - Message from Geoff Clare <20090505091501.GA10097@squonk.masqnet> of - 5 May 2009 and http://austingroupbugs.net/view.php?id=155 + 6/20 + ---- +builtins/mapfile.def + - mapfile: move the line count increment and check for having read + the specified number of lines to the end of the loop to avoid + reading an additional line with zgetline. Fixes bug reported by + Dan Douglas + + 6/21 + ---- +execute_cmd.c + - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on + all systems, since it's tested later in the function. Fixes bug + reported by John E. Malmberg - 5/20 + 6/22 ---- -lib/glob/glob.c - - tentative fix to glob_filename to compensate for glob_vector putting - null pathname at front of result vector when dflags&GX_NULLDIR. - Current fix manually removes empty string element from front of - result vector; a better fix would be to use a flag so glob_vector - doesn't add it at all. Augments patch from 4/28, which appears to - have broken some things. Fixes bug reported by Matt Zyzik - +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 - 5/22 - ---- +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 -lib/glob/glob.c - - better fix for glob_filename; supersedes patch of 5/20. Now the - code does not set GX_ADDCURDIR if directory_len == 0 and the - function has not been called recursively ((flags & GX_ALLDIRS) == 0). - Better fix for bug reported by Matt Zyzik +nojobs.c + - job_control: now declared as int variable, initialized to 0, never + modified -Makefile.in - - fix build race condition that occurs in some makes caused by - libreadline.a and libhistory.a containing some of the same files - (e.g., xmalloc.o) and conflicting when trying to build both at - the same time. Reported by Mike Frysinger +jobs.h + - job_control: extern declaration no longer dependent on JOB_CONTROL - 5/25 - ---- -lib/readline/vi_mode.c - - fix _rl_vi_initialize_line so that the loop counter is not - unsigned (it doesn't matter, but it eliminates a compiler warning). - Bug reported by Dave Caroline +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 - 5/26 + 6/23 ---- -doc/{bash.1,bashref.texi} - - add text to the description of array variables making it clear - that an array variable is not considered set until a subscript - has been assigned a value +lib/glob/glob.c + - glob_filename: check for interrupts before returning if glob_vector + returns NULL or an error. Bug reported by Serge van den Boom + , fix from Andreas Schwab + - call run_pending_traps after each call to QUIT or test of + interrupt_state, like we do in mainline shell code + - glob_vector: don't call QUIT; in `if (lose)' code block; just free + memory, return NULL, and let callers deal with interrupt_state or + other signals and traps - 5/29 + 6/25 ---- -lib/readline/text.c - - fix rl_change_case to handle case where mbrtowc doesn't find a - valid multibyte character - -lib/readline/vi_mode.c - - fix _rl_vi_change_mbchar_case to handle case where mbrtowc doesn't - find a valid multibyte character - -lib/sh/casemod.c - - fix sh_modcase to handle case where mbrtowc doesn't find a valid - multibyte character +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 -lib/readline/mbutil.c - - fix _rl_find_next_mbchar_internal to not call mbrtowc at the end of - the string, since implementations return different values -- just - break the loop immediately + 6/26 + ---- +trap.c + - signal_is_pending: return TRUE if SIG argument has been received and + a trap is waiting to execute -lib/readline/display.c - - fix rl_redisplay to make same sort of cursor position adjustments - based on multibyte locale and _rl_last_c_pos when performing - horizontal scrolling rather than line wrapping. Probably still - more to do. Fixes bug reported by jim@jim.sh +trap.h + - signal_is_pending: extern declaration - 6/5 - --- -doc/{bash.1,bashref.texi} - - added some more explanation of the inheritance of the ERR trap at - the suggestion of Thomas Pospisek +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? -findcmd.c - - use eaccess(2) if available in file_status to take other file - access mechanisms such as ACLs into account. Patch supplied - by werner@suse.de +variables.c + - sv_histtimefmt: set history_comment_character to default (`#') if + it's 0 when we're turning on history timestamps. The history code + uses the history comment character to prefix timestamps, and + leaving it at 0 effectively removes them from the history. From a + report to help-bash by Dennis Williamson - 6/12 + 6/27 ---- -xmalloc.c - - also calculate lowest brk() value the first time xmalloc/xrealloc - (and their sh_ counterparts) are called - - error messages consolidated into a single function (allocerr/ - sh_allocerr) to avoid string duplication +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/16 + 6/30 ---- +variables.h + - additional defines for the new `nameref' variable attribute + (att_nameref): nameref_p, nameref_cell, var_setref + variables.c - - changes to allow variables.c to be compiled if ALIAS is not defined. - Bug and fix from John Gatewood Ham + - 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] -lib/sh/getcwd.c - - fix so systems defining BROKEN_DIRENT_D_INO have the necessary - defines. Fix from Jay Krell +execute_cmd.c + - execute_for_command: changes to implement ksh93 semantics when index + variable is a nameref -configure.in - - add -D_ALL_SOURCE to interix CFLAGS for struct timezone definition. - Bug and fix from John Gatewood Ham +builtins/setattr.def + - show_var_attributes: change to add `n' to flags list if att_nameref + is set - 6/29 - ---- -variables.c - - change initialize_shell_variables to add environment variables with - invalid names to the variables hash table, but marking them as - invisible and imported - - new function, export_environment_candidate. Used when creating the - export environment for commands to include variables with invalid - names inherited from the initial environment. Apparently this - behavior is widespread - - change make_var_export_array to use export_environment_candidate - rather than visible_and_exported to test variables for inclusion - in the export environment - - 7/1 - --- -builtins/read.def - - fix a memory leak where the number of fields is not the same as - the number of variables passed to `read'. Bug report from - werner@suse.de +builtins/set.def + - unset_builtin: changes to error messages to follow nameref variables -builtins/command.def - - move section of code that sets PATH from -p option before the - verbose-handling section, so command -v and command -V honor - the PATH set by command -p. Bug report and fix from - ohki@gssm.otsuka.tsukuba.ac.jp +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/9 + 7/5 --- -subst.c - - change brace_expand_word_list to defer brace expansion on compound - array assignments that are arguments to builtins like `declare', - deferring the expansion until the assignment statement is processed. - Fixes inconsistency reported by agriffis@n01se.net +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 - 7/16 - ---- -bashline.c - - fix bash_execute_unix_command to set rl_point correctly based on - READLINE_POINT. The old method of using save_point will not - work because maybe_make_readline_line will change rl_point. Bug - reported by Henning Bekel +variables.h + - unbind_nameref: extern declaration -trap.c - - fix _run_trap_internal and run_pending_traps to save and restore - value of subst_assign_varlist so the dispose_words on it doesn't - leave dangling pointers after the trap handler runs. Fixes bug - reported by Marc Herbert +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 - 7/22 - ---- -subst.c - - fix off-by-one error in pos_params when computing positional - parameters beginning with index 0. Bug and fix from Isaac Good - +doc/{bash.1,bashref.texi} + - document namerefs and typeset/declare/local/unset -n - 7/24 + 7/13 ---- -lib/readline/display.c - - add code to _rl_move_cursor_relative and _rl_col_width to short- - circuit a few special cases: prompt string and prompt string plus - line contents, both starting from 0. Saves a bunch of calls to - multibyte character functions using already-computed information. - As a side effect, fixes bug reported by Lasse Karkkainen - +lib/sh/casemod.c + - include shmbchar.h for is_basic and supporting pieces + - sh_casemod: use _to_wupper and _to_wlower to convert wide character + case instead of TOUPPER and TOLOWER. Fixes bug reported by + Dennis Williamson , fix from + Andreas Schwab + - cval: short-circuit and return ascii value if is_basic tests true + - sh_casemod: short-circuit and use non-multibyte case modification + and toggling code if is_basic tests true -subst.c - - fixed a problem in split_at_delims that could leave *cwp set to -1 - if the line ends in IFS whitespace and SENTINEL is one of those - whitespace characters. Fixes problem with setting COMP_CWORD for - programmable completion reported by Ville Skytta +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() -bashline.c - - change bash_execute_unix_command to clear the current line (if the - terminal supplies the "ce" attribute) instead of moving to a new - line. Inspired by report from Henning Bekel +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 -builtins/printf.def - - changes to allow printf -v var to assign to array indices, the way - the read builtin can. Suggested by Christopher F. A. Johnson - +lib/readline/rltty.c + - prepare_terminal_settings: don't mess with IXOFF setting if + USE_XON_XOFF defined -lib/readline/complete.c - - fix rl_old_menu_complete and rl_menu_complete to appropriately set - and unset RL_STATE_COMPLETING while generating the list of matches. - Fixes debian bug #538013 reported by Jerome Reybert - +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 - 7/25 - ---- -execute_cmd.c - - change execute_builtin to temporarily turn off and restore the ERR - trap for the eval/source/command builtins in the same way as we - temporarily disable and restore the setting of the -e option. - Fixes bug reported by Henning Garus +bashline.c + - edit_and_execute_command: increment current_command_line_count before + adding partial line to command history (for command-oriented-history + because of rl_newline at beginning of function), then reset it to 0 + before adding the dummy history entry to make sure the dummy entry + doesn't get added to previous incomplete command. Partial fix for + problem reported by Peng Yu - 7/27 + 7/24 ---- -shell.c - - add fflush(stdout) and fflush(stderr) to exit_shell before closing - any file descriptors at exit time (e.g., coproc pipes) +configure.in + - interix: define RECYCLES_PIDS. Based on a report from Michael + Haubenwallner - 7/30 + 7/26 ---- -lib/readline/complete.c - - new function rl_backward_menu_complete, just passes negative count - argument to rl_menu_complete - - change rl_menu_complete to act appropriately if rl_last_command is - rl_backward_menu_complete, so we can cycle forward and backward - through the list of completions +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 + -lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 - - document new "menu-complete-backward" bindable readline function. - Suggested by Jason Spiro +support/shobj-conf + - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We + can finally kill Panther -lib/readline/vi_keymap.c - - add binding of C-n to menu-complete and C-p to menu-complete-backward - in vi-insert keymap, as suggested by Jason Spiro - + 7/28 + ---- +subst.c + - command_substitute: make sure last_made_pid gets reset if make_child + fails -pcomplete.c - - fixed a bug in programmable_completions: the options it returned from - the compspec it found were set before generating the completions, - which meant that any changes made by "compopt" were overridden and - only in effect for the duration of the executing shell function - rather than the entire completion. Fixes bug reported by Ville - Skytta +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 - 7/31 - ---- -lib/readline/keymaps.c - - fixed memory leak in rl_discard_keymap by freeing storage associated - with hierarchical keymaps - - new convenience function, rl_free_keymap, that calls rl_discard_keymap - and frees the keymap passed as an argument +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 + -lib/readline/util.c - - new bindable keymap function, _rl_null_function, to be used internally + 7/29 + ---- +shell.c + - subshell_exit: new function, exits the shell (via call to sh_exit()) + after calling any defined exit trap -lib/readline/rlprivate.h - - extern declaration for _rl_null_function +externs.h + - subshell_exit: new extern declaration -lib/readline/bind.c - - fix rl_generic_bind in the case where we are trying to override a - keymap with a null function (e.g., when trying to unbind it). We - can't use a NULL function pointer in ANYOTHERKEY since that's - indistinguishable from the keymap not having been overridden at all. - We use _rl_null_function instead, which simply does nothing. We - could add an rl_ding to it later. Fixes problem with hitting ESC - repeatedly while in vi command mode reported by James Rowell - +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 -builtins/bind.def - - call rl_bind_keyseq instead of rl_set_key for -r option +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 + -lib/readline/readline.c - - Set vi_movement_keymap[ESC] to _rl_null_function after binding the - arrow keys in bind_arrow_keys() to allow vi-mode users to hit ESC - multiple times in vi command mode while still allowing the arrow - keys to work +{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c +builtins/{cd,fc,pushd,ulimit}.def +lib/malloc/getpagesize.h +lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c + - make inclusion of dependent on HAVE_SYS_PARAM_H + consistently - 8/2 + 8/6 --- -bashline.c - - fix clear_hostname_list by setting hostname_list_initialized to 0 - after freeing all list members. Fixes bug reported by Freddy - Vulto - -lib/readline/display.c - - in update_line, if we copy data from one line to another because we - are wrapping a multibyte character from, say, the first line to the - second, we need to update OMAX and the line indices to account for - the moved data. Bug report and fix from Martin Hamrle - +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/3 + 8/7 --- -pcomplete.h - - defines for EMPTYCMD ("_EmptycmD_") and DEFAULTCMD ("_DefaultCmD_") +configure.in + - AC_CANONICAL_BUILD: invoke for later use -builtins/complete.def - - change compopt_builtin to make -E work on the "empty" command - completion - - fix print_compitem and print_compopts to replace EMPTYCMD with -E - - added -D (default) option to complete/compgen/compopt. No supporting - code yet +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 -doc/bash.1,lib/readline/doc/rluser.texi - - document new -D, -E options to compopt - - document new -D option to complete/compgen +lib/readline/rlprivate.h + - _rl_prev_macro_key: extern declaration -shell.h - - new define, EX_WEXPCOMSUB, value of 125 - - new define, EX_RETRYFAIL, value of 124 (for programmable completion) -subst.c - - use EX_WEXPCOMSUB instead of literal 125 as exit status when a shell - invoked to run wordexp(3) with the -n option supplied attempts a - command substitution +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 -pcomplete.c - - new define, PCOMP_RETRYFAIL, used to indicate a "failure, retry with - next completion" status to the programmable completion code + 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 - 8/4 - --- -pcomplete.c - - changed gen_shell_function_matches to take an extra parameter - indicating whether the specified shell function was not found or - returned the special "fail/retry" status, and, if it was either, - to not bother returning any matches list - - changed gen_compspec_completions to take an extra parameter to pass - through the "found" status from gen_shell_function_completions - - new function gen_progcomp_completions to take care of searching for - and evaluating a compspec for a particular word, saving its status, - and returning to its caller (programmable_completions) whether or - not to retry completion. This function also checks whether a - retry changed the compspec associated with a command and short- - circuits the retry if it has not - - changed programmable_completions to try default completion (if set) - if a specific completion was not found for a command - - changed programmable_completions to implement "fail/retry" semantics - for a shell function that returns 124 and changes the compspec - associated with the command. All based on proposal and changes from - Behdad Esfahbod (Red Hat bugzilla 475229) +builtins/common.h + - extern declaration for evalstring() -doc/bash.1,lib/readline/doc/rluser.texi - - documented new dynamic programmable completion functionality +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 + - 8/5 - --- -stringlib.c - - first argument to substring() is now `const char *' +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 -externs.h - - changed extern declaration for substring() +builtins/mapfile.def + - run_callback: call evalstring instead of parse_and_execute -subst.c - - skipsubscript now takes a third FLAGS argument, passes to - skip_matched_pair - - skip_matched_pair now interprets flags&1 to mean not to parse - matched pairs of quotes, backquotes, or shell word expansion - constructs + 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 -{subst,general,expr}.c - - changed skipsubscript() callers + 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 -assoc.c - - changed assoc_to_assign to double-quote the key if it contains any - shell metacharacters + 8/19 + ---- +shell.c + - call start_debugger from main() only if dollar_vars[1] != 0 (close + enough to a non-interactive shell, since we can be interactive with + -i while running a shell script). Fixes oddity reported by + Techlive Zheng + 8/20 + ---- arrayfunc.c - - use skipsubscript in quote_assign rather than quote any glob - characters in the subscript of an array assignment - - in assign_compound_array_list, call skipsubscript with a flags - argument of 1 if assigning an associative array to avoid trying - to re-parse quoted strings + - 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 -redir.c - - set expanding_redir before expanding body of here documents and - here strings to avoid looking for variables in temporary env + 8/21 + ---- +command.h + - W_NOBRACE: new word flag that means to inhibit brace expansion - 8/7 - --- -lib/readline/readline.c - - in _rl_dispatch_callback, return value of -3 means that we have - added to a key sequence, but there are previous matches in the - sequence. Don't call _rl_subseq_result if we get a -3 from a - previous context in the chain; just go back up the chain. Report - and fix from +subst.c + - brace_expand_word_list: suppress brace expansion for words with + W_NOBRACE flag -bashline.c - - fixes to history_completion_generator and bash_dabbrev_expand to - make dabbrev-expand inhibit suppressing of appending space char - to matches. Have to do it with the generator too because - rl_menu_complete turns off suppressing the appended space in - set_completion_defaults(). Suggestion from Dan Nicolaescu - - - suppress completion match sorting in bash_dabbrev_expand by - setting rl_sort_completion_matches = 0. Suggestion from Dan - Nicolaescu - - don't qsort history match list in build_history_completion_array - if dabbrev_expand_active == 1 - - start the loop in build_history_completion_array that gathers words - from history for possible completions from the end of the list - rather than the beginning. It doesn't matter where you start if - the results are sorted, and dabbrev-expand is supposed to offer - the most recent completions first - - 8/12 + 8/22 ---- +builtins/read.def + - read_builtin: don't call dequote_string on what we've read, even if + we saw an escape character, unless (input_string && *input_string). + We may have escaped an IFS whitespace character. Fixes seg fault + reported by + execute_cmd.c - - change to execute_command_internal to make [[ ... ]] conditional - command subject to settings of `set -e' and the ERR trap + - execute_command_internal: set the_printed_command_except trap when + about to execute a ( ... ) user subshell. For now, set it only if + ERR is trapped; can relax that later. Fixes bug reported by + Mike Frysinger - 8/14 + 8/23 ---- -execute_cmd.c - - change to execute_command_internal to make (( ... )) arithmetic - command subject to settings of `set -e' and the ERR trap +jobs.c + - remove references to first_pid and pid_wrap, since we're not using + them for anything anymore -lib/readline/text.c - - new bindable function, rl_skip_csi_sequence, reads the characters - that make up a control sequence as defined by ECMA-48. Sequences - are introduced by the Control Sequence Indicator (CSI) and - contain a defined set of characters. Insert, End, Page Up and so - on are CSI sequences. Report and code from Andy Koppe - + 8/24 + ---- +subst.c + - changes for W_NOBRACE everywhere appropriate: so it can be displayed + for debugging, and passed out of expand_word_internal -lib/readline/readline.h - - extern declaration for rl_skip_csi_sequence +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 -lib/readline/funmap.c - - new bindable command "skip-csi-sequence", runs rl_skip_csi_sequence +doc/bashref.texi + - some small formatting changes from Karl Berry -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - documented new bindable command "skip-csi-sequence", unbound by - default + 8/27 + ---- +lib/readline/doc/{history,rlman,rluserman}.texi + - some small formatting changes from Karl Berry -builtins/evalfile.c - - fix _evalfile to remove embedded null bytes from the file read - into the string. Report and proposed fix from Roman Rakus - +arrayfunc.c + - assign_array_element_internal, assign_compound_array_list, + unbind_array_element, array_value_internal: changes to make + assignment statements to negative indices (a[-1]=2) and unsetting + array elements using negative indices (unset 'a[-1]') work. + From suggestions by Dennis Williamson + and Chris F. A. Johnson -{configure,config.h}.in - - check for syslog(3), define HAVE_SYSLOG - - check for syslog.h, define HAVE_SYSLOG_H +subst.c + - array_length_reference: changes to make length references to array + elements using negative indices (${#a[-1]}) work -config-top.h - - new define SYSLOG_HISTORY, disabled by default + 8/28 + ---- +doc/{bash.1,bashref.texi} + - document new treatment of negative indices to indexed arrays when + assigning, referencing, calculating length, and unsetting -config-bot.h - - if HAVE_SYSLOG or HAVE_SYSLOG_H are not defined, undef SYSLOG_HISTORY + 8/29 + ---- +shell.c + - show_shell_usage: add -l to list of shell invocation options (short + for --login). From Red Hat bug 852469 -bashhist.c - - if SYSLOG_HISTORY is defined, call bash_syslog_history with the - line added to the history in bash_add_history. - - new function, bash_syslog_history(line), sends line to syslog at - user.info. The line is truncated to send no more than 600 - (SYSLOG_MAXLEN) bytes to syslog. Feature requested by many, and - required by some national laws +configure.ac + - renamed from configure.in, as latest autoconf versions want. Patches + Stefano Lattarini -sig.c - - in termsig_handler, resend SIGHUP to children if subshell_environment - indicates we're a shell performing command or process substitution +MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles + - configure.in -> configure.ac -jobs.c - - add CHECK_TERMSIG calls to wait_for in addition to the ones in - waitchld() + 9/1 + --- -builtins/shopt.def - - new functions set_bashopts, parse_bashopts, and initialize_bashopts - to manage new environment variable $BASHOPTS, like $SHELLOPTS but - for shopt options - - change toggle_shopts to call set_bashopts after setting options, so - $BASHOPTS reflects new values +parse.y + - read_token_word: allow words like {array[ind]} to be valid redirection + words for constructs like {x} -configure.in - - new configure `enable' option --enable-exended-glob-default, to - set the initial default value of the `extglob' shell option +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 -config.h - - new define, EXTGLOB_DEFAULT, controlled by the `extended-glob-default' - configure option +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 -pathexp.c - - initialize extended_glob variable to EXTGLOB_DEFAULT +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 -doc/{bash.1,bashref.texi} - - document new $BASHOPTS variable and its behavior +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 -doc/bashref.texi - - document new --enable-extended-glob-default configure option +lib/readline/rlprivate.h + - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations - 8/16 - ---- -print_cmd.c - - new variables: xtrace_fd and xtrace_fp, the file descriptor and - FILE * to which we send `set -x' tracing output. If fd == -1 - then fp == STDERR, the default mode - - new function xtrace_init, sets xtrace_fd == -1 and xtrace_fp = stderr - - new function xtrace_set (fd, fp), sets xtrace_fd and xtrace_fp - to the arguments - - new function xtrace_reset, handles closing old xtrace fd/fp and - moving them back to -1/stderr - - new function xtrace_fdchck, calls xtrace_reset if the fd passed as - an argument is xtrace_fd - - change xtrace functions to fprintf to xtrace_fp instead of stderr +lib/readline/vi_mode.c + - rl_vi_insertion_mode: call _rl_reset_prompt + - rl_vi_movement_mode: call _rl_reset_prompt. Finishes changes for + showing mode in prompt string, originally requested by Miroslav + Koskar and most recently by Jordan Michael + Ziegler -shell.c - - call xtrace_init() very early in main() +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 - - new special variable, BASH_XTRACEFD, holds file descriptor used for - set -x trace output. Inspired by suggestion from Bruce Korb - + - 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} - - added description of new BASH_XTRACEFD variable + - CHILD_MAX: document new meaning and action when variable is set + 9/5 + --- redir.c - - add calls to xtrace_fdchk to the redirections that close file - descriptors, so we notice if we close BASH_XTRACEFD and compensate - accordingly (same places that call coproc_fdchk()) - - 8/18 - ---- -lib/readline/text.c - - change to _rl_replace_text to add error checks: start must be <= - end, and we don't call rl_insert_text if passed the empty string + - 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 + -config.h.in - - add define for HAVE_ICONV, already found by intl autoconf macros - - add define for HAVE_LOCALE_CHARSET + 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 -aclocal.m4 - - add check for locale_charset() to BASH_CHECK_MULTIBYTE - -lib/sh/fnxform.c - - new file with two public function: fnx_tofs and fnx_fromfs. - Primarily intended for use on MacOS X, they use iconv to convert - between whatever the current locale encoding is and "UTF-8-MAC", - a special encoding on OS X in which all characters are - decomposed unicode, as the HFS+ filesystem stores them. These - functions return a pointer to a local buffer, allocated once and - resized as necessary, to avoid too many allocations; callers - should not free the return value, since it may be the string - passed + 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 -Makefile.in - - make sure LIBICONV is set by autoconf (@LIBICONV@) and added to - list of link libraries +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 -externs.h - - new extern declarations for fnx_fromfs and fnx_tofs +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 -lib/glob/glob.c - - convert the filename read using readdir() in glob_vector() using - fnx_fromfs and use that value in the call to strmatch. This - ensures that we're using the precomposed Unicode value of the - filename rather than the native decomposed form. Original bug - report from Len Lattanzi ; fix inspired by - Guillaume Outters +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 - 8/19 + 9/11 ---- -lib/readline/complete.c - - new completion hook: rl_filename_rewrite_hook, can rewrite or modify - filenames read from the filesystem before they are compared to the - word to be completed -lib/readline/readline.h - - extern declaration for rl_filename_rewrite_hook +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 -lib/readline/doc/rltech.texi - - document rl_filename_rewrite_hook + 9/13 + ---- +configure.ac,config.h.in + - enable-direxpand-default: new configure option, turns the `direxpand' + shell option on by default bashline.c - - new function, bash_filename_rewrite_hook, assigned to - rl_filename_rewrite_hook. Calls fnx_fromfs to convert from - filesystem format to "input" format. This makes completing - filenames with accented characters work on Mac OS X + - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if + DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero - 8/20 - ---- -lib/readline/bind.c - - new bindable variable "skip-completed-text", bound to - _rl_skip_completed_text. If enabled, it means to note when - completing before the end of a word and skipping over characters - after rl_point that match in both the completion to be inserted - and the word being completed. It means that completing - `Makefile' with the cursor after the `e' results in `Makefile' - instead of `Makefilefile'. Inspired by an idea from Jared - Yanovich from back in 2004 +doc/bashref.texi + - enable-direxpand-default: document new configure option -lib/readline/rlprivate.h - - extern declaration for _rl_skip_completed_text + 9/14 + ---- +shell.c + - --protected: make option valid only when wordexp is compiled into + the shell. Fix from Roman Rakus -lib/readline/complete.c - - implement semantics of _rl_skip_completed_text in insert_match: - skip characters in `replacement' that match chars in rl_line_buffer - from the start of the word to be completed +configure.ac + - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from + Joachim Schmitz - 8/21 + 9/16 ---- -error.c - - change parser_error to set last_command_exit_value to 2 before - calling exit_shell (if set -e is enabled), so any exit or ERR - trap gets the right value of $?. Suggestion from Stefano - Lattarini +subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c + - minor code cleanups from Joachim Schmitz -braces.c - - fix expand_seqterm so that a non-zero-prefixed term that's longer - than a zero-prefixed term determines the length of each term - in the brace-expanded sequence. This means that things like - {01..100} will have three digits in all the elements of the - expanded list. Fixes bug reported by Jeff Haemer - +lib/readline/colors.h + - workaround for HP NonStop compiler issue with from + Joachim Schmitz - 8/24 + 9/17 ---- -{arrayfunc,variables}.c - - when inserting a value into an associative array using syntax like - T=v where T is an already-declared associative array using key "0", - make sure the key is in newly-allocated memory so it can be freed - when the variable is unset. Fixes bug reported as redhat 518644 - by Jon Fairbairn +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 - 8/26 - ---- -lib/readline/funmap.c - - add "old-menu-complete" binding for rl_old_menu_complete +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 -lib/readline/readline.h - - add extern declaration for rl_old_menu_complete + 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 -subst.c - - fix memory leak when processing ${!prefix@}. Need to dispose all - words in the word list created from all matching variable. Fixes - bug reported by muszi@muszi.kite.hu. + 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 - 8/29 + 9/22 ---- execute_cmd.c - - add fflush(stdout) and fflush(stderr) to child coproc code before - calling exit after execute_in_subshell + - 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 - 8/31 + 9/23 ---- -lib/readline/{{bind,readline}.c,rlprivate.h} - - new bindable variable, "echo-control-characters", enabled by default. - This controls whether or not readline honors the tty ECHOCTL bit - and displays characters corresponding to keyboard-generated signals. - Controlled by _rl_echo_control_chars variable, declared in readline.c - -lib/readline/signals.c - - if _rl_echo_control_chars == 0, don't go through _rl_echo_signal_char +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 -lib/readline/doc/{readline.3,rluser.texi} - - document "echo-control-characters" bindable variable + 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 - 9/1 - --- -lib/readline/histexpand.c - - hist_string_extract_single_quoted now takes an additional argument: - a flags word. The only defined value (flags & 1) allows backslash - to quote the single quote. This is to inhibit history expansion - inside $'...' containing an escaped single quote. - - change history_expand to call hist_string_extract_single_quoted - with flags == 1 if it sees $'. Fixes bug reported by Sean - Donner + 10/2 + ---- +command.h + - add c_lock member to coproc structure for future use to tell who is + manipulating it - 9/2 - --- -builtins/printf.def - - add a call to sh_wrerror if ferror() succeeds in the PRETURN macro, - to print an error message in the case that the final fflush fails - (for instance, because it attempts to write data that didn't have a - trailing newline). Fixes bug reported by Stefano Lattarini - +execute_cmd.c + - execute_coproc: block SIGCHLD while parent is forking coproc + process and adding pid to sh_coproc struct to avoid race condition + where child is reaped before the pid is assigned and the coproc is + never marked as having died. Fixes race condition identified by + Davide Baldini + - add assignments to c_lock member of struct coproc in various + functions that manipulate it; was used to identify race condition + - coproc_pidchk: don't call coproc_dispose to avoid using malloc and + other functions in a signal handler context + - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while + manipulating the sh_coproc struct - 9/7 - --- -arrayfunc.c - - some fixes to assign_compound_array_list to avoid null pointer - dereferences pointed out by clang/scan-build + 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 -lib/glob/glob.c - - fixes to udequote_pathname and wdequote_pathname to avoid possible - null pointer dereferences pointed out by clang/scan-build + 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 -lib/readline/undo.c - - fix to _rl_copy_undo_list (function unused) to avoid deref of - uninitialized pointer pointed out by clang/scan-build +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 -general.c - - fix string_to_rlimtype so it works if passed a null pointer (though - it never is) +test.c + - unary_operator: add new -R variable, returns true if variable is set + and has the nameref attribute. From ksh93 -builtins/mapfile.def - - fix to mapfile() to avoid possible null pointer dereference pointed - out by clang/scan-build +builtins/test.def + - add -R to description of conditional commands for help test -variables.c - - fix to valid_exportstr to avoid possible null pointer dereferences - pointed out by clang/scan-build +doc/{bash.1,bashref.texi} + - document new -R unary conditional operator -bashline.c - - fix to bash_execute_unix_command to avoid possible null pointer - dereference if READLINE_LINE or READLINE_POINT is not bound + 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 - 9/11 - ---- -[Prayers for the victimes of 9/11/2001] +trap.h + - extern declaration for check_signals_and_traps -command.h - - add `rflags' member to struct redirect to hold private flags and - state information - - change redirector to a REDIRECTEE instead of int to prepare for - possible future changes +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 -{copy_cmd,dispose_cmd,make_cmd,print_cmd,redir}.c - - changes resulting from type change of `redirector' member of struct - redirect: change x->redirector to x->redirector.dest and add code - where appropriate to deal with x->redirector.filename -make_cmd.h - - change extern declaration for make_redirection + 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) -make_cmd.c - - first argument of make_redirection is now a `REDIRECTEE' to prepare - for possible future changes. First arg is now assigned directly to - redirector member instead of assigning int to redirector.dest +sig.c + - sigint_sighandler: call bashline_set_event_hook to set the event + hook if we're executing in a readline signal handler context -{make_cmd,redir}.c,parse.y - - changes resulting from type change of first argument to - make_redirection from int to REDIRECTEE. In general, changes are - using REDIRECTEE sd and assigning old argument to sd.dest, then - passing sd to make_redirection +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) -make_cmd.[ch],parse.y - - add fourth argument to make_redirection: flags. Sets initial value - of `rflags' member of struct redirect - - changed all callers of make_redirection to add fourth argument of 0 - 9/15 - ---- parse.y - - change read_token_word to return REDIR_WORD for tokens of the form - {var} where `var' is a valid shell identifier and the character - following the } is a `<' or `>' - - add REDIR_WORD versions of all input and output file redirections - and here documents - -print_cmd.c - - change input and output file redirection direction and here - document cases of print_redirection to print a varname - specification of the form {var} when appropriate. Still need - to fix rest of cases + - yy_readline_get: don't set interrupt_immediately before we call + readline(). Inspired by report from lanshun zhou + -redir.c - - implement REDIR_VARASSIGN semantics for file input and output - redirections and here documents +input.c + - getc_with_restart: add call to run_pending_traps after call to + CHECK_TERMSIG - 9/16 - ---- -parse.y - - added REDIR_WORD versions of remaining redirection constructs except - for err_and_out ones +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 -redir.c - - handle REDIR_VARASSIGN semantics for rest of redirection constructs - - accommodate REDIR_VARASSIGN when translating redirections - - new function, redir_varvalue, does variable lookup for {v} when - redirection needs the value (e.g., r_close_this) +builtins/mapfile.def + - mapfile: don't set interrupt_immediately before calling zgetline() + (which uses zread internally) -print_cmd.c - - fix rest of cases to print {varname} when REDIR_VARASSIGN is set in - redirect->rflags +builtins/read.def + - read_builtin: don't set interrupt_immediately before calling zread + (moved code around so that it was only being set right around calls + to zread to avoid signal handler conflicts). Inspired by report + from lanshun zhou + - edit_line: don't set interrupt_immediately around call to readline() + - include shmbutil.h + - read_builtin: don't call read_mbchar unless is_basic(c) returns + false for the character we just read -doc/{bash.1,bashref.texi} - - document new {varname} REDIR_VARASSIGN form of redirections + 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 -tests/vredir.{right,tests},vredir[1-5].sub - - tests for new {varname} REDIR_VARASSIGN form of redirections + 10/20 + ----- +builtins/wait.def + - WAIT_RETURN: set wait_signal_received back to 0 for the potential + next call to wait - 9/18 - ---- -subst.c - - new flags argument to split_at_delims: these flags are ORd with - SD_NOJMP and passed to skip_to_delim - - change skip_to_delim to honor new SD_NOQUOTEDELIM flag by not - checking whether or not single and double quotes are delimiters - if it's set in passed flags until after skipping quoted strings. +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 -subst.h - - change extern declaration for split_at_delims - - new define for SD_NOQUOTEDELIM flag +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 -pcomplete.c - - pass SD_NOQUOTEDELIM in flags argument to split_at_delims so single - and double quotes, even though they're in - rl_completer_word_break_characters, don't act as word delimiters - for programmable completion. Fixes bug reported by Freddy - Vulto +trap.c + - trap_handler: make sure wait_signal_received is set if the wait + builtin is executing, and only longjmp if interrupt_immediately is + set. This whole set of fixes was prompted by report from + lanshun zhou + 10/24 + ----- lib/glob/glob.c - - in glob_filename, after recursively scanning a directory specified - with `**', turn off GX_ALLDIRS|GX_ADDCURDIR before calling - glob_vector on the rest of the pathname, since it may not apply to - the rest of the pattern. Turned back on if the filename makes it - appropriate. Fixes bug reported by Anders Kaseorg + - glob_filename: only check directory_name for globbing chars if + it's of non-zero length -redir.c - - change execute_null_command to fork a child to execute if any of - the commands redirections have the REDIR_VARASSIGN flag set, since - those commands are not supposed to have side effects +lib/sh/strchrnul.c + - new simpler implementation -test.c - - < and > binary operators will obey the locale by using strcoll if - the TEST_LOCALE flag is passed to binary_test +subst.c + - command_substitute: call set_shellopts after turning off errexit + in subshells so it's reflected in $SHELLOPTS -test.h - - new define for TEST_LOCALE + 11/7 + ---- +builtins/evalstring.c + - parse_and_execute: treat ERREXIT case like reader_loop does: set + variable_context to 0 before longjmping back to top_level. Don't + run the unwind-protect context to avoid side effects from popping + function contexts. Part of fix for problem reported by Nikolai + Kondrashov execute_cmd.c - - execute_cond_node sets TEST_LOCALE so [[ str1 < str2 ]] (and >) - obey the locale. Fixes bug/incompatibility reported by Greg - Wooledge - -doc/{bash.1,bashref.texi} - - documented [[ command new locale-sensitive treatment of < and > - - 9/24 - ---- -configure.in - - add "darwin10" cases like darwin8 and darwin9 to handle linking with - included readline and history libraries + - execute_simple_command: call unlink_fifo_list only if this is the + last element of a pipeline (or not in a pipeline), rather than for + every child. Fixes difference in behavior between /dev/fd and + FIFOs reported by Zev Weiss + - execute_null_command: do the same thing in the parent branch after + make_child - 9/26 - ---- -lib/readline/display.c - - modify change of 7/24 to use prompt_physical_chars instead of - prompt_visible_length to account for visible multibyte characters in - the line (usually in the prompt). Fixes debian bug #547264 - reported by Pietro Battiston - - add flags argument to _rl_col_width; changed callers. flags > 0 - means that it's ok to use the already-computed prompt information; - flags == 0 means that we're expanding the prompt and we should not - short-circuit + 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 -parse.y - - in decode_prompt_string, when expanding \w and \W on Mac OS X, - use fnx_fromfs to convert from "filesystem" form to "input" form. - This makes $PWD with multibyte characters work in the prompt - string on Mac OS X +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 -lib/sh/fnxform.c - - in fnx_fromfs and fnx_tofs, use templen instead of outlen as last - argument in calls to iconv, since outlen is used to keep track of - the size of the buffer, and iconv potentially modifies its - `outbytesleft' argument +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 - 9/29 - ---- -subst.c - - make skip_to_delim understand how to skip over process substitution - constructs the way it skips $(...) command substitution +lib/malloc/malloc.c + - block_signals: renamed to _malloc_block_signals, made public + - unblock_signals: renamed to _malloc_unblock_signals, made public - 9/30 - ---- -lib/readline/terminal.c - - don't set the `terminal has meta key' flag if the `MT' capability is - available; that means something completely different +lib/malloc/imalloc.h + - extern declarations for _malloc_{un,}block_signals - 10/1 - ---- -builtins/help.def - - make sure width is at least 7, since we pass `width/2 - 3' to strncpy - as the length argument. Terminal widths <= 6 are converted to 80. - Fixes bug reported by Chris Hall +lib/malloc/table.c + - mregister_alloc, mregister_free: block signals around table + manipulation -configure.in - - changed version to 4.1-alpha + 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 -subst.h - - new flag for skip_to_delim: SD_NOSKIPCMD, which means to not skip - over embedded command and process substitutions, but rather to look - for delimiters within them +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 -subst.c - - implement semantics of SD_NOSKIPCMD in skip_to_delim +include/stdc.h + - CPP_STRING: new define, replaces __STRING -bashline.c - - call skip_to_delim with SD_NOSKIPCMD from find_cmd_start, so - programmable completion can use the completion defined for `b' for - command lines like "a $(b c". Fixes inconsistency/bug reported by - Freddy Vulto +lib/malloc/{malloc.c,imalloc.h} + - replace __STRING with CPP_STRING -parser.h - - replace unused PST_CMDTOKEN parser state value with PST_EXTPAT, - means currently parsing an extended glob pattern (extglob) + 11/16 + ----- +lib/readline/bind.c + - sv_histsize: if argument evaluates to a value < 0, unstifle the + history -parse.y - - fix cond_node() so that extended_glob is set before parsing the - rhs of the `==' or `!=' operators. For ksh93 compatibility. - - reset extended_glob to global value (saved in parse_cond_command()) - in reset_parser() + 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 - 10/5 - ---- + 11/24 + ----- jobs.c - - change waitchld() to only interrupt the wait builtin when the shell - receives SIGCHLD in Posix mode. It's a posix requirement, but - makes easy things hard to do, like run a SIGCHLD trap for every - exiting child. Change prompted by question from Alex Efros - - -doc/bashref.texi - - document new posix mode behavior about SIGCHLD arriving while the - wait builtin is executing when a trap on SIGCHLD has been set + - 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 - 10/6 - ---- -lib/readline/histexpand.c - - fix hist_expand to keep from stopping history expansion after the - first multibyte character (a `break' instead of a `continue'). - Fixes debian bug (#549933) reported by Nikolaus Schulz - +jobs.h + - ANY_PID: new define - 10/8 - ---- -builtins/read.def - - implement new `-N nchars' option: read exactly NCHARS characters, - ignoring any delimiter, and don't split the result on $IFS. - Feature requested by Richard Stallman +builtins/wait.def + - new option: -n. Means to wait for the next job and return its exit + status. Returns 127 if there are no background jobs (or no + children). Feature most recently requested by Elliott Forney + doc/{bash.1,bashref.texi} - - document new `read -N' option - - 10/9 - ---- -lib/readline/bind.c - - new bindable variable, "enable-meta-key", controls whether or not - readline enables any meta modifier key the terminal claims to - support. Suggested by Werner Fink + - document new `wait -n' option -lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 - - document new readline "enable-meta-key" bindable variable +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 + - 10/10 + 11/28 ----- -trap.c - - new function, free_trap_string(), does what it says and turns off - SIG_TRAPPED flag without changing signal disposition - -[bash-4.1-alpha frozen] - 10/16 - ----- -builtins/mapfile.def - - return an error if the variable passed is not an indexed array. - Fixes bug reported by Nick Hobson - - change help text to make it clear that an indexed array is required +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 -doc/{bash.1,bashref.texi} - - changed description of mapfile to note that the array variable - argument must be an indexed array, and mapfile will return an - error if it is not +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 - - change expand_string_unsplit and expand_string_leave_quoted to - add the (previously unused) W_NOSPLIT2 flag to the created word - - change expand_word_internal to understand W_NOSPLIT2 to mean that - we're not going to split on $IFS, so we should not quote any - characters in IFS that we add to the result string. Fixes bug - reported by Enrique Perez-Terron - - change cond_expand_word similarly. Fixes rest of bug reported by - Enrique Perez-Terron + - 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 -parse.y - - save and restore value of last_command_subst_pid around call to - expand_prompt_string in decode_prompt_string. Fixes bug that causes - $? to be set wrong when using a construct like false || A=3 when - set -x is enabled and $PS4 contains a command substitution. Reported - by Jeff Haemer - - 10/17 + 11/30 ----- -execute_cmd.c - - in execute_in_subshell, make sure we set setjmp(return_catch) before - running the command, in case the command or its word expansion - calls jump_to_top_level. Fixes bug reported by Nils Bernhard - +test.c + - unary_op: make sure -v and -n check that the variable is not marked + as invisible before calling var_isset. Fix for bug reported by Tim + Friske + 12/2 + ---- subst.c - - new PF_NOSPLIT2 flag for param_expand - - parameter_brace_expand takes a new `pflags' argument, before the - `output' parameters; passes to param_expand as necessary - - change parameter_brace_expand to call parameter_brace_expand_word - with the PF_NOSPLIT2 flag if the pflags argument to - parameter_brace_expand has it set + - 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 + -parse.y - - change report_syntax_error to set last_command_exit_value to - EX_BADSYNTAX if parse_and_execute_level is > 0, indicating a - syntax error while we're executing a dot script, eval string, - trap command, etc. + 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 -builtins/evalstring.c - - in parse_and_execute, if parse_command() returns non-zero, - indicating a parse error, print a warning message if the conditions - would require a posix-mode shell to abort (parse error in a `.' - script or eval string) + 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 - 10/19 +lib/sh/zread.c + - zreadn: new function, like zread, but takes an additional argument + saying how many bytes to read into the local buffer. Can be used to + implement `read -N' without so many one-byte calls to zreadc. Code + from Mike Frysinger + + 12/12 ----- -builtins/evalfile.c - - even if the `check binary' flag is not passed to _evalfile, return an - error after reading 128 null characters if called by `source', on - the assumption that it's probably a binary file. [This will be in - bash-4.1-beta] +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 - 10/24 + 12/13 ----- -[bash-4.1-alpha released] +execute_cmd.c + - execute_coproc: handle the command's exit status being inverted + (an oversight). Fixes bug reported by DJ Mills + and Andreas Schwab -bashline.c - - don't call command_substitution_completion_function if we're - completing a substring delimited by a single quote. Fixes bug - reported by bash-bugs@atu.cjb.net + 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 + -lib/readline/complete.c - - make sure _rl_skip_completed_text defaults to 0, as the - documentation states (incorrect in bash-4.1-alpha) - - in insert_match, skip over a close quote in the replacement text if - the character at point when completion is invoked is a single - quote. Fixes complaint from bash-bugs@atu.cjb.net +builtins/printf.def + - printf_builtin: '%()T' conversion: if there is no argument supplied, + behave as if -1 had been supplied (current time). ksh93-like feature + suggested by Clark Wang + +doc/{bash.1,bashref.texi} + - document new printf %()T default argument behavior - 10/26 + 12/15 ----- -shell.c - - in main, make sure "$EMACS" is non-null before calling strstr on its - value. Fixes Red Hat bug 530911 submitted by Mitchell Berger +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/mapfile.def - - don't save callback commands in shell history. Suggested by - Jan Schampera +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 -mailcheck.c - - in file_mod_date_changed, make sure the modification time is later - than the saved modification date, not just that it's not equal. - Fix from Evgeniy Dushistov - - in file_access_date_changed, make sure the access time is later - than the saved access time, not just that it's not equal +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 - 10/27 - ----- -builtins/shopt.def - - added new `compat40' compatibility variable, with associated changes - to shell_compatibility_level(), since the default compatibility level - is now 41 +subst.c + - command_substitute: change direct assignment of exit_immediately_on_error + to use change_flag ('e', FLAG_OFF) instead -test.c - - make the < and > operators to [[ use strcoll() only if the shell - compatibility level is greater than 40 (it is 41 by default in - bash-4.1) +flags.c + - use errexit_flag as the variable modified by changes to the -e + option, reflect those changes to exit_immediately_on_error - 10/28 +execute_cmd.c + - execute_builtin: new global variable, builtin_ignoring_errexit, set + to 0 by default and set to 1 if eval/source/command executing in a + context where -e should be ignored + - execute_builtin: set exit_immediately_on_error to errextit_flag + after executing eval/source/command in a context where -e should + be ignored + +flags.c + - if builtin_ignoring_errexit is set, changes to errexit_flag are + not reflected in the setting of exit_immediately_on_error. Fixes + bug reported by Robert Schiele + + 12/23 ----- -support/shobj-conf - - decrease the default version of FreeBSD that creates shared libraries - to 4.x. Advice from Peter Jeremy +include/posixjmp.h + - setjmp_nosigs: new define, call setjmp in such a way that it will + not manipulate the signal mask - 11/2 - ---- -parse.y - - change parse_comsub to free `heredelim' and set it to 0 whenever the - comsub scanner finds the end of a here document. Really need to - implement a stack of here doc delimiters like in the parser (can we - use redir_stack here, too?) - - fix parse_comsub to not attempt to read another here doc delimiter - after seeing a shell break character (that is not newline) if we - already have one. Fixes Debian bash bug #553485, submitted by - Samuel Hym +{expr,test,trap}.c + - setjmp_nosigs: call instead of setjmp; don't need to manipulate + signal mask - 11/3 - ---- -variables.c - - fix bind_variable_internal to call a variable's dynamic 'set function' - with the right arguments depending on whether its an associative - array, an indexed array, or a scalar. Fixes Ubuntu bug #471504 - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/471504 reported - by AJ Slater +builtins/read.def + - read_builtin: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask -[bash-4.1-beta frozen] +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) - 11/11 + 12/24 ----- -builtins/printf.def - - in getintmax(), in the case of a conversion error, return the partial - value accumulated so far, which is suppose to be what - strtoimax/strtoll/strtol returns +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 - 11/17 + 12/25 ----- -[bash-4.1-beta released] +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 - 11/18 - ----- -builtins/{common.h,shopt.def},shell.c - - changed shopt variable "set functions" to take the option name as - the first argument; changed function prototypes and callers +input.c + - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG -builtins/shopt.def - - change set_compatibility_level() to turn off other compatNN options - when one is set -- enforce mutual exclusivity. Fixes problem noted - by Jan Schampera +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) - 11/19 - ----- -lib/readline/rltty.c - - make sure prepare_terminal_settings() tests for the presence of - ECHOCTL before using it. Fixes bug reported by Joachim Schmitz - +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 -config-top.h - - new WORDEXP_OPTION define (off by default) +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 - - don't include the --wordexp option or the supporting function - (run_wordexp) if WORDEXP_OPTION is not defined. Suggested by - Aharon Robbins + - 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 -execute_cmd.c - - in execute_cond_node, turn on comsub_ignore_return if the flags - indicate we're ignoring the return value before calling - cond_expand_word. Fixes bug reported by Anirban Sinha - +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) - 11/20 + 12/26 ----- -lib/sh/snprintf.c,builtins/printf.def - - change check for HAVE_ASPRINTF and HAVE_SNPRINTF to check if value - is 1 or 0 rather than whether they are defined or not. This allows - a value of 0 to enable function replacement +parse.y + - shell_input_line_{index,size,len}: now of type size_t; in some cases + the unsigned property makes a difference + - STRING_SAVER: saved_line_{size,index} now of type size_t + - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX; + lines longer than that are truncated until read sees a newline; + addresses theoretical buffer overflow described by Paul Eggert + + - set_line_mbstate: size_t changes like shell_getc + - shell_getc: if shell_input_line is larger than 32K, free it and + start over to avoid large memory allocations sticking around + +variables.c + - bind_global_variable: new function, binds value to a variable in + the global shell_variables table + +variables.h + - bind_global_variable: new extern declaration + +builtins/declare.def + - declare_internal: if -g given with name=value, but variable is not + found in the global variable table, make sure to call + bind_global_variable so the variable is created and modified at + global scope. Fixes a bug where declare -g x=y could modify `x' + at a previous function scope -configure.in,aclocal.m4 - - new autoconf macro, BASH_FUNC_SNPRINTF, checks for snprintf present - and working as C99 specifies with a zero length argument. Idea - from Greg Wooledge - - new macro BASH_FUNC_VSNPRINTF, does same thing for vsnprintf +command.h + - W_ASSIGNARRAY: new word flag, compound indexed array assignment - 11/25 - ----- -subst.c - - in command_substitute, only tell parse_and_execute to reset the line - number in an interactive shell if sourcelevel == 0 -- we'll use the - line numbers from the sourced file +subst.h + - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in + a function context, used by declare -g execute_cmd.c - - in execute_simple_command, only subtract function_line_number from - line_number if sourcelevel == 0. If sourcing, we'll use the line - numbers from the sourced file. Fixes bug reported by Hugo - Mildenberger + - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to + declaration builtin -builtins/declare.def - - in declare_internal, call bind_assoc_variable instead of - bind_array_variable in the case of declare -A foo=bar. Fixes bug - reported by Bernd Eggink . +subst.c + - do_assignment_internal: explicitly handle case where we are + executing in a function and we want to create a global array or + assoc variable + - shell_expand_word_list: call make_internal_declare if -a option + given to declaration builtin (W_ASSIGNARRAY); handle -g option with + it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce + Diaz , where declare -ag foo=(bar) could modify + array variable foo at previous function scope, not global scope - 11/27 + 12/27 ----- -lib/readline/util.c - - change declaration for _rl_walphabetic to use prototype, assuming - that any system with multibyte characters has a compiler that can - handle prototypes. Fix for AIX compilation problem reported by - Nick Hillman +bashline.c + - Minix needs the third argument to tputs to be a void funtion taking + an int argument, not an int-returning function. Fix from + John E. Malmberg as part of VMS bash port - 11/28 + 12/29 ----- -execute_cmd.c - - make funcnest file-scope static and unwind-protect its value in - execute_function, so it can be used as a real measure of function - call nesting +configure.ac,version.c,patchlevel.h + - bash-4.3-devel: new version, new shell compatibility level (43) -general.c - - fix off-by-one error in trim_pathname that caused it to short-circuit - when PROMPT_DIRTRIM == number of directories - 1. Fixes bug - reported by Dennis Williamson +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 - 11/29 - ----- -jobs.c - - when fork() returns -1/EAGAIN, call waitchld(-1, 0) so the shell can - reap any dead jobs before trying fork again. Currently disabled - until bash-4.2 development starts +builtins/shopt.def + - compat42: new shopt option + - set_compatibility_level: change logic to set and unset various + compat variables and shell_compatibility_level -lib/readline/complete.c - - when incrementing _rl_interrupt_immediately, make sure it's greater - than 0 before decrementing it. In practice, not a problem, but - the right way to do it. Suggested by Jan Kratochvil - +COMPAT + - new documentation for bash-4.3 compatibility changes -lib/readline/signals.c - - make sure rl_signal_handler doesn't set rl_caught_signal if - _rl_interrupt_immediately is set, so RL_CHECK_SIGNALS doesn't - cause it to be processed twice. Suggested by Jan Kratochvil - - - if the callback interface is being used, use the code path that - immediately handles signals. This restores the readline-5.2 - behavior. Fixes GDB readline bug reported by Jan Kratochvil - +doc/{bash.1,bashref.texi} + - compat42: document new shopt option - 12/18 - ----- -[bash-4.1-rc1 released] +builtins/shopt.def + - set_compatibility_opts: new function, sets the various shopt + compat variables based on the value of shell_compatibility_level - 12/22 - ----- -config-top.h - - don't have SYSLOG_HISTORY enabled by default +builtins/common.h + - set_compatibility_opts: new extern declaration -lib/sh/Makefile.in - - add explicit dependency on pathnames.h for parallel make support +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 -externs.h - - add extern declaration for xtrace_fdchk +variables.h + - sv_shcompat: new extern declaration -lib/sh/snprintf.c - - add local prototype declarations for isinf, isnan if we are providing - local definitions +doc/{bash.1,bashref.texi} + - BASH_COMPAT: description of new variable -lib/sh/fnxform.c - - add extern declaration for get_locale_var if HAVE_LOCALE_CHARSET not - defined +lib/readline/complete.c + - _rl_colored_stats: default back to 0 for 4.3 release branch -execute_cmd.c - - define NEED_FPURGE_DECL so we pick up any extern declaration for - fpurge (e.g., if the system doesn't provide it) + 1/5/2013 + -------- +quit.h + - remove spurious call to itrace in CHECK_WAIT_INTR -builtins/shopt.def - - correct prototype and declaration for set_shellopts_after_change so - it's the correct type for shopt_set_func_t - - add new function shopt_enable_hostname_completion that is the correct - type for shopt_set_func_t; just calls enable_hostname_completion and - returns its result +bashline.c + - bash_event_hook: if we're going to jump to top_level, make sure we + clean up after readline() by calling rl_cleanup_after_signal(). + Fixes bug reported against devel branch by Raphaël Droz + + - bash_event_hook: reset the event hook before checking for signals + or traps in case we longjmp - 12/26 - ----- doc/{bash.1,bashref.texi} - - add \E and \" escape sequences to ANSI-C quoting description. - Suggested by Aharon Robbins + - 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 - 12/29 - ----- -doc/bash.1 - - make sure shell and environment variable names are always in - `small caps' bold. Suggested by Aharon Robbins +lib/readline/readline.h + - rl_signal_event_hook: new extern declaration - 12/30 - ----- -{execute_cmd.c,parse.y,Makefile} - - changes for building minimal configuration from Matthias Klose - +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 -[bash-4.1 frozen] +lib/readline/doc/rltech.texi + - rl_signal_event_hook: document new function - 12/31 - ----- -[bash-4.1 released] +bashline.c + - changes to set rl_signal_event_hook instead of rl_event_hook - 1/5/2010 - -------- -doc/bashref.texi - - document compat32 and compat40 shopt options. Omission pointed out - by Dilyan Palauzov +lib/readline/readline.h + - change readline version numbers to 6.3 1/6 --- -lib/readline/complete.c - - use `convfn' (converted filename) instead of entry->d_name (filename - read from file system) when adding partial or full completions to - the command line. Bug and fix from Guillaume Outters - - - 1/7 - --- -builtins/printf.def - - fix prototype in extern declaration for vsnprintf. Fix for bug - reported by Yann Rouillard +doc/{bash.1,bashref.texi} + - a couple of changes to the descriptions of the ERR trap and its + effects based on a message from Rob Nagler 1/9 --- -parse.y - - fix shell_getc to handle alias expansions containing quoted - newlines. Problems in bash-4.1 with aliases containing quoted - newlines in the middle of and at the end of their expansion. - Fix for bug reported by Jonathan Claggett - - - change mk_alexpansion to not append a space to an alias - expansion ending with a newline. Works with shell_getc +expr.c + - expassign: invalidate curlval before freeing and NULLing tokstr to + avoid aliasing issues. Fixes bug reported by Eduardo A. Bustamante + López and Dan Douglas + +braces.c + - array_concat: don't be so aggressive in trying to short-circuit. We + can only short-circuit if we have a single-element array where the + element is an empty string (array[0] == "" array[1] = 0x0). Existing + practice requires us to replicate arrays and prefix or append empty + strings. Fixes bug reported by Eduardo A. Bustamante López + 1/11 ---- -lib/glob/Makefile.in - - add dependencies on shell.h and pathnames.h. From Mike Frysinger - +execute_cmd.c + - execute_builtin: since mapfile uses evalstring() to run its callbacks + internally, just like eval, so it needs to handle the case where the + temp environment given to mapfile persists throughout the entire + set of callback commands. This might be a problem with trap also, but + trap isn't run in the same way. Fixes bug reported by Dan Douglas + - 1/15 + 1/13 ---- -doc/{bash.1,{bashref,version}.texi},lib/readine/doc/rluser.texi - - some typo fixes from Aharon Robbins - - added descriptions of ENV, COPROC, and MAPFILE variables - - added descriptions of READLINE_LINE and READLINE_POINT +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 + - 1/21 +subst.c + - expand_word_internal: case '\\': if the next character is an IFS + character, and the expansion occurs within double quotes, and the + character is not one for which backslash retains its meaning, add + the (escaped) '\' and the (escaped) character. Fixes bug reported + by Dan Douglas + + 1/15 ---- -arrayfunc.c - - free `akey', the word-expanded index into the assoc array to avoid - mem leak in array_value_internal - - free index into assoc array in unbind_array_element - - change array_value_internal to take an additional argument: an - arrayind_t *. If not null, an index to an indexed array is - returned there. If not an indexed array or subscript is @ or - *, the value is unchanged +builtins/cd.def + - cd_builtin: make sure call to internal_getopt handles -e option. + Fixes bug reported by - 1/22 + 1/17 ---- -builtins/ulimit.def - - include if we found it during configure and we don't - have resources. Fixes omission reported by Joachim Schmitz - +subst.c + - expand_word_list_internal: make sure tempenv_assign_error is + initialized to 0 -{configure,config.h}.in - - check for , define HAVE_ULIMIT_H if found +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 -lib/sh/oslib.c - - include for extern declaration for kill(2) if - HAVE_KILLPG not defined + 1/20 + ---- +subst.c + - parameter_brace_expand_rhs: call stupidly_hack_special_variables + after assigning with ${param[:]=word} even if IFS is changing. + Suggested by Dan Douglas [TENTATIVE, needs work + on IFS side effects] -jobs.c - - if HAVE_KILLPG is not defined, add an extern prototype decl for - killpg() +command.h + - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used + yet) - 1/24 +{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 ---- -print_cmd.c - - when printing here-string redirections, don't quote the string. The - original quotes, if any, are still in place and don't need to be - requoted. Fixes bug reported by Arfrever Frehtes Taifersar Arahesis - +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 - - fix array_length_reference to return 0 for variables that have not - been assigned a value. Fixes bug reported by Mart Frauenlab - , but is not backwards compatible + - 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 + -arrayfunc.[ch] - - change array_value to take a new arrayind_t *indp parameter like - get_array_value; changed extern prototype declaration +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 - - changed callers of array_value to add extra parameter + - 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' -expr.c - - change expr_streval to set a new `lvalue' parameter with information - about the string being evaluated: string, value, array index (if - any), variable evaluated (if set). - - saving and restoring current context now saves and restores the - current `lvalue' - - new function expr_bind_array_element, binds an array element with an - already-computed index to a specified value - - anywhere we set the current token to a string (STR), save and set - the current lvalue - - change calls to expr_bind_variable to check whether or not the - current lvalue indicates an indexed array was evaluated, and, if so, - call expr_bind_array_element using the already-computed index - (curlval.ind). Fixes problems with dynamic variables (e.g., RANDOM) - in array indices with {pre,post}-{inc,dec}rement and op= - operators reported by + 1/24 + ---- +builtins/evalfile.c + - _evalfile: add missing `close (fd)' calls before returning to + avoid fd leaks. Bug and fix from Roman Rakus 1/25 ---- -expr.c - - fix subexpr() to initialize curlval and lastlval when resetting all - of the rest of the expression-parsing variables +builtins/read.def + - read_builtin: don't try to play tricks with the top of the unwind- + protect stack after read gets a SIGALRM; save input_string to new + memory, run the stack, then restore input_string and assign the + variables. Part of fix for bug reported by konsolebox + ; the rest of the fix is with the changes in + trap and signal handling and doing away with interrupt_immediately 1/26 ---- -builtins/setattr.def - - in show_var_attributes, if the variable is not set (value == 0), - don't print `name=""', just print `name'. Pointed out by - Mart Frauenlab +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 + -arrayfunc.c - - fix array_keys to return NULL if the variable is not set or - invisible. Pointed out by Mart Frauenlab - - change array_value_internal to return NULL for variable which has - not been set + 1/29 + ---- +lib/readline/display.c + - update_line: fix off-by-one error when updating vis_lbreaks array + in a multibyte locale that occurs when moving multibyte chars from + one line down to another. Bug report and fix from Egmont + Koblinger 1/30 ---- -bashline.c - - in command_word_completion_function, don't call glob_pattern_p - on hint -- use the already-computed `globpat'. At this point, - hint might contain an already-dequoted globbing character, but - glob_matches will be NULL. Fixes bug reported by - coyote@wariat.org.pl +configure.ac + - changed version to 4.3-alpha - 2/5 - --- -builtins/exec.def - - set extern variable "exec_argv0" to the argument to -a +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 -shell.c - - if exec_argv0 is set, set dollar_vars[0] to it and set it to NULL, - assuming it was set by `exec -a'. `exec -a foo' now sets $0 to - foo in an executable shell script without a leading `#!' (fixes - longstanding bug) + 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 - 2/8 +configure.ac + - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it + will find $host-prefixed versions of utilities. Report and fix from + Mike Frysinger + +builtins/setattr.def + - set_var_attribute: check whether bind_variable (called when the + variable whose attributes are being modified is found in the temp + environment) just modified a read-only global variable, and don't + bother marking the temporary variable for propagation if so. The + propagation is superfluous and will result in a strange error + message + + 2/2 --- variables.c - - in push_func_var, if a variable is in a special builtin's temporary - environment and needs to be propagated because we're in Posix mode, - or we just need to propagate a variable, and we are executing in a - function without any local variables (so the function-local variable - context has no variable hash table), make sure we create a hash - table so we have a place to save the variable to be propagated. - Fixes bug reported by Crestez Dan Leonard . + - initialize_shell_variables: don't try to import function definitions + with invalid names from the environment if already in posix mode, + but create them as (invisible) exported variables so they pass + through the environment. Print an error message so user knows + what's wrong. Fixes bug reported by Tomas Trnka - 2/18 - ---- -builtins/hash.def - - change add_hashed_command to remove the command being looked up from - the hash table before trying to add it. That way, if it's not found, - there won't be anything remaining in the hash table + 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 - 2/26 +trap.c + - check_signals: add call to CHECK_ALRM before QUIT + - check_signals_and_traps: call check_signals() instead of including + CHECK_ALRM and QUIT inline. Integrating check for read builtin's + SIGALRM (where zread call to check_signals_and_traps can see it) + fixes problem reported by Mike Frysinger + + 2/12 ---- -trap.[ch] - - move IMPOSSIBLE_TRAP_HANDLER define to trap.h so other parts of the - shell can use it +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" -parse.y - - change yy_readline_get to use IMPOSSIBLE_TRAP_HANDER instead of NULL - as a sentinel value for the SIGINT signal handler - - make sure yy_readline_get resets interrupt_immediately to 0 after - calling readline() using the same criteria it used to set it to 1 - before the call -- make the code symmetric. Suggested by Werner - Fink -builtins/read.def - - move assignment to `retval' before decrement of interrupt_immediately - and terminate_immediately and call to discard_unwind_frame - - move assign_vars label before decrement of interrupt_immediately and - terminate_immediately so those variables get reset appropriately - if read -t times out + 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 -subst.h - - new define for Q_DOLBRACE, indicates double-quoted ${...} + 2/14 + ---- +configure.ac + - add check for sig_atomic_t; already a placeholder for it in + config.h.in + 2/15 + ---- subst.c - - in parameter_brace_expand, before calling parameter_brace_expand_rhs, - add Q_DOLBRACE to `quoted' if we're within double quotes. - - in expand_word_internal, if the Q_DOLBRACE flag is set, remove a - backslash escaping a }. Result of a Posix discussion on the - austin-group list + - do_compound_assignment: don't call assign_compound_array_list with + a NULL variable in case make_local_xxx_variable returns NULL + (it will if you try to shadow a readonly or noassign variable). + Fixes bug reported by Richard Tollerton - 2/27 + 2/16 ---- variables.c - - new functions to save and restore the PIPESTATUS variable's internal - array: save_pipestatus_array and restore_pipestatus_array + - 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 -variables.h - - new extern declarations for save_pipestatus_array and - restore_pipestatus_array +trap.[ch] + - get_original_signal: now global so rest of the shell can use it -trap.c - - in run_pending_traps, _run_trap_internal, and run_exit_trap, save - and restore $PIPESTATUS while traps are running. Fixes bug - reported by Florian Bruhin +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 -parse.y - - use save_pipestatus_array and restore_pipestatus_array in - save_parser_state and restore_parser_state, respectively, replacing - inline code +sig.h + - sigterm_sighandler: new extern declaration -lib/readline/histfile.c - - fix callers of history_filename to be prepared to cope with it - returning NULL - - change history_filename to return NULL if $HOME is not set, rather - than trying to write the history file in the current directory. - This is the default directory, used only if the application does - not specify a history filename. Changed due to long-ago (unsent) - bug report from OpenBSD +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 -{Makefile,config.h,configure}.in,externs.h,lib/sh/{dprintf.c,Makefile.in} - - change fdprintf to dprintf, which is the Posix standard interface, - look for it with configure, replace it if not available +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 - 2/28 - ---- -command.h - - add new subshell flag, SUBSHELL_RESETTRAP. Indicates to the trap - builtin that the shell is executing a command substitution and - should free the trap strings we left unfreed by reset_signal_handlers() +execute_cmd.c + - execute_simple_command: call CHECK_SIGTERM after make_child in child + to catch SIGTERM received after fork() and before restoring old + signal handlers + - execute_disk_command: call CHECK_SIGTERM after make_child in child + process after restoring old signal handlers and again just before + calling shell_execve. Fixes race condition observed by + Padraig Brady when testing with his `timeout' + program -trap.c - - free_trap_string() and free_trap_strings() are now compiled in +lib/readline/display.c + - open_some_spaces: new function, subset of insert_some_chars that just + opens up a specified number of spaces to be overwritten + - insert_some_spaces: now just calls to open_some_spaces followed by + _rl_output_some_chars + - update_line: use col_temp instead of recalculating it using + _rl_col_width in the case where we use more columns with fewer bytes + - update_line: use open_some_spaces and then output the right number + of chars instead of trying to print new characters then overwrite + existing characters in two separate calls. This includes removing + some dodgy code and making things simpler. Fix from Egmont + Koblinger + - use new variable `bytes_to_insert' instead of overloading temp in + some code blocks (nls - nfd, bytes that comprise the characters + different in the new line from the old) -builtins/trap.def - - if changing a signal disposition and the SUBSHELL_RESETTRAP flag is - set in subshell_environment, free the trap strings left unfreed by - reset_signal_handlers + 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 -subst.c - - in command_substitute, set the SUBSHELL_RESETTRAP flag. This change - is for Austin Group Posix interpretation 53 - (http://austingroupbugs.net/view.php?id=53) + 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 - 3/7 - --- -lib/sh/{Makefile.in,strchrnul.c},Makefile.in - - implementation of strchrnul, from gnulib + 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) -configure.in,config.h.in - - look for strchrnul and compile in version in lib/sh/strchrnul.c if - not available - - look for mbsnrtowcs and define HAVE_MBSNRTOWCS if available + 2/23 + ---- +{quit,sig}.h,sig.c + - sigterm_received declaration now in sig.h; type is sig_atomic_t + - sigwinch_received type now sig_atomic_t + - sig.h includes bashtypes.h and if SIG_DFL not defined + (same logic as trap.h) to pick up sig_atomic_t -lib/sh/xmbsrtowcs.c - - new function, xdupmbstowcs2, fast version of xdupmbstowcs used when - mbsnrtowcs is available and the indices are not required. Called - from xdupmbstowcs as required. Initial patch from - <0xe2.0x9a.0x9b@gmail.com> +unwind_prot.c + - include sig.h before quit.h (reverse order) - 3/22 + 2/27 ---- -print_cmd.c - - call print_deferred_heredocs virtually every time a recursive call - to make_command_string_internal is made so here documents get - printed correctly when they are attached to commands inside compound - commands such as for and while. Fixes bug reported by Mike - Frysinger +builtins/shopt.def + - reset_shopt_options: make sure check_window_size is reset to the + default from config.h, not unconditionally to 0 - 3/25 - ---- -builtins/printf.def - - fix have_precision case in PF macro to call printf with precision - instead of fieldwidth argument. Fixes bug reported by Rob Robason - +jobs.[ch] + - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE - 3/26 - ---- -trap.[ch] - - new function, signal_is_hard_ignored, returns true if the shell - inherited SIG_IGN as a signal's disposition - - new function, set_original_signal (sig, handler), provides interface - for rest of shell to set original_signals[sig] = handler +jobs.c + - wait_for: if we're using sigaction to install a handler for SIGCHLD, + make sure we specify SA_RESTART -execute_cmd.c - - execute_disk_command needs to call reset_terminating_signals in the - child process before resetting traps with restore_original_signals +lib/{tilde,readline}/shell.c + - get_home_dir: instead of looking in the password file every time, + look once and cache the result -builtins/trap.def - - call initialize_terminating_signals before calling display_traps for - trap -p or trap without any other arguments. Possible future use +sig.[ch] + - sigwinch_received, sigterm_received: now `volatile' qualified -lib/readline/complete.c - - rl_filename_completion_function needs to call - rl_filename_dequoting_function with `dirname' (which has already - been tilde-expanded) instead of `users_dirname', because it calls - opendir with `dirname'. Fixes bug reported by Stefan H. Holek - +sig.c,quit.h + - interrupt_state,terminating_signal: now sig_atomic_t - 3/27 - ---- -sig.c - - experimental change to set_signal_handler: when setting the SIGCHLD - handler, set the SA_RESTART flag so that interruptible system calls - get restarted after a child dies. Fixes bug reported by Tomas - Trnka , but needs further evaluation + 3/1 + --- +MANIFEST,examples/* + - removed around 120 files without FSF copyrights; requested by + Karl Berry in early January -lib/sh/eaccess.c - - eaccess(2) apparently does only half the job: it does not check that - the permission bits on a file actually allow, for instance, execution. - Need to augment with a call to sh_stataccess if eaccess returns - success on FreeBSD. Fixes FreeBSD problem reported by Jonan Hattne - + 3/2 + --- +lib/malloc/malloc.c + - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined - 3/28 - ---- -parse.y,bashline.c,externs.h - - history_delimiting_chars now takes a const char * as an argument: - the line being added to the history. Changed callers +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 -parse.y - - bash_add_history should not add a semicolon separator if the current - history entry already ends in a newline. It can introduce syntax - errors (e.g., when it results in a null command before a close brace). - Fixes bug reported by Andreas Schwab +quit.h + - include "sig.h" for sig_atomic_t -parse.y - - history_delimiting_chars needs to return a newline instead of a - semicolon if it thinks the current line starts a here document - (if it contains `<<'). Also keeps track of the fact with a new - static variable, LAST_WAS_HEREDOC, so it can return the right - sequence of newlines later for the here-document body. Fixes bug - reported by Andreas Schwab +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/29 - ---- -lib/sh/eaccess.c - - if the system has faccessat, sh_eaccess will now use it in - preference to all other options + 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) - 3/30 - ---- -subst.h - - new string_extract and extract_dollar_brace_string flag value: - SX_POSIXEXP, set if the shell is expanding one of the new Posix - pattern removal word expansions +doc/bash.1 + - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that + section in --posix and set -o posix descriptions -parser.h - - new definitions for "word expansion state", shared between parse.y - and subst.c +examples/ + - removed around 110 examples at the request of the FSF due to copyright + issues -subst.c - - include parser.h + 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 - 4/9 + 3/9 --- -builtins/declare.def - - make sure declare_internal calls bind_assoc_variable with newly- - allocated memory for the key argument when using an implicit key - of "0". Bug report and fix from Andreas Schwab - +include/typemax.h + - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined - 4/14 - ---- -lib/readline/input.c - - restructure the rl_event_hook loop in rl_read_key to call the - event hook after rl_gather_tyi() returns and rl_get_char has - a chance to collect the input. Previous behavior was to call - the event hook before attempting to read input. Problem - reported by Anant Shankar +parse.y + - include "typemax.h" for possible SIZE_MAX definition, make sure we + include it after shell.h - 4/15 - ---- -builtins/fc.def - - fc_builtin needs to check whether the calculation of last_hist - leaves hlist[last_hist] == 0, and keep decrementing it until it - leaves a non-null history entry or goes < 0. Currently only - does this if saved_command_line_count > 0, indicating we're - trying to edit a multi-line command. Fixes bug reported by - Roman Rakus +{braces,expr}.c + - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions - 4/17 + 3/10 ---- -subst.c - - new process substitution helper functions: - unlink_fifo - closes a single FD or FIFO - num_fifos - returns number of open FDs or active FIFOs - copy_fifo_list - returns a bitmap of open FDs or active FIFOs - by index into appropriate list (dev_fd_list or fifo_list) - close_new_fifos - take a bitmap saved by copy_fifo_list and - call unlink_fifo on any FD or FIFO open at the time of the - call that is not marked as active in list +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 -execute_cmd.c - - execute_builtin_or_function: use new framework to close process - substitution FDs or FIFOs created by a shell builtin or shell - function. Fixes bug reported by Charles Duffy +[bash-4.3-alpha frozen] -doc/{bash.1,bashref.texi} - - document 'C and "C constants for printf builtin + 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 - 4/22 + 3/18 + ---- +configure.ac + - socklen_t is defined as `unsigned int' if configure can't find it + + 3/20 ---- lib/readline/complete.c - - new function to return screenwidth for use when displaying possible - matches: complete_get_screenwidth; changed uses of _rl_screenwidth - to use complete_get_screenwidth(). - - change complete_get_screenwidth to query (readline-private) - _rl_completion_colums, $COLUMNS, then _rl_screenwidth in that order - - change rl_display_match_list to deal with limit < 0 (which implies - that cols == 0) when _rl_screenwidth > 0 + - S_ISVTX: since it's not defined on all platforms (Minix), make sure + its use is protected with #ifdef -lib/readline/bind.c - - new bindable variable: completion-display-width, controls the - number of columns used when displaying completions with new - sv_compwidth function to call when value is set or unset + 3/21 + ---- +doc/{bash.1,bashref.texi} + - Added mention of ${!name[@]} and ${!name[*]} expansions to get all + indices of an array. Suggested by Jonathan Leffler + + + 3/24 + ---- +subst.h + - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that + single quotes (for now) will be treated as ordinary characters -lib/readline/doc/{readline.3,rltech.texi} - - documented completion-display-width variable +subst.c + - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now - 4/23 + 3/25 ---- -execute_cmd.c - - change execute_in_subshell to reset trap handlers without freeing - the trap strings and set SUBSHELL_RESETTRAP. In line with Austin - Group interp #53 (trap in a subshell). - - ditto for execute_simple_command where it can be determined that - the shell is going to run a builtin or function in a subshell +support/config.{guess,sub} + - updated to versions from autoconf-2.69 -trap.c - - new function, get_all_original_signals, retrieves the original - signal disposition for all signals + 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 -trap.h - - extern declaration for get_all_original_signals +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} -builtins/trap.def - - change showtrap to display signals that are "hard ignored" as - trap commands to ignore them, even though that trap command would - be a no-op. Partial fix for feature request from Siddhesh - Poyarekar - - change trap_builtin to call get_all_original_signals before displaying - traps. This will show inherited ignored signals. Rest of feature - request from Siddhesh Poyarekar +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 -lib/readline/histexpand.c - - fix history_tokenize_word so that it understands $(...) and the - <(...) and >(...) expansions as a single word - - change history_tokenize_word so that it understands extended shell - globbing patterns as a single word. Code is very similar to - $(...) code above. Bug reported by Rajeev V. Pillai - +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 - 4/24 - ---- -lib/readline/vi_mode.c - - add checks to rl_vi_char_search to make sure we've already done a - search if the command is `;' or `,', and return immediately if we - have not. Fixes bug reported by Eric Ho +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 + -lib/readline/text.c - - make sure `dir' is in the valid range before searching in - _rl_char_search_internal. Range checks in the code depend on it - being non-zero + 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 - 5/3 + 4/6 --- -lib/readline/complete.c - - in rl_complete_internal, if show-all-if-ambiguous or - show-all-if-unmodified are set (what_to_do == '!' or '@', - respectively), and the common match prefix is shorter than the - text being completed, inhibit inserting the match. - The guess is that replacing text with a shorter match will not - be wanted +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 - 5/20 - ---- -lib/sh/unicode.c - - new file, with unicode character conversion-related code. Will be - used to implement \u and \U escapes where appropriate, and for - other unicode-related functions in the future +variables.c + - hash_lookup: set new local variable last_table_searched to the table + a successful lookup appears in; tested in make_local_variable to + solve the problem below + - make_local_variable: if we find a variable with the tempenv flag + set at the same `level' as variable_context', but not found in the + temporary_env (temp environment preceding the builtin), return it. + The temp environment preceding the function call has already been + merged (in execute_function) into the list of variable contexts the + function sees as shell_variables by the time this is called. Fixes + inconsistency pointed out by Dan Douglas + +subst.c + - expand_arith_string: expanded out contents of expand_string, + expand_string_internal, expand_string_if_necessary to create a + WORD_DESC and call call_expand_word_internal() on it directly. + We don't want process substitution to be performed ( 1<(2) ) should + mean something different in an arithmetic expression context. + It doesn't work to just turn on the DQUOTE flag, since that means + that things like ${x["expression"]} are not expanded correctly. + Fixes problem pointed out by Dan Douglas - 5/21 + 4/13 ---- -builtins/printf.def - - add code to handle \u and \U escapes in format strings and arguments - processed by the %b format specifier +subst.c + - process_substitute: run the EXIT trap before exiting, as other + shells seem to. Fixes problem pointed out by Dan Douglas + -lib/sh/strtrans.c - - add code to handle \u and \U escapes as unicode characters, works for - both `echo -e' and $'...' +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 -doc/{bash.1,bashref.texi} - - document new \u and \U escape sequences for $'...' and echo (printf - defers to the system's man page or Posix) + 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 - 5/24 +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 - - change execute_disk_command to return a status, instead of just - leaving it in `last_command_exit_value', since the parent's return - value is sometimes used (e.g., when a restricted shell refuses to - run a command with a `/'). Fixes bug reported by David Pitt - + - 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 - 5/25 +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 ---- -bashline.c - - change bash completion functions to save and restore the value of - rl_ignore_some_completions_function, and set it to the bash default - of filename_completion_ignore where appropriate. Fixes bug - reported by Henning Bekel +builtins/set.def + - unset_builtin: if -n flag given, call unset_nameref instead of + unset_variable variables.c - - new convenience function: find_global_variable (name). Looks for - NAME in the global variables table, skipping any local and - temporary environment variables + - find_variable_nameref: print warning message if nameref circular + reference detected, return NULL and let caller deal with it builtins/declare.def - - add new -g option to declare/typeset/local, forces variables to be - created or modified at the global scope when executing inside a - shell function. Requested by many, most recently by - konsolebox@gmail.com + - declare_builtin: only disallow global references at this point if + we are at the global scope - 5/27 + 5/16 ---- -test.c - - added new `-v var' unary test operator; returns TRUE if var is set - (i.e., has been assigned a value). Works in both test builtin and - [[ conditional command - -doc/{bash.1,bashref.texi} - - documented new `-v var' unary conditional operator +configure.ac + - update release status to beta -tests/test.tests - - added tests for new -v var operator + 5/23 + ---- +trap.c + - run_pending_traps: save and restore pipeline around calls to + evalstring() in case we get a trap while running a trap. Have to + figure out the recursive running traps issue elsewhere. Fixes + bug reported by Roman Rakus + - run_pending_traps: make sure to set running_trap to the appropriate + signal value when running a trap command + - run_pending_traps: short-circuit immediately if running_trap set + when invoked. Could change this later to only skip if it would + run the same trap as currently being run (running_trap == sig + 1) -builtins/kill.def - - change kill builtin so -PID (pgrp specification) following a - -s sig or -n sig option is not interpreted as a signal specification. - Fixes bug reported by Roman Rakus +configure.ac + - add warning if bison not found -builtins/evalstring.c - - in parse_and_execute, if parse_command() returns non-zero, - indicating a parse error, exit the shell if the conditions require - a posix-mode non-interactive shell to abort (parse error in a `.' - script or eval string). Bash-4.1 only printed a warning. This is - from Austin Group interp 114 +lib/readline/doc/rltech.texi + - new section with an example program illustrating the callback + interface. Suggested by Peng Yu -doc/bashref.texi - - add note to the posix mode section of the texinfo manual noting - the changed behavior for `.' and `eval' +examples/loadables/Makefile.in + - remove references to `cut' and `getconf', which were removed in + early March -parse.y - - change time_command_acceptable to allow TIME token to appear after - BANG token (to allow `! time foo', which is supposed to be valid) - - change pipeline_command production to allow multiple instances of - `!' (which toggle inverting the return status) and `time' (which - have no effect) + 5/28 + ---- +lib/sh/pathphys.c + - sh_realpath: correct inverted two arguments to call to sh_makepath. + Report and fix from Julien Thomas + 6/7 + --- execute_cmd.c - - In posix mode, `time' without a following pipeline prints the - elapsed user, system, and real time for the shell and its - children since the shell was invoked. - It's like `times' but obeys the setting of TIMEFORMAT. A future - revision of Posix will require this - -doc/{bashref.texi,bash.1} - - document new posix mode use of `time' - -parse.y - - add production to pipeline_command that permits `!' by itself to - be equivalent to `false' (and, with the changes above, permits - `! !' to be roughly equivalent to `true'). A future revision of - Posix will require this + - 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 - 5/28 + 6/25 ---- -parse.y - - fix \W prompt expansion to use memmove instead of strcpy, since the - source and target strings overlap (though you think it wouldn't - matter, since the overlapping regions are never touched at the same - time). Fixes bug reported by Stéphane Jourdoi - - -parse.y - - Posix interp 217 states that $(( must be parsed first as an - arithmetic expansion, so avoid attempting to parse it as a nested - command substitution. Fixes bug reported by several, most recently - +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 -subst.c - - change extract_delimited_string to process nested $( as a possible - command substitution, but only if already parsing an arithmetic - expansion. Rest of fix for Posix interp 217 - - change parameter_brace_expand_rhs to make the := expansion operator - perform quote removal and both assign the result to the variable and - return it as the result of the expansion, rather than assign the - value after quote removal but return the value before quote removal. - Posix interp 221 - - introduce new internal quoting flag: Q_DOLBRACE. Denotes a double- - quoted ${...} expansion. In this case, Posix interp 221 requires - that a backslash quoting an embedded `}' be removed, even though it's - not one of the characters marked as special inside double quotes. - Set in parameter_brace_expand, used by expand_word_internal. +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 -parse.y - - introduce new parsing state, P_DOLBRACE, set when parsing a ${...} - expansion - - set a "dolbrace operator state" in parse_matched_pair to decide - whether the lexer is reading the param, op, or word in - ${paramOPword}. Will be used to decide whether or not to treat - single quotes specially in a double-quoted "${...} + 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 - 5/29 + 6/29 ---- -parse.y - - change parse_matched_pair so that a single quote appearing in a - double-quoted ${...} expansion is not special unless the expansion - operator is `#[#]' or `%[%]'. Posix interp 221 +lib/glob/smatch.c + - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead + of 0 (0 if not defined) -subst.c - - change string_extract_double_quoted so that a single quote appearing - in a double-quoted ${...} expansion is not special unless the - expansion operator is `#[#]' or `%[%]'. Posix interp 221 +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 posix-mode effects of Posix interp 221 - - add section describing GNU parallel as requested by Stallman - -lib/readline/complete.c - - broke code that compares filenames read from the file system (and - possibly converted) to words being completed out into a separate - function: complete_fncmp - - augment complete_fncmp to treat hyphen and underscore as equivalent - when comparing filenames if _rl_completion_case_map is set + - document new --enable-glob-asciiranges-default configure option -lib/readline/rlprivate.h - - new extern declaration for _rl_completion_case_map - -lib/readline/util.c - - change _rl_strnicmp to return the difference between the characters, - like strcasecmp, and not modify the pointers it is passed - - change _rl_stricmp to not modify the pointers it is passed +variables.c + - assign_in_env: implement += value appending semantics for assignments + preceding command names -lib/readline/bind.c - - new bindable variable, "completion-case-map", toggles value of - _rl_completion_case_map + 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 -lib/readline/doc/{rluser.texi,readline.3} - - document new bindable readline variable "completion-case-map" +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 -execute_cmd.c - - change execute_function to reset funcnest and jump back to top level - if funcnest exceeds funcnest_max - - use funcnest_max as a max function nesting level, if set to numeric - value greater than 0 (defaults to 0, so inactive) +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 -variables.c - - new variable FUNCNEST, controls funcnest_max value if set to numeric - value > 0 -sig.c - - reset funcnest to 0 when throw_to_top_level occurs + 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 -doc/{bash.1,bashref.texi} - - document FUNCNEST variable and its effect on function execution + 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 + -lib/readline/funmap.c - - add new bindable command names to avoid case-insensitive matching - problems between, for instance, vi-fword and vi-fWord: +builtins/setattr.def + - show_func_attributes: display definition (if NODEFS argument is 0) and + attributes for a particular function; used by `declare -fp name' - vi-forward-word - vi-forward-bigword - vi-backward-word - vi-backward-bigword - vi-end-word - vi-end-bigword +builtins/declare.def + - declare_internal: call show_func_attributes if -f supplied with -p. + Fixes inconsistency observed by Linda Walsh - Suggested in a different form in 2006 (!) by Servatius Brandt - +builtins/common.h + - new extern declaration for show_func_attributes -builtins/mapfile.def - - run_callback now takes a new third argument: curline, the line - currently being read and about to be assigned - - the callback function/command now takes an additional argument: - the line to be assigned to the array index. Feature suggested by - Dennis Williamson +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 -doc/{bash.1,bashref.texi} - - document new additional `line' argument to mapfile callback + 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 - 5/30 + 7/11 ---- -builtins/printf.def - - add new %(fmt)T format specifier, where FMT is a strftime format. - Argument is number of seconds since the epoch, with -1 meaning - current time (roughly date +%s) and -2 meaning shell start time - (roughly $SECONDS, unless it's been assigned a value or unset). - Fieldwidth and precision are preserved, strftime result is printed - as with %[-][[fieldwidth][.[precision]]]s +redir.c + - do_redirection_internal: before calling check_bash_input, make sure + that we don't call check_bash_input for an asynchronous process that + is replacing stdin with something else. The seek backwards affects + the parent process as well, since parents and children share the + file pointer. Fixes problem originally reported in March 2013 by + Martin Jackson + 7/13 + ---- doc/{bash.1,bashref.texi} - - document new %(datefmt)T printf format specifier and special - arguments + - slight change to add a description of `shopt -o' suggested by Bruce + Korb -builtins/hash.def - - don't permit programs with slashes to be entered into the hash table - at all, even with the -p option. Inconsistency pointed out by - Jan Schampera - -builtins/shopt.def - - add `compat41' option in preparation for bash-4.2 - - 6/6 - --- -lib/readline/vi_mode.c - - finish restructuring rl_vi_domove and the functions that call it so - it works in callback mode, including numeric arguments. Requested - a long time ago by Bob Rossi + 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 -lib/readline/callback.c - - arrange to call appropriate callback when readline state indicates - RL_STATE_VIMOTION, so vi motion commands like `cw' and `d2w' are - handled in callback mode +[bash-4.3-beta frozen] -lib/sh/wcswidth.c - - replacement wcswidth implementation + 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 -aclocal.m4 - - add REPLACE_FUNCS(wcswidth) to BASH_CHECK_MULTIBYTE +command.h + - W_ASSIGNINT: new word flag; used internally for make_internal_declare + and set by fix_assignment_words execute_cmd.c - - fix select_query and print_index_and_element to compute correct - display width of select list elements in presence of multibyte - characters. Bug reported by Bernd Eggink + - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i + given as option. We don't do anything with the value yet -builtins/cd.def - - add posix-mandated -e option; currently ignored in most circumstances +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} - - document new `cd -e' option + - minor changes to description of $! based on a report from Chris + Down - 6/12 - ---- arrayfunc.c - - change array_value_internal to treat negative subscripts to indexed - arrays, offset from array_max_index(x) + 1, so foo[-1] is the last - element of $foo + - 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 -subst.c - - Change verify_substring_values to allow negative length specifications - when using string variables or array members. Negative lengths - mean to return characters from OFFSET until (${#var} - N) for - {var:offset:-N}. Feature requested by Richard Neill - + 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 -doc/{bash.1,bashref.texi} - - document new behavior of negative subscripts to indexed arrays - - document new behavior of negative LENGTH in substring expansion + 8/3 + --- +Makefile.in + - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by + Curtis Doty -configure.in - - change version to bash-4.2-devel + 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 + -variables.c - - make sure initialize_shell_variables calls sv_xtracefd if - BASH_XTRACEFD is inherited in the shell environment. Fixes but - reported by + 8/6 + --- +doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi + - minor typo changes from Geir Hauge - 6/13 - ---- -lib/readline/complete.c - - change get_y_or_n to always return 1 when in callback mode, so we - don't do a blocking read. Have to wait until readline-7.0 to add - a state so we can use callbacks, since that will change public - interface +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 - 6/17 - ---- -subst.c - - fix memory leak in parameter_brace_expand: when performing pattern - removal with parameter_brace_remove_pattern, make sure `name' is - freed. Fixes bug reported by oyvindh@dhampir.no + 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 - 6/23 + 8/13 ---- -{parse.y,subst.c} - - make the ${param//pat/rep}, ${param^pat}, and ${param,pat} expansions - require single quotes and double quotes to match when within double - quotes. This way every expansion except the Posix ones behaves as - bash has always behaved - -subst.c - - change remove_upattern and remove_wpattern to return their first - argument if nothing matches, change callers to allocate memory - appropriately - - change remove_pattern to short-circuit and return copy of PARAM - if remove_wpattern returns its first argument (indicating no match) - rather than convert back to multibyte string, allocating new memory - twice and calling wcsrtombs +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 - 6/24 + 8/16 ---- -execute_cmd.c - - add missing initializers for sh_coproc to eliminate a compiler - warning. Patch from Werner Fink +trap.c + - _run_trap_internal: use {save,restore}_parser_state instead of + {save,restore}_token_state. It's more comprehensive - 6/27 + 8/23 ---- -parse.y - - add `TIMEIGN' token to handle `time -p -- ...'. Pointed out by - Laszlo Ersek on austin-group list +doc/bash.1 + - disown: remove repeated text. Report and fix from Thomas Hood + - 6/28 + 8/25 ---- -jobs.c - - treat a shell with (subshell_environment&SUBSHELL_PIPE) != 0 like - a command substitution in wait_for and act like we received a - SIGINT if a job we're waiting for dies of SIGINT. Fixes bug - reported by Ilya Basin +lib/readline/rltty.c + - set_special_char: fix prototype (last arg is rl_command_func_t *) - 7/2 - --- -jobs.c - - if fork() fails in make_child, try to reap some dead children before - retrying +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 -execute_cmd.c - - change execute_pipeline to run the last command of a non-asynchronous - pipeline in the current shell environment if the `lastpipe' shell - option is enabled and job control is not active. Code from - Werner Fink +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 -parse.y - - Posix says (issue 267) that time is not recognized as a keyword - if the next token begins with a `-' + 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 -doc/{bash.1,bashref.texi} - - changed the descriptions of BASH_SOURCE, BASH_LINENO, and FUNCNAME - as proposed in Ubuntu bug 591677. - - document new `lastpipe' shell option that runs last command of a - pipeline in the current shell environment - - document new posix-mode behavior with `time -p' +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 - 7/5 + 9/2 --- -aclocal.m4 - - new autoconf test WEXITSTATUS_OFFSET, bit offset in status word - returned by wait() of the process's exit status - -jobs.[ch] - - change stop_pipeline to return the actual index of the job just - created and added to the jobs table, instead of the current job - - job_exit_status and job_exit_signal are now global functions, with - extern declarations in jobs.h - - append_process: new utility function for use by the lastpipe code, - takes info, creates a PROCESS from them, and adds it to the end of - the passed job id's pipeline. lastpipe code uses it to add a dummy - process for the last command in the pipeline - - freeze_jobs_list: new utility function so rest of shell can freeze - the jobs list. Used by the lastpipe code +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 -execute_cmd.c - - changes to lastpipe code to make `pipefail' option, $PIPESTATUS, and - $? work correctly. Uses append_process and job_exit_status +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 + - 7/10 - ---- -subst.c - - when performing pattern substitution word expansions, a `&' in the - replacement string is replaced by the text matched by the pattern. - The `&' can be quoted with a backslash to inhibit the expansion. - CURRENTLY DISABLED +lib/readline/{util.c,rldefs.h} + - _rl_stricmp,_rl_strnicmp: now take const char * string arguments; + changed prototype declarations - 7/13 - ---- -pcomplib.[ch] - - new member for struct compspec: lcommand. for future use + 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 - 7/15 + 9/12 ---- -parse.y - - fix problem in parse_comsub where extra space was added to here-doc - delimiter if the first word in the comsub contained a `/'. Fixes - bug reported by Alex Khesin +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 - 7/20 + 9/16 ---- -parse.y - - change reserved_word_acceptable to return success if the last two - tokens read were `function WORD'. Allows function definitions like - function good [[ -x foo ]];. Fixes bug reported by Linda Walsh - - -doc/{bash.1,bashref.texi} - - change function definition meta-syntax to make it clearer, rather - than let the text note the optional portions +builtins/{caller,cd,kill,pushd,wait}.def + - builtin_usage(): make sure call to this sets return status to + EX_USAGE - 7/24 + 9/18 ---- -bashhist.c - - change bash_history_inhibit_expansion() to suppress history expansion - for $! parameter expansion. Fixes debian bug #589745 submitted by - Frank Heckenbach +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 -lib/readline/terminal.c - - change rl_resize_terminal to always fetch the new terminal size and - only force the redisplay if _rl_echoing_p is non-zero. Fixes bug - reported by Balazs Kezes +readline.h + - rl_change_environment: new extern declaration for applications - 7/25 + 9/22 ---- -lib/readline/xfree.c - - new file, contains definition of xfree moved from xmalloc.c +configure.ac + - relstatus: bumped version to bash-4.3-beta2 - 7/28 + 9/24 ---- -variables.c - - check suspect return values from bind_variable before trying to use - the returned SHELL_VAR *. Changes to: initialize_shell_variables, - bind_int_variable, FIND_OR_MAKE_VARIABLE. Fixes bug reported by - Roman Rakus - 7/31 - ---- -lib/readline/rltty.c - - fix rl_prep_terminal and rl_deprep_terminal to use fileno(stdout) - if rl_instream is NULL. Fixes bug reported by Otto Allmendinger - otto.allmendinger@googlemail.com +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 + - 8/2 - --- -lib/sh/casemod.c - - if the passed string is NULL or empty, return it immediately. Fixes - bug reported by Dennis Williamson + 10/19 + ----- -subst.c - - fix pat_subst to cope with the passed string being NULL +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 -arrayfunc.h - - added flag values for array_value_internal and its callers; converted - array_value_internal `allow_all' parameter into a general flags word - - get_array_value now takes a flags value - - changed array_value internal to use *indp as an index to use if the - AV_USEIND flag is set, rather than recomputing it +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 + -subst.c - - get_var_and_type takes two new parameters: a flags word and an index - that represents an already-computed index for an array reference - (just indexed arrays so far). Index is used and passed to array_value - if flags includes AV_USEIND - - parameter_brace_expand_word takes a new argument: the already- - computed index; returns W_ARRAYIND if word expanded is being used - as an array index - - changed parameter_brace_casemod, parameter_brace_patsub, - parameter_brace_substring, parameter_brace_remove_pattern to take new - flags and index arguments from parameter_brace_expand_word. They - pass the new parameters along to get_var_and_type to use an - already-computed array index if necessary. Fixes bug where array - indexes are computed twice reported by Andrew Benton - - -doc/bash.1,lib/readline/doc/{history.3,hsuser.texi} - - modified description of history event designators to clarify that - all non-absolute event designators are relative to the current - position in the history list. Question raised by Frank - Heckenbach as debian bash bug 590012 + 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 - 8/5 - --- -subst.c - - remove code that does not add a quoted null when the input string - is partially quoted; subsequent word splitting may require it. - Fixes bug reported by Eric Blake +doc/{bash.1,bashref.texi} + - document new -@ option to cd builtin - 8/12 - ---- -lib/glob/gmisc.c - - move match_pattern_wchar and match_pattern_char to new file in - glob library - - new functions: wmatchlen(pat, max) and umatchlen(pat, max), computes - number of characters PAT will match. Returns the number of chars - that will be matched or -1 if the match length is indeterminate - (i.e., contains a `*') + 10/28 + ----- +lib/glob/{{gmisc,glob}.c,glob.h} + - extglob_pattern renamed to extglob_pattern_p, declared in glob.h subst.c - - use umatchlen/wmatchlen in match_upattern/match_wpattern to bound - the number of match attempts in large strings to (usually) one, - depending on match length. Fixes performance problems with - pattern substitution in large strings noted by Yi Yan - . Can be applied to remove_[uw]pattern also + - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2 + had a typo (& isexp instead of &&) - 8/13 - ---- -bashhist.c - - in maybe_append_history, change check for history_lines_this_session - so that we append the lines to the file if it's equal to the value - returned by where_history(). This means that without this change, - the history won't be appended if all the lines in the history list - were added in the current session since the last time the history - file was read or written. Fixes bug reported by Bruce Korb - - -shell.h,parse.y - - add prompt_string_pointer to the parser_state struct saved and - restored by {save,restore}_parser_state. Fixes both bugs exposed - by bash_completion and completion of open backquotes reported by - Egmont Koblinger + 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 -subst.h - - new flag for skip_to_delim: SD_EXTGLOB. Skip extended globbing - patterns while looking for ending delimiter +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 - - when passed the SD_EXTGLOB flag, skip_to_delim skips over extended - globbing patterns (when extended_glob is set) while looking for a - character in the delimiter set + - 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 + -pathexp.c - - split_ignorespec: new function to replace calls to extract_colon_unit - in setup_ignore_patterns. uses skip_to_delim with the SD_EXTGLOB - flag to skip over extended globbing patterns in variables like - HISTIGNORE and GLOBIGNORE. Fixes bug reported by Dimitar DIMITROV - and Greg Wooledge +builtins/ulimit.def + - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is, + use RLIMIT_NTHR (NetBSD) - 8/28 + 11/5 ---- -lib/readline/rlprivate.h - - add members to search_cxt to save _rl_keymap - - new flag for isearch context: SF_CHGKMAP, set if we changed the - keymap while reading a character for the search string that - translated to a command +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 -lib/readline/isearch.c - - save current readline keymap in cxt->keymap and cxt->okeymap - in _rl_scxt_alloc - - in _rl_isearch_dispatch, only check for cxt->lastc as a member of - cxt->search_terminators if it's > 0 (i.e., not an isearch opcode) + 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 + - 9/3 - --- -support/signames.c - - add Solaris SIGJVM1 and SIGJVM2. Update from Stefan Teleman - + 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 -shell.c - - instead of closing all fds 3-20 at shell startup, just set them to - be close-on-exec. Report from Rainer Müller + 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 -lib/readline/isearch.c - - in _rl_isearch_dispatch, if the current character maps to ISKMAP, - move to the indicated keymap (using cxt->keymap) and go on to - read another character. Fixes problem reported by Davor - Cubranic - - in _rl_isearch_dispatch, after translating key to possible opcode, - restore _rl_keymap from cxt->okeymap if necessary - - in _rl_isearch_dispatch, use key sequences that map to default - functions that ^G, ^W, and ^Y map to as equivalent to those chars +support/shobj-conf + - add support for Darwin 13 (Mac OS X 10.9, Mavericks). Based on a + report by Ludwig Schwardt -lib/readline/complete.c - - new variable, _rl_menu_complete_prefix_first, zero by default - - change menu_complete to display common prefix (matches[0]) first - before cycling through rest of match list if - _rl_menu_complete_prefix_first is non-zero. Suggested by Sami - Pietila + 11/20 + ----- +[bash-4.3-rc1 frozen] -lib/readline/bind.c - - new bindable readline variable, "menu-complete-display-prefix", - controls setting of _rl_menu_complete_prefix_first + 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 + -doc/{bash.1,bashref.texi},lib/readline/doc/{readline.3,rluser.texi} - - added description of menu-complete-display-prefix bindable - readline variable + 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 - 9/17 - ---- -configure.in - - remove AM_PATH_LISPDIR call since we don't use that bash debugger - any more. Suggested by Mike Frysinger + 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 - 10/6 + 12/2 ---- -findcmd.c - - change executable_file to set errno to EISDIR if the passed name - is a directory +lib/readline/{histexpand.c + - get_history_event: account for current_history() possibly returning + NULL. Report and fix from Pankaj Sharma -builtins/exec.def - - change exec_builtin to report appropriate error message if the - file argument is a directory. Noted by Eric Blake - in a message to austin-group -builtins/source.def - - change source_builtin to make sure the shell exits if the file is - not found when in a non-interactive shell running in posix mode - and source_searches_cwd == 0 (as posix mode makes it by default). - Pointed out in http://thread.gmane.org/gmane.comp.shells.dash/291/focus=392 - by Jilles Tjoelker - -execute_cmd.c - - set executing_command_builtin in execute_builtin if the builtin is - command_builtin. Unwind-protected in execute_function_or_builtin - (like executing_builtin variable). Available for rest of shell + 12/11 + ----- -builtins/{source.def,evalfile.c} - - make sure that non-interactive posix mode shells exit if the file - argument to `.' is not found only if they are not being executed - by the command builtin (executing_command_builtin == 0). This is - how `command' can cancel effects of special builtin exit properties - in the case of `dot file not found' +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 - 10/13 + 12/13 ----- -lib/sh/strtrans.c - - pass \c through unchanged if not escaping for `echo -e' and they are - the final two characters in the string - 10/15 - ----- -subst.c - - extract_dollar_brace_string: fix problem with single quotes - in unquoted ${...} for Posix compliance +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 - 10/16 - ----- -builtins/exec.def - - catch return value from shell_execve; don't print duplicate error - message if return value is EX_NOTFOUND. Make sure exit status - from exec is 127 if command is not found +variables.c + - make_local_variable: for new variables this function creates, set + the att_invisible attribute. All callers from declare_internal. + Indirectly, this is a fix for bug with `declare -n var; var=foo;' + reported by Pierre Gaston + - bind_variable: if assigning to nameref variable that doesn't have + a value yet (e.g., with `declare -n var; var=foo'), don't try to + use the unset name. Fixes a segfault reported by Pierre Gaston + execute_cmd.c - - fix typo (`saved_redirects' should be `saved redirects') in - execute_function_or_builtin `command exec' case. Typo caused - too much of the unwind-protect stack to be discarded - - in same execute_function_or_builtin case, don't discard the - `saved redirects' frame unconditionally; only discard it if - saved_redirects is non-null in the `command exec' case. Fixes - sh -c 'command exec; exit 1' hanging bug uncovered by FreeBSD - sh test cases - - 10/18 + - execute_command_internal: make sure last_command_exit_value is set + to 0 after any command executed in the background. Fixes bug + reported by Martin Kealey + + 12/17 ----- -subst.c - - when in posix mode, shell should not exit if a variable assignment - error (e.g., assigning to readonly variable) occurs preceding a - command that is not a special builtin. Fixes bug uncovered by - FreeBSD sh test cases - - when in posix mode, the ${!?} and ${!#} expansions are not indirect - expansions, but posix word expansions involving the `!' variable +support/config.{guess,sub} + - updated to latest versions from git + 12/19 + ----- parse.y - - fix parse_comsub so that it does not skip backslash-newline when - parsing a comment + - struct STRING_SAVER: now has a new `flags' element, to identify the + caller: alias expansion, double-paren parsing, or parse_and_execute + - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL + - push_string: now doesn't attempt to call strlen on a NULL string to + set shell_input_line_size + - parser_expanding_alias, parser_save_alias, parser_restore_alias: new + functions to provide an external interface to push_string and + pop_string; parser_save_alias sets flags element to PSH_SOURCE (could + be renamed PSH_EXTERN someday) + - shell_getc: when yy_getc returns '\0', instead of just testing + whether the pushed_string_list is not-empty before popping it, don't + pop if if the saved string has flags PSH_SOURCE, indicating that + parse_and_execute set it before setting bash_input to the string. + We should continue reading to the end of that string before popping + back to a potential alias. Partial solution for the problem of aliases + with embedded newlines containing `.' commands being executed out of + order reported by Andrew Martin + - shell_getc: when yy_getc returns '\0' and there is a saved string of + type PSH_SOURCE, restart the read without popping the string stack + if we have not read to the end of bash_input.location.string. Rest + of fix for out-of-order execution problem - 10/19 +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 ----- -subst.c - - fix parameter_brace_expand so that an attempt to use the % or # - expansions on an unset variable with -u set will cause a non- - interactive shell to abort. Posix change - - fix parameter_brace_expand so that an attempt to use pattern - substitution or case modification expansions on an unset variable - with -u set will cause and unbound variable error and make a - non-interactive shell abort - - change parameter_brace_expand_length to return INTMAX_MIN if a - positional parameter is unset and -u is set - - if parameter_brace_expand_length returns INTMAX_MIN when -u is set, - treat it as an unbound variable error and make a non-interactive - shell abort. Posix change - - change parameter_brace_expand_length to return INTMAX_MIN if an - implicit reference to array[0] is made ${#array} and array[0] is - not set when -u is set +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 - 10/20 +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 ----- -builtins/cd.def - - Posix 2008 says that if no matching directories are found in $CDPATH, - use the directory name passed as an operand and go on. Posix change +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 + -doc/bashref.texi - - change Posix mode section with latest additions and removals +Makefile.in + - install: make sure to use $(DESTDIR) when installing OTHER_DOCS. + Report and fix from Matthias Klose - 11/4 - ---- -lib/readline/complete.c - - fix rl_menu_complete and rl_old_menu_complete to keep incrementing - match_list_index by match_list_size as long as it's < 0. Fixes - bug reported by jeenuv@gmail.com +doc/texinfo.tex + - updated to version of 2013-09-11 -braces.c - - make mkseq() take intmax_t arguments for sequence start and end - and make sure it's passed intmax_t values. Fixes bug reported by - Pete Gregory + 12/28 + ----- +lib/readline/undo.c + - rl_do_undo: if we are undoing from a history entry (rl_undo_list == + current_history()->data), make sure the change to rl_line_buffer is + reflected in the history entry. We use the guts of + rl_maybe_replace_line to do the work. Fixes problem reported by + gregrwm + 12/30 + ----- sig.c - - if termsig_handler is called when terminate_immediately == 1, - assume we're being called as a signal handler and set - history_lines_this_session to 0 to inhibit history file being - written on shell exit. Fixes long-standing bug most recently - observed by Andreas Schwab + - 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 - 11/5 - ---- -redir.c - - add_undo_close_redirect now returns int, 0 on success, non-zero on - failure. Currently always succeeds - - new macro REDIRECTION_ERROR to make do_redirection_internal return - value of errno - - change do_redirection_internal to call REDIRECTION_ERROR after - saving file descriptor and make do_redirection_internal return error - if add_undo_redirect or add_undo_close redirect fails. This makes - failure to save a file descriptor a redirection error and the shell - behaves appropriately. Fixes bug reported by Eric Blake - + 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] -bashline.c - - modify bash_forward_shellword to correctly handle quoted strings, - especially if point is in a quoted string when function is invoked. - Fixes bug reported by Daniel Colascione +trap.h + - set_signal_hard_ignored: new external declaration -configure.in - - change version to 4.2-alpha +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 - 11/7 - ---- -lib/readline/text.c - - in rl_insert, if we're not in the multibyte code path, don't try to - optimize and insert all of the available typeahead input if we're - reading input from a macro. Fixes bug reported by Andre Majorel - +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 -lib/readline/text.c - - break out multibyte guts of rl_forward_char into a separate function - _rl_forward_char_internal that does nothing but calculate the new - value of point - - change rl_forward_char to call _rl_forward_char_internal instead of - having equivalent code inline +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/readline/rlprivate.h - - new extern declaration for _rl_forward_char_internal +lib/sh/strdup.c + - strdup replacement function for ancient systems that don't have it -lib/readline/vi_mode.c - - change _rl_vi_append_forward to call _rl_forward_char_internal to - set rl_point, instead of calling rl_forward_char. When at the end - of the line, rl_forward_char will ring the bell. Fixes debian - bash bug 601042, reported by Alan J. Greenberger +lib/sh/itos.c + - mitos: new function, itos that uses strdup instead of savestring - 11/14 - ----- -subst.c - - fix match_upattern to use correct test to immediately break out of - loop (when potential match length is greater than number of chars - remaining in the string) in MATCH_ANY case +externs.h + - strvec_mcreate/strvec_mresize: new extern declarations + - mitos: new extern declaration - 11/15 - ----- -subst.c - - include "typemax.h" to make sure we have a definition of INTMAX_MIN +configure.ac + - bash version moved to 4.3-rc2 - 11/16 - ----- -lib/sh/unicode.c - - make sure `localconv' isn't declared on machines without iconv - - add stub_charset for systems that don't have locale_charset: looks - up LC_CTYPE, returns everything after last `.', "UTF-8" if the - value is exactly "UTF-8", and "ASCII" otherwise + 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 - 11/20 - ----- -lib/readline/vi_mode.c - - in rl_domove_motion_callback, make sure to use m->key instead of - key, which is not initialized and should not be used. Bug report - from Andreas Schwab - - in rl_vi_domove, make assignment to `m' explicit instead of - relying on evaluation order semantics, since the C standard leaves - them unspecified. Bug report from Andreas Schwab - - - 11/21 - ----- -lib/sh/shquote.c - - sh_single_quote and sh_double_quote now take a const char * - argument. Fixes problem pointed out by Joachim Schmitz - +lib/readline/doc/{version.texi,history.3,*.texi} + - updated email addresses and copyright dates -externs.h - - change extern declarations for sh_single_quote and sh_double_quote + 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 -lib/sh/strchrnul.c - - make sure that return value is cast to (char *) if we're using a - part of the passed (const char *) argument. Fixes problem pointed - out by Joachim Schmitz +variables.h + - delete_var: new extern declaration -lib/glob/gmisc.c - - fix a typo that mixed up defines for LPAREN and RPAREN. Bug and - fix from Andreas Schwab - - use WLPAREN and WRPAREN in multibyte character environments - - fixed typos using L'cc' in a non-wide-char environment +subst.h + - ASS_NAMEREF: new define for assignments, means assigning to a nameref + variable -lib/readline/complete.c - - fix rl_filename_completion_function to dequote users_dirname if - there is a filename dequoting function (as well as dirname), since - users_dirname gets tacked back onto the beginning of the possible - completions and then requoted. Bug reported by Andreas Schwab - +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 - 11/22 - ----- -lib/readline/parens.c - - the `blink-matching-paren' variable should default to off + 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 - 11/23 - ----- -subst.h - - add extern declaration for close_new_fifos() +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 -lib/sh/fnxform.c - - fix curencoding to return the character past the `.', not a string - beginning with `.' + 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 -lib/sh/unicode.c - - fix stub_charset to do the same cut-off at `@' as curencoding(). - These two functions should be combined +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? -builtins/printf.def - - document new %(datefmt)T modifier in help text + 1/11 + ---- +subst.h + - SD_GLOB: new define for skip_to_delim; means we are scanning a + glob pattern. - 11/24 - ----- -parse.y - - fix `W' case in decode_prompt_string: memmove was copying one too - few bytes and missed the closing NUL. Bug report from Tim Mooney - +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 - 11/26 - ----- + 1/12 + ---- subst.c - - in expand_word_internal, don't add quoted nulls to partially- - quoted strings if the word will not be subjected to word splitting - later (which will remove the quoted null). Fixes bug reported by - Rocky Bernstein + - 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 - 11/28 - ----- + 1/19 + ---- subst.c - - change multibyte case of match_pattern to revert to match_upattern - if neither the pattern nor the string has any multibyte characters + - list_dequote_escapes: new function; analogue of list_quote_escapes -alias.c - - fix tests of backslash-escaped characters in skipquotes, skipws, - rd_token to check for backslash at EOS and not go past the end. - Fixes debian bug 603696 reported by Tim Small +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 -include/shmbchar.h - - new file, mbchar.h from gnulib minus the include + 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 -lib/sh/shmbchar.c - - new file, mbchar.c from gnulib with additions - - moved mbstrlen from subst.c to here, changed initialization of mbs - - change mbstrlen to use is_basic to avoid calls to mbrlen for ASCII - chars; code hints from gnulib - - don't copy mbs and mbsbak if we're not calling mbrlen +Makefile.in + - variables.o: add dependency on builtins/builtext.h; helps with + parallel builds. Report from Linda Walsh - 11/29 - ----- -lib/glob/smatch.c - - change xstrmatch to use internal_strmatch() if the pattern and - string don't have any multibyte characters +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 + - 11/30 - ----- -include/shmbutil.h - - change ADVANCE_CHAR and ADVANCE_CHAR_P macros to use is_basic and - only call mbrlen and copy state and state_bak if is_basic returns - false (non-ASCII). Called all over the place. - - change rest of macros except BACKUP_CHAR and BACKUP_CHAR_P in the - same way + 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 - 12/2 + 1/29 ---- -subst.c - - audit all calls to string_list and make sure caller can handle a - NULL return value. Fixes bug reported by David Rochberg - +[bash-4.3-rc2 released] -general.h - - change sh_wassign_func_t to take an additional argument: an int - flags word + 1/30 + ---- +lib/readline/readline.h + - rl_clear_history, rl_free_keymap: add extern declarations. Report + from Hiroo Hayashi -subst.c - - change do_word_assignment to take an additional argument to match - wassign_func_t; change callers - - change call to (*assign_func) in expand_word_list_internal to match - new wassign_func_t prototype - - (*assign_func) passes 1 as additional arg if the simple command is - a builtin or function, in which case the assignment to the - temporary env should take effect +general.c + - include trap.h for any_signals_trapped() prototype -variables.c - - change assign_in_env to take an additional argument to match - wassign_func_t; change callers - - move call to sv_ifs from dispose_temporary_env to - dispose_used_env_vars; we don't need to do it if called from - merge_temporary_env +lib/sh/unicode.c + - include for sprintf prototype - 12/3 - ---- -variables.c - - change dispose_temporary_env to maintain a list (tempvar_list) of - variables that need to be handled specially. If a variable that - gets freed by push_temp_var or propagate_temp_var is one of the - variables that the shell handles specially (IFS, LANG, etc.), it's - stored on the list. For each variable in this list, - dispose_temp_var calls stupidly_hack_special_variables. - - assign_in_env calls stupidly_hack_special_variables if flags arg - is non-zero, so variable assignments affect current shell - execution environment if a builtin or function is being executed. - Fixes bug reported by Bruno Haible - - 12/5 + 1/31 ---- -subst.c - - use mbsmbchar on both string and pattern in match_pattern instead - of strlen and mbstrlen; only go through the strings once +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 && - 12/6 - ---- -lib/readline/kill.c - - in rl_yank_last_arg, only switch directions if the `count' - argument is < 0, not < 1. This makes explicit count arguments of - 0 work as expected. Fixes bug reported by Dennis Williamson - +pathexp.c + - quote_string_for_globbing: when quoting a regular expression + (QGLOB_REGEXP), allow an unquoted backslash to pass through + unaltered. Don't use it as a quote character or quote it. More + investigation from 1/24 and report by Mike Frysinger + + - quote_string_for_globbing: when quoting a regular expression + (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a + backslash to quote it. We should not have to quote it because it is + not a character special to EREs. More investigation from 1/24 -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - fix documentation for yank-last-arg to make it clear how the count - argument is set and how second and subsequent calls treat any - numeric argument +lib/glob/glob.c + - glob_testdir: now takes a second flags argument (currently unused); + changed prototype and callers + + 2/1 + --- +lib/glob/glob.c + - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use + lstat so we skip symlinks when traversing the directory tree. + Originally reported by Chris Down + + 2/2 + --- +lib/readline/undo.c + - rl_do_undo: make sure CUR is non-zero before dereferencing it to + check cur->data against rl_undo_list. Report and fix from + Andreas Schwab doc/{bash.1,bashref.texi} - - slight changes to the description of test - - change \(bv to `|'; it seems that many `internationalized' versions - of groff don't render that as a vertical bar. Fixes Debian bug - 603805 + - added slight clarifying language to the description of $*, + describing what happens when the expansion is not within double + quotes - 12/10 - ----- -configure.in - - changed release status to 4.2-beta + 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 -[bash-4.2-beta frozen] + 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 - 12/18 - ----- -redir.c - - change REDIRECTION_ERROR macro to accept a third argument: an - additional file descriptor to close before returning and error (pass - -1 to do nothing) - - change calls to REDIRECTION_ERROR to close appropriate file - descriptors. Fixes bug reported by Andreas Schwab - - - make sure to close any file descriptors opened for REDIR_VARASSIGN - before returning an error + 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 - 12/19 - ----- -expr.c - - move processing of unary `-' and `+' to exp1 from exp0 to avoid - precedence problems. Fixes bug reported by <12bric@gmail.com> + 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 - 12/21 - ----- -lib/sh/unicode.c - - fixed reversed arguments to wctomb. Reported by Andreas Schwab - + 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 + + + 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 + +[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 + + 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 diff --git a/INSTALL b/INSTALL index 16fa685..ebe7ea1 100644 --- a/INSTALL +++ b/INSTALL @@ -47,8 +47,8 @@ out how `configure' could check whether or not to do them, and mail diffs or instructions to so they can be considered for the next release. -The file `configure.in' is used to create `configure' by a program -called Autoconf. You only need `configure.in' if you want to change it +The file `configure.ac' is used to create `configure' by a program +called Autoconf. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of Autoconf. If you do this, make sure you are using Autoconf version 2.50 or newer. @@ -252,9 +252,9 @@ The `minimal-config' option can be used to disable all of the following options, but it is processed first, so individual options may be enabled using `enable-FEATURE'. -All of the following options except for `disabled-builtins' and -`xpg-echo-default' are enabled by default, unless the operating system -does not provide the necessary support. +All of the following options except for `disabled-builtins', +`directpand-default', and `xpg-echo-default' are enabled by default, +unless the operating system does not provide the necessary support. `--enable-alias' Allow alias expansion and include the `alias' and `unalias' @@ -308,6 +308,11 @@ does not provide the necessary support. `--enable-debugger' Include support for the bash debugger (distributed separately). +`--enable-direxpand-default' + Cause the `direxpand' shell option (*note The Shopt Builtin::) to + be enabled by default when the shell starts. It is normally + disabled by default. + `--enable-directory-stack' Include support for a `csh'-like directory stack and the `pushd', `popd', and `dirs' builtins (*note The Directory Stack::). @@ -330,6 +335,12 @@ does not provide the necessary support. Set the default value of the EXTGLOB shell option described above under *note The Shopt Builtin:: to be enabled. +`--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This + controls the behavior of character ranges when used in pattern + matching bracket expressions. + `--enable-help-builtin' Include the `help' builtin, which displays help on shell builtins and variables (*note Bash Builtins::). @@ -363,8 +374,8 @@ does not provide the necessary support. `--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt - strings. See *note Printing a Prompt::, for a complete list of - prompt string escape sequences. + strings. See *note Controlling the Prompt::, for a complete list + of prompt string escape sequences. `--enable-readline' Include support for command-line editing and history with the Bash diff --git a/MANIFEST b/MANIFEST index 11fd275..55c8d1c 100644 --- a/MANIFEST +++ b/MANIFEST @@ -10,14 +10,14 @@ builtins d cross-build d doc d examples d -examples/obashdb d +#examples/obashdb d examples/complete d examples/functions d examples/scripts d -examples/scripts.v2 d -examples/scripts.noah d +#examples/scripts.v2 d +#examples/scripts.noah d examples/startup-files d -examples/startup-files/apple d +#examples/startup-files/apple d examples/misc d examples/loadables d examples/loadables/perl d @@ -33,6 +33,7 @@ lib/readline/examples d lib/sh d lib/termcap d lib/tilde d +m4 d po d support d tests d @@ -51,7 +52,7 @@ README f RBASH f AUTHORS f Y2K f -configure.in f +configure.ac f configure f 755 Makefile.in f config-top.h f @@ -169,6 +170,7 @@ builtins/exec.def f builtins/exit.def f builtins/fc.def f builtins/fg_bg.def f +builtins/gen-helpfiles.c f builtins/getopt.c f builtins/getopt.h f builtins/getopts.def f @@ -223,6 +225,7 @@ include/posixwait.h f include/shmbchar.h f include/shmbutil.h f include/shtty.h f +include/stat-time.h f include/stdc.h f include/systimes.h f include/typemax.h f @@ -338,6 +341,8 @@ lib/readline/mbutil.c f lib/readline/misc.c f lib/readline/nls.c f lib/readline/shell.c f +lib/readline/colors.c f +lib/readline/parse-colors.c f lib/readline/savestring.c f lib/readline/tilde.c f lib/readline/tilde.h f @@ -361,6 +366,8 @@ lib/readline/posixstat.h f lib/readline/ansi_stdlib.h f lib/readline/rlstdc.h f lib/readline/rlprivate.h f +lib/readline/colors.h f +lib/readline/parse-colors.h f lib/readline/xmalloc.h f lib/readline/doc/Makefile f lib/readline/doc/version.texi f @@ -378,6 +385,7 @@ lib/readline/examples/fileman.c f lib/readline/examples/manexamp.c f lib/readline/examples/histexamp.c f lib/readline/examples/rltest.c f +lib/readline/examples/rl-callbacktest.c f lib/readline/examples/rl.c f lib/readline/examples/rlcat.c f lib/readline/examples/Inputrc f @@ -420,6 +428,7 @@ lib/sh/spell.c f lib/sh/strcasecmp.c f lib/sh/strcasestr.c f lib/sh/strchrnul.c f +lib/sh/strdup.c f lib/sh/strerror.c f lib/sh/strftime.c f lib/sh/stringlist.c f @@ -443,6 +452,7 @@ lib/sh/ufuncs.c f lib/sh/unicode.c f lib/sh/vprint.c f lib/sh/wcsdup.c f +lib/sh/wcsnwidth.c f lib/sh/wcswidth.c f lib/sh/winsize.c f lib/sh/zcatfd.c f @@ -461,6 +471,8 @@ lib/tilde/Makefile.in f lib/tilde/tilde.c f lib/tilde/tilde.h f lib/tilde/shell.c f +m4/stat-time.m4 f +m4/timespec.m4 f po/LINGUAS f po/Makefile.in.in f po/Makevars f @@ -484,8 +496,12 @@ po/ca.gmo f po/ca.po f po/cs.gmo f po/cs.po f +po/da.gmo f +po/da.po f po/de.gmo f po/de.po f +po/el.gmo f +po/el.po f po/eo.gmo f po/eo.po f po/es.gmo f @@ -498,10 +514,16 @@ po/fr.gmo f po/fr.po f po/ga.gmo f po/ga.po f +po/gl.gmo f +po/gl.po f +po/hr.gmo f +po/hr.po f po/hu.gmo f po/hu.po f po/id.gmo f po/id.po f +po/it.gmo f +po/it.po f po/ja.gmo f po/ja.po f po/lt.gmo f @@ -518,6 +540,10 @@ po/ru.gmo f po/ru.po f po/sk.gmo f po/sk.po f +po/sl.gmo f +po/sr.po f +po/sr.gmo f +po/sl.po f po/sv.gmo f po/sv.po f po/tr.gmo f @@ -543,7 +569,6 @@ CWRU/PLATFORMS f CWRU/README f CWRU/changelog f CWRU/sh-redir-hack f -CWRU/mh-folder-comp f doc/FAQ f doc/Makefile.in f doc/bash.1 f @@ -561,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 @@ -593,16 +640,17 @@ support/shobj-conf f 755 support/rlvers.sh f 755 examples/INDEX.txt f examples/INDEX.html f -examples/obashdb/PERMISSION f -examples/obashdb/README f -examples/obashdb/bashdb f -examples/obashdb/bashdb.el f +#examples/obashdb/PERMISSION f +#examples/obashdb/README f +#examples/obashdb/bashdb f +#examples/obashdb/bashdb.el f examples/complete/bash_completion f +examples/complete/cdfunc f examples/complete/complete-examples f -examples/complete/complete.ianmac f -examples/complete/complete2.ianmac f -examples/complete/complete.freebsd f -examples/complete/complete.gnu-longopt f +#examples/complete/complete.ianmac f +#examples/complete/complete2.ianmac f +#examples/complete/complete.freebsd f +#examples/complete/complete.gnu-longopt f examples/complete/bashcc-1.0.1.tar.gz f examples/loadables/README f examples/loadables/template.c f @@ -614,11 +662,11 @@ examples/loadables/realpath.c f examples/loadables/sleep.c f examples/loadables/strftime.c f examples/loadables/truefalse.c f -examples/loadables/getconf.h f -examples/loadables/getconf.c f +#examples/loadables/getconf.h f +#examples/loadables/getconf.c f examples/loadables/finfo.c f examples/loadables/cat.c f -examples/loadables/cut.c f +#examples/loadables/cut.c f examples/loadables/logname.c f examples/loadables/basename.c f examples/loadables/dirname.c f @@ -641,87 +689,91 @@ examples/loadables/perl/Makefile.in f examples/loadables/perl/README f examples/loadables/perl/bperl.c f examples/loadables/perl/iperl.c f +#examples/loadables/sprintf.c f +#examples/loadables/xtitle.c f examples/functions/array-stuff f examples/functions/array-to-string f examples/functions/autoload f examples/functions/autoload.v2 f examples/functions/autoload.v3 f examples/functions/basename f -examples/functions/basename2 f -examples/functions/coproc.bash f -examples/functions/coshell.README f -examples/functions/coshell.bash f +#examples/functions/basename2 f +#examples/functions/coproc.bash f +#examples/functions/coshell.README f +#examples/functions/coshell.bash f examples/functions/csh-compat f -examples/functions/dirfuncs f +#examples/functions/dirfuncs f examples/functions/dirname f -examples/functions/emptydir f +#examples/functions/emptydir f examples/functions/exitstat f examples/functions/external f examples/functions/fact f examples/functions/fstty f examples/functions/func f -examples/functions/gethtml f -examples/functions/getoptx.bash f +#examples/functions/gethtml f +#examples/functions/getoptx.bash f examples/functions/inetaddr f examples/functions/inpath f -examples/functions/isnum.bash f +#examples/functions/isnum.bash f examples/functions/isnum2 f examples/functions/isvalidip f -examples/functions/jdate.bash f -examples/functions/jj.bash f -examples/functions/keep f +#examples/functions/jdate.bash f +#examples/functions/jj.bash f +#examples/functions/keep f examples/functions/ksh-cd f examples/functions/ksh-compat-test f examples/functions/kshenv f examples/functions/login f -examples/functions/lowercase f -examples/functions/manpage f -examples/functions/mhfold f +#examples/functions/lowercase f +#examples/functions/manpage f +#examples/functions/mhfold f +#examples/functions/newdirstack.bsh f examples/functions/notify.bash f -examples/functions/pathfuncs f -examples/functions/recurse f -examples/functions/repeat2 f -examples/functions/repeat3 f +#examples/functions/pathfuncs f +#examples/functions/recurse f +#examples/functions/repeat2 f +#examples/functions/repeat3 f examples/functions/seq f examples/functions/seq2 f examples/functions/shcat f examples/functions/shcat2 f examples/functions/sort-pos-params f +#examples/functions/sqroot f examples/functions/substr f examples/functions/substr2 f -examples/functions/term f +#examples/functions/term f examples/functions/whatis f examples/functions/whence f examples/functions/which f -examples/functions/xalias.bash f -examples/functions/xfind.bash f -examples/scripts/adventure.sh f -examples/scripts/bash-hexdump.sh f -examples/scripts/bcsh.sh f +#examples/functions/xalias.bash f +#examples/functions/xfind.bash f +#examples/scripts/adventure.sh f +#examples/scripts/bash-hexdump.sh f +#examples/scripts/bcsh.sh f examples/scripts/cat.sh f examples/scripts/center f -examples/scripts/dd-ex.sh f -examples/scripts/fixfiles.bash f -examples/scripts/hanoi.bash f +#examples/scripts/dd-ex.sh f +#examples/scripts/fixfiles.bash f +#examples/scripts/hanoi.bash f examples/scripts/inpath f -examples/scripts/krand.bash f -examples/scripts/line-input.bash f -examples/scripts/nohup.bash f -examples/scripts/precedence f -examples/scripts/randomcard.bash f -examples/scripts/scrollbar f -examples/scripts/scrollbar2 f -examples/scripts/self-repro f -examples/scripts/showperm.bash f +#examples/scripts/krand.bash f +#examples/scripts/line-input.bash f +#examples/scripts/nohup.bash f +#examples/scripts/precedence f +#examples/scripts/randomcard.bash f +#examples/scripts/scrollbar f +#examples/scripts/scrollbar2 f +#examples/scripts/self-repro f +#examples/scripts/showperm.bash f examples/scripts/shprompt f examples/scripts/spin.bash f -examples/scripts/timeout f -examples/scripts/timeout2 f -examples/scripts/timeout3 f -examples/scripts/vtree2 f -examples/scripts/vtree3 f -examples/scripts/vtree3a f -examples/scripts/websrv.sh f +#examples/scripts/timeout f +#examples/scripts/timeout2 f +#examples/scripts/timeout3 f +#examples/scripts/vtree2 f +#examples/scripts/vtree3 f +#examples/scripts/vtree3a f +#examples/scripts/websrv.sh f examples/scripts/xterm_title f examples/scripts/zprintf f examples/startup-files/README f @@ -730,14 +782,14 @@ examples/startup-files/Bash_aliases f examples/startup-files/Bash_profile f examples/startup-files/bash-profile f examples/startup-files/bashrc f -examples/startup-files/apple/README f -examples/startup-files/apple/aliases f -examples/startup-files/apple/bash.defaults f -examples/startup-files/apple/environment f -examples/startup-files/apple/login f -examples/startup-files/apple/logout f -examples/startup-files/apple/rc f -examples/misc/suncmd.termcap f +#examples/startup-files/apple/README f +#examples/startup-files/apple/aliases f +#examples/startup-files/apple/bash.defaults f +#examples/startup-files/apple/environment f +#examples/startup-files/apple/login f +#examples/startup-files/apple/logout f +#examples/startup-files/apple/rc f +#examples/misc/suncmd.termcap f examples/misc/aliasconv.sh f examples/misc/aliasconv.bash f examples/misc/cshtobash f @@ -747,6 +799,8 @@ tests/alias.tests f tests/alias1.sub f tests/alias.right f tests/appendop.tests f +tests/appendop1.sub f +tests/appendop2.sub f tests/appendop.right f tests/arith-for.tests f tests/arith-for.right f @@ -756,6 +810,8 @@ tests/arith1.sub f tests/arith2.sub f tests/arith3.sub f tests/arith4.sub f +tests/arith5.sub f +tests/arith6.sub f tests/array.tests f tests/array.right f tests/array1.sub f @@ -768,6 +824,12 @@ tests/array7.sub f tests/array8.sub f tests/array9.sub f tests/array10.sub f +tests/array11.sub f +tests/array12.sub f +tests/array13.sub f +tests/array14.sub f +tests/array15.sub f +tests/array16.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -778,6 +840,7 @@ tests/assoc3.sub f tests/assoc4.sub f tests/assoc5.sub f tests/assoc6.sub f +tests/assoc7.sub f tests/braces.tests f tests/braces.right f tests/builtins.tests f @@ -785,14 +848,17 @@ tests/builtins.right f tests/builtins1.sub f tests/builtins2.sub f tests/builtins3.sub f +tests/builtins4.sub f tests/source1.sub f tests/source2.sub f tests/source3.sub f tests/source4.sub f tests/source5.sub f tests/source6.sub f +tests/source7.sub f tests/case.tests f tests/case.right f +tests/case1.sub f tests/casemod.tests f tests/casemod.right f tests/comsub.tests f @@ -813,7 +879,9 @@ tests/comsub-posix2.sub f tests/comsub-posix3.sub f tests/cond.tests f tests/cond.right f -tests/cond-regexp.sub f +tests/cond-regexp1.sub f +tests/cond-regexp2.sub f +tests/cond-regexp3.sub f tests/coproc.tests f tests/coproc.right f tests/cprint.tests f @@ -825,14 +893,20 @@ tests/dbg-support2.right f tests/dbg-support2.tests f tests/dbg-support3.sub f tests/dollar-at-star f +tests/dollar-at-star1.sub f tests/dollar-at1.sub f tests/dollar-at2.sub f tests/dollar-at3.sub f +tests/dollar-at4.sub f +tests/dollar-at5.sub f +tests/dollar-at6.sub f tests/dollar-star1.sub f tests/dollar-star2.sub f tests/dollar-star3.sub f tests/dollar-star4.sub f tests/dollar-star5.sub f +tests/dollar-star6.sub f +tests/dollar-star7.sub f tests/dollar.right f tests/dstack.tests f tests/dstack.right f @@ -840,6 +914,9 @@ tests/dstack2.tests f tests/dstack2.right f tests/errors.tests f tests/errors.right f +tests/errors1.sub f +tests/errors2.sub f +tests/errors3.sub f tests/execscript f tests/exec.right f tests/exec1.sub f 755 @@ -857,9 +934,12 @@ tests/exp1.sub f tests/exp2.sub f tests/exp3.sub f tests/exp4.sub f +tests/exp5.sub f +tests/exp6.sub f tests/extglob.tests f tests/extglob.right f tests/extglob1.sub f +tests/extglob1a.sub f tests/extglob2.tests f tests/extglob2.right f tests/extglob3.tests f @@ -885,9 +965,12 @@ tests/glob.right f tests/globstar.tests f tests/globstar.right f tests/globstar1.sub f +tests/globstar2.sub f tests/heredoc.tests f tests/heredoc.right f tests/heredoc1.sub f +tests/heredoc2.sub f +tests/heredoc3.sub f tests/herestr.tests f tests/herestr.right f tests/histexp.tests f @@ -910,6 +993,7 @@ tests/intl2.sub f tests/intl.right f tests/iquote.tests f tests/iquote.right f +tests/iquote1.sub f tests/invert.tests f tests/invert.right f tests/jobs.tests f @@ -917,6 +1001,7 @@ tests/jobs1.sub f tests/jobs2.sub f tests/jobs3.sub f tests/jobs4.sub f +tests/jobs5.sub f tests/jobs.right f tests/lastpipe.right f tests/lastpipe.tests f @@ -927,6 +1012,16 @@ tests/mapfile.tests f tests/mapfile1.sub f tests/more-exp.tests f tests/more-exp.right f +tests/nameref.tests f +tests/nameref1.sub f +tests/nameref2.sub f +tests/nameref3.sub f +tests/nameref4.sub f +tests/nameref5.sub f +tests/nameref6.sub f +tests/nameref7.sub f +tests/nameref8.sub f +tests/nameref.right f tests/new-exp.tests f tests/new-exp1.sub f tests/new-exp2.sub f @@ -936,10 +1031,12 @@ tests/new-exp5.sub f tests/new-exp6.sub f tests/new-exp7.sub f tests/new-exp8.sub f +tests/new-exp9.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f tests/nquote1.sub f +tests/nquote2.sub f tests/nquote1.tests f tests/nquote1.right f tests/nquote2.tests f @@ -969,8 +1066,10 @@ tests/printf.right f tests/printf1.sub f tests/printf2.sub f tests/printf3.sub f +tests/printf4.sub f tests/quote.tests f tests/quote.right f +tests/quote1.sub f tests/read.tests f tests/read.right f tests/read1.sub f @@ -993,8 +1092,10 @@ tests/redir6.sub f tests/redir7.sub f tests/redir8.sub f tests/redir9.sub f +tests/redir10.sub f tests/rhs-exp.tests f tests/rhs-exp.right f +tests/rhs-exp1.sub f tests/rsh.tests f tests/rsh.right f tests/run-all f @@ -1044,6 +1145,7 @@ tests/run-jobs f tests/run-lastpipe f tests/run-mapfile f tests/run-more-exp f +tests/run-nameref f tests/run-new-exp f tests/run-nquote f tests/run-nquote1 f @@ -1077,6 +1179,8 @@ tests/run-vredir f tests/set-e.tests f tests/set-e1.sub f tests/set-e2.sub f +tests/set-e3.sub f +tests/set-e3a.sub f tests/set-e.right f tests/set-x.tests f tests/set-x1.sub f @@ -1097,15 +1201,25 @@ tests/trap1.sub f 755 tests/trap2.sub f 755 tests/trap2a.sub f 755 tests/trap3.sub f +tests/trap4.sub f +tests/trap5.sub f tests/type.tests f tests/type.right f tests/type1.sub f tests/type2.sub f tests/type3.sub f +tests/type4.sub f +tests/unicode1.sub f +tests/unicode2.sub f +tests/unicode3.sub f tests/varenv.right f tests/varenv.sh f tests/varenv1.sub f tests/varenv2.sub f +tests/varenv3.sub f +tests/varenv4.sub f +tests/varenv5.sub f +tests/varenv6.sub f tests/version f tests/version.mini f tests/vredir.tests f @@ -1129,45 +1243,45 @@ tests/misc/sigint-4.sh f tests/misc/test-minus-e.1 f tests/misc/test-minus-e.2 f tests/misc/wait-bg.tests f -examples/scripts.v2/PERMISSION f -examples/scripts.v2/README f -examples/scripts.v2/arc2tarz f -examples/scripts.v2/bashrand f -examples/scripts.v2/cal2day.bash f -examples/scripts.v2/cdhist.bash f -examples/scripts.v2/corename f -examples/scripts.v2/fman f -examples/scripts.v2/frcp f -examples/scripts.v2/lowercase f -examples/scripts.v2/ncp f -examples/scripts.v2/newext f -examples/scripts.v2/nmv f -examples/scripts.v2/pages f -examples/scripts.v2/pf f -examples/scripts.v2/ren f -examples/scripts.v2/rename f -examples/scripts.v2/repeat f -examples/scripts.v2/untar f -examples/scripts.v2/uudec f -examples/scripts.v2/uuenc f -examples/scripts.v2/vtree f -examples/scripts.v2/where f -examples/scripts.v2/pmtop f -examples/scripts.v2/shprof f -examples/scripts.noah/PERMISSION f -examples/scripts.noah/README f -examples/scripts.noah/aref.bash f -examples/scripts.noah/bash.sub.bash f -examples/scripts.noah/bash_version.bash f -examples/scripts.noah/meta.bash f -examples/scripts.noah/mktmp.bash f -examples/scripts.noah/number.bash f -examples/scripts.noah/prompt.bash f -examples/scripts.noah/remap_keys.bash f -examples/scripts.noah/require.bash f -examples/scripts.noah/send_mail.bash f -examples/scripts.noah/shcat.bash f -examples/scripts.noah/source.bash f -examples/scripts.noah/string.bash f -examples/scripts.noah/stty.bash f -examples/scripts.noah/y_or_n_p.bash f +#examples/scripts.v2/PERMISSION f +#examples/scripts.v2/README f +#examples/scripts.v2/arc2tarz f +#examples/scripts.v2/bashrand f +#examples/scripts.v2/cal2day.bash f +#examples/scripts.v2/cdhist.bash f +#examples/scripts.v2/corename f +#examples/scripts.v2/fman f +#examples/scripts.v2/frcp f +#examples/scripts.v2/lowercase f +#examples/scripts.v2/ncp f +#examples/scripts.v2/newext f +#examples/scripts.v2/nmv f +#examples/scripts.v2/pages f +#examples/scripts.v2/pf f +#examples/scripts.v2/ren f +#examples/scripts.v2/rename f +#examples/scripts.v2/repeat f +#examples/scripts.v2/untar f +#examples/scripts.v2/uudec f +#examples/scripts.v2/uuenc f +#examples/scripts.v2/vtree f +#examples/scripts.v2/where f +#examples/scripts.v2/pmtop f +#examples/scripts.v2/shprof f +#examples/scripts.noah/PERMISSION f +#examples/scripts.noah/README f +#examples/scripts.noah/aref.bash f +#examples/scripts.noah/bash.sub.bash f +#examples/scripts.noah/bash_version.bash f +#examples/scripts.noah/meta.bash f +#examples/scripts.noah/mktmp.bash f +#examples/scripts.noah/number.bash f +#examples/scripts.noah/prompt.bash f +#examples/scripts.noah/remap_keys.bash f +#examples/scripts.noah/require.bash f +#examples/scripts.noah/send_mail.bash f +#examples/scripts.noah/shcat.bash f +#examples/scripts.noah/source.bash f +#examples/scripts.noah/string.bash f +#examples/scripts.noah/stty.bash f +#examples/scripts.noah/y_or_n_p.bash f diff --git a/Makefile.in b/Makefile.in index 9f9276d..cf77228 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ -# Makefile for bash-4.2, version 4.4 +# Makefile for bash-4.3, version 4.11 # -# Copyright (C) 1996-2010 Free Software Foundation, Inc. +# Copyright (C) 1996-2012 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 @@ -26,6 +26,8 @@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ + # Include some boilerplate Gnu makefile definitions. prefix = @prefix@ @@ -40,6 +42,8 @@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ +docdir = @docdir@ + mandir = @mandir@ manpfx = man @@ -186,7 +190,8 @@ SH_ABSSRC = ${topdir}/${SH_LIBSRC} SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/getenv.c ${SH_LIBSRC}/oslib.c \ ${SH_LIBSRC}/setlinebuf.c ${SH_LIBSRC}/strchrnul.c \ - ${SH_LIBSRC}/strcasecmp.c ${SH_LIBSRC}/strerror.c \ + ${SH_LIBSRC}/strcasecmp.c ${SH_LIBSRC}/strdup.c \ + ${SH_LIBSRC}/strerror.c \ ${SH_LIBSRC}/strtod.c ${SH_LIBSRC}/strtol.c \ ${SH_LIBSRC}/strtoul.c ${SH_LIBSRC}/vprint.c \ ${SH_LIBSRC}/itos.c ${SH_LIBSRC}/rename.c \ @@ -215,7 +220,8 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/ufuncs.c ${SH_LIBSRC}/dprintf.c \ ${SH_LIBSRC}/input_avail.c ${SH_LIBSRC}/mbscasecmp.c \ ${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \ - ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/shmbchar.c + ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \ + ${SH_LIBSRC}/shmbchar.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -244,6 +250,7 @@ READLINE_SOURCE = $(RL_LIBSRC)/rldefs.h $(RL_LIBSRC)/rlconf.h \ $(RL_LIBSRC)/posixstat.h $(RL_LIBSRC)/tilde.h \ $(RL_LIBSRC)/rlstdc.h ${RL_LIBSRC}/xmalloc.h \ $(RL_LIBSRC)/rlshell.h ${RL_LIBSRC}/rlprivate.h \ + $(RL_LIBSRC)/colors.h $(RL_LIBSRC)/parse-colors.h \ $(RL_LIBSRC)/funmap.c $(RL_LIBSRC)/emacs_keymap.c \ $(RL_LIBSRC)/search.c $(RL_LIBSRC)/vi_keymap.c \ $(RL_LIBSRC)/keymaps.c $(RL_LIBSRC)/parens.c \ @@ -257,6 +264,7 @@ READLINE_SOURCE = $(RL_LIBSRC)/rldefs.h $(RL_LIBSRC)/rlconf.h \ $(RL_LIBSRC)/terminal.c $(RL_LIBSRC)/nls.c \ $(RL_LIBSRC)/input.c $(RL_LIBSRC)/xmalloc.c \ $(RL_LIBSRC)/shell.c $(RL_LIBSRC)/savestring.c \ + $(RL_LIBSRC)/colors.c $(RL_LIBSRC)/parse-colors.c \ $(RL_LIBSRC)/misc.c $(RL_LIBSRC)/mbutil.c $(RL_LIBSRC)/compat.c \ $(RL_LIBSRC)/histexpand.c $(RL_LIBSRC)/history.c \ $(RL_LIBSRC)/histsearch.c $(RL_LIBSRC)/histfile.c @@ -274,7 +282,8 @@ READLINE_OBJ = $(RL_LIBDIR)/readline.o $(RL_LIBDIR)/funmap.o \ $(RL_LIBDIR)/shell.o $(RL_LIBDIR)/savestring.o \ $(RL_LIBDIR)/mbutil.o $(RL_LIBDIR)/compat.o \ $(RL_LIBDIR)/history.o $(RL_LIBDIR)/histexpand.o \ - $(RL_LIBDIR)/histsearch.o $(RL_LIBDIR)/histfile.o + $(RL_LIBDIR)/histsearch.o $(RL_LIBDIR)/histfile.o \ + $(RL_LIBDIR)/colors.o $(RL_LIBDIR)/parse-colors.o HIST_LIBSRC = $(LIBSRC)/readline HIST_LIBDIR = @HIST_LIBDIR@ @@ -530,6 +539,10 @@ CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ examples/loadables/perl/Makefile support/Makefile \ lib/intl/Makefile po/Makefile po/Makefile.in +OTHER_DOCS = $(srcdir)/CHANGES $(srcdir)/COMPAT $(srcdir)/NEWS $(srcdir)/POSIX \ + $(srcdir)/RBASH $(srcdir)/README +OTHER_INSTALLED_DOCS = CHANGES COMPAT NEWS POSIX RBASH README + # Keep GNU Make from exporting the entire environment for small machines. .NOEXPORT: @@ -572,30 +585,34 @@ version.h: $(SOURCES) config.h Makefile patchlevel.h && mv newversion.h version.h bashversion$(EXEEXT): patchlevel.h conftypes.h version.h buildversion.o $(SUPPORT_SRC)bashversion.c - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o ${LIBS_FOR_BUILD} + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o ${LIBS_FOR_BUILD} buildversion.o: version.h conftypes.h patchlevel.h $(srcdir)/version.c $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -c -o $@ $(srcdir)/version.c # old rules GRAM_H = parser-built -y.tab.o: y.tab.c ${GRAM_H} command.h ${BASHINCDIR}/stdc.h input.h +y.tab.o: y.tab.h y.tab.c ${GRAM_H} command.h ${BASHINCDIR}/stdc.h input.h ${GRAM_H}: y.tab.h @-if test -f y.tab.h ; then \ cmp -s $@ y.tab.h 2>/dev/null || cp -p y.tab.h $@; \ fi -y.tab.c y.tab.h: parse.y + +y.tab.c: parse.y # -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi $(YACC) -d $(srcdir)/parse.y touch parser-built # -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; else cp -p y.tab.h ${GRAM_H}; fi -# experimental new rules - work with GNU make but not BSD (or OSF) make -#y.tab.o: y.tab.c y.tab.h -#y.tab.c y.tab.h: parse.y command.h ${BASHINCDIR}/stdc.h input.h -# -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi -# $(YACC) -d $(srcdir)/parse.y -# -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; fi +y.tab.h: y.tab.c + @true + + +# Subdirs will often times want version.h, so they'll change back up to +# the top level and try to create it. This causes parallel build issues +# so just force top level sanity before we descend. +$(LIBDEP): .build +#$(LIBDEP): version.h $(READLINE_LIBRARY): config.h $(READLINE_SOURCE) @echo making $@ in ${RL_LIBDIR} @@ -648,11 +665,11 @@ mksignames.o: $(SUPPORT_SRC)mksignames.c mksignames$(EXEEXT): mksignames.o buildsignames.o $(RM) $@ - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ mksignames.o buildsignames.o ${LIBS_FOR_BUILD} + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ mksignames.o buildsignames.o ${LIBS_FOR_BUILD} mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h $(RM) $@ - ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c ${LIBS_FOR_BUILD} + ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} ${LDFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c ${LIBS_FOR_BUILD} # make a list of signals for the local system -- this is done when we're # *not* cross-compiling @@ -668,8 +685,8 @@ syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h $(RM) $@ ./mksyntax$(EXEEXT) -o $@ -$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h version.h - @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libbuiltins.a ) || exit 1 +$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h $(DEFDIR)/builtext.h version.h + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} targets ) || exit 1 # these require special rules to circumvent make builtin rules ${DEFDIR}/common.o: $(BUILTIN_SRCDIR)/common.c @@ -710,7 +727,7 @@ pathnames.h: Makefile $(srcdir)/pathnames.h.in @${RM} pathnames.tmp # comment out for distribution -$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in +$(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/aclocal.m4 $(srcdir)/config.h.in cd $(srcdir) && autoconf # for chet @@ -731,6 +748,7 @@ info dvi ps: force force: +# unused TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) @@ -743,11 +761,13 @@ installdirs: @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(bindir) @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(man1dir) @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(infodir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(docdir) -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) install: .made installdirs $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(DESTDIR)$(bindir)/$(Program) $(INSTALL_SCRIPT) $(INSTALLMODE2) bashbug $(DESTDIR)$(bindir)/bashbug + $(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ @@ -762,6 +782,7 @@ install-strip: uninstall: .made $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug + -( cd $(DESTDIR)$(docdir) && ${RM} ${OTHER_INSTALLED_DOCS} ) -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ man1dir=$(man1dir) man1ext=$(man1ext) \ man3dir=$(man3dir) man3ext=$(man3ext) \ @@ -827,16 +848,16 @@ maybe-clean: fi recho$(EXEEXT): $(SUPPORT_SRC)recho.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)recho.c ${LIBS_FOR_BUILD} + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)recho.c ${LIBS_FOR_BUILD} zecho$(EXEEXT): $(SUPPORT_SRC)zecho.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)zecho.c ${LIBS_FOR_BUILD} + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)zecho.c ${LIBS_FOR_BUILD} printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD} + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD} xcase$(EXEEXT): $(SUPPORT_SRC)xcase.c - @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)xcase.c ${LIBS_FOR_BUILD} + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)xcase.c ${LIBS_FOR_BUILD} test tests check: force $(Program) $(TESTS_SUPPORT) @-test -d tests || mkdir tests @@ -1014,6 +1035,7 @@ sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h +sig.o: ${DEFDIR}/builtext.h siglist.o: config.h bashtypes.h siglist.h trap.h stringlib.o: bashtypes.h ${BASHINCDIR}/chartypes.h stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h @@ -1056,6 +1078,7 @@ variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h variables.o: pcomplete.h ${BASHINCDIR}/chartypes.h variables.o: ${BASHINCDIR}/posixtime.h assoc.h +variables.o: version.h $(DEFDIR)/builtext.h version.o: conftypes.h patchlevel.h version.h xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h @@ -1120,6 +1143,7 @@ pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h +pcomplete.o: ${DEFDIR}/builtext.h # library support files @@ -1139,6 +1163,7 @@ bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h +bashline.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h bracecomp.o: command.h ${BASHINCDIR}/stdc.h error.h @@ -1383,7 +1408,7 @@ builtins/shopt.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h builtins/shopt.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h builtins/shopt.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h unwind_prot.h variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/maxpath.h builtins/shopt.o: $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h pathnames.h -builtins/shopt.o: bashhist.h +builtins/shopt.o: bashhist.h bashline.h builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h diff --git a/NEWS b/NEWS index 028ba42..0cc3c45 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,187 @@ +This is a terse description of the new features added to bash-4.3 since +the release of bash-4.2. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +b. The `help' builtin no longer does prefix substring matching first, so + `help read' does not match `readonly', but will do it if exact string + matching fails. + +c. The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +d. Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +e. There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +f. There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +g. In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +h. The `return' and `exit' builtins accept negative exit status arguments. + +i. The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +j. In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +k. When compiled for strict Posix conformance, history expansion is disabled + by default. + +l. The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +n. Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o. Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +p. The `read' builtin now skips NUL bytes in the input. + +q. There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +r. When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +s. The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +t. The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +u. The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +v. The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +w. The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +x. The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +y. The {x} +#include +#include + +#include +#include + +main(c, v) +int c; +char **v; +{ + int w; + + setlocale(LC_ALL, "en_US.UTF-8"); + w = wcwidth (0x0301); + exit (w == 0); /* exit 0 if wcwidth broken */ +} +], +bash_cv_wcwidth_broken=yes, bash_cv_wcwdith_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 + if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" LIBS="$LIBS $LIBICONV" @@ -3098,7 +3124,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY], found_so= found_a= if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then @@ -3120,7 +3146,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY], case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then @@ -4123,7 +4149,7 @@ main() AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET, [AC_MSG_CHECKING(for offset of exit status in return status from wait) AC_CACHE_VAL(bash_cv_wexitstatus_offset, -[AC_RUN_IFELSE([ +[AC_TRY_RUN([ #include #include diff --git a/alias.c b/alias.c index 6c95376..7839229 100644 --- a/alias.c +++ b/alias.c @@ -110,7 +110,7 @@ add_alias (name, value) alias_t *temp; int n; - if (!aliases) + if (aliases == 0) { initialize_aliases (); temp = (alias_t *)NULL; diff --git a/array.c b/array.c index 27fe170..4359a52 100644 --- a/array.c +++ b/array.c @@ -58,7 +58,11 @@ static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, cha static ARRAY *lastarray = 0; static ARRAY_ELEMENT *lastref = 0; -#define IS_LASTREF(a) ((a) == lastarray) +#define IS_LASTREF(a) (lastarray && (a) == lastarray) + +#define LASTREF_START(a, i) \ + (IS_LASTREF(a) && i >= element_index(lastref)) ? lastref \ + : element_forw(a->head) #define INVALIDATE_LASTREF(a) \ do { \ @@ -610,7 +614,7 @@ ARRAY *a; arrayind_t i; char *v; { - register ARRAY_ELEMENT *new, *ae; + register ARRAY_ELEMENT *new, *ae, *start; if (a == 0) return(-1); @@ -627,10 +631,17 @@ char *v; SET_LASTREF(a, new); return(0); } +#if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT /* - * Otherwise we search for the spot to insert it. + * Otherwise we search for the spot to insert it. The lastref + * handle optimizes the case of sequential or almost-sequential + * assignments that are not at the end of the array. */ - for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + start = LASTREF_START(a, i); +#else + start = element_forw(ae->head); +#endif + for (ae = start; ae != a->head; ae = element_forw(ae)) { if (element_index(ae) == i) { /* * Replacing an existing element. @@ -647,6 +658,7 @@ char *v; return(0); } } + array_dispose_element(new); INVALIDATE_LASTREF(a); return (-1); /* problem */ } @@ -660,18 +672,28 @@ array_remove(a, i) ARRAY *a; arrayind_t i; { - register ARRAY_ELEMENT *ae; + register ARRAY_ELEMENT *ae, *start; if (a == 0 || array_empty(a)) return((ARRAY_ELEMENT *) NULL); - for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) + start = LASTREF_START(a, i); + for (ae = start; ae != a->head; ae = element_forw(ae)) if (element_index(ae) == i) { ae->next->prev = ae->prev; ae->prev->next = ae->next; a->num_elements--; if (i == array_max_index(a)) a->max_index = element_index(ae->prev); +#if 0 INVALIDATE_LASTREF(a); +#else + if (ae->next != a->head) + SET_LASTREF(a, ae->next); + else if (ae->prev != a->head) + SET_LASTREF(a, ae->prev); + else + INVALIDATE_LASTREF(a); +#endif return(ae); } return((ARRAY_ELEMENT *) NULL); @@ -685,18 +707,14 @@ array_reference(a, i) ARRAY *a; arrayind_t i; { - register ARRAY_ELEMENT *ae; + register ARRAY_ELEMENT *ae, *start; if (a == 0 || array_empty(a)) return((char *) NULL); if (i > array_max_index(a)) - return((char *)NULL); - /* Keep roving pointer into array to optimize sequential access */ - if (lastref && IS_LASTREF(a)) - ae = (i >= element_index(lastref)) ? lastref : element_forw(a->head); - else - ae = element_forw(a->head); - for ( ; ae != a->head; ae = element_forw(ae)) + return((char *)NULL); /* Keep roving pointer into array to optimize sequential access */ + start = LASTREF_START(a, i); + for (ae = start; ae != a->head; ae = element_forw(ae)) if (element_index(ae) == i) { SET_LASTREF(a, ae); return(element_value(ae)); diff --git a/arrayfunc.c b/arrayfunc.c index 21eb4cd..b82767e 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -1,6 +1,6 @@ /* arrayfunc.c -- High-level array functions used by other parts of the shell. */ -/* Copyright (C) 2001-2010 Free Software Foundation, Inc. +/* Copyright (C) 2001-2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -41,6 +41,7 @@ extern int last_command_exit_value; extern int array_needs_making; static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int)); +static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char *, char *, int, char *, int)); static char *quote_assign __P((const char *)); static void quote_array_assignment_chars __P((WORD_LIST *)); @@ -117,8 +118,8 @@ convert_var_to_assoc (var) return var; } -static SHELL_VAR * -bind_array_var_internal (entry, ind, key, value, flags) +char * +make_array_variable_value (entry, ind, key, value, flags) SHELL_VAR *entry; arrayind_t ind; char *key; @@ -155,6 +156,21 @@ bind_array_var_internal (entry, ind, key, value, flags) else newval = make_variable_value (entry, value, flags); + return newval; +} + +static SHELL_VAR * +bind_array_var_internal (entry, ind, key, value, flags) + SHELL_VAR *entry; + arrayind_t ind; + char *key; + char *value; + int flags; +{ + char *newval; + + newval = make_array_variable_value (entry, ind, key, value, flags); + if (entry->assign_func) (*entry->assign_func) (entry, newval, ind, key); else if (assoc_p (entry)) @@ -182,7 +198,7 @@ bind_array_variable (name, ind, value, flags) { SHELL_VAR *entry; - entry = var_lookup (name, shell_variables); + entry = find_shell_variable (name); if (entry == (SHELL_VAR *) 0) entry = make_new_array_variable (name); @@ -237,8 +253,7 @@ assign_array_element (name, value, flags) char *name, *value; int flags; { - char *sub, *vname, *akey; - arrayind_t ind; + char *sub, *vname; int sublen; SHELL_VAR *entry; @@ -255,6 +270,24 @@ assign_array_element (name, value, flags) } entry = find_variable (vname); + entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags); + + free (vname); + return entry; +} + +static SHELL_VAR * +assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) + SHELL_VAR *entry; + char *name; /* only used for error messages */ + char *vname; + char *sub; + int sublen; + char *value; + int flags; +{ + char *akey; + arrayind_t ind; if (entry && assoc_p (entry)) { @@ -263,25 +296,26 @@ assign_array_element (name, value, flags) sub[sublen-1] = ']'; if (akey == 0 || *akey == 0) { - free (vname); err_badarraysub (name); + FREE (akey); return ((SHELL_VAR *)NULL); } entry = bind_assoc_variable (entry, vname, akey, value, flags); } else { - ind = array_expand_index (sub, sublen); + ind = array_expand_index (entry, sub, sublen); + /* negative subscripts to indexed arrays count back from end */ + if (entry && ind < 0) + ind = (array_p (entry) ? array_max_index (array_cell (entry)) : 0) + 1 + ind; if (ind < 0) { - free (vname); err_badarraysub (name); return ((SHELL_VAR *)NULL); } entry = bind_array_variable (vname, ind, value, flags); } - free (vname); return (entry); } @@ -299,6 +333,14 @@ find_or_make_array_variable (name, flags) SHELL_VAR *var; var = find_variable (name); + if (var == 0) + { + /* See if we have a nameref pointing to a variable that hasn't been + created yet. */ + var = find_variable_last_nameref (name); + if (var && nameref_p (var)) + var = (flags & 2) ? make_new_assoc_variable (nameref_cell (var)) : make_new_array_variable (nameref_cell (var)); + } if (var == 0) var = (flags & 2) ? make_new_assoc_variable (name) : make_new_array_variable (name); @@ -310,6 +352,7 @@ find_or_make_array_variable (name, flags) } else if ((flags & 2) && array_p (var)) { + last_command_exit_value = 1; report_error (_("%s: cannot convert indexed to associative array"), name); return ((SHELL_VAR *)NULL); } @@ -370,10 +413,13 @@ expand_compound_array_assignment (var, value, flags) int flags; { WORD_LIST *list, *nlist; + WORD_LIST *hd, *tl, *t, *n; char *val; int ni; - /* I don't believe this condition is ever true any more. */ + /* This condition is true when invoked from the declare builtin with a + command like + declare -a d='([1]="" [2]="bdef" [5]="hello world" "test")' */ if (*value == '(') /*)*/ { ni = 1; @@ -390,8 +436,17 @@ expand_compound_array_assignment (var, value, flags) (ksh93 seems to do this). */ list = parse_string_to_word_list (val, 1, "array assign"); + if (var && assoc_p (var)) + { + if (val != value) + free (val); + return list; + } + /* If we're using [subscript]=value, we need to quote each [ and ] to - prevent unwanted filename expansion. */ + prevent unwanted filename expansion. This doesn't need to be done + for associative array expansion, since that uses a different expansion + function (see assign_compound_array_list below). */ if (list) quote_array_assignment_chars (list); @@ -418,7 +473,7 @@ assign_compound_array_list (var, nlist, flags) HASH_TABLE *h; WORD_LIST *list; char *w, *val, *nval; - int len, iflags; + int len, iflags, free_val; arrayind_t ind, last_ind; char *akey; @@ -448,7 +503,10 @@ assign_compound_array_list (var, nlist, flags) /* We have a word of the form [ind]=value */ if ((list->word->flags & W_ASSIGNMENT) && w[0] == '[') { - len = skipsubscript (w, 0, (var && assoc_p (var) != 0)); + /* Don't have to handle embedded quotes specially any more, since + associative array subscripts have not been expanded yet (see + above). */ + len = skipsubscript (w, 0, 0); /* XXX - changes for `+=' */ if (w[len] != ']' || (w[len+1] != '=' && (w[len+1] != '+' || w[len+2] != '='))) @@ -476,6 +534,7 @@ assign_compound_array_list (var, nlist, flags) if (ALL_ELEMENT_SUB (w[1]) && len == 2) { + last_command_exit_value = 1; if (assoc_p (var)) report_error (_("%s: invalid associative array key"), w); else @@ -485,7 +544,10 @@ assign_compound_array_list (var, nlist, flags) if (array_p (var)) { - ind = array_expand_index (w + 1, len); + ind = array_expand_index (var, w + 1, len); + /* negative subscripts to indexed arrays count back from end */ + if (ind < 0) + ind = array_max_index (array_cell (var)) + 1 + ind; if (ind < 0) { err_badarraysub (w); @@ -496,10 +558,15 @@ assign_compound_array_list (var, nlist, flags) } else if (assoc_p (var)) { - akey = substring (w, 1, len); + /* This is not performed above, see expand_compound_array_assignment */ + w[len] = '\0'; /*[*/ + akey = expand_assignment_string_to_string (w+1, 0); + w[len] = ']'; + /* And we need to expand the value also, see below */ if (akey == 0 || *akey == 0) { err_badarraysub (w); + FREE (akey); continue; } } @@ -511,10 +578,11 @@ assign_compound_array_list (var, nlist, flags) val = w + len + 3; } else - val = w + len + 2; + val = w + len + 2; } else if (assoc_p (var)) { + last_command_exit_value = 1; report_error (_("%s: %s: must use subscript when assigning associative array"), var->name, w); continue; } @@ -524,10 +592,21 @@ assign_compound_array_list (var, nlist, flags) val = w; } + free_val = 0; + /* See above; we need to expand the value here */ + if (assoc_p (var)) + { + val = expand_assignment_string_to_string (val, 0); + free_val = 1; + } + if (integer_p (var)) this_command_name = (char *)NULL; /* no command name for errors */ bind_array_var_internal (var, ind, akey, val, iflags); last_ind++; + + if (free_val) + free (val); } } @@ -611,12 +690,17 @@ quote_array_assignment_chars (list) { if (l->word == 0 || l->word->word == 0 || l->word->word[0] == '\0') continue; /* should not happen, but just in case... */ - /* Don't bother if it doesn't look like [ind]=value */ + /* Don't bother if it hasn't been recognized as an assignment or + doesn't look like [ind]=value */ + if ((l->word->flags & W_ASSIGNMENT) == 0) + continue; if (l->word->word[0] != '[' || mbschr (l->word->word, '=') == 0) /* ] */ continue; + nword = quote_assign (l->word->word); free (l->word->word); l->word->word = nword; + l->word->flags |= W_NOGLOB; /* XXX - W_NOSPLIT also? */ } } @@ -655,6 +739,7 @@ unbind_array_element (var, sub) if (akey == 0 || *akey == 0) { builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); + FREE (akey); return -1; } assoc_remove (assoc_cell (var), akey); @@ -662,7 +747,10 @@ unbind_array_element (var, sub) } else { - ind = array_expand_index (sub, len+1); + ind = array_expand_index (var, sub, len+1); + /* negative subscripts to indexed arrays count back from end */ + if (ind < 0) + ind = array_max_index (array_cell (var)) + 1 + ind; if (ind < 0) { builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); @@ -752,7 +840,8 @@ valid_array_reference (name) /* Expand the array index beginning at S and extending LEN characters. */ arrayind_t -array_expand_index (s, len) +array_expand_index (var, s, len) + SHELL_VAR *var; char *s; int len; { @@ -840,7 +929,11 @@ array_variable_part (s, subp, lenp) var = find_variable (t); free (t); +#if 0 return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; +#else + return var; /* now return invisible variables; caller must handle */ +#endif } #define INDEX_ERROR() \ @@ -889,6 +982,7 @@ array_value_internal (s, quoted, flags, rtype, indp) return ((char *)NULL); /* error message already printed */ /* [ */ + akey = 0; if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') { if (rtype) @@ -918,11 +1012,11 @@ array_value_internal (s, quoted, flags, rtype, indp) if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) { temp = string_list_dollar_star (l); - retval = quote_string (temp); + retval = quote_string (temp); /* XXX - leak here */ free (temp); } else /* ${name[@]} or unquoted ${name[*]} */ - retval = string_list_dollar_at (l, quoted); + retval = string_list_dollar_at (l, quoted); /* XXX - leak here */ dispose_words (l); } @@ -934,7 +1028,7 @@ array_value_internal (s, quoted, flags, rtype, indp) { if ((flags & AV_USEIND) == 0 || indp == 0) { - ind = array_expand_index (t, len); + ind = array_expand_index (var, t, len); if (ind < 0) { /* negative subscripts to indexed arrays count back from end */ @@ -955,11 +1049,17 @@ array_value_internal (s, quoted, flags, rtype, indp) akey = expand_assignment_string_to_string (t, 0); /* [ */ t[len - 1] = ']'; if (akey == 0 || *akey == 0) - INDEX_ERROR(); + { + FREE (akey); + INDEX_ERROR(); + } } if (var == 0 || value_cell (var) == 0) /* XXX - check invisible_p(var) ? */ - return ((char *)NULL); + { + FREE (akey); + return ((char *)NULL); + } if (array_p (var) == 0 && assoc_p (var) == 0) return (ind == 0 ? value_cell (var) : (char *)NULL); else if (assoc_p (var)) diff --git a/arrayfunc.h b/arrayfunc.h index 8363d16..26f4879 100644 --- a/arrayfunc.h +++ b/arrayfunc.h @@ -33,6 +33,8 @@ extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *)); +extern char *make_array_variable_value __P((SHELL_VAR *, arrayind_t, char *, char *, int)); + extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *, int)); extern SHELL_VAR *bind_array_element __P((SHELL_VAR *, arrayind_t, char *, int)); extern SHELL_VAR *assign_array_element __P((char *, char *, int)); @@ -54,7 +56,7 @@ extern int skipsubscript __P((const char *, int, int)); extern void print_array_assignment __P((SHELL_VAR *, int)); extern void print_assoc_assignment __P((SHELL_VAR *, int)); -extern arrayind_t array_expand_index __P((char *, int)); +extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int)); extern int valid_array_reference __P((char *)); extern char *array_value __P((char *, int, int, int *, arrayind_t *)); extern char *get_array_value __P((char *, int, int *, arrayind_t *)); @@ -64,6 +66,12 @@ extern char *array_keys __P((char *, int)); extern char *array_variable_name __P((char *, char **, int *)); extern SHELL_VAR *array_variable_part __P((char *, char **, int *)); +#else + +#define AV_ALLOWALL 0 +#define AV_QUOTED 0 +#define AV_USEIND 0 + #endif #endif /* !_ARRAYFUNC_H_ */ diff --git a/assoc.c b/assoc.c index 4561de4..f9ed881 100644 --- a/assoc.c +++ b/assoc.c @@ -7,7 +7,7 @@ * chet@ins.cwru.edu */ -/* Copyright (C) 2008,2009 Free Software Foundation, Inc. +/* Copyright (C) 2008,2009,2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -65,7 +65,7 @@ assoc_flush (hash) { hash_flush (hash, 0); } - + int assoc_insert (hash, key, value) HASH_TABLE *hash; @@ -87,6 +87,29 @@ assoc_insert (hash, key, value) return (0); } +/* Like assoc_insert, but returns b->data instead of freeing it */ +PTR_T +assoc_replace (hash, key, value) + HASH_TABLE *hash; + char *key; + char *value; +{ + BUCKET_CONTENTS *b; + PTR_T t; + + b = hash_search (key, hash, HASH_CREATE); + if (b == 0) + return (PTR_T)0; + /* If we are overwriting an existing element's value, we're not going to + use the key. Nothing in the array assignment code path frees the key + string, so we can free it here to avoid a memory leak. */ + if (b->key != key) + free (key); + t = b->data; + b->data = value ? savestring (value) : (char *)0; + return t; +} + void assoc_remove (hash, string) HASH_TABLE *hash; @@ -510,7 +533,7 @@ assoc_to_string (h, sep, quoted) return (savestring ("")); result = NULL; - list = NULL; + l = list = NULL; /* This might be better implemented directly, but it's simple to implement by converting to a word list first, possibly quoting the data, then using list_string */ @@ -528,6 +551,8 @@ assoc_to_string (h, sep, quoted) l = REVERSE_LIST(list, WORD_LIST *); result = l ? string_list_internal (l, sep) : savestring (""); + dispose_words (l); + return result; } diff --git a/assoc.h b/assoc.h index 1ec1f6b..db8383b 100644 --- a/assoc.h +++ b/assoc.h @@ -38,6 +38,7 @@ extern void assoc_dispose __P((HASH_TABLE *)); extern void assoc_flush __P((HASH_TABLE *)); extern int assoc_insert __P((HASH_TABLE *, char *, char *)); +extern PTR_T assoc_replace __P((HASH_TABLE *, char *, char *)); extern void assoc_remove __P((HASH_TABLE *, char *)); extern char *assoc_reference __P((HASH_TABLE *, char *)); diff --git a/bashhist.c b/bashhist.c index 7240a5b..d4c62e7 100644 --- a/bashhist.c +++ b/bashhist.c @@ -1,6 +1,6 @@ /* bashhist.c -- bash interface to the GNU history library. */ -/* Copyright (C) 1993-2010 Free Software Foundation, Inc. +/* Copyright (C) 1993-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,7 +24,7 @@ #if defined (HAVE_UNISTD_H) # ifdef _MINIX -# include + # include # endif # include #endif @@ -351,6 +351,7 @@ void save_history () { char *hf; + int r; hf = get_string_value ("HISTFILE"); if (hf && *hf && file_exists (hf)) @@ -360,9 +361,9 @@ save_history () using_history (); if (history_lines_this_session <= where_history () || force_append_history) - append_history (history_lines_this_session, hf); + r = append_history (history_lines_this_session, hf); else - write_history (hf); + r = write_history (hf); sv_histsize ("HISTFILESIZE"); } } @@ -648,8 +649,11 @@ hc_erasedups (line) commenting out the rest of the command when the entire command is saved as a single history entry (when COMMAND_ORIENTED_HISTORY is enabled). If LITERAL_HISTORY is set, we're saving lines in the history with embedded - newlines, so it's OK to save comment lines. We also make sure to save - multiple-line quoted strings or other constructs. */ + newlines, so it's OK to save comment lines. If we're collecting the body + of a here-document, we should act as if literal_history is enabled, because + we want to save the entire contents of the here-document as it was + entered. We also make sure to save multiple-line quoted strings or other + constructs. */ void maybe_add_history (line) char *line; @@ -662,7 +666,7 @@ maybe_add_history (line) if (current_command_line_count > 1) { if (current_command_first_line_saved && - (literal_history || dstack.delimiter_depth != 0 || shell_comment (line) == 0)) + ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || shell_comment (line) == 0)) bash_add_history (line); return; } @@ -735,7 +739,17 @@ bash_add_history (line) add_it = 1; if (command_oriented_history && current_command_line_count > 1) { - chars_to_add = literal_history ? "\n" : history_delimiting_chars (line); + /* The second and subsequent lines of a here document have the trailing + newline preserved. We don't want to add extra newlines here, but we + do want to add one after the first line (which is the command that + contains the here-doc specifier). parse.y:history_delimiting_chars() + does the right thing to take care of this for us. We don't want to + add extra newlines if the user chooses to enable literal_history, + so we have to duplicate some of what that function does here. */ + if ((parser_state & PST_HEREDOC) && literal_history && current_command_line_count > 2 && line[strlen (line) - 1] == '\n') + chars_to_add = ""; + else + chars_to_add = literal_history ? "\n" : history_delimiting_chars (line); using_history (); current = previous_history (); diff --git a/bashline.c b/bashline.c index 3cbb18f..1f12764 100644 --- a/bashline.c +++ b/bashline.c @@ -1,6 +1,6 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2011 Free Software Foundation, Inc. +/* Copyright (C) 1987-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -37,6 +37,8 @@ # include #endif +#include + #include #include "chartypes.h" #include "bashansi.h" @@ -51,6 +53,7 @@ #include "findcmd.h" #include "pathexp.h" #include "shmbutil.h" +#include "trap.h" #include "builtins/common.h" @@ -83,7 +86,11 @@ extern int bash_brace_completion __P((int, int)); #endif /* BRACE_COMPLETION */ /* To avoid including curses.h/term.h/termcap.h and that whole mess. */ +#ifdef _MINIX +extern int tputs __P((const char *string, int nlines, void (*outx)(int))); +#else extern int tputs __P((const char *string, int nlines, int (*outx)(int))); +#endif /* Forward declarations */ @@ -114,15 +121,21 @@ static int bash_backward_kill_shellword __P((int, int)); /* Helper functions for Readline. */ static char *restore_tilde __P((char *, char *)); +static char *maybe_restore_tilde __P((char *, char *)); static char *bash_filename_rewrite_hook __P((char *, int)); + static void bash_directory_expansion __P((char **)); +static int bash_filename_stat_hook __P((char **)); +static int bash_command_name_stat_hook __P((char **)); static int bash_directory_completion_hook __P((char **)); static int filename_completion_ignore __P((char **)); static int bash_push_line __P((void)); +static int executable_completion __P((const char *, int)); + static rl_icppfunc_t *save_directory_hook __P((void)); -static void reset_directory_hook __P((rl_icppfunc_t *)); +static void restore_directory_hook __P((rl_icppfunc_t)); static void cleanup_expansion_error __P((void)); static void maybe_make_readline_line __P((char *)); @@ -151,9 +164,14 @@ static int return_zero __P((const char *)); static char *bash_dequote_filename __P((char *, int)); static char *quote_word_break_chars __P((char *)); +static void set_filename_bstab __P((const char *)); static char *bash_quote_filename __P((char *, int, char *)); +#ifdef _MINIX +static void putx __P((int)); +#else static int putx __P((int)); +#endif static int bash_execute_unix_command __P((int, int)); static void init_unix_command_map __P((void)); static int isolate_sequence __P((char *, int, int, int *)); @@ -164,10 +182,12 @@ static int set_saved_history __P((void)); static int posix_edit_macros __P((int, int)); #endif +static int bash_event_hook __P((void)); + #if defined (PROGRAMMABLE_COMPLETION) static int find_cmd_start __P((int)); static int find_cmd_end __P((int)); -static char *find_cmd_name __P((int)); +static char *find_cmd_name __P((int, int *, int *)); static char *prog_complete_return __P((const char *, int)); static char **prog_complete_matches; @@ -247,8 +267,20 @@ int force_fignore = 1; int dircomplete_spelling = 0; /* Expand directory names during word/filename completion. */ +#if DIRCOMPLETE_EXPAND_DEFAULT +int dircomplete_expand = 1; +int dircomplete_expand_relpath = 1; +#else int dircomplete_expand = 0; int dircomplete_expand_relpath = 0; +#endif + +/* When non-zero, perform `normal' shell quoting on completed filenames + even when the completed name contains a directory name with a shell + variable referene, so dollar signs in a filename get quoted appropriately. + Set to zero to remove dollar sign (and braces or parens as needed) from + the set of characters that will be quoted. */ +int complete_fullquote = 1; static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:"; static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:"; @@ -256,6 +288,7 @@ static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:"; static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/ static char *custom_filename_quote_characters = 0; +static char filename_bstab[256]; static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL; @@ -515,6 +548,8 @@ initialize_readline () rl_filename_rewrite_hook = bash_filename_rewrite_hook; + rl_filename_stat_hook = bash_filename_stat_hook; + /* Tell the filename completer we want a chance to ignore some names. */ rl_ignore_some_completions_function = filename_completion_ignore; @@ -540,6 +575,7 @@ initialize_readline () /* characters that need to be quoted when appearing in filenames. */ rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); rl_filename_quoting_function = bash_quote_filename; rl_filename_dequoting_function = bash_dequote_filename; @@ -563,6 +599,18 @@ bashline_reinitialize () bash_readline_initialized = 0; } +void +bashline_set_event_hook () +{ + rl_signal_event_hook = bash_event_hook; +} + +void +bashline_reset_event_hook () +{ + rl_signal_event_hook = 0; +} + /* On Sun systems at least, rl_attempted_completion_function can end up getting set to NULL, and rl_completion_entry_function set to do command word completion if Bash is interrupted while trying to complete a command @@ -576,8 +624,12 @@ bashline_reset () rl_completion_entry_function = NULL; rl_ignore_some_completions_function = filename_completion_ignore; rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); set_directory_hook (); + rl_filename_stat_hook = bash_filename_stat_hook; + + bashline_reset_event_hook (); } /* Contains the line to push into readline. */ @@ -772,7 +824,7 @@ clear_hostname_list () } /* Return a NULL terminated list of hostnames which begin with TEXT. - Initialize the hostname list the first time if neccessary. + Initialize the hostname list the first time if necessary. The array is malloc ()'ed, but not the individual strings. */ static char ** hostnames_matching (text) @@ -823,12 +875,25 @@ hostnames_matching (text) /* The equivalent of the Korn shell C-o operate-and-get-next-history-line editing command. */ static int saved_history_line_to_use = -1; +static int last_saved_history_line = -1; + +#define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries) static int set_saved_history () { + /* XXX - compensate for assumption that history was `shuffled' if it was + actually not. */ + if (HISTORY_FULL () && + hist_last_line_added == 0 && + saved_history_line_to_use < history_length - 1) + saved_history_line_to_use++; + if (saved_history_line_to_use >= 0) - rl_get_previous_history (history_length - saved_history_line_to_use, 0); + { + rl_get_previous_history (history_length - saved_history_line_to_use, 0); + last_saved_history_line = saved_history_line_to_use; + } saved_history_line_to_use = -1; rl_startup_hook = old_rl_startup_hook; return (0); @@ -846,8 +911,7 @@ operate_and_get_next (count, c) /* Find the current line, and find the next line to use. */ where = where_history (); - if ((history_is_stifled () && (history_length >= history_max_entries)) || - (where >= history_length - 1)) + if (HISTORY_FULL () || (where >= history_length - 1)) saved_history_line_to_use = where; else saved_history_line_to_use = where + 1; @@ -895,7 +959,9 @@ edit_and_execute_command (count, c, editing_mode, edit_command) /* This breaks down when using command-oriented history and are not finished with the command, so we should not ignore the last command */ using_history (); + current_command_line_count++; /* for rl_newline above */ bash_add_history (rl_line_buffer); + current_command_line_count = 0; /* for dummy history entry */ bash_add_history (""); history_lines_this_session++; using_history (); @@ -1192,7 +1258,11 @@ bash_backward_kill_shellword (count, key) #define COMMAND_SEPARATORS ";|&{(`" /* )} */ +#define COMMAND_SEPARATORS_PLUS_WS ";|&{(` \t" +/* )} */ +/* check for redirections and other character combinations that are not + command separators */ static int check_redir (ti) int ti; @@ -1207,8 +1277,19 @@ check_redir (ti) if ((this_char == '&' && (prev_char == '<' || prev_char == '>')) || (this_char == '|' && prev_char == '>')) return (1); - else if ((this_char == '{' && prev_char == '$') || /* } */ - (char_is_quoted (rl_line_buffer, ti))) + else if (this_char == '{' && prev_char == '$') /*}*/ + return (1); +#if 0 /* Not yet */ + else if (this_char == '(' && prev_char == '$') /*)*/ + return (1); + else if (this_char == '(' && prev_char == '<') /*)*/ + return (1); +#if defined (EXTENDED_GLOB) + else if (extended_glob && this_char == '(' && prev_char == '!') /*)*/ + return (1); +#endif +#endif + else if (char_is_quoted (rl_line_buffer, ti)) return (1); return (0); } @@ -1226,7 +1307,10 @@ find_cmd_start (start) register int s, os; os = 0; - while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP|SD_NOSKIPCMD)) <= start) && + /* Flags == SD_NOJMP only because we want to skip over command substitutions + in assignment statements. Have to test whether this affects `standalone' + command substitutions as individual words. */ + while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP/*|SD_NOSKIPCMD*/)) <= start) && rl_line_buffer[s]) os = s+1; return os; @@ -1243,8 +1327,9 @@ find_cmd_end (end) } static char * -find_cmd_name (start) +find_cmd_name (start, sp, ep) int start; + int *sp, *ep; { char *name; register int s, e; @@ -1257,6 +1342,11 @@ find_cmd_name (start) name = substring (rl_line_buffer, s, e); + if (sp) + *sp = s; + if (ep) + *ep = e; + return (name); } @@ -1286,13 +1376,18 @@ attempt_shell_completion (text, start, end) { int in_command_position, ti, saveti, qc, dflags; char **matches, *command_separator_chars; +#if defined (PROGRAMMABLE_COMPLETION) + int have_progcomps, was_assignment; +#endif command_separator_chars = COMMAND_SEPARATORS; matches = (char **)NULL; rl_ignore_some_completions_function = filename_completion_ignore; rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); set_directory_hook (); + rl_filename_stat_hook = bash_filename_stat_hook; /* Determine if this could be a command word. It is if it appears at the start of the line (ignoring preceding whitespace), or if it @@ -1323,6 +1418,8 @@ attempt_shell_completion (text, start, end) are prompting at the top level. */ if (current_prompt_string == ps1_prompt) in_command_position++; + else if (parser_in_command_position ()) + in_command_position++; } else if (member (rl_line_buffer[ti], command_separator_chars)) { @@ -1356,11 +1453,11 @@ attempt_shell_completion (text, start, end) #if defined (PROGRAMMABLE_COMPLETION) /* Attempt programmable completion. */ + have_progcomps = prog_completion_enabled && (progcomp_size () > 0); if (matches == 0 && (in_command_position == 0 || text[0] == '\0') && - prog_completion_enabled && (progcomp_size () > 0) && current_prompt_string == ps1_prompt) { - int s, e, foundcs; + int s, e, s1, e1, os, foundcs; char *n; /* XXX - don't free the members */ @@ -1368,13 +1465,62 @@ attempt_shell_completion (text, start, end) free (prog_complete_matches); prog_complete_matches = (char **)NULL; - s = find_cmd_start (start); + os = start; + n = 0; + s = find_cmd_start (os); e = find_cmd_end (end); - n = find_cmd_name (s); - if (e == 0 && e == s && text[0] == '\0') + do + { + /* Skip over assignment statements preceding a command name. If we + don't find a command name at all, we can perform command name + completion. If we find a partial command name, we should perform + command name completion on it. */ + FREE (n); + n = find_cmd_name (s, &s1, &e1); + s = e1 + 1; + } + while (was_assignment = assignment (n, 0)); + s = s1; /* reset to index where name begins */ + + /* s == index of where command name begins (reset above) + e == end of current command, may be end of line + s1 = index of where command name begins + e1 == index of where command name ends + start == index of where word to be completed begins + end == index of where word to be completed ends + if (s == start) we are doing command word completion for sure + if (e1 == end) we are at the end of the command name and completing it */ + if (start == 0 && end == 0 && e != 0 && text[0] == '\0') /* beginning of non-empty line */ + foundcs = 0; + else if (start == end && start == s1 && e != 0 && e1 > end) /* beginning of command name, leading whitespace */ + foundcs = 0; + else if (e == 0 && e == s && text[0] == '\0' && have_progcomps) /* beginning of empty line */ prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs); - else if (e > s && assignment (n, 0) == 0) - prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); + else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start])) + foundcs = 0; /* whitespace before command name */ + else if (e > s && was_assignment == 0 && e1 == end && rl_line_buffer[e] == 0 && whitespace (rl_line_buffer[e-1]) == 0) + { + /* not assignment statement, but still want to perform command + completion if we are composing command word. */ + foundcs = 0; + in_command_position = s == start && STREQ (n, text); /* XXX */ + } + else if (e > s && was_assignment == 0 && have_progcomps) + { + prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); + /* command completion if programmable completion fails */ + in_command_position = s == start && STREQ (n, text); /* XXX */ + } + else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0) + { + foundcs = 0; /* empty command name following assignments */ + in_command_position = was_assignment; + } + else if (s == start && e == end && STREQ (n, text) && start > 0) + { + foundcs = 0; /* partial command name following assignments */ + in_command_position = 1; + } else foundcs = 0; FREE (n); @@ -1414,7 +1560,7 @@ bash_default_completion (text, start, end, qc, compflags) const char *text; int start, end, qc, compflags; { - char **matches; + char **matches, *t; matches = (char **)NULL; @@ -1424,7 +1570,19 @@ bash_default_completion (text, start, end, qc, compflags) if (qc != '\'' && text[1] == '(') /* ) */ matches = rl_completion_matches (text, command_subst_completion_function); else - matches = rl_completion_matches (text, variable_completion_function); + { + matches = rl_completion_matches (text, variable_completion_function); + if (matches && matches[0] && matches[1] == 0) + { + t = savestring (matches[0]); + bash_filename_stat_hook (&t); + /* doesn't use test_for_directory because that performs tilde + expansion */ + if (file_isdir (t)) + rl_completion_append_character = '/'; + free (t); + } + } } /* If the word starts in `~', and there is no slash in the word, then @@ -1500,11 +1658,55 @@ bash_default_completion (text, start, end, qc, compflags) strvec_dispose (matches); matches = (char **)0; } + else if (matches && matches[1] && rl_completion_type == '!') + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } } return (matches); } +static int +bash_command_name_stat_hook (name) + char **name; +{ + char *cname, *result; + + /* If it's not something we're going to look up in $PATH, just call the + normal filename stat hook. */ + if (absolute_program (*name)) + return (bash_filename_stat_hook (name)); + + cname = *name; + /* XXX - we could do something here with converting aliases, builtins, + and functions into something that came out as executable, but we don't. */ + result = search_for_command (cname, 0); + if (result) + { + *name = result; + return 1; + } + return 0; +} + +static int +executable_completion (filename, searching_path) + const char *filename; + int searching_path; +{ + char *f; + int r; + + f = savestring (filename); + bash_directory_completion_hook (&f); + + r = searching_path ? executable_file (f) : executable_or_directory (f); + free (f); + return r; +} + /* This is the function to call when the word to complete is in a position where a command word can be found. It grovels $PATH, looking for commands that match. It also scans aliases, function names, and the shell_builtin @@ -1518,6 +1720,7 @@ command_word_completion_function (hint_text, state) static char *path = (char *)NULL; static char *val = (char *)NULL; static char *filename_hint = (char *)NULL; + static char *fnhint = (char *)NULL; static char *dequoted_hint = (char *)NULL; static char *directory_part = (char *)NULL; static char **glob_matches = (char **)NULL; @@ -1528,12 +1731,14 @@ command_word_completion_function (hint_text, state) #if defined (ALIAS) static alias_t **alias_list = (alias_t **)NULL; #endif /* ALIAS */ - char *temp; + char *temp, *cval; /* We have to map over the possibilities for command words. If we have no state, then make one just for that purpose. */ if (state == 0) { + rl_filename_stat_hook = bash_command_name_stat_hook; + if (dequoted_hint && dequoted_hint != hint) free (dequoted_hint); if (hint) @@ -1595,7 +1800,7 @@ command_word_completion_function (hint_text, state) if (filename_hint) free (filename_hint); - filename_hint = savestring (hint); + fnhint = filename_hint = savestring (hint); istate = 0; @@ -1606,7 +1811,7 @@ command_word_completion_function (hint_text, state) } else { - if (dircomplete_expand && dot_or_dotdot (filename_hint)) + if (dircomplete_expand && path_dot_or_dotdot (filename_hint)) { dircomplete_expand = 0; set_directory_hook (); @@ -1742,9 +1947,9 @@ globword: { if (executable_or_directory (val)) { - if (*hint_text == '~') + if (*hint_text == '~' && directory_part) { - temp = restore_tilde (val, directory_part); + temp = maybe_restore_tilde (val, directory_part); free (val); val = temp; } @@ -1803,15 +2008,25 @@ globword: if (current_path[0] == '.' && current_path[1] == '\0') dot_in_path = 1; + if (fnhint && fnhint != filename_hint) + free (fnhint); if (filename_hint) free (filename_hint); filename_hint = sh_makepath (current_path, hint, 0); + /* Need a quoted version (though it doesn't matter much in most + cases) because rl_filename_completion_function dequotes the + filename it gets, assuming that it's been quoted as part of + the input line buffer. */ + if (strpbrk (filename_hint, "\"'\\")) + fnhint = sh_backslash_quote (filename_hint, filename_bstab, 0); + else + fnhint = filename_hint; free (current_path); /* XXX */ } inner: - val = rl_filename_completion_function (filename_hint, istate); + val = rl_filename_completion_function (fnhint, istate); if (mapping_over == 4 && dircomplete_expand) set_directory_hook (); @@ -1840,7 +2055,7 @@ globword: /* If we performed tilde expansion, restore the original filename. */ if (*hint_text == '~') - temp = restore_tilde (val, directory_part); + temp = maybe_restore_tilde (val, directory_part); else temp = savestring (val); freetemp = 1; @@ -1863,19 +2078,38 @@ globword: freetemp = match = 0; } -#if 0 - /* If we have found a match, and it is an executable file or a - directory name, return it. */ - if (match && executable_or_directory (val)) -#else /* If we have found a match, and it is an executable file, return it. We don't return directory names when searching $PATH, since the bash execution code won't find executables in directories which appear in directories in $PATH when they're specified using - relative pathnames. */ - if (match && (searching_path ? executable_file (val) : executable_or_directory (val))) + relative pathnames. */ +#if 0 + /* If we're not searching $PATH and we have a relative pathname, we + need to re-canonicalize it before testing whether or not it's an + executable or a directory so the shell treats .. relative to $PWD + according to the physical/logical option. The shell already + canonicalizes the directory name in order to tell readline where + to look, so not doing it here will be inconsistent. */ + /* XXX -- currently not used -- will introduce more inconsistency, + since shell does not canonicalize ../foo before passing it to + shell_execve(). */ + if (match && searching_path == 0 && *val == '.') + { + char *t, *t1; + + t = get_working_directory ("command-word-completion"); + t1 = make_absolute (val, t); + free (t); + cval = sh_canonpath (t1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + } + else #endif + cval = val; + + if (match && executable_completion ((searching_path ? val : cval), searching_path)) { + if (cval != val) + free (cval); free (val); val = ""; /* So it won't be NULL. */ return (temp); @@ -1884,6 +2118,8 @@ globword: { if (freetemp) free (temp); + if (cval != val) + free (cval); free (val); goto inner; } @@ -1952,7 +2188,7 @@ command_subst_completion_function (text, state) rl_completion_suppress_append = 1; } - if (!matches || !matches[cmd_index]) + if (matches == 0 || matches[cmd_index] == 0) { rl_filename_quoting_desired = 0; /* disable quoting */ return ((char *)NULL); @@ -2676,6 +2912,20 @@ restore_tilde (val, directory_part) return (ret); } +static char * +maybe_restore_tilde (val, directory_part) + char *val, *directory_part; +{ + rl_icppfunc_t *save; + char *ret; + + save = (dircomplete_expand == 0) ? save_directory_hook () : (rl_icppfunc_t *)0; + ret = restore_tilde (val, directory_part); + if (save) + restore_directory_hook (save); + return ret; +} + /* Simulate the expansions that will be performed by rl_filename_completion_function. This must be called with the address of a pointer to malloc'd memory. */ @@ -2687,8 +2937,11 @@ bash_directory_expansion (dirname) d = savestring (*dirname); - if (rl_directory_rewrite_hook) - (*rl_directory_rewrite_hook) (&d); + if ((rl_directory_rewrite_hook) && (*rl_directory_rewrite_hook) (&d)) + { + free (*dirname); + *dirname = d; + } else if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) { free (*dirname); @@ -2763,6 +3016,83 @@ restore_directory_hook (hookf) rl_directory_rewrite_hook = hookf; } +/* Expand a filename before the readline completion code passes it to stat(2). + The filename will already have had tilde expansion performed. */ +static int +bash_filename_stat_hook (dirname) + char **dirname; +{ + char *local_dirname, *new_dirname, *t; + int should_expand_dirname, return_value; + WORD_LIST *wl; + struct stat sb; + + local_dirname = *dirname; + should_expand_dirname = return_value = 0; + if (t = mbschr (local_dirname, '$')) + should_expand_dirname = '$'; + else if (t = mbschr (local_dirname, '`')) /* XXX */ + should_expand_dirname = '`'; + +#if defined (HAVE_LSTAT) + if (should_expand_dirname && lstat (local_dirname, &sb) == 0) +#else + if (should_expand_dirname && stat (local_dirname, &sb) == 0) +#endif + should_expand_dirname = 0; + + if (should_expand_dirname) + { + new_dirname = savestring (local_dirname); + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + if (wl) + { + free (new_dirname); + new_dirname = string_list (wl); + /* Tell the completer we actually expanded something and change + *dirname only if we expanded to something non-null -- stat + behaves unpredictably when passed null or empty strings */ + if (new_dirname && *new_dirname) + { + free (local_dirname); /* XXX */ + local_dirname = *dirname = new_dirname; + return_value = STREQ (local_dirname, *dirname) == 0; + } + else + free (new_dirname); + dispose_words (wl); + } + else + free (new_dirname); + } + + /* This is very similar to the code in bash_directory_completion_hook below, + but without spelling correction and not worrying about whether or not + we change relative pathnames. */ + if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1])) + { + char *temp1, *temp2; + + t = get_working_directory ("symlink-hook"); + temp1 = make_absolute (local_dirname, t); + free (t); + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + /* If we can't canonicalize, bail. */ + if (temp2 == 0) + { + free (temp1); + return return_value; + } + + free (local_dirname); + *dirname = temp2; + free (temp1); + } + + return (return_value); +} + /* Handle symbolic link references and other directory name expansions while hacking completion. This should return 1 if it modifies the DIRNAME argument, 0 otherwise. It should make sure not to modify @@ -2792,6 +3122,8 @@ bash_directory_completion_hook (dirname) else nextch = 0; } + else if (local_dirname[0] == '~') + should_expand_dirname = '~'; else { t = mbschr (local_dirname, '`'); @@ -2836,6 +3168,7 @@ bash_directory_completion_hook (dirname) } custom_filename_quote_characters[j] = '\0'; rl_filename_quote_characters = custom_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); } } else @@ -2886,8 +3219,10 @@ bash_directory_completion_hook (dirname) free (t); temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); - /* Try spelling correction if initial canonicalization fails. */ - if (temp2 == 0 && dircomplete_spelling) + /* Try spelling correction if initial canonicalization fails. Make + sure we are set to replace the directory name with the results so + subsequent directory checks don't fail. */ + if (temp2 == 0 && dircomplete_spelling && dircomplete_expand) { temp2 = dirspell (temp1); if (temp2) @@ -3486,6 +3821,20 @@ quote_word_break_chars (text) return ret; } +/* Use characters in STRING to populate the table of characters that should + be backslash-quoted. The table will be used for sh_backslash_quote from + this file. */ +static void +set_filename_bstab (string) + const char *string; +{ + const char *s; + + memset (filename_bstab, 0, sizeof (filename_bstab)); + for (s = string; s && *s; s++) + filename_bstab[*s] = 1; +} + /* Quote a filename using double quotes, single quotes, or backslashes depending on the value of completion_quoting_style. If we're completing using backslashes, we need to quote some additional @@ -3551,7 +3900,7 @@ bash_quote_filename (s, rtype, qcp) rtext = sh_single_quote (mtext); break; case COMPLETE_BSQUOTE: - rtext = sh_backslash_quote (mtext); + rtext = sh_backslash_quote (mtext, complete_fullquote ? 0 : filename_bstab, 0); break; } @@ -3569,9 +3918,17 @@ bash_quote_filename (s, rtype, qcp) /* Leave the opening quote intact. The readline completion code takes care of avoiding doubled opening quotes. */ - rlen = strlen (rtext); - ret = (char *)xmalloc (rlen + 1); - strcpy (ret, rtext); + if (rtext) + { + rlen = strlen (rtext); + ret = (char *)xmalloc (rlen + 1); + strcpy (ret, rtext); + } + else + { + ret = (char *)xmalloc (rlen = 1); + ret[0] = '\0'; + } /* If there are multiple matches, cut off the closing quote. */ if (rtype == MULT_MATCH && cs != COMPLETE_BSQUOTE) @@ -3583,14 +3940,19 @@ bash_quote_filename (s, rtype, qcp) /* Support for binding readline key sequences to Unix commands. */ static Keymap cmd_xmap; +#ifdef _MINIX +static void +#else static int +#endif putx(c) int c; { int x; - x = putc (c, rl_outstream); - return (x); +#ifndef _MINIX + return x; +#endif } static int @@ -3600,6 +3962,8 @@ bash_execute_unix_command (count, key) { Keymap ckmap; /* current keymap */ Keymap xkmap; /* unix command executing keymap */ + rl_command_func_t *func; + int type; register int i, r; intmax_t mi; sh_parser_state_t ps; @@ -3608,34 +3972,15 @@ bash_execute_unix_command (count, key) char ibuf[INT_STRLEN_BOUND(int) + 1]; /* First, we need to find the right command to execute. This is tricky, - because we might have already indirected into another keymap. */ - ckmap = rl_get_keymap (); - if (ckmap != rl_executing_keymap) - { - /* bogus. we have to search. only handle one level of indirection. */ - for (i = 0; i < KEYMAP_SIZE; i++) - { - if (ckmap[i].type == ISKMAP && (Keymap)ckmap[i].function == rl_executing_keymap) - break; - } - if (i < KEYMAP_SIZE) - xkmap = (Keymap)cmd_xmap[i].function; - else - { - rl_crlf (); - internal_error (_("bash_execute_unix_command: cannot find keymap for command")); - rl_forced_update_display (); - return 1; - } - } - else - xkmap = cmd_xmap; - - cmd = (char *)xkmap[key].function; - - if (cmd == 0) + because we might have already indirected into another keymap, so we + have to walk cmd_xmap using the entire key sequence. */ + cmd = (char *)rl_function_of_keyseq (rl_executing_keyseq, cmd_xmap, &type); + + if (cmd == 0 || type != ISMACR) { - rl_ding (); + rl_crlf (); + internal_error (_("bash_execute_unix_command: cannot find keymap for command")); + rl_forced_update_display (); return 1; } @@ -3690,6 +4035,18 @@ bash_execute_unix_command (count, key) return 0; } +int +print_unix_command_map () +{ + Keymap save; + + save = rl_get_keymap (); + rl_set_keymap (cmd_xmap); + rl_macro_dumper (1); + rl_set_keymap (save); + return 0; +} + static void init_unix_command_map () { @@ -3773,12 +4130,16 @@ bind_keyseq_to_unix_command (line) if (line[i] != ':') { builtin_error (_("%s: missing colon separator"), line); + FREE (kseq); return -1; } i = isolate_sequence (line, i + 1, 0, &kstart); if (i < 0) - return -1; + { + FREE (kseq); + return -1; + } /* Create the value string containing the command to execute. */ value = substring (line, kstart, i); @@ -3789,7 +4150,8 @@ bind_keyseq_to_unix_command (line) /* and bind the key sequence in the current keymap to a function that understands how to execute from CMD_XMAP */ rl_bind_keyseq_in_map (kseq, bash_execute_unix_command, kmap); - + + free (kseq); return 0; } @@ -3829,4 +4191,22 @@ bash_dequote_text (text) dtxt = bash_dequote_filename ((char *)text, qc); return (dtxt); } + +/* This event hook is designed to be called after readline receives a signal + that interrupts read(2). It gives reasonable responsiveness to interrupts + and fatal signals without executing too much code in a signal handler + context. */ +static int +bash_event_hook () +{ + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, + calling run_interrupt_trap along the way. */ + if (interrupt_state) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); + check_signals_and_traps (); /* XXX */ + return 0; +} + #endif /* READLINE */ diff --git a/bashline.h b/bashline.h index 38964ea..d52dfdf 100644 --- a/bashline.h +++ b/bashline.h @@ -37,6 +37,7 @@ extern void bashline_set_event_hook __P((void)); extern void bashline_reset_event_hook __P((void)); extern int bind_keyseq_to_unix_command __P((char *)); +extern int print_unix_command_map __P((void)); extern char **bash_default_completion __P((const char *, int, int, int, int)); diff --git a/bracecomp.c b/bracecomp.c index cb218a2..4fbca85 100644 --- a/bracecomp.c +++ b/bracecomp.c @@ -75,8 +75,8 @@ really_munge_braces (array, real_start, real_end, gcd_zero) if (real_start == real_end) { - x = array[real_start] ? sh_backslash_quote (array[real_start] + gcd_zero) - : sh_backslash_quote (array[0]); + x = array[real_start] ? sh_backslash_quote (array[real_start] + gcd_zero, 0, 0) + : sh_backslash_quote (array[0], 0, 0); return x; } @@ -115,7 +115,7 @@ really_munge_braces (array, real_start, real_end, gcd_zero) if (start == end) { x = savestring (array[start] + gcd_zero); - subterm = sh_backslash_quote (x); + subterm = sh_backslash_quote (x, 0, 0); free (x); } else @@ -126,7 +126,7 @@ really_munge_braces (array, real_start, real_end, gcd_zero) x = (char *)xmalloc (tlen + 1); strncpy (x, array[start] + gcd_zero, tlen); x[tlen] = '\0'; - subterm = sh_backslash_quote (x); + subterm = sh_backslash_quote (x, 0, 0); free (x); result_size += strlen (subterm) + 1; result = (char *)xrealloc (result, result_size); diff --git a/braces.c b/braces.c index 2febed7..61c1ab1 100644 --- a/braces.c +++ b/braces.c @@ -1,6 +1,6 @@ /* braces.c -- code for doing word expansion in curly braces. */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,22 +31,32 @@ # include #endif +#include + #include "bashansi.h" +#include "bashintl.h" #if defined (SHELL) # include "shell.h" #endif /* SHELL */ +#include "typemax.h" /* INTMAX_MIN, INTMAX_MAX */ #include "general.h" #include "shmbutil.h" #include "chartypes.h" +#ifndef errno +extern int errno; +#endif + #define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') #define BRACE_SEQ_SPECIFIER ".." extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); +extern int last_command_exit_value; + /* Basic idea: Segregate the text into 3 sections: preamble (stuff before an open brace), @@ -63,7 +73,7 @@ static const int brace_arg_separator = ','; static int brace_gobbler __P((char *, size_t, int *, int)); static char **expand_amble __P((char *, size_t, int)); static char **expand_seqterm __P((char *, size_t)); -static char **mkseq __P((intmax_t, intmax_t, int, int, int)); +static char **mkseq __P((intmax_t, intmax_t, intmax_t, int, int)); static char **array_concat __P((char **, char **)); #else static int brace_gobbler (); @@ -136,7 +146,8 @@ brace_expand (text) #endif /* !CSH_BRACE_COMPAT */ preamble = (char *)xmalloc (i + 1); - strncpy (preamble, text, i); + if (i > 0) + strncpy (preamble, text, i); preamble[i] = '\0'; result = (char **)xmalloc (2 * sizeof (char *)); @@ -171,6 +182,7 @@ brace_expand (text) if (text[j] == brace_arg_separator) { /* { */ strvec_dispose (result); + last_command_exit_value = 1; report_error ("no closing `%c' in %s", '}', text); throw_to_top_level (); } @@ -218,6 +230,19 @@ brace_expand (text) tack = expand_seqterm (amble, alen); if (tack) goto add_tack; + else if (text[i + 1]) + { + /* If the sequence expansion fails (e.g., because the integers + overflow), but there is more in the string, try and process + the rest of the string, which may contain additional brace + expansions. Treat the unexpanded sequence term as a simple + string (including the braces). */ + tack = strvec_create (2); + tack[0] = savestring (text+start-1); + tack[0][i-start+2] = '\0'; + tack[1] = (char *)0; + goto add_tack; + } else { free (amble); @@ -232,13 +257,18 @@ brace_expand (text) add_tack: result = array_concat (result, tack); free (amble); - strvec_dispose (tack); + if (tack != result) + strvec_dispose (tack); postamble = text + i + 1; - tack = brace_expand (postamble); - result = array_concat (result, tack); - strvec_dispose (tack); + if (postamble && *postamble) + { + tack = brace_expand (postamble); + result = array_concat (result, tack); + if (tack != result) + strvec_dispose (tack); + } return (result); } @@ -253,7 +283,7 @@ expand_amble (text, tlen, flags) size_t tlen; int flags; { - char **result, **partial; + char **result, **partial, **tresult; char *tem; int start, i, c; @@ -285,7 +315,16 @@ expand_amble (text, tlen, flags) lr = strvec_len (result); lp = strvec_len (partial); - result = strvec_resize (result, lp + lr + 1); + tresult = strvec_mresize (result, lp + lr + 1); + if (tresult == 0) + { + internal_error (_("brace expansion: cannot allocate memory for %s"), tem); + strvec_dispose (result); + result = (char **)NULL; + return result; + } + else + result = tresult; for (j = 0; j < lp; j++) result[lr + j] = partial[j]; @@ -305,25 +344,75 @@ expand_amble (text, tlen, flags) #define ST_CHAR 2 #define ST_ZINT 3 +#ifndef sh_imaxabs +# define sh_imaxabs(x) (((x) >= 0) ? (x) : -(x)) +#endif + +/* Handle signed arithmetic overflow and underflow. Have to do it this way + to avoid compilers optimizing out simpler overflow checks. */ + +/* Make sure that a+b does not exceed MAXV or is smaller than MINV (if b < 0). + Assumes that b > 0 if a > 0 and b < 0 if a < 0 */ +#define ADDOVERFLOW(a,b,minv,maxv) \ + ((((a) > 0) && ((b) > ((maxv) - (a)))) || \ + (((a) < 0) && ((b) < ((minv) - (a))))) + +/* Make sure that a-b is not smaller than MINV or exceeds MAXV (if b < 0). + Assumes that b > 0 if a > 0 and b < 0 if a < 0 */ +#define SUBOVERFLOW(a,b,minv,maxv) \ + ((((b) > 0) && ((a) < ((minv) + (b)))) || \ + (((b) < 0) && ((a) > ((maxv) + (b))))) + static char ** mkseq (start, end, incr, type, width) - intmax_t start, end; - int incr, type, width; + intmax_t start, end, incr; + int type, width; { - intmax_t n; - int i; + intmax_t n, prevn; + int i, j, nelem; char **result, *t; - i = abs (end - start) + 1; - result = strvec_create (i + 1); - if (incr == 0) incr = 1; - + if (start > end && incr > 0) incr = -incr; else if (start < end && incr < 0) - incr = -incr; + { + if (incr == INTMAX_MIN) /* Don't use -INTMAX_MIN */ + return ((char **)NULL); + incr = -incr; + } + + /* Check that end-start will not overflow INTMAX_MIN, INTMAX_MAX. The +3 + and -2, not strictly necessary, are there because of the way the number + of elements and value passed to strvec_create() are calculated below. */ + if (SUBOVERFLOW (end, start, INTMAX_MIN+3, INTMAX_MAX-2)) + return ((char **)NULL); + + prevn = sh_imaxabs (end - start); + /* Need to check this way in case INT_MAX == INTMAX_MAX */ + if (INT_MAX == INTMAX_MAX && (ADDOVERFLOW (prevn, 2, INT_MIN, INT_MAX))) + return ((char **)NULL); + /* Make sure the assignment to nelem below doesn't end up <= 0 due to + intmax_t overflow */ + else if (ADDOVERFLOW ((prevn/sh_imaxabs(incr)), 1, INTMAX_MIN, INTMAX_MAX)) + return ((char **)NULL); + + /* XXX - TOFIX: potentially allocating a lot of extra memory if + imaxabs(incr) != 1 */ + /* Instead of a simple nelem = prevn + 1, something like: + nelem = (prevn / imaxabs(incr)) + 1; + would work */ + nelem = (prevn / sh_imaxabs(incr)) + 1; + if (nelem > INT_MAX - 2) /* Don't overflow int */ + return ((char **)NULL); + result = strvec_mcreate (nelem + 1); + if (result == 0) + { + internal_error (_("brace expansion: failed to allocate memory for %d elements"), nelem); + return ((char **)NULL); + } /* Make sure we go through the loop at least once, so {3..3} prints `3' */ i = 0; @@ -334,7 +423,7 @@ mkseq (start, end, incr, type, width) QUIT; /* XXX - memory leak here */ #endif if (type == ST_INT) - result[i++] = itos (n); + result[i++] = t = itos (n); else if (type == ST_ZINT) { int len, arg; @@ -344,12 +433,33 @@ mkseq (start, end, incr, type, width) } else { - t = (char *)xmalloc (2); - t[0] = n; - t[1] = '\0'; + if (t = (char *)malloc (2)) + { + t[0] = n; + t[1] = '\0'; + } result[i++] = t; } + + /* We failed to allocate memory for this number, so we bail. */ + if (t == 0) + { + char *p, lbuf[INT_STRLEN_BOUND(intmax_t) + 1]; + + /* Easier to do this than mess around with various intmax_t printf + formats (%ld? %lld? %jd?) and PRIdMAX. */ + p = inttostr (n, lbuf, sizeof (lbuf)); + internal_error (_("brace expansion: failed to allocate memory for `%s'"), p); + strvec_dispose (result); + return ((char **)NULL); + } + + /* Handle overflow and underflow of n+incr */ + if (ADDOVERFLOW (n, incr, INTMAX_MIN, INTMAX_MAX)) + break; + n += incr; + if ((incr < 0 && n < end) || (incr > 0 && n > end)) break; } @@ -365,8 +475,8 @@ expand_seqterm (text, tlen) size_t tlen; { char *t, *lhs, *rhs; - int i, lhs_t, rhs_t, incr, lhs_l, rhs_l, width; - intmax_t lhs_v, rhs_v; + int i, lhs_t, rhs_t, lhs_l, rhs_l, width; + intmax_t lhs_v, rhs_v, incr; intmax_t tl, tr; char **result, *ep, *oep; @@ -396,8 +506,9 @@ expand_seqterm (text, tlen) if (ISDIGIT (rhs[0]) || ((rhs[0] == '+' || rhs[0] == '-') && ISDIGIT (rhs[1]))) { rhs_t = ST_INT; + errno = 0; tr = strtoimax (rhs, &ep, 10); - if (ep && *ep != 0 && *ep != '.') + if (errno == ERANGE || (ep && *ep != 0 && *ep != '.')) rhs_t = ST_BAD; /* invalid */ } else if (ISALPHA (rhs[0]) && (rhs[1] == 0 || rhs[1] == '.')) @@ -415,10 +526,11 @@ expand_seqterm (text, tlen) if (rhs_t != ST_BAD) { oep = ep; + errno = 0; if (ep && *ep == '.' && ep[1] == '.' && ep[2]) incr = strtoimax (ep + 2, &ep, 10); - if (*ep != 0) - rhs_t = ST_BAD; /* invalid incr */ + if (*ep != 0 || errno == ERANGE) + rhs_t = ST_BAD; /* invalid incr or overflow */ tlen -= ep - oep; } @@ -535,6 +647,11 @@ brace_gobbler (text, tlen, indx, satisfy) { if (c == quoted) quoted = 0; +#if defined (SHELL) + /* The shell allows quoted command substitutions */ + if (quoted == '"' && c == '$' && text[i+1] == '(') /*)*/ + goto comsub; +#endif ADVANCE_CHAR (text, tlen, i); continue; } @@ -550,6 +667,7 @@ brace_gobbler (text, tlen, indx, satisfy) /* Pass new-style command and process substitutions through unchanged. */ if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(') /* ) */ { +comsub: si = i + 2; t = extract_command_subst (text, &si, 0); i = si; @@ -594,6 +712,20 @@ brace_gobbler (text, tlen, indx, satisfy) return (c); } +/* Return 1 if ARR has any non-empty-string members. Used to short-circuit + in array_concat() below. */ +static int +degenerate_array (arr) + char **arr; +{ + register int i; + + for (i = 0; arr[i]; i++) + if (arr[i][0] != '\0') + return 0; + return 1; +} + /* Return a new array of strings which is the result of appending each string in ARR2 to each string in ARR1. The resultant array is len (arr1) * len (arr2) long. For convenience, ARR1 (and its contents) @@ -607,10 +739,22 @@ array_concat (arr1, arr2) register char **result; if (arr1 == 0) - return (strvec_copy (arr2)); + return (arr2); /* XXX - see if we can get away without copying? */ if (arr2 == 0) - return (strvec_copy (arr1)); + return (arr1); /* XXX - caller expects us to free arr1 */ + + /* We can only short-circuit if the array consists of a single null element; + otherwise we need to replicate the contents of the other array and + prefix (or append, below) an empty element to each one. */ + if (arr1[0] && arr1[0][0] == 0 && arr1[1] == 0) + { + strvec_dispose (arr1); + return (arr2); /* XXX - use flags to see if we can avoid copying here */ + } + + if (arr2[0] && arr2[0][0] == 0 && arr2[1] == 0) + return (arr1); /* XXX - rather than copying and freeing it */ len1 = strvec_len (arr1); len2 = strvec_len (arr2); diff --git a/builtins.h b/builtins.h index 8f7b461..cc0c79c 100644 --- a/builtins.h +++ b/builtins.h @@ -50,7 +50,7 @@ struct builtin { sh_builtin_func_t *function; /* The address of the invoked function. */ int flags; /* One of the #defines above. */ char * const *long_doc; /* NULL terminated array of strings. */ - const char *short_doc; /* Short version of documenation. */ + const char *short_doc; /* Short version of documentation. */ char *handle; /* for future use */ }; diff --git a/builtins/Makefile.in b/builtins/Makefile.in index 3d8bad4..a2e7911 100644 --- a/builtins/Makefile.in +++ b/builtins/Makefile.in @@ -1,6 +1,6 @@ # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. # -# Copyright (C) 1996-2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2009 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 @@ -67,8 +67,8 @@ LIBS = @LIBS@ LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ -#LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ -LIBS_FOR_BUILD = $(LIBS) +LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ +#LIBS_FOR_BUILD = $(LIBS) BASHINCDIR = ${topdir}/include @@ -85,6 +85,8 @@ LIBINTL_H = @LIBINTL_H@ HELPDIR = @HELPDIR@ MKDIRS = ${topdir}/support/mkdirs +HELPFILES_TARGET = @HELPFILES_TARGET@ + INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) ${INTL_INC} BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ @@ -153,15 +155,33 @@ OFILES = builtins.o \ suspend.o test.o times.o trap.o type.o ulimit.o umask.o \ wait.o getopts.o shopt.o printf.o getopt.o bashgetopt.o complete.o -CREATED_FILES = builtext.h builtins.c psize.aux pipesize.h +CREATED_FILES = builtext.h builtins.c psize.aux pipesize.h tmpbuiltins.c \ + tmpbuiltins.h +CREATED_OBJECTS = tmpbuiltins.o gen-helpfiles.o mkbuiltins.o -all: $(MKBUILTINS) libbuiltins.a +all: $(MKBUILTINS) libbuiltins.a $(HELPFILES_TARGET) +targets: libbuiltins.a $(HELPFILES_TARGET) libbuiltins.a: $(MKBUILTINS) $(OFILES) builtins.o $(RM) $@ $(AR) $(ARFLAGS) $@ $(OFILES) -$(RANLIB) $@ +tmpbuiltins.c: $(MKBUILTINS) $(DEFSRC) + ./$(MKBUILTINS) -externfile tmpbuiltins.h -structfile $@ \ + -noproduction -nofunctions \ + $(DIRECTDEFINE) $(HELPSTRINGS) $(DEFSRC) + +tmpbuiltins.h: tmpbuiltins.c + +gen-helpfiles.o: ../config.h +gen-helpfiles.o: gen-helpfiles.c + $(RM) $@ + $(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $< + +gen-helpfiles: tmpbuiltins.o gen-helpfiles.o + $(CC_FOR_BUILD) ${CCFLAGS_FOR_BUILD} $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD) + builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC) @-if test -f builtins.c; then mv -f builtins.c old-builtins.c; fi @-if test -f builtext.h; then mv -f builtext.h old-builtext.h; fi @@ -178,8 +198,8 @@ builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC) $(RM) old-builtins.c; \ fi -helpdoc: $(MKBUILTINS) $(DEFSRC) - ./$(MKBUILTINS) ${HELPDIRDEFINE} -noproduction $(DIRECTDEFINE) $(DEFSRC) +helpdoc: gen-helpfiles + ./gen-helpfiles ${HELPDIRDEFINE} install-help: @-if test -n "${HELPDIR}" && test -d helpfiles ; then \ @@ -207,15 +227,20 @@ common.o: common.c bashgetopt.o: bashgetopt.c getopt.o: getopt.c evalstring.o: evalstring.c -evalfile.o: evalfile.c +evalfile.o: evalfile.c + +tmpbuiltins.o: tmpbuiltins.c +gen-helpfiles.o: gen-helpfiles.c ulimit.o: pipesize.h pipesize.h: psize.aux $(SHELL) $(srcdir)/psize.sh > $@ +# Technically this is wrong; the pipe size should be for the target system, +# not the build host. psize.aux: psize.c - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(srcdir)/psize.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(srcdir)/psize.c documentation: builtins.texi @@ -223,7 +248,8 @@ builtins.texi: $(MKBUILTINS) ./$(MKBUILTINS) -documentonly $(DEFSRC) clean: - $(RM) $(OFILES) $(CREATED_FILES) $(MKBUILTINS) mkbuiltins.o libbuiltins.a + $(RM) $(OFILES) $(CREATED_FILES) libbuiltins.a + $(RM) $(MKBUILTINS) gen-helpfiles $(CREATED_OBJECTS) -test -d helpfiles && $(RM) -r helpfiles mostlyclean: @@ -547,7 +573,7 @@ shopt.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h shopt.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h shopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h shopt.o: $(srcdir)/common.h $(srcdir)/bashgetopt.h ../pathnames.h -shopt.o: $(topdir)/bashhist.h +shopt.o: $(topdir)/bashhist.h $(topdir)/bashline.h source.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h source.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/findcmd.h source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h diff --git a/builtins/bind.def b/builtins/bind.def index d0c953b..3a7cc4e 100644 --- a/builtins/bind.def +++ b/builtins/bind.def @@ -25,7 +25,7 @@ $PRODUCES bind.c $BUILTIN bind $DEPENDS_ON READLINE $FUNCTION bind_builtin -$SHORT_DOC bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command] +$SHORT_DOC bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command] Set Readline key bindings and variables. Bind a key sequence to a Readline function or a macro, or set a @@ -54,6 +54,8 @@ Options: -f filename Read key bindings from FILENAME. -x keyseq:shell-command Cause SHELL-COMMAND to be executed when KEYSEQ is entered. + -X List key sequences bound with -x and associated commands + in a form that can be reused as input. Exit Status: bind returns 0 unless an unrecognized option is given or an error occurs. @@ -104,6 +106,7 @@ extern int no_line_editing; #define SSFLAG 0x0400 #define UFLAG 0x0800 #define XFLAG 0x1000 +#define XXFLAG 0x2000 int bind_builtin (list) @@ -138,7 +141,7 @@ bind_builtin (list) rl_outstream = stdout; reset_internal_getopt (); - while ((opt = internal_getopt (list, "lvpVPsSf:q:u:m:r:x:")) != EOF) + while ((opt = internal_getopt (list, "lvpVPsSXf:q:u:m:r:x:")) != EOF) { switch (opt) { @@ -187,6 +190,9 @@ bind_builtin (list) flags |= XFLAG; cmd_seq = list_optarg; break; + case 'X': + flags |= XXFLAG; + break; default: builtin_usage (); BIND_RETURN (EX_USAGE); @@ -201,7 +207,7 @@ bind_builtin (list) if ((flags & MFLAG) && map_name) { kmap = rl_get_keymap_by_name (map_name); - if (!kmap) + if (kmap == 0) { builtin_error (_("`%s': invalid keymap name"), map_name); BIND_RETURN (EXECUTION_FAILURE); @@ -265,6 +271,9 @@ bind_builtin (list) if (flags & XFLAG) return_code = bind_keyseq_to_unix_command (cmd_seq); + if (flags & XXFLAG) + return_code = print_unix_command_map (); + /* Process the rest of the arguments as binding specifications. */ while (list) { diff --git a/builtins/caller.def b/builtins/caller.def index 7ddbdad..965676b 100644 --- a/builtins/caller.def +++ b/builtins/caller.def @@ -2,6 +2,7 @@ This file is caller.def, from which is created caller.c. It implements the builtin "caller" in Bash. Copyright (C) 2002-2008 Rocky Bernstein for Free Software Foundation, Inc. +Copyright (C) 2008-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -121,7 +122,7 @@ caller_builtin (list) { sh_invalidnum (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } return (EXECUTION_SUCCESS); diff --git a/builtins/cd.def b/builtins/cd.def index b1aae26..f66e68c 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -1,7 +1,7 @@ This file is cd.def, from which is created cd.c. It implements the builtins "cd" and "pwd" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,9 +31,10 @@ $PRODUCES cd.c #include "../bashtypes.h" #include "posixdir.h" #include "posixstat.h" -#ifndef _MINIX +#if defined (HAVE_SYS_PARAM_H) #include #endif +#include #include @@ -60,7 +61,10 @@ extern const char * const bash_getcwd_errstr; static int bindpwd __P((int)); static int setpwd __P((char *)); static char *resetpwd __P((char *)); -static int change_to_directory __P((char *, int)); +static int change_to_directory __P((char *, int, int)); + +static int cdxattr __P((char *, char **)); +static void resetxattr __P((void)); /* Change this to 1 to get cd spelling correction by default. */ int cdspelling = 0; @@ -68,10 +72,12 @@ int cdspelling = 0; int cdable_vars; static int eflag; /* file scope so bindpwd() can see it */ +static int xattrflag; /* O_XATTR support for openat */ +static int xattrfd = -1; $BUILTIN cd $FUNCTION cd_builtin -$SHORT_DOC cd [-L|[-P [-e]]] [dir] +$SHORT_DOC cd [-L|[-P [-e]] [-@]] [dir] Change the shell working directory. Change the current directory to DIR. The default DIR is the value of the @@ -87,13 +93,21 @@ the word is assumed to be a variable name. If that variable has a value, its value is used for DIR. Options: - -L force symbolic links to be followed + -L force symbolic links to be followed: resolve symbolic links in + DIR after processing instances of `..' -P use the physical directory structure without following symbolic - links + links: resolve symbolic links in DIR before processing instances + of `..' -e if the -P option is supplied, and the current working directory cannot be determined successfully, exit with a non-zero status +#if defined (O_XATTR) + -@ on systems that support it, present a file with extended attributes + as a directory containing the file attributes +#endif The default is to follow symbolic links, as if `-L' were specified. +`..' is processed by removing the immediately previous pathname component +back to a slash or the beginning of DIR. Exit Status: Returns 0 if the directory is changed, and if $PWD is set successfully when @@ -173,6 +187,66 @@ resetpwd (caller) return (tdir); } +static int +cdxattr (dir, ndirp) + char *dir; /* don't assume we can always free DIR */ + char **ndirp; /* return new constructed directory name */ +{ +#if defined (O_XATTR) + int apfd, fd, r, e; + char buf[11+40+40]; /* construct new `fake' path for pwd */ + + apfd = openat (AT_FDCWD, dir, O_RDONLY|O_NONBLOCK); + if (apfd < 0) + return -1; + fd = openat (apfd, ".", O_XATTR); + e = errno; + close (apfd); /* ignore close error for now */ + errno = e; + if (fd < 0) + return -1; + r = fchdir (fd); /* assume fchdir exists everywhere with O_XATTR */ + if (r < 0) + { + close (fd); + return -1; + } + /* NFSv4 and ZFS extended attribute directories do not have names which are + visible in the standard Unix directory tree structure. To ensure we have + a valid name for $PWD, we synthesize one under /proc, but to keep that + path valid, we need to keep the file descriptor open as long as we are in + this directory. This imposes a certain structure on /proc. */ + if (ndirp) + { + sprintf (buf, "/proc/%d/fd/%d", getpid(), fd); + *ndirp = savestring (buf); + } + + if (xattrfd >= 0) + close (xattrfd); + xattrfd = fd; + + return r; +#else + return -1; +#endif +} + +/* Clean up the O_XATTR baggage. Currently only closes xattrfd */ +static void +resetxattr () +{ +#if defined (O_XATTR) + if (xattrfd >= 0) + { + close (xattrfd); + xattrfd = -1; + } +#else + xattrfd = -1; /* not strictly necessary */ +#endif +} + #define LCD_DOVARS 0x001 #define LCD_DOSPELL 0x002 #define LCD_PRINTPATH 0x004 @@ -199,8 +273,13 @@ cd_builtin (list) eflag = 0; no_symlinks = no_symbolic_links; + xattrflag = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "LP")) != -1) +#if defined (O_XATTR) + while ((opt = internal_getopt (list, "eLP@")) != -1) +#else + while ((opt = internal_getopt (list, "eLP")) != -1) +#endif { switch (opt) { @@ -213,9 +292,14 @@ cd_builtin (list) case 'e': eflag = 1; break; +#if defined (O_XATTR) + case '@': + xattrflag = 1; + break; +#endif default: builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } } list = loptend; @@ -237,6 +321,13 @@ cd_builtin (list) } lflag = 0; } +#if defined (CD_COMPLAINS) + else if (list->next) + { + builtin_error (_("too many arguments")); + return (EXECUTION_FAILURE); + } +#endif else if (list->word->word[0] == '-' && list->word->word[1] == '\0') { /* This is `cd -', equivalent to `cd $OLDPWD' */ @@ -268,7 +359,7 @@ cd_builtin (list) temp = sh_makepath (path, dirname, MP_DOTILDE); free (path); - if (change_to_directory (temp, no_symlinks)) + if (change_to_directory (temp, no_symlinks, xattrflag)) { /* POSIX.2 says that if a nonempty directory from CDPATH is used to find the directory to change to, the new @@ -290,7 +381,8 @@ cd_builtin (list) free (temp); } -#if 0 /* changed for bash-4.2 Posix cd description steps 5-6 */ +#if 0 + /* changed for bash-4.2 Posix cd description steps 5-6 */ /* POSIX.2 says that if `.' does not appear in $CDPATH, we don't try the current directory, so we just punt now with an error message if POSIXLY_CORRECT is non-zero. The check for cdpath[0] @@ -308,7 +400,7 @@ cd_builtin (list) /* When we get here, DIRNAME is the directory to change to. If we chdir successfully, just return. */ - if (change_to_directory (dirname, no_symlinks)) + if (change_to_directory (dirname, no_symlinks, xattrflag)) { if (lflag & LCD_PRINTPATH) printf ("%s\n", dirname); @@ -321,7 +413,7 @@ cd_builtin (list) if (lflag & LCD_DOVARS) { temp = get_string_value (dirname); - if (temp && change_to_directory (temp, no_symlinks)) + if (temp && change_to_directory (temp, no_symlinks, xattrflag)) { printf ("%s\n", temp); return (bindpwd (no_symlinks)); @@ -334,9 +426,10 @@ cd_builtin (list) if (lflag & LCD_DOSPELL) { temp = dirspell (dirname); - if (temp && change_to_directory (temp, no_symlinks)) + if (temp && change_to_directory (temp, no_symlinks, xattrflag)) { printf ("%s\n", temp); + free (temp); return (bindpwd (no_symlinks)); } else @@ -391,7 +484,7 @@ pwd_builtin (list) break; default: builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } } list = loptend; @@ -405,7 +498,11 @@ pwd_builtin (list) the file system has changed state underneath bash). */ if ((tcwd && directory == 0) || (posixly_correct && same_file (".", tcwd, (struct stat *)0, (struct stat *)0) == 0)) - directory = resetpwd ("pwd"); + { + if (directory && directory != tcwd) + free (directory); + directory = resetpwd ("pwd"); + } #undef tcwd @@ -431,11 +528,11 @@ pwd_builtin (list) to the working directory. Return 1 on success, 0 on failure. */ static int -change_to_directory (newdir, nolinks) +change_to_directory (newdir, nolinks, xattr) char *newdir; - int nolinks; + int nolinks, xattr; { - char *t, *tdir; + char *t, *tdir, *ndir; int err, canon_failed, r, ndlen, dlen; tdir = (char *)NULL; @@ -484,8 +581,34 @@ change_to_directory (newdir, nolinks) return (0); } +#if defined (O_XATTR) + if (xattrflag) + { + r = cdxattr (nolinks ? newdir : tdir, &ndir); + if (r >= 0) + { + canon_failed = 0; + free (tdir); + tdir = ndir; + } + else + { + err = errno; + free (tdir); + errno = err; + return (0); /* no xattr */ + } + } + else +#endif + { + r = chdir (nolinks ? newdir : tdir); + if (r >= 0) + resetxattr (); + } + /* If the chdir succeeds, update the_current_working_directory. */ - if (chdir (nolinks ? newdir : tdir) == 0) + if (r == 0) { /* If canonicalization failed, but the chdir succeeded, reset the shell's idea of the_current_working_directory. */ @@ -494,6 +617,8 @@ change_to_directory (newdir, nolinks) t = resetpwd ("cd"); if (t == 0) set_working_directory (tdir); + else + free (t); } else set_working_directory (tdir); diff --git a/builtins/common.c b/builtins/common.c index 737ace2..fb2b38c 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -500,7 +500,7 @@ get_exitstat (list) if (arg == 0 || legal_number (arg, &sval) == 0) { sh_neednumarg (list->word->word ? list->word->word : "`'"); - return 255; + return EX_BADUSAGE; } no_args (list->next); @@ -628,7 +628,7 @@ get_job_by_name (name, flags) if (this_shell_builtin) builtin_error (_("%s: ambiguous job spec"), name); else - report_error (_("%s: ambiguous job spec"), name); + internal_error (_("%s: ambiguous job spec"), name); return (DUP_JOB); } else diff --git a/builtins/common.h b/builtins/common.h index caeefea..b0c2f7d 100644 --- a/builtins/common.h +++ b/builtins/common.h @@ -145,6 +145,8 @@ extern void set_bashopts __P((void)); extern void parse_bashopts __P((char *)); extern void initialize_bashopts __P((int)); +extern void set_compatibility_opts __P((void)); + /* Functions from type.def */ extern int describe_command __P((char *, int)); @@ -153,6 +155,7 @@ extern int set_or_show_attributes __P((WORD_LIST *, int, int)); extern int show_all_var_attributes __P((int, int)); extern int show_var_attributes __P((SHELL_VAR *, int, int)); extern int show_name_attributes __P((char *, int)); +extern int show_func_attributes __P((char *, int)); extern void set_var_attribute __P((char *, int, int)); /* Functions from pushd.def */ @@ -163,6 +166,7 @@ extern WORD_LIST *get_directory_stack __P((int)); /* Functions from evalstring.c */ extern int parse_and_execute __P((char *, const char *, int)); +extern int evalstring __P((char *, const char *, int)); extern void parse_and_execute_cleanup __P((void)); extern int parse_string __P((char *, const char *, int, char **)); diff --git a/builtins/complete.def b/builtins/complete.def index b9f0a13..8499b7a 100644 --- a/builtins/complete.def +++ b/builtins/complete.def @@ -1,7 +1,7 @@ This file is complete.def, from which is created complete.c. It implements the builtins "complete", "compgen", and "compopt" in Bash. -Copyright (C) 1999-2010 Free Software Foundation, Inc. +Copyright (C) 1999-2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -112,7 +112,7 @@ static const struct _compacts { { "export", CA_EXPORT, 'e' }, { "file", CA_FILE, 'f' }, { "function", CA_FUNCTION, 0 }, - { "helptopic", CA_BUILTIN, 0 }, /* for now */ + { "helptopic", CA_HELPTOPIC, 0 }, { "hostname", CA_HOSTNAME, 0 }, { "group", CA_GROUP, 'g' }, { "job", CA_JOB, 'j' }, @@ -129,7 +129,7 @@ static const struct _compacts { }; /* This should be a STRING_INT_ALIST */ -const static struct _compopt { +static const struct _compopt { const char * const optname; int optflag; } compopts[] = { @@ -137,6 +137,7 @@ const static struct _compopt { { "default", COPT_DEFAULT }, { "dirnames", COPT_DIRNAMES }, { "filenames",COPT_FILENAMES}, + { "noquote", COPT_NOQUOTE }, { "nospace", COPT_NOSPACE }, { "plusdirs", COPT_PLUSDIRS }, { (char *)NULL, 0 }, @@ -728,6 +729,7 @@ compgen_builtin (list) if ((sl == 0 || sl->list_len == 0) && (copts & COPT_DEFAULT)) { matches = rl_completion_matches (word, rl_filename_completion_function); + strlist_dispose (sl); sl = completions_to_stringlist (matches); strvec_dispose (matches); } diff --git a/builtins/declare.def b/builtins/declare.def index 8b9b850..a634e7c 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -1,7 +1,7 @@ This file is declare.def, from which is created declare.c. It implements the builtins "declare" and "local" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -22,7 +22,7 @@ $PRODUCES declare.c $BUILTIN declare $FUNCTION declare_builtin -$SHORT_DOC declare [-aAfFgilrtux] [-p] [name[=value] ...] +$SHORT_DOC declare [-aAfFgilnrtux] [-p] [name[=value] ...] Set variable values and attributes. Declare variables and give them attributes. If no NAMEs are given, @@ -41,6 +41,7 @@ Options which set attributes: -A to make NAMEs associative arrays (if supported) -i to make NAMEs have the `integer' attribute -l to convert NAMEs to lower case on assignment + -n make NAME a reference to the variable named by its value -r to make NAMEs readonly -t to make NAMEs have the `trace' attribute -u to convert NAMEs to upper case on assignment @@ -55,7 +56,8 @@ When used in a function, `declare' makes NAMEs local, as with the `local' command. The `-g' option suppresses this behavior. Exit Status: -Returns success unless an invalid option is supplied or an error occurs. +Returns success unless an invalid option is supplied or a variable +assignment error occurs. $END $BUILTIN typeset @@ -110,8 +112,8 @@ Local variables can only be used within a function; they are visible only to the function where they are defined and its children. Exit Status: -Returns success unless an invalid option is supplied, an error occurs, -or the shell is not executing a function. +Returns success unless an invalid option is supplied, a variable +assignment error occurs, or the shell is not executing a function. $END int local_builtin (list) @@ -127,9 +129,9 @@ local_builtin (list) } #if defined (ARRAY_VARS) -# define DECLARE_OPTS "+acfgilprtuxAF" +# define DECLARE_OPTS "+acfgilnprtuxAF" #else -# define DECLARE_OPTS "+cfgilprtuxF" +# define DECLARE_OPTS "+cfgilnprtuxF" #endif /* The workhorse function. */ @@ -139,12 +141,13 @@ declare_internal (list, local_var) int local_var; { int flags_on, flags_off, *flags; - int any_failed, assign_error, pflag, nodefs, opt, mkglobal; + int any_failed, assign_error, pflag, nodefs, opt, mkglobal, onref, offref; char *t, *subscript_start; - SHELL_VAR *var; + SHELL_VAR *var, *refvar, *v; FUNCTION_DEF *shell_fn; flags_on = flags_off = any_failed = assign_error = pflag = nodefs = mkglobal = 0; + refvar = (SHELL_VAR *)NULL; reset_internal_getopt (); while ((opt = internal_getopt (list, DECLARE_OPTS)) != EOF) { @@ -186,6 +189,9 @@ declare_internal (list, local_var) case 'i': *flags |= att_integer; break; + case 'n': + *flags |= att_nameref; + break; case 'r': *flags |= att_readonly; break; @@ -258,7 +264,10 @@ declare_internal (list, local_var) { for (any_failed = 0; list; list = list->next) { - pflag = show_name_attributes (list->word->word, nodefs); + if (flags_on & att_function) + pflag = show_func_attributes (list->word->word, nodefs); + else + pflag = show_name_attributes (list->word->word, nodefs); if (pflag) { sh_notfound (list->word->word); @@ -296,6 +305,28 @@ declare_internal (list, local_var) else value = ""; + /* Do some lexical error checking on the LHS and RHS of the assignment + that is specific to nameref variables. */ + if (flags_on & att_nameref) + { +#if defined (ARRAY_VARIABLES) + if (valid_array_reference (name)) + { + builtin_error (_("%s: reference variable cannot be an array"), name); + assign_error++; + NEXT_VARIABLE (); + } + else +#endif + /* disallow self references at global scope */ + if (STREQ (name, value) && variable_context == 0) + { + builtin_error (_("%s: nameref variable self references not allowed"), name); + assign_error++; + NEXT_VARIABLE (); + } + } + #if defined (ARRAY_VARS) compound_array_assign = simple_array_assign = 0; subscript_start = (char *)NULL; @@ -334,16 +365,17 @@ declare_internal (list, local_var) /* XXX - this has consequences when we're making a local copy of a variable that was in the temporary environment. Watch out for this. */ + refvar = (SHELL_VAR *)NULL; if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0)) { #if defined (ARRAY_VARS) if (flags_on & att_assoc) var = make_local_assoc_variable (name); else if ((flags_on & att_array) || making_array_special) - var = make_local_array_variable (name); + var = make_local_array_variable (name, making_array_special); else #endif - var = make_local_variable (name); + var = make_local_variable (name); /* sets att_invisible for new vars */ if (var == 0) { any_failed++; @@ -415,6 +447,33 @@ declare_internal (list, local_var) else /* declare -[aAirx] name [name...] */ { /* Non-null if we just created or fetched a local variable. */ + /* Here's what ksh93 seems to do. If we are modifying an existing + nameref variable, we don't follow the nameref chain past the last + nameref, and we set the nameref variable's value so future + references to that variable will return the value of the variable + we're assigning right now. */ + if (var == 0 && (flags_on & att_nameref)) + { + /* See if we are trying to modify an existing nameref variable */ + var = mkglobal ? find_global_variable_last_nameref (name) : find_variable_last_nameref (name); + if (var && nameref_p (var) == 0) + var = 0; + } + /* However, if we're turning off the nameref attribute on an existing + nameref variable, we first follow the nameref chain to the end, + modify the value of the variable this nameref variable references, + *CHANGING ITS VALUE AS A SIDE EFFECT* then turn off the nameref + flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */ + else if (var == 0 && (flags_off & att_nameref)) + { + /* See if we are trying to modify an existing nameref variable */ + refvar = mkglobal ? find_global_variable_last_nameref (name) : find_variable_last_nameref (name); + if (refvar && nameref_p (refvar) == 0) + refvar = 0; + if (refvar) + var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); + } + if (var == 0) var = mkglobal ? find_global_variable (name) : find_variable (name); @@ -422,20 +481,40 @@ declare_internal (list, local_var) { #if defined (ARRAY_VARS) if (flags_on & att_assoc) - var = make_new_assoc_variable (name); + { + var = make_new_assoc_variable (name); + if (offset == 0) + VSETATTR (var, att_invisible); + } else if ((flags_on & att_array) || making_array_special) - var = make_new_array_variable (name); + { + var = make_new_array_variable (name); + if (offset == 0) + VSETATTR (var, att_invisible); + } else #endif if (offset) - var = bind_variable (name, "", 0); + var = mkglobal ? bind_global_variable (name, "", 0) : bind_variable (name, "", 0); else { - var = bind_variable (name, (char *)NULL, 0); + var = mkglobal ? bind_global_variable (name, (char *)NULL, 0) : bind_variable (name, (char *)NULL, 0); VSETATTR (var, att_invisible); } } + /* Can't take an existing array variable and make it a nameref */ + else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref)) + { + builtin_error (_("%s: reference variable cannot be an array"), name); + assign_error++; + NEXT_VARIABLE (); + } + else if (flags_on & att_nameref) + { + /* ksh93 compat: turning on nameref attribute turns off -ilu */ + VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase); + } /* Cannot use declare +r to turn off readonly attribute. */ if (readonly_p (var) && (flags_off & att_readonly)) @@ -501,6 +580,25 @@ declare_internal (list, local_var) var = convert_var_to_array (var); #endif /* ARRAY_VARS */ + /* XXX - we note that we are turning on nameref attribute and defer + setting it until the assignment has been made so we don't do an + inadvertent nameref lookup. Might have to do the same thing for + flags_off&att_nameref. */ + /* XXX - ksh93 makes it an error to set a readonly nameref variable + using a single typeset command. */ + onref = (flags_on & att_nameref); + flags_on &= ~att_nameref; +#if defined (ARRAY_VARS) + if (array_p (var) || assoc_p (var) + || (offset && compound_array_assign) + || simple_array_assign) + onref = 0; /* array variables may not be namerefs */ +#endif + + /* ksh93 seems to do this */ + offref = (flags_off & att_nameref); + flags_off &= ~att_nameref; + VSETATTR (var, flags_on); VUNSETATTR (var, flags_off); @@ -516,6 +614,8 @@ declare_internal (list, local_var) if (var == 0) /* some kind of assignment error */ { assign_error++; + flags_on |= onref; + flags_off |= offref; NEXT_VARIABLE (); } } @@ -532,7 +632,19 @@ declare_internal (list, local_var) /* bind_variable_value duplicates the essential internals of bind_variable() */ if (offset) - bind_variable_value (var, value, aflags); + { + if (onref) + aflags |= ASS_NAMEREF; + v = bind_variable_value (var, value, aflags); + if (v == 0 && onref) + { + sh_invalidid (value); + assign_error++; + /* XXX - unset this variable? or leave it as normal var? */ + delete_var (var->name, mkglobal ? global_variables : shell_variables); + NEXT_VARIABLE (); + } + } /* If we found this variable in the temporary environment, as with `var=value declare -x var', make sure it is treated identically @@ -562,6 +674,17 @@ declare_internal (list, local_var) } } + /* Turn on nameref attribute we deferred above. */ + /* XXX - should we turn on the noassign attribute for consistency with + ksh93 when we turn on the nameref attribute? */ + VSETATTR (var, onref); + flags_on |= onref; + VUNSETATTR (var, offref); + flags_off |= offref; + /* Yuck. ksh93 compatibility */ + if (refvar) + VUNSETATTR (refvar, flags_off); + stupidly_hack_special_variables (name); NEXT_VARIABLE (); diff --git a/builtins/echo.def b/builtins/echo.def index 62c6199..f473826 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -38,7 +38,8 @@ $DEPENDS_ON V9_ECHO $SHORT_DOC echo [-neE] [arg ...] Write arguments to the standard output. -Display the ARGs on the standard output followed by a newline. +Display the ARGs, separated by a single space character and followed by a +newline, on the standard output. Options: -n do not append a newline @@ -50,6 +51,7 @@ Options: \b backspace \c suppress further output \e escape character + \E escape character \f form feed \n new line \r carriage return diff --git a/builtins/eval.def b/builtins/eval.def index ee9a23d..5e824c9 100644 --- a/builtins/eval.def +++ b/builtins/eval.def @@ -53,6 +53,5 @@ eval_builtin (list) return (EX_USAGE); list = loptend; /* skip over possible `--' */ - /* Note that parse_and_execute () frees the string it is passed. */ - return (list ? parse_and_execute (string_list (list), "eval", SEVAL_NOHIST) : EXECUTION_SUCCESS); + return (list ? evalstring (string_list (list), "eval", SEVAL_NOHIST) : EXECUTION_SUCCESS); } diff --git a/builtins/evalfile.c b/builtins/evalfile.c index 4d69acb..058d99d 100644 --- a/builtins/evalfile.c +++ b/builtins/evalfile.c @@ -109,11 +109,16 @@ _evalfile (filename, flags) GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); # endif #endif - + fd = open (filename, O_RDONLY); if (fd < 0 || (fstat (fd, &finfo) == -1)) { + i = errno; + if (fd >= 0) + close (fd); + errno = i; + file_error_and_exit: if (((flags & FEVAL_ENOENTOK) == 0) || errno != ENOENT) file_error (filename); @@ -133,11 +138,13 @@ file_error_and_exit: if (S_ISDIR (finfo.st_mode)) { (*errfunc) (_("%s: is a directory"), filename); + close (fd); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0) { (*errfunc) (_("%s: not a regular file"), filename); + close (fd); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } @@ -146,6 +153,7 @@ file_error_and_exit: if (file_size != finfo.st_size || file_size + 1 < file_size) { (*errfunc) (_("%s: file is too large"), filename); + close (fd); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } @@ -251,7 +259,7 @@ file_error_and_exit: if (flags & FEVAL_BUILTIN) result = EXECUTION_SUCCESS; - return_val = setjmp (return_catch); + return_val = setjmp_nosigs (return_catch); /* If `return' was seen outside of a function, but in the script, then force parse_and_execute () to clean up. */ diff --git a/builtins/evalstring.c b/builtins/evalstring.c index 333a56e..ce5b4d6 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -1,6 +1,6 @@ /* evalstring.c - evaluate a string as one or more shell commands. */ -/* Copyright (C) 1996-2010 Free Software Foundation, Inc. +/* Copyright (C) 1996-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -61,7 +61,7 @@ extern int errno; #define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) extern int indirection_level, subshell_environment; -extern int line_number; +extern int line_number, line_number_for_err_trap; extern int current_token, shell_eof_token; extern int last_command_exit_value; extern int running_trap; @@ -69,7 +69,9 @@ extern int loop_level; extern int executing_list; extern int comsub_ignore_return; extern int posixly_correct; +extern int return_catch_flag, return_catch_value; extern sh_builtin_func_t *this_shell_builtin; +extern char *the_printed_command_except_trap; int parse_and_execute_level = 0; @@ -86,6 +88,14 @@ set_history_remembering () } #endif +static void +restore_lastcom (x) + char *x; +{ + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = x; +} + /* How to force parse_and_execute () to clean up after itself. */ void parse_and_execute_cleanup () @@ -108,7 +118,7 @@ parse_prologue (string, flags, tag) int flags; char *tag; { - char *orig_string; + char *orig_string, *lastcom; int x; orig_string = string; @@ -118,6 +128,7 @@ parse_prologue (string, flags, tag) unwind_protect_jmp_buf (top_level); unwind_protect_int (indirection_level); unwind_protect_int (line_number); + unwind_protect_int (line_number_for_err_trap); unwind_protect_int (loop_level); unwind_protect_int (executing_list); unwind_protect_int (comsub_ignore_return); @@ -140,8 +151,17 @@ parse_prologue (string, flags, tag) x = get_current_prompt_level (); add_unwind_protect (set_current_prompt_level, x); } - + + if (the_printed_command_except_trap) + { + lastcom = savestring (the_printed_command_except_trap); + add_unwind_protect (restore_lastcom, lastcom); + } + add_unwind_protect (pop_stream, (char *)NULL); + if (parser_expanding_alias ()) + add_unwind_protect (parser_restore_alias, (char *)NULL); + if (orig_string && ((flags & SEVAL_NOFREE) == 0)) add_unwind_protect (xfree, orig_string); end_unwind_frame (); @@ -175,6 +195,7 @@ parse_and_execute (string, from_file, flags) int code, lreset; volatile int should_jump_to_top_level, last_result; COMMAND *volatile command; + volatile sigset_t pe_sigmask; parse_prologue (string, flags, PE_TAG); @@ -182,11 +203,21 @@ parse_and_execute (string, from_file, flags) lreset = flags & SEVAL_RESETLINE; +#if defined (HAVE_POSIX_SIGNALS) + /* If we longjmp and are going to go on, use this to restore signal mask */ + sigemptyset (&pe_sigmask); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &pe_sigmask); +#endif + /* Reset the line number if the caller wants us to. If we don't reset the line number, we have to subtract one, because we will add one just before executing the next command (resetting the line number sets it to 0; the first line number is 1). */ push_stream (lreset); + if (parser_expanding_alias ()) + /* push current shell_input_line */ + parser_save_alias (); + if (lreset == 0) line_number--; @@ -209,15 +240,28 @@ parse_and_execute (string, from_file, flags) /* Provide a location for functions which `longjmp (top_level)' to jump to. This prevents errors in substitution from restarting the reader loop directly, for example. */ - code = setjmp (top_level); + code = setjmp_nosigs (top_level); if (code) { should_jump_to_top_level = 0; switch (code) { - case FORCE_EOF: case ERREXIT: + /* variable_context -> 0 is what eval.c:reader_loop() does in + these circumstances. Don't bother with cleanup here because + we don't want to run the function execution cleanup stuff + that will cause pop_context and other functions to run. + XXX - change that if we want the function context to be + unwound. */ + if (exit_immediately_on_error && variable_context) + { + discard_unwind_frame ("pe_dispose"); + variable_context = 0; /* not in a function */ + } + should_jump_to_top_level = 1; + goto out; + case FORCE_EOF: case EXITPROG: if (command) run_unwind_frame ("pe_dispose"); @@ -240,6 +284,9 @@ parse_and_execute (string, from_file, flags) #if 0 dispose_command (command); /* pe_dispose does this */ #endif +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &pe_sigmask, (sigset_t *)NULL); +#endif continue; } @@ -308,7 +355,8 @@ parse_and_execute (string, from_file, flags) command->value.Simple->words == 0 && command->value.Simple->redirects && command->value.Simple->redirects->next == 0 && - command->value.Simple->redirects->instruction == r_input_direction) + command->value.Simple->redirects->instruction == r_input_direction && + command->value.Simple->redirects->redirector.dest == 0) { int r; r = cat_file (command->value.Simple->redirects); @@ -317,7 +365,6 @@ parse_and_execute (string, from_file, flags) else last_result = execute_command_internal (command, 0, NO_PIPE, NO_PIPE, bitmap); - dispose_command (command); dispose_fd_bitmap (bitmap); discard_unwind_frame ("pe_dispose"); @@ -377,15 +424,26 @@ parse_string (string, from_file, flags, endp) volatile int should_jump_to_top_level; COMMAND *volatile command, *oglobal; char *ostring; + volatile sigset_t ps_sigmask; parse_prologue (string, flags, PS_TAG); +#if defined (HAVE_POSIX_SIGNALS) + /* If we longjmp and are going to go on, use this to restore signal mask */ + sigemptyset (&ps_sigmask); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &ps_sigmask); +#endif + +/* itrace("parse_string: `%s'", string); */ /* Reset the line number if the caller wants us to. If we don't reset the line number, we have to subtract one, because we will add one just before executing the next command (resetting the line number sets it to 0; the first line number is 1). */ push_stream (0); - + if (parser_expanding_alias ()) + /* push current shell_input_line */ + parser_save_alias (); + code = should_jump_to_top_level = 0; oglobal = global_command; ostring = string; @@ -402,7 +460,7 @@ parse_string (string, from_file, flags, endp) /* Provide a location for functions which `longjmp (top_level)' to jump to. */ - code = setjmp (top_level); + code = setjmp_nosigs (top_level); if (code) { @@ -424,6 +482,9 @@ itrace("parse_string: longjmp executed: code = %d", code); goto out; default: +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &ps_sigmask, (sigset_t *)NULL); +#endif command_error ("parse_string", CMDERR_BADJUMP, code, 0); break; } @@ -506,3 +567,49 @@ cat_file (r) return (rval); } + +int +evalstring (string, from_file, flags) + char *string; + const char *from_file; + int flags; +{ + volatile int r, rflag, rcatch; + + rcatch = 0; + rflag = return_catch_flag; + /* If we are in a place where `return' is valid, we have to catch + `eval "... return"' and make sure parse_and_execute cleans up. Then + we can trampoline to the previous saved return_catch location. */ + if (rflag) + { + begin_unwind_frame ("evalstring"); + + unwind_protect_int (return_catch_flag); + unwind_protect_jmp_buf (return_catch); + + return_catch_flag++; /* increment so we have a counter */ + rcatch = setjmp_nosigs (return_catch); + } + + if (rcatch) + { + parse_and_execute_cleanup (); + r = return_catch_value; + } + else + /* Note that parse_and_execute () frees the string it is passed. */ + r = parse_and_execute (string, from_file, flags); + + if (rflag) + { + run_unwind_frame ("evalstring"); + if (rcatch && return_catch_flag) + { + return_catch_value = r; + longjmp (return_catch, 1); + } + } + + return (r); +} diff --git a/builtins/exec.def b/builtins/exec.def index 5d1e625..9cf76d5 100644 --- a/builtins/exec.def +++ b/builtins/exec.def @@ -1,7 +1,7 @@ This file is exec.def, from which is created exec.c. It implements the builtin "exec" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -144,7 +144,7 @@ exec_builtin (list) args = strvec_from_word_list (list, 1, 0, (int *)NULL); /* A command with a slash anywhere in its name is not looked up in $PATH. */ - command = absolute_program (args[0]) ? args[0] : search_for_command (args[0]); + command = absolute_program (args[0]) ? args[0] : search_for_command (args[0], 1); if (command == 0) { diff --git a/builtins/fc.def b/builtins/fc.def index 9b298cb..cf6b72c 100644 --- a/builtins/fc.def +++ b/builtins/fc.def @@ -1,7 +1,7 @@ This file is fc.def, from which is created fc.c. It implements the builtin "fc" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,7 +52,7 @@ $END #include #if defined (HISTORY) -#ifndef _MINIX +#if defined (HAVE_SYS_PARAM_H) # include #endif #include "../bashtypes.h" @@ -85,7 +85,7 @@ $END extern int errno; #endif /* !errno */ -extern int current_command_line_count, saved_command_line_count; +extern int current_command_line_count; extern int literal_history; extern int posixly_correct; extern int subshell_environment, interactive_shell; @@ -173,7 +173,7 @@ fc_builtin (list) register int i; register char *sep; int numbering, reverse, listing, execute; - int histbeg, histend, last_hist, retval, opt, rh; + int histbeg, histend, last_hist, retval, opt, rh, real_last; FILE *stream; REPL *rlist, *rl; char *ename, *command, *newcom, *fcedit; @@ -303,6 +303,14 @@ fc_builtin (list) rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); last_hist = i - rh - hist_last_line_added; + /* Make sure that real_last is calculated the same way here and in + fc_gethnum. The return value from fc_gethnum is treated specially if + it is == real_last and we are listing commands. */ + real_last = i; + /* back up from the end to the last non-null history entry */ + while (hlist[real_last] == 0 && real_last > 0) + real_last--; + /* XXX */ if (i == last_hist && hlist[last_hist] == 0) while (last_hist >= 0 && hlist[last_hist] == 0) @@ -320,6 +328,8 @@ fc_builtin (list) if (list) histend = fc_gethnum (list->word->word, hlist); + else if (histbeg == real_last) + histend = listing ? real_last : histbeg; else histend = listing ? last_hist : histbeg; } @@ -475,7 +485,7 @@ fc_gethnum (command, hlist) HIST_ENTRY **hlist; { int sign, n, clen, rh; - register int i, j, last_hist; + register int i, j, last_hist, real_last; register char *s; sign = 1; @@ -503,12 +513,17 @@ fc_gethnum (command, hlist) if (last_hist < 0) return (-1); + real_last = i; i = last_hist; /* No specification defaults to most recent command. */ if (command == NULL) return (i); + /* back up from the end to the last non-null history entry */ + while (hlist[real_last] == 0 && real_last > 0) + real_last--; + /* Otherwise, there is a specification. It can be a number relative to the current position, or an absolute history number. */ s = command; @@ -533,7 +548,7 @@ fc_gethnum (command, hlist) return (n < 0 ? 0 : n); } else if (n == 0) - return (i); + return ((sign == -1) ? real_last : i); else { n -= history_base; diff --git a/builtins/gen-helpfiles.c b/builtins/gen-helpfiles.c new file mode 100644 index 0000000..fac34ed --- /dev/null +++ b/builtins/gen-helpfiles.c @@ -0,0 +1,197 @@ +/* gen-helpfiles - create files containing builtin help text */ + +/* Copyright (C) 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 . +*/ + +/* This links with a specially-generated version of builtins.c and takes + the long_doc members of each struct builtin element and writes those to + the file named by the `handle' member of the struct builtin element. */ + +#if !defined (CROSS_COMPILING) +# include +#else /* CROSS_COMPILING */ +/* A conservative set of defines based on POSIX/SUS3/XPG6 */ +# define HAVE_UNISTD_H +# define HAVE_STRING_H +# define HAVE_STDLIB_H + +# define HAVE_RENAME +#endif /* CROSS_COMPILING */ + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#ifndef _MINIX +# include "../bashtypes.h" +# if defined (HAVE_SYS_FILE_H) +# include +# endif +#endif + +#include "posixstat.h" +#include "filecntl.h" + +#include "../bashansi.h" +#include +#include + +#include "stdc.h" + +#include "../builtins.h" +#include "tmpbuiltins.h" + +#if defined (USING_BASH_MALLOC) +#undef xmalloc +#undef xrealloc +#undef xfree + +#undef free /* defined in xmalloc.h */ +#endif + +#ifndef errno +extern int errno; +#endif + +#if !defined (__STDC__) && !defined (strcpy) +extern char *strcpy (); +#endif /* !__STDC__ && !strcpy */ + +#define whitespace(c) (((c) == ' ') || ((c) == '\t')) + +/* Flag values that builtins can have. */ +#define BUILTIN_FLAG_SPECIAL 0x01 +#define BUILTIN_FLAG_ASSIGNMENT 0x02 +#define BUILTIN_FLAG_POSIX_BUILTIN 0x04 + +#define BASE_INDENT 4 + +/* Non-zero means to produce separate help files for each builtin, named by + the builtin name, in `./helpfiles'. */ +int separate_helpfiles = 0; + +/* Non-zero means to create single C strings for each `longdoc', with + embedded newlines, for ease of translation. */ +int single_longdoc_strings = 1; + +/* The name of a directory into which the separate external help files will + eventually be installed. */ +char *helpfile_directory; + +/* Forward declarations. */ + +int write_helpfiles __P((struct builtin *)); + +/* For each file mentioned on the command line, process it and + write the information to STRUCTFILE and EXTERNFILE, while + creating the production file if neccessary. */ +int +main (argc, argv) + int argc; + char **argv; +{ + int arg_index = 1; + + while (arg_index < argc && argv[arg_index][0] == '-') + { + char *arg = argv[arg_index++]; + + if (strcmp (arg, "-noproduction") == 0) + ; + else if (strcmp (arg, "-H") == 0) + helpfile_directory = argv[arg_index++]; + else if (strcmp (arg, "-S") == 0) + single_longdoc_strings = 0; + else + { + fprintf (stderr, "%s: Unknown flag %s.\n", argv[0], arg); + exit (2); + } + } + + write_helpfiles(shell_builtins); + + exit (0); +} + +/* Write DOCUMENTATION to STREAM, perhaps surrounding it with double-quotes + and quoting special characters in the string. Handle special things for + internationalization (gettext) and the single-string vs. multiple-strings + issues. */ +void +write_documentation (stream, documentation, indentation) + FILE *stream; + char *documentation; + int indentation; +{ + if (stream == 0) + return; + + if (documentation) + fprintf (stream, "%*s%s\n", indentation, " ", documentation); +} + +int +write_helpfiles (builtins) + struct builtin *builtins; +{ + char *helpfile, *bname, *fname; + FILE *helpfp; + int i, hdlen; + struct builtin b; + + i = mkdir ("helpfiles", 0777); + if (i < 0 && errno != EEXIST) + { + fprintf (stderr, "write_helpfiles: helpfiles: cannot create directory\n"); + return -1; + } + + hdlen = strlen ("helpfiles/"); + for (i = 0; i < num_shell_builtins; i++) + { + b = builtins[i]; + + fname = (char *)b.handle; + helpfile = (char *)malloc (hdlen + strlen (fname) + 1); + if (helpfile == 0) + { + fprintf (stderr, "gen-helpfiles: cannot allocate memory\n"); + exit (1); + } + sprintf (helpfile, "helpfiles/%s", fname); + + helpfp = fopen (helpfile, "w"); + if (helpfp == 0) + { + fprintf (stderr, "write_helpfiles: cannot open %s\n", helpfile); + free (helpfile); + continue; + } + + write_documentation (helpfp, b.long_doc[0], 4); + + fflush (helpfp); + fclose (helpfp); + free (helpfile); + } + return 0; +} diff --git a/builtins/hash.def b/builtins/hash.def index 6724ad1..85ef364 100644 --- a/builtins/hash.def +++ b/builtins/hash.def @@ -1,7 +1,7 @@ This file is hash.def, from which is created hash.c. It implements the builtin "hash" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,7 +31,7 @@ no arguments are given, information about remembered commands is displayed. Options: -d forget the remembered location of each NAME -l display in a format that may be reused as input - -p pathname use PATHNAME is the full pathname of NAME + -p pathname use PATHNAME as the full pathname of NAME -r forget all remembered locations -t print the remembered location of each NAME, preceding each location with the corresponding NAME if multiple @@ -276,6 +276,7 @@ list_hashed_filename_targets (list, fmt) printf ("%s\t", l->word->word); printf ("%s\n", target); } + free (target); } return (all_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); diff --git a/builtins/help.def b/builtins/help.def index 8fb0e2b..1894f17 100644 --- a/builtins/help.def +++ b/builtins/help.def @@ -1,7 +1,7 @@ This file is help.def, from which is created help.c. It implements the builtin "help" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -92,7 +92,7 @@ help_builtin (list) { register int i; char *pattern, *name; - int plen, match_found, sflag, dflag, mflag; + int plen, match_found, sflag, dflag, mflag, m, pass, this_found; dflag = sflag = mflag = 0; reset_internal_getopt (); @@ -137,29 +137,43 @@ help_builtin (list) pattern = list->word->word; plen = strlen (pattern); - for (i = 0; name = shell_builtins[i].name; i++) + for (pass = 1, this_found = 0; pass < 3; pass++) { - QUIT; - if ((strncmp (pattern, name, plen) == 0) || - (strmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH)) + for (i = 0; name = shell_builtins[i].name; i++) { - match_found++; - if (dflag) - { - show_desc (name, i); - continue; - } - else if (mflag) - { - show_manpage (name, i); - continue; - } - - printf ("%s: %s\n", name, _(shell_builtins[i].short_doc)); - - if (sflag == 0) - show_longdoc (i); + QUIT; + + /* First pass: look for exact string or pattern matches. + Second pass: look for prefix matches like bash-4.2 */ + if (pass == 1) + m = (strcmp (pattern, name) == 0) || + (strmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH); + else + m = strncmp (pattern, name, plen) == 0; + + if (m) + { + this_found = 1; + match_found++; + if (dflag) + { + show_desc (name, i); + continue; + } + else if (mflag) + { + show_manpage (name, i); + continue; + } + + printf ("%s: %s\n", name, _(shell_builtins[i].short_doc)); + + if (sflag == 0) + show_longdoc (i); + } } + if (pass == 1 && this_found == 1) + break; } } @@ -209,7 +223,7 @@ show_longdoc (i) zcatfd (fd, 1, doc[0]); close (fd); } - else + else if (doc) for (j = 0; doc[j]; j++) printf ("%*s%s\n", BASE_INDENT, " ", _(doc[j])); } @@ -327,6 +341,140 @@ show_manpage (name, i) } static void +dispcolumn (i, buf, bufsize, width, height) + int i; + char *buf; + size_t bufsize; + int width, height; +{ + int j; + int displen; + char *helpdoc; + + /* first column */ + helpdoc = _(shell_builtins[i].short_doc); + + buf[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (buf + 1, helpdoc, width - 2); + buf[width - 2] = '>'; /* indicate truncation */ + buf[width - 1] = '\0'; + printf ("%s", buf); + if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) + { + printf ("\n"); + return; + } + + displen = strlen (buf); + /* two spaces */ + for (j = displen; j < width; j++) + putc (' ', stdout); + + /* second column */ + helpdoc = _(shell_builtins[i+height].short_doc); + + buf[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (buf + 1, helpdoc, width - 3); + buf[width - 3] = '>'; /* indicate truncation */ + buf[width - 2] = '\0'; + + printf ("%s\n", buf); +} + +#if defined (HANDLE_MULTIBYTE) +static void +wdispcolumn (i, buf, bufsize, width, height) + int i; + char *buf; + size_t bufsize; + int width, height; +{ + int j; + int displen; + char *helpdoc; + wchar_t *wcstr; + size_t slen, n; + int wclen; + + /* first column */ + helpdoc = _(shell_builtins[i].short_doc); + + wcstr = 0; + slen = mbstowcs ((wchar_t *)0, helpdoc, 0); + if (slen == -1) + { + dispcolumn (i, buf, bufsize, width, height); + return; + } + + /* No bigger than the passed max width */ + if (slen >= width) + slen = width - 2; + wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (width + 2)); + n = mbstowcs (wcstr+1, helpdoc, slen + 1); + wcstr[n+1] = L'\0'; + + /* Turn tabs and newlines into spaces for column display, since wcwidth + returns -1 for them */ + for (j = 1; j < n; j++) + if (wcstr[j] == L'\n' || wcstr[j] == L'\t') + wcstr[j] = L' '; + + displen = wcsnwidth (wcstr+1, slen, width - 2) + 1; /* +1 for ' ' or '*' */ + + wcstr[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? L' ' : L'*'; + + /* This assumes each wide char takes up one column position when displayed */ + wcstr[width - 2] = L'>'; /* indicate truncation */ + wcstr[width - 1] = L'\0'; + + printf ("%ls", wcstr); + if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) + { + printf ("\n"); + return; + } + + /* at least one space */ + for (j = displen; j < width; j++) + putc (' ', stdout); + + /* second column */ + helpdoc = _(shell_builtins[i+height].short_doc); + slen = mbstowcs ((wchar_t *)0, helpdoc, 0); + if (slen == -1) + { + /* for now */ + printf ("%c%s\n", (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*', helpdoc); + return; + } + + /* Reuse wcstr since it is already width wide chars long */ + if (slen >= width) + slen = width - 2; + n = mbstowcs (wcstr+1, helpdoc, slen + 1); + wcstr[n+1] = L'\0'; /* make sure null-terminated */ + + /* Turn tabs and newlines into spaces for column display */ + for (j = 1; j < n; j++) + if (wcstr[j] == L'\n' || wcstr[j] == L'\t') + wcstr[j] = L' '; + + displen = wcsnwidth (wcstr+1, slen, width - 2); + + wcstr[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? L' ' : L'*'; + + /* This assumes each wide char takes up one column position when displayed */ + wcstr[width - 3] = L'>'; /* indicate truncation */ + wcstr[width - 2] = L'\0'; + + printf ("%ls\n", wcstr); + + free (wcstr); +} +#endif /* HANDLE_MULTIBYTE */ + +static void show_builtin_command_help () { int i, j; @@ -358,28 +506,12 @@ A star (*) next to a name means that the command is disabled.\n\ { QUIT; - /* first column */ - blurb[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? ' ' : '*'; - strncpy (blurb + 1, _(shell_builtins[i].short_doc), width - 2); - blurb[width - 2] = '>'; /* indicate truncation */ - blurb[width - 1] = '\0'; - printf ("%s", blurb); - if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) - { - printf ("\n"); - break; - } - - /* two spaces */ - for (j = strlen (blurb); j < width; j++) - putc (' ', stdout); - - /* second column */ - blurb[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*'; - strncpy (blurb + 1, _(shell_builtins[i+height].short_doc), width - 3); - blurb[width - 3] = '>'; /* indicate truncation */ - blurb[width - 2] = '\0'; - printf ("%s\n", blurb); +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + wdispcolumn (i, blurb, sizeof (blurb), width, height); + else +#endif + dispcolumn (i, blurb, sizeof (blurb), width, height); } } #endif /* HELP_BUILTIN */ diff --git a/builtins/history.def b/builtins/history.def index e8249e9..4cf7308 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -324,9 +324,10 @@ push_history (list) If you don't want history -s to remove the compound command from the history, change #if 0 to #if 1 below. */ #if 0 - if (hist_last_line_pushed == 0 && hist_last_line_added && bash_delete_last_history () == 0) + if (remember_on_history && hist_last_line_pushed == 0 && + hist_last_line_added && bash_delete_last_history () == 0) #else - if (hist_last_line_pushed == 0 && + if (remember_on_history && hist_last_line_pushed == 0 && (hist_last_line_added || (current_command_line_count > 0 && current_command_first_line_saved && command_oriented_history)) && bash_delete_last_history () == 0) diff --git a/builtins/jobs.def b/builtins/jobs.def index b14e91f..47da58e 100644 --- a/builtins/jobs.def +++ b/builtins/jobs.def @@ -31,7 +31,7 @@ Without options, the status of all active jobs is displayed. Options: -l lists process IDs in addition to the normal information - -n list only processes that have changed status since the last + -n lists only processes that have changed status since the last notification -p lists process IDs only -r restrict output to running jobs diff --git a/builtins/kill.def b/builtins/kill.def index adf022c..2e68f03 100644 --- a/builtins/kill.def +++ b/builtins/kill.def @@ -57,6 +57,8 @@ $END #include "../bashansi.h" #include "../bashintl.h" +#include + #include "../shell.h" #include "../trap.h" #include "../jobs.h" @@ -92,7 +94,7 @@ kill_builtin (list) if (list == 0) { builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } any_succeeded = listing = saw_signal = 0; @@ -137,7 +139,7 @@ kill_builtin (list) else if (ISOPTION (word, '?')) { builtin_usage (); - return (EXECUTION_SUCCESS); + return (EX_USAGE); } /* If this is a signal specification then process it. We only process the first one seen; other arguments may signify process groups (e.g, @@ -166,7 +168,7 @@ kill_builtin (list) if (list == 0) { builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } while (list) diff --git a/builtins/mapfile.def b/builtins/mapfile.def index a5064a3..2e6a643 100644 --- a/builtins/mapfile.def +++ b/builtins/mapfile.def @@ -2,7 +2,7 @@ This file is mapfile.def, from which is created mapfile.c. It implements the builtin "mapfile" in Bash. Copyright (C) 2005-2006 Rocky Bernstein for Free Software Foundation, Inc. -Copyright (C) 2008-2010 Free Software Foundation, Inc. +Copyright (C) 2008-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -125,7 +125,7 @@ run_callback (callback, curindex, curline) #endif snprintf (execstr, execlen, "%s %d %s", callback, curindex, qline); free (qline); - return parse_and_execute (execstr, NULL, flags); + return evalstring (execstr, NULL, flags); } static void @@ -172,6 +172,8 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n builtin_error (_("%s: not an indexed array"), array_name); return (EXECUTION_FAILURE); } + else if (invisible_p (entry)) + VUNSETATTR (entry, att_invisible); /* no longer invisible */ if (flags & MAPF_CLEARARRAY) array_flush (array_cell (entry)); @@ -193,7 +195,6 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n line_length = 0; /* Reset the buffer for bash own stream */ - interrupt_immediately++; for (array_index = origin, line_count = 1; zgetline (fd, &line, &line_length, unbuffered_read) != -1; array_index++) @@ -212,6 +213,8 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n zsyncfd (fd); } + /* XXX - bad things can happen if the callback modifies ENTRY, e.g., + unsetting it or changing it to a non-indexed-array type. */ bind_array_element (entry, array_index, line, 0); /* Have we exceeded # of lines to store? */ @@ -225,7 +228,6 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n if (unbuffered_read == 0) zsyncfd (fd); - interrupt_immediately--; return EXECUTION_SUCCESS; } diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c index cdfdfb1..15bb80f 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -1,7 +1,7 @@ /* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from a single source file called builtins.def. */ -/* Copyright (C) 1987-2010 Free Software Foundation, Inc. +/* Copyright (C) 1987-2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -85,6 +85,10 @@ int only_documentation = 0; /* Non-zero means to not do any productions. */ int inhibit_production = 0; +/* Non-zero means to not add functions (xxx_builtin) to the members of the + produced `struct builtin []' */ +int inhibit_functions = 0; + /* Non-zero means to produce separate help files for each builtin, named by the builtin name, in `./helpfiles'. */ int separate_helpfiles = 0; @@ -198,7 +202,7 @@ void remove_trailing_whitespace (); /* For each file mentioned on the command line, process it and write the information to STRUCTFILE and EXTERNFILE, while - creating the production file if neccessary. */ + creating the production file if necessary. */ int main (argc, argv) int argc; @@ -222,6 +226,8 @@ main (argc, argv) struct_filename = argv[arg_index++]; else if (strcmp (arg, "-noproduction") == 0) inhibit_production = 1; + else if (strcmp (arg, "-nofunctions") == 0) + inhibit_functions = 1; else if (strcmp (arg, "-document") == 0) documentation_file = fopen (documentation_filename, "w"); else if (strcmp (arg, "-D") == 0) @@ -322,10 +328,13 @@ main (argc, argv) fclose (externfile); } +#if 0 + /* This is now done by a different program */ if (separate_helpfiles) { write_helpfiles (saved_builtins); } +#endif if (documentation_file) { @@ -390,7 +399,7 @@ copy_string_array (array) return (copy); } -/* Add ELEMENT to ARRAY, growing the array if neccessary. */ +/* Add ELEMENT to ARRAY, growing the array if necessary. */ void array_add (element, array) char *element; @@ -519,6 +528,7 @@ extract_info (filename, structfile, externfile) if (nr == 0) { fprintf (stderr, "mkbuiltins: %s: skipping zero-length file\n", filename); + free (buffer); return; } @@ -537,7 +547,7 @@ extract_info (filename, structfile, externfile) { array_add (&buffer[i], defs->lines); - while (buffer[i] != '\n' && i < file_size) + while (i < file_size && buffer[i] != '\n') i++; buffer[i++] = '\0'; } @@ -1092,7 +1102,7 @@ char *structfile_header[] = { "/* This file is manufactured by ./mkbuiltins, and should not be", " edited by hand. See the source to mkbuiltins for details. */", "", - "/* Copyright (C) 1987-2009 Free Software Foundation, Inc.", + "/* Copyright (C) 1987-2012 Free Software Foundation, Inc.", "", " This file is part of GNU Bash, the Bourne Again SHell.", "", @@ -1138,7 +1148,7 @@ char *structfile_footer[] = { (char *)NULL }; -/* Write out any neccessary opening information for +/* Write out any necessary opening information for STRUCTFILE and EXTERNFILE. */ void write_file_headers (structfile, externfile) @@ -1224,7 +1234,7 @@ write_builtins (defs, structfile, externfile) { fprintf (structfile, " { \"%s\", ", builtin->name); - if (builtin->function) + if (builtin->function && inhibit_functions == 0) fprintf (structfile, "%s, ", builtin->function); else fprintf (structfile, "(sh_builtin_func_t *)0x0, "); @@ -1236,9 +1246,15 @@ write_builtins (defs, structfile, externfile) (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", document_name (builtin)); - fprintf - (structfile, " N_(\"%s\"), (char *)NULL },\n", - builtin->shortdoc ? builtin->shortdoc : builtin->name); + if (inhibit_functions) + fprintf + (structfile, " N_(\"%s\"), \"%s\" },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name, + document_name (builtin)); + else + fprintf + (structfile, " N_(\"%s\"), (char *)NULL },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name); } @@ -1247,7 +1263,7 @@ write_builtins (defs, structfile, externfile) long documentation strings. */ save_builtin (builtin); - /* Write out the matching #endif, if neccessary. */ + /* Write out the matching #endif, if necessary. */ if (builtin->dependencies) { if (externfile) @@ -1308,6 +1324,26 @@ write_longdocs (stream, builtins) } } +void +write_dummy_declarations (stream, builtins) + FILE *stream; + ARRAY *builtins; +{ + register int i; + BUILTIN_DESC *builtin; + + for (i = 0; structfile_header[i]; i++) + fprintf (stream, "%s\n", structfile_header[i]); + + for (i = 0; i < builtins->sindex; i++) + { + builtin = (BUILTIN_DESC *)builtins->array[i]; + + /* How to guarantee that no builtin is written more than once? */ + fprintf (stream, "int %s () { return (0); }\n", builtin->function); + } +} + /* Write an #ifdef string saying what needs to be defined (or not defined) in order to allow compilation of the code that will follow. STREAM is the stream to write the information to, @@ -1407,7 +1443,7 @@ write_documentation (stream, documentation, indentation, flags) base_indent = (string_array && single_longdoc_strings && filename_p == 0) ? BASE_INDENT : 0; - for (i = 0, texinfo = (flags & TEXINFO); line = documentation[i]; i++) + for (i = 0, texinfo = (flags & TEXINFO); documentation && (line = documentation[i]); i++) { /* Allow #ifdef's to be written out verbatim, but don't put them into separate help files. */ diff --git a/builtins/printf.def b/builtins/printf.def index 71a7c00..7f29126 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -35,14 +35,19 @@ sequences, which are converted and copied to the standard output; and format specifications, each of which causes printing of the next successive argument. -In addition to the standard format specifications described in printf(1) -and printf(3), printf interprets: +In addition to the standard format specifications described in printf(1), +printf interprets: %b expand backslash escape sequences in the corresponding argument %q quote the argument in a way that can be reused as shell input %(fmt)T output the date-time string resulting from using FMT as a format string for strftime(3) +The format is re-used as necessary to consume all of the arguments. If +there are fewer arguments than the format requires, extra format +specifications behave as if a zero value or null string, as appropriate, +had been supplied. + Exit Status: Returns success unless an invalid option is given or a write or assignment error occurs. @@ -158,7 +163,8 @@ extern int errno; else if (vbuf) \ vbuf[0] = 0; \ terminate_immediately--; \ - fflush (stdout); \ + if (ferror (stdout) == 0) \ + fflush (stdout); \ if (ferror (stdout)) \ { \ sh_wrerror (); \ @@ -460,7 +466,8 @@ printf_builtin (list) timefmt[2] = '\0'; } /* argument is seconds since the epoch with special -1 and -2 */ - arg = getintmax (); + /* default argument is equivalent to -1; special case */ + arg = garglist ? getintmax () : -1; if (arg == -1) secs = NOW; /* roughly date +%s */ else if (arg == -2) @@ -471,7 +478,12 @@ printf_builtin (list) sv_tz ("TZ"); /* XXX -- just make sure */ #endif tm = localtime (&secs); - n = strftime (timebuf, sizeof (timebuf), timefmt, tm); + if (tm == 0) + { + secs = 0; + tm = localtime (&secs); + } + n = tm ? strftime (timebuf, sizeof (timebuf), timefmt, tm) : 0; free (timefmt); if (n == 0) timebuf[0] = '\0'; @@ -483,8 +495,11 @@ printf_builtin (list) n = printstr (start, timebuf, strlen (timebuf), fieldwidth, precision); /* XXX - %s for now */ if (n < 0) { - sh_wrerror (); - clearerr (stdout); + if (ferror (stdout) == 0) + { + sh_wrerror (); + clearerr (stdout); + } PRETURN (EXECUTION_FAILURE); } break; @@ -524,8 +539,11 @@ printf_builtin (list) r = printstr (start, xp, rlen, fieldwidth, precision); if (r < 0) { - sh_wrerror (); - clearerr (stdout); + if (ferror (stdout) == 0) + { + sh_wrerror (); + clearerr (stdout); + } retval = EXECUTION_FAILURE; } free (xp); @@ -548,7 +566,7 @@ printf_builtin (list) else if (ansic_shouldquote (p)) xp = ansic_quote (p, 0, (int *)0); else - xp = sh_backslash_quote (p); + xp = sh_backslash_quote (p, 0, 1); if (xp) { /* Use printstr to get fieldwidth and precision right. */ @@ -647,8 +665,7 @@ printf_builtin (list) if (ferror (stdout)) { - sh_wrerror (); - clearerr (stdout); + /* PRETURN will print error message. */ PRETURN (EXECUTION_FAILURE); } } @@ -681,12 +698,9 @@ printstr (fmt, string, len, fieldwidth, precision) #endif int padlen, nc, ljust, i; int fw, pr; /* fieldwidth and precision */ + intmax_t mfw, mpr; -#if 0 - if (string == 0 || *string == '\0') -#else if (string == 0 || len == 0) -#endif return 0; #if 0 @@ -697,6 +711,8 @@ printstr (fmt, string, len, fieldwidth, precision) ljust = fw = 0; pr = -1; + mfw = 0; + mpr = -1; /* skip flags */ while (strchr (SKIP1, *fmt)) @@ -706,7 +722,7 @@ printstr (fmt, string, len, fieldwidth, precision) fmt++; } - /* get fieldwidth, if present */ + /* get fieldwidth, if present. rely on caller to clamp fieldwidth at INT_MAX */ if (*fmt == '*') { fmt++; @@ -719,9 +735,11 @@ printstr (fmt, string, len, fieldwidth, precision) } else if (DIGIT (*fmt)) { - fw = *fmt++ - '0'; + mfw = *fmt++ - '0'; while (DIGIT (*fmt)) - fw = (fw * 10) + (*fmt++ - '0'); + mfw = (mfw * 10) + (*fmt++ - '0'); + /* Error if fieldwidth > INT_MAX here? */ + fw = (mfw < 0 || mfw > INT_MAX) ? INT_MAX : mfw; } /* get precision, if present */ @@ -735,9 +753,11 @@ printstr (fmt, string, len, fieldwidth, precision) } else if (DIGIT (*fmt)) { - pr = *fmt++ - '0'; + mpr = *fmt++ - '0'; while (DIGIT (*fmt)) - pr = (pr * 10) + (*fmt++ - '0'); + mpr = (mpr * 10) + (*fmt++ - '0'); + /* Error if precision > INT_MAX here? */ + pr = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr; } } @@ -745,7 +765,7 @@ printstr (fmt, string, len, fieldwidth, precision) /* If we remove this, get rid of `s'. */ if (*fmt != 'b' && *fmt != 'q') { - internal_error ("format parsing problem: %s", s); + internal_error (_("format parsing problem: %s"), s); fw = pr = 0; } #endif @@ -861,7 +881,7 @@ tescape (estart, cp, lenp, sawc) *cp = '\\'; return 0; } - if (uvalue <= UCHAR_MAX) + if (uvalue <= 0x7f) /* <= 0x7f translates directly */ *cp = uvalue; else { @@ -1089,6 +1109,9 @@ getint () ret = getintmax (); + if (garglist == 0) + return ret; + if (ret > INT_MAX) { printf_erange (garglist->word->word); @@ -1229,12 +1252,19 @@ bind_printf_variable (name, value, flags) char *value; int flags; { + SHELL_VAR *v; + #if defined (ARRAY_VARS) if (valid_array_reference (name) == 0) - return (bind_variable (name, value, flags)); + v = bind_variable (name, value, flags); else - return (assign_array_element (name, value, flags)); + v = assign_array_element (name, value, flags); #else /* !ARRAY_VARS */ - return bind_variable (name, value, flags); + v = bind_variable (name, value, flags); #endif /* !ARRAY_VARS */ + + if (v && readonly_p (v) == 0 && noassign_p (v) == 0) + VUNSETATTR (v, att_invisible); + + return v; } diff --git a/builtins/psize.sh b/builtins/psize.sh index c4d73e1..29bc115 100644 --- a/builtins/psize.sh +++ b/builtins/psize.sh @@ -27,7 +27,7 @@ echo "" # # Try to avoid tempfile races. We can't really check for the file's -# existance before we run psize.aux, because `test -e' is not portable, +# existence before we run psize.aux, because `test -e' is not portable, # `test -h' (test for symlinks) is not portable, and `test -f' only # checks for regular files. If we used mktemp(1), we're ahead of the # game. diff --git a/builtins/pushd.def b/builtins/pushd.def index 05b7529..9c6548f 100644 --- a/builtins/pushd.def +++ b/builtins/pushd.def @@ -1,7 +1,7 @@ This file is pushd.def, from which is created pushd.c. It implements the builtins "pushd", "popd", and "dirs" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -115,7 +115,7 @@ $END #if defined (PUSHD_AND_POPD) #include -#ifndef _MINIX +#if defined (HAVE_SYS_PARAM_H) # include #endif @@ -228,7 +228,7 @@ pushd_builtin (list) { sh_invalidnum (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } if (direction == '-') @@ -245,7 +245,7 @@ pushd_builtin (list) { sh_invalidopt (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } else break; @@ -339,7 +339,7 @@ popd_builtin (list) { sh_invalidnum (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } which_word = list->word->word; } @@ -347,7 +347,13 @@ popd_builtin (list) { sh_invalidopt (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); + } + else if (*list->word->word) + { + builtin_error (_("%s: invalid argument"), list->word->word); + builtin_usage (); + return (EX_USAGE); } else break; @@ -426,7 +432,7 @@ dirs_builtin (list) { sh_invalidnum (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } sign = (*list->word->word == '+') ? 1 : -1; desired_index = get_dirstack_index (i, sign, &index_flag); @@ -435,7 +441,7 @@ dirs_builtin (list) { sh_invalidopt (list->word->word); builtin_usage (); - return (EXECUTION_FAILURE); + return (EX_USAGE); } } diff --git a/builtins/read.def b/builtins/read.def index d407857..56945b9 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -1,7 +1,7 @@ This file is read.def, from which is created read.c. It implements the builtin "read" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -51,15 +51,17 @@ Options: -r do not allow backslashes to escape any characters -s do not echo input coming from a terminal -t timeout time out and return failure if a complete line of input is - not read withint TIMEOUT seconds. The value of the TMOUT + not read within TIMEOUT seconds. The value of the TMOUT variable is the default timeout. TIMEOUT may be a - fractional number. If TIMEOUT is 0, read returns success only - if input is available on the specified file descriptor. The + fractional number. If TIMEOUT is 0, read returns immediately, + without trying to read any data, returning success only if + input is available on the specified file descriptor. The exit status is greater than 128 if the timeout is exceeded -u fd read from file descriptor FD instead of the standard input Exit Status: -The return code is zero, unless end-of-file is encountered, read times out, +The return code is zero, unless end-of-file is encountered, read times out +(in which case it's greater than 128), a variable assignment error occurs, or an invalid file descriptor is supplied as the argument to -u. $END @@ -101,10 +103,17 @@ $END # include "input.h" #endif +#include "shmbutil.h" + #if !defined(errno) extern int errno; #endif +extern void run_pending_traps __P((void)); + +extern int posixly_correct; +extern int trapped_signal_received; + struct ttsave { int fd; @@ -127,15 +136,26 @@ static void ttyrestore __P((struct ttsave *)); static sighandler sigalrm __P((int)); static void reset_alarm __P((void)); -static procenv_t alrmbuf; +/* Try this to see what the rest of the shell can do with the information. */ +procenv_t alrmbuf; +int sigalrm_seen; + +static int reading; static SigHandler *old_alrm; static unsigned char delim; +/* In all cases, SIGALRM just sets a flag that we check periodically. This + avoids problems with the semi-tricky stuff we do with the xfree of + input_string at the top of the unwind-protect list (see below). */ + +/* Set a flag that CHECK_ALRM can check. This relies on zread calling + trap.c:check_signals_and_traps(), which knows about sigalrm_seen and + alrmbuf. */ static sighandler sigalrm (s) int s; { - longjmp (alrmbuf, 1); + sigalrm_seen = 1; } static void @@ -158,7 +178,7 @@ read_builtin (list) register char *varname; int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; - int raw, edit, nchars, silent, have_timeout, ignore_delim, fd; + int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno; unsigned int tmsec, tmusec; long ival, uval; intmax_t intval; @@ -199,6 +219,9 @@ read_builtin (list) #endif USE_VAR(list); USE_VAR(ps2); + USE_VAR(lastsig); + + sigalrm_seen = reading = 0; i = 0; /* Index into the string that we are reading. */ raw = edit = 0; /* Not reading raw input by default. */ @@ -306,6 +329,18 @@ read_builtin (list) return (input_avail (fd) ? EXECUTION_SUCCESS : EXECUTION_FAILURE); #endif + /* Convenience: check early whether or not the first of possibly several + variable names is a valid identifier, and bail early if so. */ +#if defined (ARRAY_VARS) + if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word) == 0) +#else + if (list && legal_identifier (list->word->word) == 0) +#endif + { + sh_invalidid (list->word->word); + return (EXECUTION_FAILURE); + } + /* If we're asked to ignore the delimiter, make sure we do. */ if (ignore_delim) delim = -1; @@ -380,14 +415,15 @@ read_builtin (list) if (tmsec > 0 || tmusec > 0) { - code = setjmp (alrmbuf); + code = setjmp_nosigs (alrmbuf); if (code) { + sigalrm_seen = 0; /* Tricky. The top of the unwind-protect stack is the free of input_string. We want to run all the rest and use input_string, so we have to save input_string temporarily, run the unwind- - protects, then restore input_string so we can use it later. */ - + protects, then restore input_string so we can use it later */ + orig_input_string = 0; input_string[i] = '\0'; /* make sure it's terminated */ if (i == 0) { @@ -464,10 +500,12 @@ read_builtin (list) /* This *must* be the top unwind-protect on the stack, so the manipulation of the unwind-protect stack after the realloc() works right. */ add_unwind_protect (xfree, input_string); - interrupt_immediately++; - terminate_immediately++; - unbuffered_read = (nchars > 0) || (delim != '\n') || input_is_pipe; + CHECK_ALRM; + if ((nchars > 0) && (input_is_tty == 0) && ignore_delim) /* read -N */ + unbuffered_read = 2; + else if ((nchars > 0) || (delim != '\n') || input_is_pipe) + unbuffered_read = 1; if (prompt && edit == 0) { @@ -482,6 +520,8 @@ read_builtin (list) ps2 = 0; for (print_ps2 = eof = retval = 0;;) { + CHECK_ALRM; + #if defined (READLINE) if (edit) { @@ -492,7 +532,9 @@ read_builtin (list) } if (rlbuf == 0) { + reading = 1; rlbuf = edit_line (prompt ? prompt : "", itext); + reading = 0; rlind = 0; } if (rlbuf == 0) @@ -515,26 +557,58 @@ read_builtin (list) print_ps2 = 0; } - if (unbuffered_read) - retval = zread (fd, &c, 1); +#if 0 + if (posixly_correct == 0) + interrupt_immediately++; +#endif + reading = 1; + if (unbuffered_read == 2) + retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); + else if (unbuffered_read) + retval = posixly_correct ? zreadintr (fd, &c, 1) : zread (fd, &c, 1); else - retval = zreadc (fd, &c); + retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); + reading = 0; +#if 0 + if (posixly_correct == 0) + interrupt_immediately--; +#endif if (retval <= 0) { + if (retval < 0 && errno == EINTR) + { + lastsig = LASTSIG(); + if (lastsig == 0) + lastsig = trapped_signal_received; + run_pending_traps (); /* because interrupt_immediately is not set */ + } + else + lastsig = 0; + CHECK_TERMSIG; eof = 1; break; } + CHECK_ALRM; + #if defined (READLINE) } #endif + CHECK_ALRM; if (i + 4 >= size) /* XXX was i + 2; use i + 4 for multibyte/read_mbchar */ { - input_string = (char *)xrealloc (input_string, size += 128); - remove_unwind_protect (); - add_unwind_protect (xfree, input_string); + char *t; + t = (char *)xrealloc (input_string, size += 128); + + /* Only need to change unwind-protect if input_string changes */ + if (t != input_string) + { + input_string = t; + remove_unwind_protect (); + add_unwind_protect (xfree, input_string); + } } /* If the next character is to be accepted verbatim, a backslash @@ -565,9 +639,12 @@ read_builtin (list) continue; } - if ((unsigned char)c == delim) + if (ignore_delim == 0 && (unsigned char)c == delim) break; + if (c == '\0' && delim != '\0') + continue; /* skip NUL bytes in input */ + if ((skip_ctlesc == 0 && c == CTLESC) || (skip_ctlnul == 0 && c == CTLNUL)) { saw_escape++; @@ -576,9 +653,10 @@ read_builtin (list) add_char: input_string[i++] = c; + CHECK_ALRM; #if defined (HANDLE_MULTIBYTE) - if (nchars > 0 && MB_CUR_MAX > 1) + if (nchars > 0 && MB_CUR_MAX > 1 && is_basic (c) == 0) { input_string[i] = '\0'; /* for simplicity and debugging */ i += read_mbchar (fd, input_string, i, c, unbuffered_read); @@ -591,15 +669,16 @@ add_char: break; } input_string[i] = '\0'; + CHECK_ALRM; -#if 1 if (retval < 0) { - builtin_error (_("read error: %d: %s"), fd, strerror (errno)); + t_errno = errno; + if (errno != EINTR) + builtin_error (_("read error: %d: %s"), fd, strerror (errno)); run_unwind_frame ("read_builtin"); - return (EXECUTION_FAILURE); + return ((t_errno != EINTR) ? EXECUTION_FAILURE : 128+lastsig); } -#endif if (tmsec > 0 || tmusec > 0) reset_alarm (); @@ -631,9 +710,6 @@ add_char: assign_vars: - interrupt_immediately--; - terminate_immediately--; - #if defined (ARRAY_VARS) /* If -a was given, take the string read, break it into a list of words, an assign them to `arrayname' in turn. */ @@ -658,6 +734,8 @@ assign_vars: xfree (input_string); return EXECUTION_FAILURE; /* existing associative array */ } + else if (invisible_p (var)) + VUNSETATTR (var, att_invisible); array_flush (array_cell (var)); alist = list_string (input_string, ifs_chars, 0); @@ -703,7 +781,7 @@ assign_vars: var = bind_variable ("REPLY", input_string, 0); VUNSETATTR (var, att_invisible); - free (input_string); + xfree (input_string); return (retval); } @@ -829,6 +907,7 @@ bind_read_variable (name, value) char *name, *value; { SHELL_VAR *v; + #if defined (ARRAY_VARS) if (valid_array_reference (name) == 0) v = bind_variable (name, value, 0); @@ -867,6 +946,7 @@ read_mbchar (fd, string, ind, ch, unbuffered) if (ret == (size_t)-2) { ps = ps_back; + /* We don't want to be interrupted during a multibyte char read */ if (unbuffered) r = zread (fd, &c, 1); else @@ -947,7 +1027,9 @@ edit_line (p, itext) rl_startup_hook = set_itext; deftext = itext; } + ret = readline (p); + rl_attempted_completion_function = old_attempted_completion_function; old_attempted_completion_function = (rl_completion_func_t *)NULL; diff --git a/builtins/return.def b/builtins/return.def index 641ee16..e6674df 100644 --- a/builtins/return.def +++ b/builtins/return.def @@ -60,9 +60,11 @@ int return_builtin (list) WORD_LIST *list; { +#if 0 if (no_options (list)) return (EX_USAGE); list = loptend; /* skip over possible `--' */ +#endif return_catch_value = get_exitstat (list); diff --git a/builtins/set.def b/builtins/set.def index 6e69eb6..c4a7001 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -1,7 +1,7 @@ This file is set.def, from which is created set.c. It implements the "set" and "unset" builtins in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -96,12 +96,16 @@ Options: interactive-comments allow comments to appear in interactive commands keyword same as -k +#if defined (JOB_CONTROL) monitor same as -m +#endif noclobber same as -C noexec same as -n noglob same as -f nolog currently accepted but ignored +#if defined (JOB_CONTROL) notify same as -b +#endif nounset same as -u onecmd same as -t physical same as -P @@ -135,7 +139,7 @@ Options: -H Enable ! style history substitution. This flag is on by default when the shell is interactive. #endif /* BANG_HISTORY */ - -P If set, do not follow symbolic links when executing commands + -P If set, do not resolve symbolic links when executing commands such as cd which change the current directory. -T If set, the DEBUG trap is inherited by shell functions. -- Assign any remaining arguments to the positional parameters. @@ -205,7 +209,9 @@ const struct { { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, { "interactive-comments", '\0', &interactive_comments, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, { "keyword", 'k', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#if defined (JOB_CONTROL) { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#endif { "noclobber", 'C', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, { "noexec", 'n', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, { "noglob", 'f', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, @@ -718,7 +724,7 @@ set_builtin (list) $BUILTIN unset $FUNCTION unset_builtin -$SHORT_DOC unset [-f] [-v] [name ...] +$SHORT_DOC unset [-f] [-v] [-n] [name ...] Unset values and attributes of shell variables and functions. For each NAME, remove the corresponding variable or function. @@ -726,6 +732,8 @@ For each NAME, remove the corresponding variable or function. Options: -f treat each NAME as a shell function -v treat each NAME as a shell variable + -n treat each NAME as a name reference and unset the variable itself + rather than the variable it references Without options, unset first tries to unset a variable, and if that fails, tries to unset a function. @@ -742,13 +750,13 @@ int unset_builtin (list) WORD_LIST *list; { - int unset_function, unset_variable, unset_array, opt, any_failed; + int unset_function, unset_variable, unset_array, opt, nameref, any_failed; char *name; - unset_function = unset_variable = unset_array = any_failed = 0; + unset_function = unset_variable = unset_array = nameref = any_failed = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "fv")) != -1) + while ((opt = internal_getopt (list, "fnv")) != -1) { switch (opt) { @@ -758,6 +766,9 @@ unset_builtin (list) case 'v': unset_variable = 1; break; + case 'n': + nameref = 1; + break; default: builtin_usage (); return (EX_USAGE); @@ -771,6 +782,8 @@ unset_builtin (list) builtin_error (_("cannot simultaneously unset a function and a variable")); return (EXECUTION_FAILURE); } + else if (unset_function && nameref) + nameref = 0; while (list) { @@ -791,6 +804,8 @@ unset_builtin (list) unset_array++; } #endif + /* Get error checking out of the way first. The low-level functions + just perform the unset, relying on the caller to verify. */ /* Bash allows functions with names which are not valid identifiers to be created when not in posix mode, so check only when in posix @@ -801,19 +816,32 @@ unset_builtin (list) NEXT_VARIABLE (); } - var = unset_function ? find_function (name) : find_variable (name); + /* Only search for functions here if -f supplied. */ + var = unset_function ? find_function (name) + : (nameref ? find_variable_last_nameref (name) : find_variable (name)); - if (var && !unset_function && non_unsettable_p (var)) + /* Some variables (but not functions yet) cannot be unset, period. */ + if (var && unset_function == 0 && non_unsettable_p (var)) { builtin_error (_("%s: cannot unset"), name); NEXT_VARIABLE (); } + /* Posix.2 says try variables first, then functions. If we would + find a function after unsuccessfully searching for a variable, + note that we're acting on a function now as if -f were + supplied. The readonly check below takes care of it. */ + if (var == 0 && unset_variable == 0 && unset_function == 0) + { + if (var = find_function (name)) + unset_function = 1; + } + /* Posix.2 says that unsetting readonly variables is an error. */ if (var && readonly_p (var)) { builtin_error (_("%s: cannot unset: readonly %s"), - name, unset_function ? "function" : "variable"); + var->name, unset_function ? "function" : "variable"); NEXT_VARIABLE (); } @@ -823,7 +851,7 @@ unset_builtin (list) { if (array_p (var) == 0 && assoc_p (var) == 0) { - builtin_error (_("%s: not an array variable"), name); + builtin_error (_("%s: not an array variable"), var->name); NEXT_VARIABLE (); } else @@ -835,13 +863,13 @@ unset_builtin (list) } else #endif /* ARRAY_VARS */ - tem = unset_function ? unbind_func (name) : unbind_variable (name); + tem = unset_function ? unbind_func (name) : (nameref ? unbind_nameref (name) : unbind_variable (name)); - /* This is what Posix.2 draft 11+ says. ``If neither -f nor -v + /* This is what Posix.2 says: ``If neither -f nor -v is specified, the name refers to a variable; if a variable by that name does not exist, a function by that name, if any, shall be unset.'' */ - if (tem == -1 && !unset_function && !unset_variable) + if (tem == -1 && unset_function == 0 && unset_variable == 0) tem = unbind_func (name); /* SUSv3, POSIX.1-2001 say: ``Unsetting a variable or function that diff --git a/builtins/setattr.def b/builtins/setattr.def index b3ca317..3be3189 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -1,7 +1,7 @@ This file is setattr.def, from which is created setattr.c. It implements the builtins "export" and "readonly", in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -93,7 +93,8 @@ Options: -a refer to indexed array variables -A refer to associative array variables -f refer to shell functions - -p display a list of all readonly variables and functions + -p display a list of all readonly variables or functions, depending on + whether or not the -f option is given An argument of `--' disables further option processing. @@ -368,6 +369,9 @@ show_var_attributes (var, pattr, nodefs) if (integer_p (var)) flags[i++] = 'i'; + if (nameref_p (var)) + flags[i++] = 'n'; + if (readonly_p (var)) flags[i++] = 'r'; @@ -451,7 +455,11 @@ show_name_attributes (name, nodefs) { SHELL_VAR *var; - var = find_variable_internal (name, 1); +#if 0 + var = find_variable_tempenv (name); +#else + var = find_variable_noref (name); +#endif if (var && invisible_p (var) == 0) { @@ -462,12 +470,30 @@ show_name_attributes (name, nodefs) return (1); } +int +show_func_attributes (name, nodefs) + char *name; + int nodefs; +{ + SHELL_VAR *var; + + var = find_function (name); + + if (var) + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + return (0); + } + else + return (1); +} + void set_var_attribute (name, attribute, undo) char *name; int attribute, undo; { - SHELL_VAR *var, *tv; + SHELL_VAR *var, *tv, *v; char *tvalue; if (undo) @@ -484,7 +510,18 @@ set_var_attribute (name, attribute, undo) var = bind_variable (tv->name, tvalue, 0); var->attributes |= tv->attributes & ~att_tempvar; - VSETATTR (tv, att_propagate); + /* This avoids an error message when propagating a read-only var + later on. */ + if (var->context == 0 && (attribute & att_readonly)) + { + /* Don't bother to set the `propagate to the global variables + table' flag if we've just bound the variable in that table */ + v = find_global_variable (tv->name); + if (v != var) + VSETATTR (tv, att_propagate); + } + else + VSETATTR (tv, att_propagate); if (var->context != 0) VSETATTR (var, att_propagate); SETVARATTR (tv, attribute, undo); /* XXX */ @@ -495,7 +532,7 @@ set_var_attribute (name, attribute, undo) } else { - var = find_variable_internal (name, 0); + var = find_variable_notempenv (name); if (var == 0) { var = bind_variable (name, (char *)NULL, 0); diff --git a/builtins/shopt.def b/builtins/shopt.def index 6cd8c4f..6050a14 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -1,7 +1,7 @@ This file is shopt.def, from which is created shopt.c. It implements the Bash `shopt' builtin. -Copyright (C) 1994-2010 Free Software Foundation, Inc. +Copyright (C) 1994-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -88,6 +88,7 @@ extern int gnu_error_format; extern int check_jobs_at_exit; extern int autocd; extern int glob_star; +extern int glob_asciirange; extern int lastpipe_opt; #if defined (EXTENDED_GLOB) @@ -99,6 +100,7 @@ extern int hist_verify, history_reediting, perform_hostname_completion; extern int no_empty_command_completion; extern int force_fignore; extern int dircomplete_spelling, dircomplete_expand; +extern int complete_fullquote; extern int enable_hostname_completion __P((int)); #endif @@ -134,6 +136,7 @@ static int shopt_compat31; static int shopt_compat32; static int shopt_compat40; static int shopt_compat41; +static int shopt_compat42; typedef int shopt_set_func_t __P((char *, int)); @@ -157,7 +160,9 @@ static struct { { "compat32", &shopt_compat32, set_compatibility_level }, { "compat40", &shopt_compat40, set_compatibility_level }, { "compat41", &shopt_compat41, set_compatibility_level }, + { "compat42", &shopt_compat41, set_compatibility_level }, #if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, { "dirspell", &dircomplete_spelling, (shopt_set_func_t *)NULL }, #endif @@ -176,6 +181,7 @@ static struct { { "force_fignore", &force_fignore, (shopt_set_func_t *)NULL }, #endif { "globstar", &glob_star, (shopt_set_func_t *)NULL }, + { "globasciiranges", &glob_asciirange, (shopt_set_func_t *)NULL }, { "gnu_errfmt", &gnu_error_format, (shopt_set_func_t *)NULL }, #if defined (HISTORY) { "histappend", &force_append_history, (shopt_set_func_t *)NULL }, @@ -298,10 +304,12 @@ reset_shopt_options () allow_null_glob_expansion = glob_dot_filenames = 0; cdable_vars = mail_warning = 0; no_exit_on_failed_exec = print_shift_error = 0; - check_hashed_filenames = cdspelling = expand_aliases = check_window_size = 0; + check_hashed_filenames = cdspelling = expand_aliases = 0; source_uses_path = promptvars = 1; + check_window_size = CHECKWINSIZE_DEFAULT; + #if defined (EXTENDED_GLOB) extended_glob = 0; #endif @@ -521,16 +529,18 @@ set_compatibility_level (option_name, mode) char *option_name; int mode; { - /* Need to change logic here as we add more compatibility levels */ + int ind; - /* First, check option_name so we can turn off other compat options when - one is set. */ - if (mode && option_name[6] == '3' && option_name[7] == '1') - shopt_compat32 = shopt_compat40 = 0; - else if (mode && option_name[6] == '3' && option_name[7] == '2') - shopt_compat31 = shopt_compat40 = 0; - else if (mode && option_name[6] == '4' && option_name[7] == '0') - shopt_compat31 = shopt_compat32 = 0; + /* If we're setting something, redo some of the work we did above in + toggle_shopt(). Unset everything and reset the appropriate option + based on OPTION_NAME. */ + if (mode) + { + shopt_compat31 = shopt_compat32 = 0; + shopt_compat40 = shopt_compat41 = shopt_compat42 = 0; + ind = find_shopt (option_name); + *shopt_vars[ind].value = mode; + } /* Then set shell_compatibility_level based on what remains */ if (shopt_compat31) @@ -539,11 +549,39 @@ set_compatibility_level (option_name, mode) shell_compatibility_level = 32; else if (shopt_compat40) shell_compatibility_level = 40; + else if (shopt_compat41) + shell_compatibility_level = 41; + else if (shopt_compat42) + shell_compatibility_level = 42; else shell_compatibility_level = DEFAULT_COMPAT_LEVEL; + return 0; } +/* Set and unset the various compatibility options from the value of + shell_compatibility_level; used by sv_shcompat */ +void +set_compatibility_opts () +{ + shopt_compat31 = shopt_compat32 = shopt_compat40 = shopt_compat41 = shopt_compat42 = 0; + switch (shell_compatibility_level) + { + case DEFAULT_COMPAT_LEVEL: + break; + case 42: + shopt_compat42 = 1; break; + case 41: + shopt_compat41 = 1; break; + case 40: + shopt_compat40 = 1; break; + case 32: + shopt_compat32 = 1; break; + case 31: + shopt_compat31 = 1; break; + } +} + #if defined (READLINE) static int shopt_set_complete_direxpand (option_name, mode) diff --git a/builtins/test.def b/builtins/test.def index 1ebc818..f144400 100644 --- a/builtins/test.def +++ b/builtins/test.def @@ -84,6 +84,7 @@ Other operators: -o OPTION True if the shell option OPTION is enabled. -v VAR True if the shell variable VAR is set + -R VAR True if the shell variable VAR is set and is a name reference. ! EXPR True if expr is false. EXPR1 -a EXPR2 True if both expr1 AND expr2 are true. EXPR1 -o EXPR2 True if either expr1 OR expr2 is true. diff --git a/builtins/type.def b/builtins/type.def index ee341bb..bd9ecfc 100644 --- a/builtins/type.def +++ b/builtins/type.def @@ -1,7 +1,7 @@ This file is type.def, from which is created type.c. It implements the builtin "type" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2011 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -353,7 +353,7 @@ describe_command (command, dflags) user_command_matches (command, FS_EXEC_ONLY, found_file); /* XXX - should that be FS_EXEC_PREFERRED? */ - if (!full_path) + if (full_path == 0) break; /* If we found the command as itself by looking through $PATH, it @@ -375,7 +375,9 @@ describe_command (command, dflags) else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY|CDESC_SHORTDESC)) { f = MP_DOCWD | ((dflags & CDESC_ABSPATH) ? MP_RMDOT : 0); - full_path = sh_makepath ((char *)NULL, full_path, f); + x = sh_makepath ((char *)NULL, full_path, f); + free (full_path); + full_path = x; } } /* If we require a full path and don't have one, make one */ diff --git a/builtins/ulimit.def b/builtins/ulimit.def index 03cbe8a..e551cff 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -23,7 +23,7 @@ $PRODUCES ulimit.c $BUILTIN ulimit $FUNCTION ulimit_builtin $DEPENDS_ON !_MINIX -$SHORT_DOC ulimit [-SHacdefilmnpqrstuvx] [limit] +$SHORT_DOC ulimit [-SHabcdefilmnpqrstuvxT] [limit] Modify shell resource limits. Provides control over the resources available to the shell and processes @@ -50,6 +50,9 @@ Options: -u the maximum number of user processes -v the size of virtual memory -x the maximum number of file locks + -T the maximum number of threads + +Not all options are available on all platforms. If LIMIT is given, it is the new value of the specified resource; the special LIMIT values `soft', `hard', and `unlimited' stand for the @@ -70,7 +73,7 @@ $END #include #include "../bashtypes.h" -#ifndef _MINIX +#if defined (HAVE_SYS_PARAM_H) # include #endif @@ -167,6 +170,10 @@ extern int errno; # define RLIMIT_MAXUPROC 260 #endif +#if !defined (RLIMIT_PTHREAD) && defined (RLIMIT_NTHR) +# define RLIMIT_PTHREAD RLIMIT_NTHR +#endif + #if !defined (RLIM_INFINITY) # define RLIM_INFINITY 0x7fffffff #endif diff --git a/builtins/umask.def b/builtins/umask.def index 289a0f5..d9aa041 100644 --- a/builtins/umask.def +++ b/builtins/umask.def @@ -61,10 +61,6 @@ $END #include "common.h" #include "bashgetopt.h" -#ifdef __LCC__ -#define mode_t int -#endif - /* **************************************************************** */ /* */ /* UMASK Builtin and Helpers */ diff --git a/builtins/wait.def b/builtins/wait.def index 0206926..fe6d53d 100644 --- a/builtins/wait.def +++ b/builtins/wait.def @@ -1,7 +1,7 @@ This file is wait.def, from which is created wait.c. It implements the builtin "wait" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2013 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -22,33 +22,36 @@ $BUILTIN wait $FUNCTION wait_builtin $DEPENDS_ON JOB_CONTROL $PRODUCES wait.c -$SHORT_DOC wait [id] +$SHORT_DOC wait [-n] [id ...] Wait for job completion and return exit status. -Waits for the process identified by ID, which may be a process ID or a +Waits for each process identified by an ID, which may be a process ID or a job specification, and reports its termination status. If ID is not given, waits for all currently active child processes, and the return status is zero. If ID is a a job specification, waits for all processes -in the job's pipeline. +in that job's pipeline. + +If the -n option is supplied, waits for the next job to terminate and +returns its exit status. Exit Status: -Returns the status of ID; fails if ID is invalid or an invalid option is -given. +Returns the status of the last ID; fails if ID is invalid or an invalid +option is given. $END $BUILTIN wait $FUNCTION wait_builtin $DEPENDS_ON !JOB_CONTROL -$SHORT_DOC wait [pid] +$SHORT_DOC wait [pid ...] Wait for process completion and return exit status. -Waits for the specified process and reports its termination status. If -PID is not given, all currently active child processes are waited for, -and the return code is zero. PID must be a process ID. +Waits for each process specified by a PID and reports its termination status. +If PID is not given, waits for all currently active child processes, +and the return status is zero. PID must be a process ID. Exit Status: -Returns the status of ID; fails if ID is invalid or an invalid option is -given. +Returns the status of the last PID; fails if PID is invalid or an invalid +option is given. $END #include @@ -82,6 +85,7 @@ procenv_t wait_intr_buf; do \ { \ interrupt_immediately = old_interrupt_immediately;\ + wait_signal_received = 0; \ return (s);\ } \ while (0) @@ -90,17 +94,33 @@ int wait_builtin (list) WORD_LIST *list; { - int status, code; + int status, code, opt, nflag; volatile int old_interrupt_immediately; USE_VAR(list); - if (no_options (list)) - return (EX_USAGE); + nflag = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "n")) != -1) + { + switch (opt) + { +#if defined (JOB_CONTROL) + case 'n': + nflag = 1; + break; +#endif + default: + builtin_usage (); + return (EX_USAGE); + } + } list = loptend; old_interrupt_immediately = interrupt_immediately; +#if 0 interrupt_immediately++; +#endif /* POSIX.2 says: When the shell is waiting (by means of the wait utility) for asynchronous commands to complete, the reception of a signal for @@ -120,6 +140,16 @@ wait_builtin (list) /* We support jobs or pids. wait [pid-or-job ...] */ +#if defined (JOB_CONTROL) + if (nflag) + { + status = wait_for_any_job (); + if (status < 0) + status = 127; + WAIT_RETURN (status); + } +#endif + /* But wait without any arguments means to wait for all of the shell's currently active background processes. */ if (list == 0) diff --git a/command.h b/command.h index fb71229..6e9d1e4 100644 --- a/command.h +++ b/command.h @@ -76,7 +76,7 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_HASDOLLAR 0x000001 /* Dollar sign present. */ #define W_QUOTED 0x000002 /* Some form of quote character is present. */ #define W_ASSIGNMENT 0x000004 /* This word is a variable assignment. */ -#define W_GLOBEXP 0x000008 /* This word is the result of a glob expansion. */ +#define W_SPLITSPACE 0x000008 /* Split this word on " " regardless of IFS */ #define W_NOSPLIT 0x000010 /* Do not perform word splitting on this word because ifs is empty string. */ #define W_NOGLOB 0x000020 /* Do not perform globbing on this word. */ #define W_NOSPLIT2 0x000040 /* Don't split word except for $@ expansion (using spaces) because context does not allow it. */ @@ -96,8 +96,11 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_NOPROCSUB 0x100000 /* don't perform process substitution */ #define W_HASCTLESC 0x200000 /* word contains literal CTLESC characters */ #define W_ASSIGNASSOC 0x400000 /* word looks like associative array assignment */ -#define W_ARRAYIND 0x800000 /* word is an array index being expanded */ -#define W_ASSNGLOBAL 0x1000000 /* word is a global assignment to declare (declare/typeset -g) */ +#define W_ASSIGNARRAY 0x800000 /* word looks like a compound indexed array assignment */ +#define W_ARRAYIND 0x1000000 /* word is an array index being expanded */ +#define W_ASSNGLOBAL 0x2000000 /* word is a global assignment to declare (declare/typeset -g) */ +#define W_NOBRACE 0x4000000 /* Don't perform brace expansion */ +#define W_ASSIGNINT 0x8000000 /* word is an integer assignment to declare */ /* Possible values for subshell_environment */ #define SUBSHELL_ASYNC 0x01 /* subshell caused by `command &' */ @@ -296,7 +299,7 @@ typedef struct arith_com { } ARITH_COM; #endif /* DPAREN_ARITHMETIC */ -/* The conditional command, [[...]]. This is a binary tree -- we slippped +/* The conditional command, [[...]]. This is a binary tree -- we slipped a recursive-descent parser into the YACC grammar to parse it. */ #define COND_AND 1 #define COND_OR 2 @@ -355,6 +358,7 @@ typedef struct coproc { int c_wsave; int c_flags; int c_status; + int c_lock; } Coproc; typedef struct coproc_com { diff --git a/config-top.h b/config-top.h index 147d4f4..4f6373c 100644 --- a/config-top.h +++ b/config-top.h @@ -46,6 +46,11 @@ when a job like `cat jobs.c | exit 1' terminates due to a SIGPIPE. */ #define DONT_REPORT_SIGPIPE +/* Define DONT_REPORT_SIGTERM if you don't want to see `Terminates' message + when a job exits due to SIGTERM, since that's the default signal sent + by the kill builtin. */ +/* #define DONT_REPORT_SIGTERM */ + /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins like `echo' and `printf' to report errors when output does not succeed due to EPIPE. */ @@ -54,7 +59,7 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE #define DEFAULT_PATH_VALUE \ - "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:." + "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." #endif /* The value for PATH when invoking `command -p'. This is only used when @@ -109,3 +114,21 @@ /* Define if you want to include code in shell.c to support wordexp(3) */ /* #define WORDEXP_OPTION */ + +/* Define as 1 if you want to enable code that implements multiple coprocs */ +#ifndef MULTIPLE_COPROCS +# define MULTIPLE_COPROCS 0 +#endif + +/* Define to 0 if you want the checkwinsize option off by default, 1 if you + want it on. */ +#define CHECKWINSIZE_DEFAULT 0 + +/* Define to 1 if you want to optimize for sequential array assignment when + using indexed arrays, 0 if you want bash-4.2 behavior, which favors + random access but is O(N) for each array assignment. */ +#define OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT 1 + +/* Define to 1 if you want to be able to export indexed arrays to processes + using the foo=([0]=one [1]=two) and so on */ +/* #define ARRAY_EXPORT 1 */ diff --git a/config.h.in b/config.h.in index 6b1fc4a..08af2ba 100644 --- a/config.h.in +++ b/config.h.in @@ -1,6 +1,6 @@ /* config.h -- Configuration file for bash. */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2009,2011-2012 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -160,9 +160,6 @@ memory contents on malloc() and free(). */ #undef MEMSCRAMBLE -/* Define AFS if you are using Transarc's AFS. */ -#undef AFS - /* Define for case-modifying variable attributes; variables modified on assignment */ #undef CASEMOD_ATTRS @@ -170,6 +167,15 @@ /* Define for case-modifying word expansions */ #undef CASEMOD_EXPANSIONS +/* Define to make the `direxpand' shopt option enabled by default. */ +#undef DIRCOMPLETE_EXPAND_DEFAULT + +/* Define to make the `globasciiranges' shopt option enabled by default. */ +#undef GLOBASCII_DEFAULT + +/* Define AFS if you are using Transarc's AFS. */ +#undef AFS + #undef ENABLE_NLS /* End of configuration settings controllable by autoconf. */ @@ -420,6 +426,16 @@ #undef WEXITSTATUS_OFFSET +#undef HAVE_STRUCT_TIMESPEC +#undef TIME_H_DEFINES_STRUCT_TIMESPEC +#undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC +#undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC + +#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC +#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC +#undef HAVE_STRUCT_STAT_ST_ATIMENSEC +#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC + /* Characteristics of definitions in the system header files. */ #undef HAVE_GETPW_DECLS @@ -428,6 +444,9 @@ #undef HAVE_LIBC_FNM_EXTMATCH +/* Define if you have and it defines AUDIT_USER_TTY */ +#undef HAVE_DECL_AUDIT_USER_TTY + #undef HAVE_DECL_CONFSTR #undef HAVE_DECL_PRINTF @@ -625,6 +644,9 @@ /* Define if you have the iconv function. */ #undef HAVE_ICONV +/* Define if you have the imaxdiv function. */ +#undef HAVE_IMAXDIV + /* Define if you have the inet_aton function. */ #undef HAVE_INET_ATON @@ -637,12 +659,6 @@ /* Define if you have the isgraph function. */ #undef HAVE_ISGRAPH -/* Define if you have the isinf function in libc */ -#undef HAVE_ISINF_IN_LIBC - -/* Define if you have the isnan function in libc */ -#undef HAVE_ISNAN_IN_LIBC - /* Define if you have the isprint function. */ #undef HAVE_ISPRINT @@ -887,6 +903,9 @@ /* Define if you have the wcwidth function. */ #undef HAVE_WCWIDTH +/* and if it works */ +#undef WCWIDTH_BROKEN + /* Presence of certain system include files. */ /* Define if you have the header file. */ @@ -946,6 +965,9 @@ /* Define if you have the header file. */ #undef HAVE_MEMORY_H +/* Define if you have the header file. */ +#undef HAVE_STDBOOL_H + /* Define if you have the header file. */ #undef HAVE_STDDEF_H @@ -1034,6 +1056,8 @@ #undef HAVE_LIBSOCKET +/* Are we running the GNU C library, version 2.1 or later? */ +#undef GLIBC21 /* Define if on MINIX. */ #undef _MINIX diff --git a/configure b/configure index 7ec72fe..98bf890 100755 --- a/configure +++ b/configure @@ -1,21 +1,23 @@ #! /bin/sh -# From configure.in for Bash 4.2, version 4.037. +# From configure.ac for Bash 4.3, version 4.063. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.63 for bash 4.2-release. +# Generated by GNU Autoconf 2.69 for bash 4.3-release. # # Report bugs to . # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which @@ -23,23 +25,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - as_nl=' ' export as_nl @@ -47,7 +41,13 @@ export as_nl as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else @@ -58,7 +58,7 @@ else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; - case $arg in + case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; @@ -81,13 +81,6 @@ if test "${PATH_SEPARATOR+set}" != set; then } fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - # IFS # We need space, tab and new line, in precisely that order. Quoting is @@ -97,15 +90,16 @@ fi IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -117,12 +111,16 @@ if test "x$as_myself" = x; then fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' @@ -134,7 +132,294 @@ export LC_ALL LANGUAGE=C export LANGUAGE -# Required to use basename. +# 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 + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +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 / || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + 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 : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-bash@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $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 +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -148,8 +433,12 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ @@ -169,437 +458,133 @@ $as_echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + 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 test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit } -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac -if as_func_ret_success; then - : +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file else - exitcode=1 - echo as_func_ret_success failed. + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... 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 -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' else - exitcode=1 - echo positional parameters were not saved. + test -d ./-p && rmdir ./-p + as_mkdir_p=false fi -test \$exitcode = 0) || { (exit 1); exit 1; } +as_test_x='test -x' +as_executable_p=as_fn_executable_p -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS +# 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'" +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac -fi +test -n "$DJDIR" || exec 7<&0 &1 +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell bug-autoconf@gnu.org about your system, - echo including any error possibly output before this message. - echo This can help us improve future autoconf versions. - echo Configuration will now proceed without shell functions. -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # 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). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... 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'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - 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 - -# 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'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.2-release' -PACKAGE_STRING='bash 4.2-release' +PACKAGE_VERSION='4.3-release' +PACKAGE_STRING='bash 4.3-release' PACKAGE_BUGREPORT='bug-bash@gnu.org' +PACKAGE_URL='' ac_unique_file="shell.h" # Factoring default headers for most tests. @@ -664,6 +649,9 @@ JOBS_O TERMCAP_DEP TERMCAP_LIB SIGLIST_O +PTHREAD_H_DEFINES_STRUCT_TIMESPEC +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC +TIME_H_DEFINES_STRUCT_TIMESPEC LIBINTL_H INTL_INC INTL_DEP @@ -713,11 +701,8 @@ READLINE_LIB RL_MINOR RL_MAJOR RL_VERSION -LDFLAGS_FOR_BUILD -CPPFLAGS_FOR_BUILD -CFLAGS_FOR_BUILD +LIBS_FOR_BUILD STATIC_LD -CC_FOR_BUILD SIGNAMES_O SIGNAMES_H CROSS_COMPILE @@ -732,6 +717,7 @@ LDFLAGS CFLAGS CC HELPSTRINGS +HELPFILES_TARGET HELPINSTALL HELPDIRDEFINE HELPDIR @@ -743,6 +729,10 @@ MALLOC_SRC MALLOC_TARGET PURIFY TESTSCRIPT +CPPFLAGS_FOR_BUILD +LDFLAGS_FOR_BUILD +CFLAGS_FOR_BUILD +CC_FOR_BUILD DEBUGGER_START_FILE host_os host_vendor @@ -782,6 +772,7 @@ bindir program_transform_name prefix exec_prefix +PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION @@ -812,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 @@ -841,7 +834,6 @@ enable_nls with_gnu_ld enable_rpath with_libiconv_prefix -enable_nls with_included_gettext with_libintl_prefix ' @@ -849,13 +841,16 @@ with_libintl_prefix host_alias target_alias DEBUGGER_START_FILE +CC_FOR_BUILD +CFLAGS_FOR_BUILD +LDFLAGS_FOR_BUILD +CPPFLAGS_FOR_BUILD CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP -CPPFLAGS YACC YFLAGS' @@ -920,8 +915,9 @@ do fi case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -966,8 +962,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -993,8 +988,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1198,8 +1192,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1215,8 +1208,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1246,17 +1238,17 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { $as_echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1265,7 +1257,7 @@ Try \`$0 --help' for more information." >&2 $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac @@ -1273,15 +1265,13 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { $as_echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; - fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 - { (exit 1); exit 1; }; } ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1304,8 +1294,7 @@ do [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1319,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 @@ -1335,11 +1322,9 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { $as_echo "$as_me: error: working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. @@ -1378,13 +1363,11 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1410,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-release to adapt to many kinds of systems. +\`configure' configures bash 4.3-release to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1424,7 +1407,7 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1475,7 +1458,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.2-release:";; + short | recursive ) echo "Configuration of bash 4.3-release:";; esac cat <<\_ACEOF @@ -1503,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 @@ -1513,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 @@ -1570,16 +1558,28 @@ Optional Packages: Some influential environment variables: DEBUGGER_START_FILE location of bash debugger initialization file + CC_FOR_BUILD + C compiler used when compiling binaries used only at build time + CFLAGS_FOR_BUILD + Compliation options (CFLAGS) used when compiling binaries used + only at build time + LDFLAGS_FOR_BUILD + Linker options (LDFLAGS) used when compiling binaries used only + at build time + CPPFLAGS_FOR_BUILD + C preprocessor options (CPPFLAGS) used when compiling binaries + used only at build time CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor - YACC The `Yet Another C Compiler' implementation to use. Defaults to - the first program found out of: `bison -y', `byacc', `yacc'. + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. @@ -1650,1150 +1650,1787 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.2-release -generated by GNU Autoconf 2.63 +bash configure 4.3-release +generated by GNU Autoconf 2.69 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 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 exit fi -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-release, which was -generated by GNU Autoconf 2.63. Invocation command line was - $ $0 $@ +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## -_ACEOF -exec 5>>config.log +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () { -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +} # ac_fn_c_try_compile -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -_ASUNAME + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" -done -IFS=$as_save_IFS +} # ac_fn_c_try_link -} >&5 +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -cat >&5 <<_ACEOF + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval +} # ac_fn_c_try_cpp -## ----------- ## -## Core tests. ## -## ----------- ## +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> _ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +} # ac_fn_c_check_header_mongrel -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo +} # ac_fn_c_try_run - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 +} # ac_fn_c_check_header_compile -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 -# Predefined preprocessor variables. +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +#ifdef __STDC__ +# include +#else +# include +#endif +#undef $2 -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} _ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +} # ac_fn_c_check_func -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} _ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} _ACEOF +if ac_fn_c_try_compile "$LINENO"; then : - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - ac_site_file1=$CONFIG_SITE -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + eval "$3=yes" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then - { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - -ac_header_list="$ac_header_list sys/time.h" -ac_header_list="$ac_header_list unistd.h" -ac_func_list="$ac_func_list alarm" -ac_func_list="$ac_func_list fpurge" -ac_func_list="$ac_func_list __fpurge" -ac_func_list="$ac_func_list snprintf" -ac_func_list="$ac_func_list vsnprintf" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +} # ac_fn_c_check_type +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +} # ac_fn_c_check_decl +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0; +return test_array [0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0; +return test_array [0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 -$as_echo "$as_me: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&2;} - { (exit 1); exit 1; }; } -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -ac_config_headers="$ac_config_headers config.h" - - -BASHVERS=4.2 -RELSTATUS=release - -case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; -*) DEBUG= MALLOC_DEBUG= ;; -esac - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } - -{ $as_echo "$as_me:$LINENO: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if test "${ac_cv_build+set}" = set; then +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +$as_echo_n "checking for $2.$3... " >&6; } +if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -$as_echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:$LINENO: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if test "${ac_cv_host+set}" = set; then - $as_echo_n "(cached) " >&6 + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -$as_echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -opt_bash_malloc=yes -opt_purify=no -opt_purecov=no -opt_afs=no -opt_curses=no -opt_with_installed_readline=no - -#htmldir= - -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 -*-aix*) opt_bash_malloc=no ;; # AIX machines -*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep -*-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 -esac - -# memory scrambling on free() -case "${host_os}" in -sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; -*) opt_memscramble=yes ;; -esac - - - - -# Check whether --with-afs was given. -if test "${with_afs+set}" = set; then - withval=$with_afs; opt_afs=$withval + eval "$4=no" fi - - -# Check whether --with-bash-malloc was given. -if test "${with_bash_malloc+set}" = set; then - withval=$with_bash_malloc; opt_bash_malloc=$withval -fi - - -# Check whether --with-curses was given. -if test "${with_curses+set}" = set; then - withval=$with_curses; opt_curses=$withval +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - - -# Check whether --with-gnu-malloc was given. -if test "${with_gnu_malloc+set}" = set; then - withval=$with_gnu_malloc; opt_bash_malloc=$withval +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +} # ac_fn_c_check_member +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. -# Check whether --with-installed-readline was given. -if test "${with_installed_readline+set}" = set; then - withval=$with_installed_readline; opt_with_installed_readline=$withval -fi - +It was created by bash $as_me 4.3-release, which was +generated by GNU Autoconf 2.69. Invocation command line was -# Check whether --with-purecov was given. -if test "${with_purecov+set}" = set; then - withval=$with_purecov; opt_purecov=$withval -fi + $ $0 $@ +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## -# Check whether --with-purify was given. -if test "${with_purify+set}" = set; then - withval=$with_purify; opt_purify=$withval -fi +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` -if test "$opt_bash_malloc" = yes; then - MALLOC_TARGET=malloc - MALLOC_SRC=malloc.c +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - MALLOC_LIB='-lmalloc' - MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a' - MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' - MALLOC_DEP='$(MALLOC_LIBRARY)' +_ASUNAME - cat >>confdefs.h <<\_ACEOF -#define USING_BASH_MALLOC 1 -_ACEOF +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS -else - MALLOC_LIB= - MALLOC_LIBRARY= - MALLOC_LDFLAGS= - MALLOC_DEP= -fi +} >&5 -if test "$opt_purify" = yes; then - PURIFY="purify " - cat >>confdefs.h <<\_ACEOF -#define DISABLE_MALLOC_WRAPPERS 1 -_ACEOF +cat >&5 <<_ACEOF -else - PURIFY= -fi -if test "$opt_purecov" = yes; then - PURIFY="${PURIFY}purecov" -fi +## ----------- ## +## Core tests. ## +## ----------- ## -if test "$opt_afs" = yes; then - cat >>confdefs.h <<\_ACEOF -#define AFS 1 _ACEOF -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 +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} -opt_minimal_config=no +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo -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 + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo -opt_static_link=no -opt_profiling=no + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo -# Check whether --enable-minimal-config was given. -if test "${enable_minimal_config+set}" = set; then - enableval=$enable_minimal_config; opt_minimal_config=$enableval -fi + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 -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 -fi +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h -# Check whether --enable-alias was given. -if test "${enable_alias+set}" = set; then - enableval=$enable_alias; opt_alias=$enableval -fi +$as_echo "/* confdefs.h */" > confdefs.h -# Check whether --enable-arith-for-command was given. -if test "${enable_arith_for_command+set}" = set; then - enableval=$enable_arith_for_command; opt_arith_for_command=$enableval -fi +# Predefined preprocessor variables. -# Check whether --enable-array-variables was given. -if test "${enable_array_variables+set}" = set; then - enableval=$enable_array_variables; opt_array_variables=$enableval -fi +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF -# Check whether --enable-bang-history was given. -if test "${enable_bang_history+set}" = set; then - enableval=$enable_bang_history; opt_bang_history=$enableval -fi +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF -# Check whether --enable-brace-expansion was given. -if test "${enable_brace_expansion+set}" = set; then - enableval=$enable_brace_expansion; opt_brace_expansion=$enableval -fi +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF -# Check whether --enable-casemod-attributes was given. -if test "${enable_casemod_attributes+set}" = set; then - enableval=$enable_casemod_attributes; opt_casemod_attrs=$enableval -fi +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF -# Check whether --enable-casemod-expansions was given. -if test "${enable_casemod_expansions+set}" = set; then - enableval=$enable_casemod_expansions; opt_casemod_expansions=$enableval -fi +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF -# Check whether --enable-command-timing was given. -if test "${enable_command_timing+set}" = set; then - enableval=$enable_command_timing; opt_command_timing=$enableval -fi +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF -# Check whether --enable-cond-command was given. -if test "${enable_cond_command+set}" = set; then - enableval=$enable_cond_command; opt_cond_command=$enableval -fi -# Check whether --enable-cond-regexp was given. -if test "${enable_cond_regexp+set}" = set; then - enableval=$enable_cond_regexp; opt_cond_regexp=$enableval +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done -# Check whether --enable-coprocesses was given. -if test "${enable_coprocesses+set}" = set; then - enableval=$enable_coprocesses; opt_coproc=$enableval +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file fi -# Check whether --enable-debugger was given. -if test "${enable_debugger+set}" = set; then - enableval=$enable_debugger; opt_debugger=$enableval -fi - -# Check whether --enable-directory-stack was given. -if test "${enable_directory_stack+set}" = set; then - enableval=$enable_directory_stack; opt_dirstack=$enableval +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +as_fn_append ac_header_list " sys/time.h" +as_fn_append ac_func_list " alarm" +as_fn_append ac_func_list " fpurge" +as_fn_append ac_func_list " __fpurge" +as_fn_append ac_func_list " snprintf" +as_fn_append ac_func_list " vsnprintf" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## -# Check whether --enable-disabled-builtins was given. -if test "${enable_disabled_builtins+set}" = set; then - enableval=$enable_disabled_builtins; opt_disabled_builtins=$enableval -fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Check whether --enable-dparen-arithmetic was given. -if test "${enable_dparen_arithmetic+set}" = set; then - enableval=$enable_dparen_arithmetic; opt_dparen_arith=$enableval -fi -# Check whether --enable-extended-glob was given. -if test "${enable_extended_glob+set}" = set; then - enableval=$enable_extended_glob; opt_extended_glob=$enableval -fi -# Check whether --enable-extended-glob-default was given. -if test "${enable_extended_glob_default+set}" = set; then - enableval=$enable_extended_glob_default; opt_extglob_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 -fi -# Check whether --enable-history was given. -if test "${enable_history+set}" = set; then - enableval=$enable_history; opt_history=$enableval -fi -# Check whether --enable-job-control was given. -if test "${enable_job_control+set}" = set; then - enableval=$enable_job_control; opt_job_control=$enableval +ac_aux_dir= +for ac_dir in ./support "$srcdir"/./support; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./support \"$srcdir\"/./support" "$LINENO" 5 fi -# Check whether --enable-multibyte was given. -if test "${enable_multibyte+set}" = set; then - enableval=$enable_multibyte; opt_multibyte=$enableval -fi +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Check whether --enable-net-redirections was given. -if test "${enable_net_redirections+set}" = set; then - enableval=$enable_net_redirections; opt_net_redirs=$enableval -fi -# Check whether --enable-process-substitution was given. -if test "${enable_process_substitution+set}" = set; then - enableval=$enable_process_substitution; opt_process_subst=$enableval -fi +ac_config_headers="$ac_config_headers config.h" -# Check whether --enable-progcomp was given. -if test "${enable_progcomp+set}" = set; then - enableval=$enable_progcomp; opt_progcomp=$enableval -fi -# Check whether --enable-prompt-string-decoding was given. -if test "${enable_prompt_string_decoding+set}" = set; then - enableval=$enable_prompt_string_decoding; opt_prompt_decoding=$enableval -fi +BASHVERS=4.3 +RELSTATUS=release -# Check whether --enable-readline was given. -if test "${enable_readline+set}" = set; then - enableval=$enable_readline; opt_readline=$enableval -fi +case "$RELSTATUS" in +alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac -# Check whether --enable-restricted was given. -if test "${enable_restricted+set}" = set; then - enableval=$enable_restricted; opt_restricted=$enableval -fi +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -# Check whether --enable-select was given. -if test "${enable_select+set}" = set; then - enableval=$enable_select; opt_select=$enableval -fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 -# Check whether --enable-separate-helpfiles was given. -if test "${enable_separate_helpfiles+set}" = set; then - enableval=$enable_separate_helpfiles; opt_separate_help=$enableval fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -# Check whether --enable-single-help-strings was given. -if test "${enable_single_help_strings+set}" = set; then - enableval=$enable_single_help_strings; opt_single_longdoc_strings=$enableval -fi -# Check whether --enable-strict-posix-default was given. -if test "${enable_strict_posix_default+set}" = set; then - enableval=$enable_strict_posix_default; opt_strict_posix=$enableval +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi -# Check whether --enable-usg-echo-default was given. -if test "${enable_usg_echo_default+set}" = set; then - enableval=$enable_usg_echo_default; opt_xpg_echo=$enableval fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -# Check whether --enable-xpg-echo-default was given. -if test "${enable_xpg_echo_default+set}" = set; then - enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval -fi -# Check whether --enable-mem-scramble was given. -if test "${enable_mem_scramble+set}" = set; then - enableval=$enable_mem_scramble; opt_memscramble=$enableval -fi -# Check whether --enable-profiling was given. -if test "${enable_profiling+set}" = set; then - enableval=$enable_profiling; opt_profiling=$enableval -fi +opt_bash_malloc=yes +opt_purify=no +opt_purecov=no +opt_afs=no +opt_curses=no +opt_with_installed_readline=no -# Check whether --enable-static-link was given. -if test "${enable_static_link+set}" = set; then - enableval=$enable_static_link; opt_static_link=$enableval -fi +#htmldir= +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 -if test $opt_alias = yes; then -cat >>confdefs.h <<\_ACEOF -#define ALIAS 1 -_ACEOF -fi -if test $opt_dirstack = yes; then -cat >>confdefs.h <<\_ACEOF -#define PUSHD_AND_POPD 1 -_ACEOF +# Check whether --with-afs was given. +if test "${with_afs+set}" = set; then : + withval=$with_afs; opt_afs=$withval fi -if test $opt_restricted = yes; then -cat >>confdefs.h <<\_ACEOF -#define RESTRICTED_SHELL 1 -_ACEOF -fi -if test $opt_process_subst = yes; then -cat >>confdefs.h <<\_ACEOF -#define PROCESS_SUBSTITUTION 1 -_ACEOF +# Check whether --with-bash-malloc was given. +if test "${with_bash_malloc+set}" = set; then : + withval=$with_bash_malloc; opt_bash_malloc=$withval fi -if test $opt_prompt_decoding = yes; then -cat >>confdefs.h <<\_ACEOF -#define PROMPT_STRING_DECODE 1 -_ACEOF -fi -if test $opt_select = yes; then -cat >>confdefs.h <<\_ACEOF -#define SELECT_COMMAND 1 -_ACEOF +# Check whether --with-curses was given. +if test "${with_curses+set}" = set; then : + withval=$with_curses; opt_curses=$withval fi -if test $opt_help = yes; then -cat >>confdefs.h <<\_ACEOF -#define HELP_BUILTIN 1 -_ACEOF + +# Check whether --with-gnu-malloc was given. +if test "${with_gnu_malloc+set}" = set; then : + withval=$with_gnu_malloc; opt_bash_malloc=$withval fi -if test $opt_array_variables = yes; then -cat >>confdefs.h <<\_ACEOF -#define ARRAY_VARS 1 -_ACEOF + +# Check whether --with-installed-readline was given. +if test "${with_installed_readline+set}" = set; then : + withval=$with_installed_readline; opt_with_installed_readline=$withval fi -if test $opt_dparen_arith = yes; then -cat >>confdefs.h <<\_ACEOF -#define DPAREN_ARITHMETIC 1 -_ACEOF + +# Check whether --with-purecov was given. +if test "${with_purecov+set}" = set; then : + withval=$with_purecov; opt_purecov=$withval fi -if test $opt_brace_expansion = yes; then -cat >>confdefs.h <<\_ACEOF -#define BRACE_EXPANSION 1 -_ACEOF + +# Check whether --with-purify was given. +if test "${with_purify+set}" = set; then : + withval=$with_purify; opt_purify=$withval fi -if test $opt_disabled_builtins = yes; then -cat >>confdefs.h <<\_ACEOF -#define DISABLED_BUILTINS 1 -_ACEOF + +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)' + + $as_echo "#define USING_BASH_MALLOC 1" >>confdefs.h + +else + MALLOC_LIB= + MALLOC_LIBRARY= + MALLOC_LDFLAGS= + MALLOC_DEP= fi -if test $opt_command_timing = yes; then -cat >>confdefs.h <<\_ACEOF -#define COMMAND_TIMING 1 -_ACEOF +if test "$opt_purify" = yes; then + PURIFY="purify " + $as_echo "#define DISABLE_MALLOC_WRAPPERS 1" >>confdefs.h + +else + PURIFY= fi -if test $opt_xpg_echo = yes ; then -cat >>confdefs.h <<\_ACEOF -#define DEFAULT_ECHO_TO_XPG 1 -_ACEOF +if test "$opt_purecov" = yes; then + PURIFY="${PURIFY}purecov" fi -if test $opt_strict_posix = yes; then -cat >>confdefs.h <<\_ACEOF -#define STRICT_POSIX 1 -_ACEOF + +if test "$opt_afs" = yes; then + $as_echo "#define AFS 1" >>confdefs.h fi -if test $opt_extended_glob = yes ; then -cat >>confdefs.h <<\_ACEOF -#define EXTENDED_GLOB 1 -_ACEOF +if test "$opt_curses" = yes; then + prefer_curses=yes fi -if test $opt_extglob_default = yes; then -cat >>confdefs.h <<\_ACEOF -#define EXTGLOB_DEFAULT 1 -_ACEOF -else -cat >>confdefs.h <<\_ACEOF -#define EXTGLOB_DEFAULT 0 -_ACEOF +if test -z "${DEBUGGER_START_FILE}"; then + DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' +fi +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 + +opt_static_link=no +opt_profiling=no + +# Check whether --enable-minimal-config was given. +if test "${enable_minimal_config+set}" = set; then : + enableval=$enable_minimal_config; opt_minimal_config=$enableval fi -if test $opt_cond_command = yes ; then -cat >>confdefs.h <<\_ACEOF -#define COND_COMMAND 1 -_ACEOF + +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 -if test $opt_cond_regexp = yes ; then -cat >>confdefs.h <<\_ACEOF -#define COND_REGEXP 1 -_ACEOF +# Check whether --enable-alias was given. +if test "${enable_alias+set}" = set; then : + enableval=$enable_alias; opt_alias=$enableval fi -if test $opt_coproc = yes; then -cat >>confdefs.h <<\_ACEOF -#define COPROCESS_SUPPORT 1 -_ACEOF +# Check whether --enable-arith-for-command was given. +if test "${enable_arith_for_command+set}" = set; then : + enableval=$enable_arith_for_command; opt_arith_for_command=$enableval fi -if test $opt_arith_for_command = yes; then -cat >>confdefs.h <<\_ACEOF -#define ARITH_FOR_COMMAND 1 -_ACEOF +# Check whether --enable-array-variables was given. +if test "${enable_array_variables+set}" = set; then : + enableval=$enable_array_variables; opt_array_variables=$enableval fi -if test $opt_net_redirs = yes; then -cat >>confdefs.h <<\_ACEOF -#define NETWORK_REDIRECTIONS 1 -_ACEOF +# Check whether --enable-bang-history was given. +if test "${enable_bang_history+set}" = set; then : + enableval=$enable_bang_history; opt_bang_history=$enableval fi -if test $opt_progcomp = yes; then -cat >>confdefs.h <<\_ACEOF -#define PROGRAMMABLE_COMPLETION 1 -_ACEOF +# Check whether --enable-brace-expansion was given. +if test "${enable_brace_expansion+set}" = set; then : + enableval=$enable_brace_expansion; opt_brace_expansion=$enableval fi -if test $opt_multibyte = no; then -cat >>confdefs.h <<\_ACEOF -#define NO_MULTIBYTE_SUPPORT 1 -_ACEOF +# Check whether --enable-casemod-attributes was given. +if test "${enable_casemod_attributes+set}" = set; then : + enableval=$enable_casemod_attributes; opt_casemod_attrs=$enableval fi -if test $opt_debugger = yes; then -cat >>confdefs.h <<\_ACEOF -#define DEBUGGER 1 -_ACEOF +# Check whether --enable-casemod-expansions was given. +if test "${enable_casemod_expansions+set}" = set; then : + enableval=$enable_casemod_expansions; opt_casemod_expansions=$enableval fi -if test $opt_casemod_attrs = yes; then -cat >>confdefs.h <<\_ACEOF -#define CASEMOD_ATTRS 1 -_ACEOF +# Check whether --enable-command-timing was given. +if test "${enable_command_timing+set}" = set; then : + enableval=$enable_command_timing; opt_command_timing=$enableval fi -if test $opt_casemod_expansions = yes; then -cat >>confdefs.h <<\_ACEOF -#define CASEMOD_EXPANSIONS 1 -_ACEOF +# Check whether --enable-cond-command was given. +if test "${enable_cond_command+set}" = set; then : + enableval=$enable_cond_command; opt_cond_command=$enableval fi -if test $opt_memscramble = yes; then -cat >>confdefs.h <<\_ACEOF -#define MEMSCRAMBLE 1 -_ACEOF +# Check whether --enable-cond-regexp was given. +if test "${enable_cond_regexp+set}" = set; then : + enableval=$enable_cond_regexp; opt_cond_regexp=$enableval +fi +# Check whether --enable-coprocesses was given. +if test "${enable_coprocesses+set}" = set; then : + enableval=$enable_coprocesses; opt_coproc=$enableval fi -if test "$opt_minimal_config" = yes; then - TESTSCRIPT=run-minimal -else - TESTSCRIPT=run-all +# Check whether --enable-debugger was given. +if test "${enable_debugger+set}" = set; then : + enableval=$enable_debugger; opt_debugger=$enableval fi -HELPDIR= HELPDIRDEFINE= HELPINSTALL= -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' +# 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 -HELPSTRINGS= -if test "$opt_single_longdoc_strings" != "yes"; then - HELPSTRINGS='-S' + +# Check whether --enable-directory-stack was given. +if test "${enable_directory_stack+set}" = set; then : + enableval=$enable_directory_stack; opt_dirstack=$enableval fi +# Check whether --enable-disabled-builtins was given. +if test "${enable_disabled_builtins+set}" = set; then : + enableval=$enable_disabled_builtins; opt_disabled_builtins=$enableval +fi +# Check whether --enable-dparen-arithmetic was given. +if test "${enable_dparen_arithmetic+set}" = set; then : + enableval=$enable_dparen_arithmetic; opt_dparen_arith=$enableval +fi +# Check whether --enable-extended-glob was given. +if test "${enable_extended_glob+set}" = set; then : + enableval=$enable_extended_glob; opt_extended_glob=$enableval +fi +# Check whether --enable-extended-glob-default was given. +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 +fi +# Check whether --enable-history was given. +if test "${enable_history+set}" = set; then : + enableval=$enable_history; opt_history=$enableval +fi +# Check whether --enable-job-control was given. +if test "${enable_job_control+set}" = set; then : + enableval=$enable_job_control; opt_job_control=$enableval +fi +# Check whether --enable-multibyte was given. +if test "${enable_multibyte+set}" = set; then : + enableval=$enable_multibyte; opt_multibyte=$enableval +fi +# Check whether --enable-net-redirections was given. +if test "${enable_net_redirections+set}" = set; then : + enableval=$enable_net_redirections; opt_net_redirs=$enableval +fi +# Check whether --enable-process-substitution was given. +if test "${enable_process_substitution+set}" = set; then : + enableval=$enable_process_substitution; opt_process_subst=$enableval +fi +# Check whether --enable-progcomp was given. +if test "${enable_progcomp+set}" = set; then : + enableval=$enable_progcomp; opt_progcomp=$enableval +fi +# Check whether --enable-prompt-string-decoding was given. +if test "${enable_prompt_string_decoding+set}" = set; then : + enableval=$enable_prompt_string_decoding; opt_prompt_decoding=$enableval +fi +# Check whether --enable-readline was given. +if test "${enable_readline+set}" = set; then : + enableval=$enable_readline; opt_readline=$enableval +fi +# Check whether --enable-restricted was given. +if test "${enable_restricted+set}" = set; then : + enableval=$enable_restricted; opt_restricted=$enableval +fi +# Check whether --enable-select was given. +if test "${enable_select+set}" = set; then : + enableval=$enable_select; opt_select=$enableval +fi +# Check whether --enable-separate-helpfiles was given. +if test "${enable_separate_helpfiles+set}" = set; then : + enableval=$enable_separate_helpfiles; opt_separate_help=$enableval +fi -echo "" -echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" -echo "" +# Check whether --enable-single-help-strings was given. +if test "${enable_single_help_strings+set}" = set; then : + enableval=$enable_single_help_strings; opt_single_longdoc_strings=$enableval +fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 +# Check whether --enable-strict-posix-default was given. +if test "${enable_strict_posix_default+set}" = set; then : + enableval=$enable_strict_posix_default; opt_strict_posix=$enableval +fi + +# Check whether --enable-usg-echo-default was given. +if test "${enable_usg_echo_default+set}" = set; then : + enableval=$enable_usg_echo_default; opt_xpg_echo=$enableval +fi + +# Check whether --enable-xpg-echo-default was given. +if test "${enable_xpg_echo_default+set}" = set; then : + enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval +fi + + +# Check whether --enable-mem-scramble was given. +if test "${enable_mem_scramble+set}" = set; then : + enableval=$enable_mem_scramble; opt_memscramble=$enableval +fi + +# Check whether --enable-profiling was given. +if test "${enable_profiling+set}" = set; then : + enableval=$enable_profiling; opt_profiling=$enableval +fi + +# Check whether --enable-static-link was given. +if test "${enable_static_link+set}" = set; then : + enableval=$enable_static_link; opt_static_link=$enableval +fi + + + + + + + + + +if test $opt_alias = yes; then +$as_echo "#define ALIAS 1" >>confdefs.h + +fi +if test $opt_dirstack = yes; then +$as_echo "#define PUSHD_AND_POPD 1" >>confdefs.h + +fi +if test $opt_restricted = yes; then +$as_echo "#define RESTRICTED_SHELL 1" >>confdefs.h + +fi +if test $opt_process_subst = yes; then +$as_echo "#define PROCESS_SUBSTITUTION 1" >>confdefs.h + +fi +if test $opt_prompt_decoding = yes; then +$as_echo "#define PROMPT_STRING_DECODE 1" >>confdefs.h + +fi +if test $opt_select = yes; then +$as_echo "#define SELECT_COMMAND 1" >>confdefs.h + +fi +if test $opt_help = yes; then +$as_echo "#define HELP_BUILTIN 1" >>confdefs.h + +fi +if test $opt_array_variables = yes; then +$as_echo "#define ARRAY_VARS 1" >>confdefs.h + +fi +if test $opt_dparen_arith = yes; then +$as_echo "#define DPAREN_ARITHMETIC 1" >>confdefs.h + +fi +if test $opt_brace_expansion = yes; then +$as_echo "#define BRACE_EXPANSION 1" >>confdefs.h + +fi +if test $opt_disabled_builtins = yes; then +$as_echo "#define DISABLED_BUILTINS 1" >>confdefs.h + +fi +if test $opt_command_timing = yes; then +$as_echo "#define COMMAND_TIMING 1" >>confdefs.h + +fi +if test $opt_xpg_echo = yes ; then +$as_echo "#define DEFAULT_ECHO_TO_XPG 1" >>confdefs.h + +fi +if test $opt_strict_posix = yes; then +$as_echo "#define STRICT_POSIX 1" >>confdefs.h + +fi +if test $opt_extended_glob = yes ; then +$as_echo "#define EXTENDED_GLOB 1" >>confdefs.h + +fi +if test $opt_extglob_default = yes; then +$as_echo "#define EXTGLOB_DEFAULT 1" >>confdefs.h + +else +$as_echo "#define EXTGLOB_DEFAULT 0" >>confdefs.h + +fi +if test $opt_cond_command = yes ; then +$as_echo "#define COND_COMMAND 1" >>confdefs.h + +fi +if test $opt_cond_regexp = yes ; then +$as_echo "#define COND_REGEXP 1" >>confdefs.h + +fi +if test $opt_coproc = yes; then +$as_echo "#define COPROCESS_SUPPORT 1" >>confdefs.h + +fi +if test $opt_arith_for_command = yes; then +$as_echo "#define ARITH_FOR_COMMAND 1" >>confdefs.h + +fi +if test $opt_net_redirs = yes; then +$as_echo "#define NETWORK_REDIRECTIONS 1" >>confdefs.h + +fi +if test $opt_progcomp = yes; then +$as_echo "#define PROGRAMMABLE_COMPLETION 1" >>confdefs.h + +fi +if test $opt_multibyte = no; then +$as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h + +fi +if test $opt_debugger = yes; then +$as_echo "#define DEBUGGER 1" >>confdefs.h + +fi +if test $opt_casemod_attrs = yes; then +$as_echo "#define CASEMOD_ATTRS 1" >>confdefs.h + +fi +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 + +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 + + + + + + + + + + + + + + + + + + + +echo "" +echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" +echo "" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; 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_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -2803,9 +3440,9 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then @@ -2816,24 +3453,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_CC="gcc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -2842,7 +3479,7 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $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 @@ -2856,9 +3493,9 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -2869,24 +3506,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -2896,9 +3533,9 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -2910,18 +3547,18 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + 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 fi ac_cv_prog_CC="cc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then @@ -2940,10 +3577,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -2955,9 +3592,9 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -2968,24 +3605,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -2999,9 +3636,9 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then @@ -3012,24 +3649,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_CC="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -3042,7 +3679,7 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $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 @@ -3053,57 +3690,37 @@ fi fi -test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3119,8 +3736,8 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: @@ -3136,17 +3753,17 @@ do done rm -f $ac_rmfiles -if { (ac_try="$ac_link_default" +if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3163,7 +3780,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3182,84 +3799,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi - -{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -if test -z "$ac_file"; then - $as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi - +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } - fi - fi -fi -{ $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3274,32 +3848,83 @@ for ac_file in conftest.exe conftest conftest.*; do esac done else - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } fi - -rm -f conftest$ac_cv_exeext -{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $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 C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } -if test "${ac_cv_objext+set}" = set; then +if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3311,17 +3936,17 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" +if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3334,31 +3959,23 @@ else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then +if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3372,37 +3989,16 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes @@ -3411,20 +4007,16 @@ else fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then +if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3435,35 +4027,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3474,36 +4042,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_compile "$LINENO"; then : - ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3514,42 +4058,17 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS @@ -3566,23 +4085,18 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then +if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -#include -#include +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); @@ -3634,32 +4148,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3670,17 +4161,19 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { $as_echo "$as_me:$LINENO: result: none needed" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) - { $as_echo "$as_me:$LINENO: result: unsupported" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3691,18 +4184,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - { $as_echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5 $as_echo_n "checking for strerror in -lcposix... " >&6; } -if test "${ac_cv_lib_cposix_strerror+set}" = set; then +if ${ac_cv_lib_cposix_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -3720,43 +4209,18 @@ return strerror (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_cposix_strerror=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_cposix_strerror=no + ac_cv_lib_cposix_strerror=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_strerror" >&5 $as_echo "$ac_cv_lib_cposix_strerror" >&6; } -if test "x$ac_cv_lib_cposix_strerror" = x""yes; then +if test "x$ac_cv_lib_cposix_strerror" = xyes; then : LIBS="$LIBS -lcposix" fi @@ -3767,14 +4231,14 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then + if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded @@ -3789,11 +4253,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -3802,78 +4262,34 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi @@ -3885,7 +4301,7 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes @@ -3896,11 +4312,7 @@ do # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -3909,87 +4321,40 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + else - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c @@ -3999,9 +4364,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then +if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then @@ -4012,10 +4377,10 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; 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 @@ -4032,7 +4397,7 @@ case `"$ac_path_GREP" --version 2>&1` in $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" @@ -4047,26 +4412,24 @@ esac $ac_path_GREP_found && break 3 done done -done + done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then - { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then +if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 @@ -4080,10 +4443,10 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in egrep; 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 @@ -4100,7 +4463,7 @@ case `"$ac_path_EGREP" --version 2>&1` in $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" @@ -4115,12 +4478,10 @@ esac $ac_path_EGREP_found && break 3 done done -done + done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then - { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP @@ -4128,21 +4489,17 @@ fi fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then +if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -4157,48 +4514,23 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no + ac_cv_header_stdc=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : + $EGREP "memchr" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -4208,18 +4540,14 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : + $EGREP "free" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -4229,14 +4557,10 @@ fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -4263,301 +4587,74 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_run "$LINENO"; then : -( exit $ac_status ) -ac_cv_header_stdc=no +else + ac_cv_header_stdc=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF +$as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF +fi +done + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + if test "$MINIX" = yes; then +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - if test "${ac_cv_header_minix_config_h+set}" = set; then - { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 -$as_echo_n "checking for minix/config.h... " >&6; } -if test "${ac_cv_header_minix_config_h+set}" = set; then - $as_echo_n "(cached) " >&6 -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -$as_echo "$ac_cv_header_minix_config_h" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5 -$as_echo_n "checking minix/config.h usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5 -$as_echo_n "checking minix/config.h presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 -$as_echo_n "checking for minix/config.h... " >&6; } -if test "${ac_cv_header_minix_config_h+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_header_minix_config_h=$ac_header_preproc -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -$as_echo "$ac_cv_header_minix_config_h" >&6; } - -fi -if test "x$ac_cv_header_minix_config_h" = x""yes; then - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define _POSIX_SOURCE 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define _POSIX_1_SOURCE 2 -_ACEOF +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h -cat >>confdefs.h <<\_ACEOF -#define _MINIX 1 -_ACEOF +$as_echo "#define _MINIX 1" >>confdefs.h fi - - { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if test "${ac_cv_safe_to_define___extensions__+set}" = set; then +if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -# define __EXTENSIONS__ 1 - $ac_includes_default +# define __EXTENSIONS__ 1 + $ac_includes_default int main () { @@ -4566,69 +4663,39 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_safe_to_define___extensions__=no + ac_cv_safe_to_define___extensions__=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && - cat >>confdefs.h <<\_ACEOF -#define __EXTENSIONS__ 1 -_ACEOF + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define _ALL_SOURCE 1 -_ACEOF + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define _GNU_SOURCE 1 -_ACEOF + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define _POSIX_PTHREAD_SEMANTICS 1 -_ACEOF + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define _TANDEM_SOURCE 1 -_ACEOF # Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then +if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then - { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if test "${ac_cv_sys_largefile_CC+set}" = set; then +if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no @@ -4637,11 +4704,7 @@ else while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. @@ -4660,60 +4723,14 @@ main () return 0; } _ACEOF - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext break done @@ -4721,23 +4738,19 @@ rm -f core conftest.err conftest.$ac_objext rm -f conftest.$ac_ext fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if test "${ac_cv_sys_file_offset_bits+set}" = set; then +if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. @@ -4756,38 +4769,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include @@ -4807,38 +4793,15 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; @@ -4850,17 +4813,13 @@ _ACEOF esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if test "${ac_cv_sys_large_files+set}" = set; then +if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. @@ -4879,38 +4838,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include @@ -4930,38 +4862,15 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; @@ -4973,6 +4882,8 @@ _ACEOF esac rm -rf conftest* fi + + fi @@ -5009,19 +4920,16 @@ fi -if test -z "$CC_FOR_BUILD"; then - if test "x$cross_compiling" = "xno"; then - CC_FOR_BUILD='$(CC)' - else - CC_FOR_BUILD=gcc - fi -fi - - -test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1 +if test -z "$CFLAGS"; then + AUTO_CFLAGS="-g ${GCC+-O2}" + AUTO_LDFLAGS="-g ${GCC+-O2}" +else + AUTO_CFLAGS= AUTO_LDFLAGS= +fi -test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" +CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} +# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg @@ -5032,7 +4940,12 @@ if test "$opt_profiling" = "yes"; then 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_c_compiler_gnu" = "yes"; then STATIC_LD="-static" @@ -5043,15 +4956,25 @@ if test "$opt_static_link" = yes; then 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 - CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + 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 -test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + @@ -5063,23 +4986,19 @@ test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" if test $ac_cv_c_compiler_gnu = yes; then - { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } -if test "${ac_cv_prog_gcc_traditional+set}" = set; then +if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then + $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no @@ -5088,24 +5007,20 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then + $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" @@ -5124,40 +5039,26 @@ then if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi -if test "${bash_cv_termcap_lib+set}" = set; then +if ${bash_cv_termcap_lib+:} false; then : $as_echo_n "(cached) " >&6 else - { $as_echo "$as_me:$LINENO: checking for tgetent" >&5 -$as_echo_n "checking for tgetent... " >&6; } -if test "${ac_cv_func_tgetent+set}" = set; then + ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" +if test "x$ac_cv_func_tgetent" = xyes; then : + bash_cv_termcap_lib=libc +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +$as_echo_n "checking for tgetent in -ltermcap... " >&6; } +if ${ac_cv_lib_termcap_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Define tgetent to an innocuous variant, in case declares tgetent. - For example, HP-UX 11i declares gettimeofday. */ -#define tgetent innocuous_tgetent - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char tgetent (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef tgetent /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC @@ -5166,13 +5067,6 @@ cat >>conftest.$ac_ext <<_ACEOF extern "C" #endif char tgetent (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_tgetent || defined __stub___tgetent -choke me -#endif - int main () { @@ -5181,124 +5075,28 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_tgetent=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_termcap_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_tgetent=no + ac_cv_lib_termcap_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -$as_echo "$ac_cv_func_tgetent" >&6; } -if test "x$ac_cv_func_tgetent" = x""yes; then - bash_cv_termcap_lib=libc -else - { $as_echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 -$as_echo_n "checking for tgetent in -ltermcap... " >&6; } -if test "${ac_cv_lib_termcap_tgetent+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ltermcap $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char tgetent (); -int -main () -{ -return tgetent (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_termcap_tgetent=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_termcap_tgetent=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 $as_echo "$ac_cv_lib_termcap_tgetent" >&6; } -if test "x$ac_cv_lib_termcap_tgetent" = x""yes; then +if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : bash_cv_termcap_lib=libtermcap else - { $as_echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 $as_echo_n "checking for tgetent in -ltinfo... " >&6; } -if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then +if ${ac_cv_lib_tinfo_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -5316,57 +5114,28 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tinfo_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_tinfo_tgetent=no + ac_cv_lib_tinfo_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 $as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } -if test "x$ac_cv_lib_tinfo_tgetent" = x""yes; then +if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : bash_cv_termcap_lib=libtinfo else - { $as_echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 $as_echo_n "checking for tgetent in -lcurses... " >&6; } -if test "${ac_cv_lib_curses_tgetent+set}" = set; then +if ${ac_cv_lib_curses_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -5384,57 +5153,28 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_curses_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_curses_tgetent=no + ac_cv_lib_curses_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 $as_echo "$ac_cv_lib_curses_tgetent" >&6; } -if test "x$ac_cv_lib_curses_tgetent" = x""yes; then +if test "x$ac_cv_lib_curses_tgetent" = xyes; then : bash_cv_termcap_lib=libcurses else - { $as_echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 $as_echo_n "checking for tgetent in -lncurses... " >&6; } -if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then +if ${ac_cv_lib_ncurses_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -5452,43 +5192,18 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_ncurses_tgetent=no + ac_cv_lib_ncurses_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } -if test "x$ac_cv_lib_ncurses_tgetent" = x""yes; then +if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : bash_cv_termcap_lib=libncurses else bash_cv_termcap_lib=gnutermcap @@ -5505,10 +5220,10 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } fi -{ $as_echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 $as_echo "using $bash_cv_termcap_lib" >&6; } if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" @@ -5534,7 +5249,7 @@ fi -{ $as_echo "$as_me:$LINENO: checking version of installed readline library" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking version of installed readline library" >&5 $as_echo_n "checking version of installed readline library... " >&6; } # What a pain in the ass this is. @@ -5559,17 +5274,13 @@ LIBS="$LIBS -lreadline ${TERMCAP_LIB}" CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" -if test "${ac_cv_rl_version+set}" = set; then +if ${ac_cv_rl_version+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_rl_version='4.2' else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -5592,42 +5303,15 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_rl_version=`cat conftest.rlv` else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_rl_version='0.0' + ac_cv_rl_version='0.0' fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi @@ -5665,14 +5349,14 @@ RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" # Readline versions greater than 4.2 have these defines in readline.h if test $ac_cv_rl_version = '0.0' ; then - { $as_echo "$as_me:$LINENO: WARNING: Could not test version of installed readline library." >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not test version of installed readline library." >&5 $as_echo "$as_me: WARNING: Could not test version of installed readline library." >&2;} elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir - { $as_echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 $as_echo "$ac_cv_rl_version" >&6; } else @@ -5701,7 +5385,7 @@ RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir -{ $as_echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 $as_echo "$ac_cv_rl_version" >&6; } fi @@ -5710,9 +5394,9 @@ fi case "$ac_cv_rl_version" in 5*|6*|7*|8*|9*) ;; *) opt_with_installed_readline=no - { $as_echo "$as_me:$LINENO: WARNING: installed readline library is too old to be linked with bash" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5 $as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: using private bash version" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using private bash version" >&5 $as_echo "$as_me: WARNING: using private bash version" >&2;} ;; esac @@ -5720,9 +5404,7 @@ fi TILDE_LIB=-ltilde if test $opt_readline = yes; then - cat >>confdefs.h <<\_ACEOF -#define READLINE 1 -_ACEOF + $as_echo "#define READLINE 1" >>confdefs.h if test "$opt_with_installed_readline" != "no" ; then case "$opt_with_installed_readline" in @@ -5758,15 +5440,11 @@ else fi if test $opt_history = yes || test $opt_bang_history = yes; then if test $opt_history = yes; then - cat >>confdefs.h <<\_ACEOF -#define HISTORY 1 -_ACEOF + $as_echo "#define HISTORY 1" >>confdefs.h fi if test $opt_bang_history = yes; then - cat >>confdefs.h <<\_ACEOF -#define BANG_HISTORY 1 -_ACEOF + $as_echo "#define BANG_HISTORY 1" >>confdefs.h fi if test "$opt_with_installed_readline" != "no"; then @@ -5822,10 +5500,10 @@ fi # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then +if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5833,11 +5511,11 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -5845,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. @@ -5874,7 +5552,7 @@ case $as_dir/ in ;; esac -done + done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir @@ -5890,7 +5568,7 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. @@ -5901,11 +5579,12 @@ 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 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +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 test "${ac_cv_prog_AR+set}" = set; then +if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then @@ -5916,36 +5595,89 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS - test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:$LINENO: result: $AR" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$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. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then +if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then @@ -5956,24 +5688,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -5983,9 +5715,9 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then @@ -5996,24 +5728,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_RANLIB="ranlib" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -6022,7 +5754,7 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +{ $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 @@ -6036,9 +5768,9 @@ for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_YACC+set}" = set; then +if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then @@ -6049,24 +5781,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_YACC="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - { $as_echo "$as_me:$LINENO: result: $YACC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -6075,11 +5807,11 @@ fi done test -n "$YACC" || YACC="yacc" -{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF @@ -6087,7 +5819,7 @@ SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -6097,16 +5829,22 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" 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 ;; @@ -6134,31 +5872,60 @@ if test x$SIZE = x; then fi -cat >>confdefs.h <<\_ACEOF -#define _GNU_SOURCE 1 -_ACEOF +# Checks for stat-related time functions. + +# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2012 Free Software +# Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +# st_atim.tv_nsec - Linux, Solaris, Cygwin +# st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE +# st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE +# st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) + +# st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) +# st_birthtim - Cygwin 1.7.0+ + + + +# Configure checks for struct timespec + +# Copyright (C) 2000-2001, 2003-2007, 2009-2011, 2012 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Original written by Paul Eggert and Jim Meyering. +# Modified by Chet Ramey for bash + + + + + +$as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if test "${ac_cv_c_const+set}" = set; then +if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ 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; @@ -6175,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; @@ -6192,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; @@ -6208,56 +5976,29 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_const=no + ac_cv_c_const=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -cat >>confdefs.h <<\_ACEOF -#define const /**/ -_ACEOF +$as_echo "#define const /**/" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for inline" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } -if test "${ac_cv_c_inline+set}" = set; then +if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; @@ -6266,41 +6007,17 @@ $ac_kw foo_t foo () {return 0; } #endif _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } - case $ac_cv_c_inline in inline | yes) ;; *) @@ -6316,19 +6033,14 @@ _ACEOF ;; esac - - { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if test "${ac_cv_c_bigendian+set}" = set; then +if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler @@ -6336,46 +6048,34 @@ cat >>conftest.$ac_ext <<_ACEOF typedef int dummy; _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless - # there are some -arch flags. Note that *ppc* also matches - # ppc64. This check is also rather less than ideal. - case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #( - *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;; - esac -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -6393,30 +6093,9 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -6432,49 +6111,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_bigendian=no + ac_cv_c_bigendian=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -6489,30 +6137,9 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -6527,51 +6154,20 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_bigendian=no + ac_cv_c_bigendian=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; @@ -6597,24 +6193,7 @@ return use_ascii (foo) == use_ebcdic (foo); return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi @@ -6626,20 +6205,10 @@ $as_echo "$ac_try_echo") >&5 ac_cv_c_bigendian=unknown fi fi -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int @@ -6659,86 +6228,48 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_bigendian=yes + ac_cv_c_bigendian=yes fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) - cat >>confdefs.h <<\_ACEOF -#define WORDS_BIGENDIAN 1 -_ACEOF + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) -cat >>confdefs.h <<\_ACEOF -#define AC_APPLE_UNIVERSAL_BUILD 1 -_ACEOF +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) - { { $as_echo "$as_me:$LINENO: error: unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -$as_echo "$as_me: error: unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac -{ $as_echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5 $as_echo_n "checking for preprocessor stringizing operator... " >&6; } -if test "${ac_cv_c_stringize+set}" = set; then +if ${ac_cv_c_stringize+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define x(y) #y char *s = x(teststring); _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "#teststring" >/dev/null 2>&1; then + $EGREP "#teststring" >/dev/null 2>&1; then : ac_cv_c_stringize=no else ac_cv_c_stringize=yes @@ -6746,28 +6277,22 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5 $as_echo "$ac_cv_c_stringize" >&6; } if test $ac_cv_c_stringize = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRINGIZE 1 -_ACEOF +$as_echo "#define HAVE_STRINGIZE 1" >>confdefs.h fi - { $as_echo "$as_me:$LINENO: checking for long double with more range or precision than double" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double with more range or precision than double" >&5 $as_echo_n "checking for long double with more range or precision than double... " >&6; } -if test "${ac_cv_type_long_double_wider+set}" = set; then +if ${ac_cv_type_long_double_wider+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include long double const a[] = @@ -6791,149 +6316,90 @@ 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; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_long_double_wider=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_long_double_wider=no + ac_cv_type_long_double_wider=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_double_wider" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double_wider" >&5 $as_echo "$ac_cv_type_long_double_wider" >&6; } if test $ac_cv_type_long_double_wider = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_DOUBLE_WIDER 1 -_ACEOF +$as_echo "#define HAVE_LONG_DOUBLE_WIDER 1" >>confdefs.h fi ac_cv_c_long_double=$ac_cv_type_long_double_wider if test $ac_cv_c_long_double = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_DOUBLE 1 -_ACEOF +$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for function prototypes" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 $as_echo_n "checking for function prototypes... " >&6; } if test "$ac_cv_prog_cc_c89" != no; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } -cat >>confdefs.h <<\_ACEOF -#define PROTOTYPES 1 -_ACEOF +$as_echo "#define PROTOTYPES 1" >>confdefs.h -cat >>confdefs.h <<\_ACEOF -#define __PROTOTYPES 1 -_ACEOF +$as_echo "#define __PROTOTYPES 1" >>confdefs.h else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - -{ $as_echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 $as_echo_n "checking whether char is unsigned... " >&6; } -if test "${ac_cv_c_char_unsigned+set}" = set; then +if ${ac_cv_c_char_unsigned+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default 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; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_char_unsigned=no else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_char_unsigned=yes + ac_cv_c_char_unsigned=yes fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 $as_echo "$ac_cv_c_char_unsigned" >&6; } if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >>confdefs.h <<\_ACEOF -#define __CHAR_UNSIGNED__ 1 -_ACEOF + $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for working volatile" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 $as_echo_n "checking for working volatile... " >&6; } -if test "${ac_cv_c_volatile+set}" = set; then +if ${ac_cv_c_volatile+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -6947,57 +6413,30 @@ return !x && !y; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_volatile=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_volatile=no + ac_cv_c_volatile=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 $as_echo "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then -cat >>confdefs.h <<\_ACEOF -#define volatile /**/ -_ACEOF +$as_echo "#define volatile /**/" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } -if test "${ac_cv_c_restrict+set}" = set; then +if ${ac_cv_c_restrict+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { @@ -7014,46 +6453,20 @@ int s[1]; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_restrict=$ac_kw -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 $as_echo "$ac_cv_c_restrict" >&6; } - case $ac_cv_c_restrict in restrict) ;; - no) cat >>confdefs.h <<\_ACEOF -#define restrict /**/ -_ACEOF + no) $as_echo "#define restrict /**/" >>confdefs.h ;; *) cat >>confdefs.h <<_ACEOF #define restrict $ac_cv_c_restrict @@ -7076,16 +6489,16 @@ _ACEOF - { $as_echo "$as_me:$LINENO: checking whether NLS is requested" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then +if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi - { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } @@ -7123,9 +6536,9 @@ rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_MSGFMT+set}" = set; then +if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in @@ -7154,18 +6567,18 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_GMSGFMT+set}" = set; then +if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in @@ -7178,14 +6591,14 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + 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:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" @@ -7194,10 +6607,10 @@ esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -7234,9 +6647,9 @@ rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_XGETTEXT+set}" = set; then +if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in @@ -7265,10 +6678,10 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -7305,9 +6718,9 @@ rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_MSGMERGE+set}" = set; then +if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in @@ -7335,10 +6748,10 @@ esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:$LINENO: result: $MSGMERGE" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -7349,7 +6762,7 @@ fi : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { $as_echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi @@ -7360,7 +6773,7 @@ $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else - { $as_echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi @@ -7370,102 +6783,9 @@ $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } ac_config_commands="$ac_config_commands default-1" -{ $as_echo "$as_me:$LINENO: checking for off_t" >&5 -$as_echo_n "checking for off_t... " >&6; } -if test "${ac_cv_type_off_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_off_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (off_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((off_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_off_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -$as_echo "$ac_cv_type_off_t" >&6; } -if test "x$ac_cv_type_off_t" = x""yes; then - : else cat >>confdefs.h <<_ACEOF @@ -7474,102 +6794,9 @@ _ACEOF fi -{ $as_echo "$as_me:$LINENO: checking for size_t" >&5 -$as_echo_n "checking for size_t... " >&6; } -if test "${ac_cv_type_size_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_size_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (size_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((size_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_size_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -$as_echo "$ac_cv_type_size_t" >&6; } -if test "x$ac_cv_type_size_t" = x""yes; then - : else cat >>confdefs.h <<_ACEOF @@ -7580,16 +6807,12 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 $as_echo_n "checking for working alloca.h... " >&6; } -if test "${ac_cv_working_alloca_h+set}" = set; then +if ${ac_cv_working_alloca_h+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -7601,59 +6824,28 @@ char *p = (char *) alloca (2 * sizeof (int)); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_working_alloca_h=no + ac_cv_working_alloca_h=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 $as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for alloca" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 $as_echo_n "checking for alloca... " >&6; } -if test "${ac_cv_func_alloca_works+set}" = set; then +if ${ac_cv_func_alloca_works+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca @@ -7669,7 +6861,7 @@ cat >>conftest.$ac_ext <<_ACEOF #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); +void *alloca (size_t); # endif # endif # endif @@ -7685,47 +6877,20 @@ char *p = (char *) alloca (1); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_alloca_works=no + ac_cv_func_alloca_works=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 $as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions @@ -7735,21 +6900,15 @@ else ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF +$as_echo "#define C_ALLOCA 1" >>confdefs.h -{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if test "${ac_cv_os_cray+set}" = set; then +if ${ac_cv_os_cray+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray @@ -7759,7 +6918,7 @@ wenotbecray _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then + $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no @@ -7767,101 +6926,13 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 $as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func @@ -7873,81 +6944,46 @@ fi done fi -{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 $as_echo_n "checking stack direction for C alloca... " >&6; } -if test "${ac_cv_c_stack_direction+set}" = set; then +if ${ac_cv_c_stack_direction+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_stack_direction=-1 + ac_cv_c_stack_direction=-1 fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 $as_echo "$ac_cv_c_stack_direction" >&6; } - cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF @@ -7957,148 +6993,13 @@ fi -for ac_header in stdlib.h unistd.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -8108,119 +7009,32 @@ fi done -for ac_func in getpagesize -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif -#undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" -fi -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_GETPAGESIZE 1 _ACEOF fi done -{ $as_echo "$as_me:$LINENO: checking for working mmap" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 $as_echo_n "checking for working mmap... " >&6; } -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_func_mmap_fixed_mapped=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ @@ -8257,11 +7071,6 @@ char *malloc (); /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ @@ -8296,8 +7105,9 @@ int main () { char *data, *data2, *data3; + const char *cdata2; int i, pagesize; - int fd; + int fd, fd2; pagesize = getpagesize (); @@ -8310,27 +7120,41 @@ main () umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) - return 1; + return 2; if (write (fd, data, pagesize) != pagesize) - return 1; + return 3; close (fd); + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) - return 1; - data2 = (char *) malloc (2 * pagesize); - if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + return 9; if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; + return 10; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) - return 1; + return 11; /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on @@ -8339,75 +7163,42 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) - return 1; + return 12; if (read (fd, data3, pagesize) != pagesize) - return 1; + return 13; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) - return 1; + return 14; close (fd); return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_mmap_fixed_mapped=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_mmap_fixed_mapped=no + ac_cv_func_mmap_fixed_mapped=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 $as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_MMAP 1 -_ACEOF +$as_echo "#define HAVE_MMAP 1" >>confdefs.h fi -rm -f conftest.mmap +rm -f conftest.mmap conftest.txt - { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 $as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } -if test "${ac_cv_gnu_library_2_1+set}" = set; then +if ${ac_cv_gnu_library_2_1+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8419,7 +7210,7 @@ cat >>conftest.$ac_ext <<_ACEOF _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Lucky GNU user" >/dev/null 2>&1; then + $EGREP "Lucky GNU user" >/dev/null 2>&1; then : ac_cv_gnu_library_2_1=yes else ac_cv_gnu_library_2_1=no @@ -8429,7 +7220,7 @@ rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 $as_echo "$ac_cv_gnu_library_2_1" >&6; } GLIBC21="$ac_cv_gnu_library_2_1" @@ -8437,13 +7228,13 @@ $as_echo "$ac_cv_gnu_library_2_1" >&6; } - { $as_echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 $as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } -if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then +if ${gt_cv_int_divbyzero_sigfpe+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : # Guess based on the CPU. case "$host_cpu" in @@ -8454,11 +7245,7 @@ else esac else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8498,45 +7285,18 @@ int main () } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : gt_cv_int_divbyzero_sigfpe=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -gt_cv_int_divbyzero_sigfpe=no + gt_cv_int_divbyzero_sigfpe=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 $as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; @@ -8549,16 +7309,12 @@ _ACEOF - { $as_echo "$as_me:$LINENO: checking for inttypes.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 $as_echo_n "checking for inttypes.h... " >&6; } -if test "${jm_ac_cv_header_inttypes_h+set}" = set; then +if ${jm_ac_cv_header_inttypes_h+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -8570,35 +7326,14 @@ uintmax_t i = (uintmax_t) -1; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : jm_ac_cv_header_inttypes_h=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - jm_ac_cv_header_inttypes_h=no + jm_ac_cv_header_inttypes_h=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_inttypes_h" >&5 $as_echo "$jm_ac_cv_header_inttypes_h" >&6; } if test $jm_ac_cv_header_inttypes_h = yes; then @@ -8609,16 +7344,12 @@ _ACEOF fi - { $as_echo "$as_me:$LINENO: checking for stdint.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 $as_echo_n "checking for stdint.h... " >&6; } -if test "${jm_ac_cv_header_stdint_h+set}" = set; then +if ${jm_ac_cv_header_stdint_h+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -8630,35 +7361,14 @@ uintmax_t i = (uintmax_t) -1; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : jm_ac_cv_header_stdint_h=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - jm_ac_cv_header_stdint_h=no + jm_ac_cv_header_stdint_h=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_stdint_h" >&5 $as_echo "$jm_ac_cv_header_stdint_h" >&6; } if test $jm_ac_cv_header_stdint_h = yes; then @@ -8669,16 +7379,12 @@ _ACEOF fi - { $as_echo "$as_me:$LINENO: checking for unsigned long long" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5 $as_echo_n "checking for unsigned long long... " >&6; } -if test "${ac_cv_type_unsigned_long_long+set}" = set; then +if ${ac_cv_type_unsigned_long_long+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ unsigned long long ull = 1; int i = 63; int @@ -8690,46 +7396,19 @@ unsigned long long ullmax = (unsigned long long) -1; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_type_unsigned_long_long=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_unsigned_long_long=no + ac_cv_type_unsigned_long_long=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long" >&5 $as_echo "$ac_cv_type_unsigned_long_long" >&6; } if test $ac_cv_type_unsigned_long_long = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_UNSIGNED_LONG_LONG 1 -_ACEOF +$as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h fi @@ -8748,24 +7427,18 @@ _ACEOF else -cat >>confdefs.h <<\_ACEOF -#define HAVE_UINTMAX_T 1 -_ACEOF +$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h fi - { $as_echo "$as_me:$LINENO: checking for inttypes.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 $as_echo_n "checking for inttypes.h... " >&6; } -if test "${gt_cv_header_inttypes_h+set}" = set; then +if ${gt_cv_header_inttypes_h+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -8777,36 +7450,15 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : gt_cv_header_inttypes_h=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gt_cv_header_inttypes_h=no + gt_cv_header_inttypes_h=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_header_inttypes_h" >&5 $as_echo "$gt_cv_header_inttypes_h" >&6; } if test $gt_cv_header_inttypes_h = yes; then @@ -8819,17 +7471,13 @@ _ACEOF if test $gt_cv_header_inttypes_h = yes; then - { $as_echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 $as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } -if test "${gt_cv_inttypes_pri_broken+set}" = set; then +if ${gt_cv_inttypes_pri_broken+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef PRId32 @@ -8844,36 +7492,15 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : gt_cv_inttypes_pri_broken=no else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gt_cv_inttypes_pri_broken=yes + gt_cv_inttypes_pri_broken=yes fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 $as_echo "$gt_cv_inttypes_pri_broken" >&6; } fi if test "$gt_cv_inttypes_pri_broken" = yes; then @@ -8902,7 +7529,7 @@ _ACEOF # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -8924,7 +7551,7 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) @@ -8954,13 +7581,13 @@ $as_echo_n "checking for ld used by GCC... " >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${acl_cv_path_LD+set}" = set; then +if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then @@ -8987,18 +7614,16 @@ fi LD="$acl_cv_path_LD" if test -n "$LD"; then - { $as_echo "$as_me:$LINENO: result: $LD" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if test "${acl_cv_prog_gnu_ld+set}" = set; then +if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. @@ -9008,15 +7633,15 @@ else acl_cv_prog_gnu_ld=no fi fi -{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld - { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } -if test "${acl_cv_rpath+set}" = set; then +if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else @@ -9027,7 +7652,7 @@ else acl_cv_rpath=done fi -{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" libext="$acl_cv_libext" @@ -9037,7 +7662,7 @@ $as_echo "$acl_cv_rpath" >&6; } hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then +if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes @@ -9065,7 +7690,7 @@ fi # Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then +if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -9128,7 +7753,7 @@ fi found_so= found_a= if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then @@ -9158,7 +7783,7 @@ fi case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then @@ -9429,159 +8054,12 @@ fi - - - - - - - - - - -for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ + for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -9590,125 +8068,14 @@ fi done - - - - - - - - - - - - - - - - - - - - - - - -for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ + for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF @@ -9747,19 +8114,15 @@ done done - { $as_echo "$as_me:$LINENO: checking for iconv" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } -if test "${am_cv_func_iconv+set}" = set; then +if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -9773,46 +8136,15 @@ iconv_t cd = iconv_open("",""); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -9826,56 +8158,27 @@ iconv_t cd = iconv_open("",""); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ICONV 1 -_ACEOF +$as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" @@ -9886,17 +8189,13 @@ $as_echo "$LIBICONV" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 $as_echo_n "checking for iconv declaration... " >&6; } - if test "${am_cv_proto_iconv+set}" = set; then + if ${am_cv_proto_iconv+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -9919,38 +8218,17 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : am_cv_proto_iconv_arg1="" else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - am_cv_proto_iconv_arg1="const" + am_cv_proto_iconv_arg1="const" fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - { $as_echo "$as_me:$LINENO: result: ${ac_t:- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- }$am_cv_proto_iconv" >&5 $as_echo "${ac_t:- }$am_cv_proto_iconv" >&6; } @@ -9962,16 +8240,12 @@ _ACEOF fi - { $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 $as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if test "${am_cv_langinfo_codeset+set}" = set; then +if ${am_cv_langinfo_codeset+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -9982,62 +8256,31 @@ char* cs = nl_langinfo(CODESET); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : am_cv_langinfo_codeset=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - am_cv_langinfo_codeset=no + am_cv_langinfo_codeset=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 $as_echo "$am_cv_langinfo_codeset" >&6; } if test $am_cv_langinfo_codeset = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_LANGINFO_CODESET 1 -_ACEOF +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h fi if test $ac_cv_header_locale_h = yes; then - { $as_echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } -if test "${am_cv_val_LC_MESSAGES+set}" = set; then +if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -10048,46 +8291,19 @@ return LC_MESSAGES return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - am_cv_val_LC_MESSAGES=no + am_cv_val_LC_MESSAGES=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_LC_MESSAGES 1 -_ACEOF +$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi @@ -10097,9 +8313,9 @@ _ACEOF do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_INTLBISON+set}" = set; then +if ${ac_cv_prog_INTLBISON+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$INTLBISON"; then @@ -10110,24 +8326,24 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + 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_INTLBISON="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then - { $as_echo "$as_me:$LINENO: result: $INTLBISON" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 $as_echo "$INTLBISON" >&6; } else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -10138,7 +8354,7 @@ done if test -z "$INTLBISON"; then ac_verc_fail=yes else - { $as_echo "$as_me:$LINENO: checking version of bison" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 $as_echo_n "checking version of bison... " >&6; } ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in @@ -10147,7 +8363,7 @@ $as_echo_n "checking version of bison... " >&6; } ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac - { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 $as_echo "$ac_prog_version" >&6; } fi if test $ac_verc_fail = yes; then @@ -10169,16 +8385,16 @@ $as_echo "$ac_prog_version" >&6; } - { $as_echo "$as_me:$LINENO: checking whether NLS is requested" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then +if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi - { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } @@ -10194,17 +8410,17 @@ $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no - { $as_echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 $as_echo_n "checking whether included gettext is requested... " >&6; } # Check whether --with-included-gettext was given. -if test "${with_included_gettext+set}" = set; then +if test "${with_included_gettext+set}" = set; then : withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval else nls_cv_force_use_gnu_gettext=no fi - { $as_echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 $as_echo "$nls_cv_force_use_gnu_gettext" >&6; } nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" @@ -10215,16 +8431,12 @@ $as_echo "$nls_cv_force_use_gnu_gettext" >&6; } - { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } -if test "${gt_cv_func_gnugettext2_libc+set}" = set; then +if ${gt_cv_func_gnugettext2_libc+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; @@ -10238,40 +8450,15 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext2_libc=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gt_cv_func_gnugettext2_libc=no + gt_cv_func_gnugettext2_libc=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext2_libc" >&5 $as_echo "$gt_cv_func_gnugettext2_libc" >&6; } if test "$gt_cv_func_gnugettext2_libc" != "yes"; then @@ -10293,7 +8480,7 @@ $as_echo "$gt_cv_func_gnugettext2_libc" >&6; } # Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then +if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -10356,7 +8543,7 @@ fi found_so= found_a= if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then @@ -10386,7 +8573,7 @@ fi case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then @@ -10648,14602 +8835,3548 @@ fi done fi fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then - $as_echo_n "(cached) " >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - gt_cv_func_gnugettext2_libintl=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gt_cv_func_gnugettext2_libintl=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext2_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext2_libintl=yes - -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 -$as_echo "$gt_cv_func_gnugettext2_libintl" >&6; } - fi - - if test "$gt_cv_func_gnugettext2_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext2_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="lib/intl/libintl.a $LIBICONV" - LTLIBINTL="lib/intl/libintl.a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - CATOBJEXT=.gmo - fi - - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_NLS 1 -_ACEOF - - else - USE_NLS=no - fi - fi - - { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - { $as_echo "$as_me:$LINENO: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then - { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETTEXT 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DCGETTEXT 1 -_ACEOF - - fi - - POSUB=po - fi - - - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - - - - - nls_cv_header_intl= - nls_cv_header_libgt= - - DATADIRNAME=share - - - INSTOBJEXT=.mo - - - GENCAT=gencat - - - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - - - INTL_LIBTOOL_SUFFIX_PREFIX= - - - - INTLLIBS="$LIBINTL" - - - - - - - - - - - - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if test "${ac_cv_search_opendir+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dir; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_search_opendir=$ac_res -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -else - { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if test "${ac_cv_search_opendir+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' x; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_search_opendir=$ac_res -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -fi - -{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if test "${ac_cv_header_time+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_time=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_time=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - - - - -for ac_header in inttypes.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - - - - - - - - - - - - -for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ - memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h \ - syslog.h ulimit.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - -for ac_header in 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 -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -for ac_header in netinet/in.h arpa/inet.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 -$as_echo_n "checking for sys/ptem.h... " >&6; } -if test "${ac_cv_header_sys_ptem_h+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if HAVE_SYS_STREAM_H -# include -#endif - - -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_sys_ptem_h=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_sys_ptem_h=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 -$as_echo "$ac_cv_header_sys_ptem_h" >&6; } - - - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if test "${ac_cv_working_alloca_h+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - if (p) return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_working_alloca_h=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_working_alloca_h=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if test "${ac_cv_func_alloca_works+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_alloca_works=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_alloca_works=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=\${LIBOBJDIR}alloca.$ac_objext - -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF - - -{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if test "${ac_cv_os_cray+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if test "${ac_cv_c_stack_direction+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -find_stack_direction () -{ - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; -} - -int -main () -{ - return find_stack_direction () < 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_stack_direction=1 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_stack_direction=-1 -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } - -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - -{ $as_echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 -$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } -if test "${ac_cv_func_getpgrp_void+set}" = set; then - $as_echo_n "(cached) " >&6 -else - # Use it with a single arg. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -getpgrp (0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_func_getpgrp_void=no -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_getpgrp_void=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 -$as_echo "$ac_cv_func_getpgrp_void" >&6; } -if test $ac_cv_func_getpgrp_void = yes; then - -cat >>confdefs.h <<\_ACEOF -#define GETPGRP_VOID 1 -_ACEOF - -fi - -if test "${ac_cv_func_setvbuf_reversed+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_func_setvbuf_reversed=no -fi - - - -for ac_func in vprintf -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -{ $as_echo "$as_me:$LINENO: checking for _doprnt" >&5 -$as_echo_n "checking for _doprnt... " >&6; } -if test "${ac_cv_func__doprnt+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define _doprnt to an innocuous variant, in case declares _doprnt. - For example, HP-UX 11i declares gettimeofday. */ -#define _doprnt innocuous__doprnt - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef _doprnt - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char _doprnt (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub__doprnt || defined __stub____doprnt -choke me -#endif - -int -main () -{ -return _doprnt (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func__doprnt=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func__doprnt=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -$as_echo "$ac_cv_func__doprnt" >&6; } -if test "x$ac_cv_func__doprnt" = x""yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DOPRNT 1 -_ACEOF - -fi - -fi -done - - -{ $as_echo "$as_me:$LINENO: checking for working strcoll" >&5 -$as_echo_n "checking for working strcoll... " >&6; } -if test "${ac_cv_func_strcoll_works+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_strcoll_works=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -return (strcoll ("abc", "def") >= 0 || - strcoll ("ABC", "DEF") >= 0 || - strcoll ("123", "456") >= 0) - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strcoll_works=yes -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_strcoll_works=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 -$as_echo "$ac_cv_func_strcoll_works" >&6; } -if test $ac_cv_func_strcoll_works = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRCOLL 1 -_ACEOF - -fi - - - -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 - -if test "$ac_cv_func_vprintf" = no; then - { $as_echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 -$as_echo_n "checking for declaration of vprintf in stdio.h... " >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then - ac_cv_func_vprintf=yes -fi -rm -f conftest* - - { $as_echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 -$as_echo "$ac_cv_func_vprintf" >&6; } - if test $ac_cv_func_vprintf = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_VPRINTF 1 -_ACEOF - - fi -fi - -if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then - case " $LIBOBJS " in - *" vprint.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS vprint.$ac_objext" - ;; -esac - -fi - -{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if test "${ac_cv_type_signal+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_signal=int -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_signal=void -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - -{ $as_echo "$as_me:$LINENO: checking for __setostype" >&5 -$as_echo_n "checking for __setostype... " >&6; } -if test "${ac_cv_func___setostype+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define __setostype to an innocuous variant, in case declares __setostype. - For example, HP-UX 11i declares gettimeofday. */ -#define __setostype innocuous___setostype - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char __setostype (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef __setostype - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char __setostype (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub___setostype || defined __stub_____setostype -choke me -#endif - -int -main () -{ -return __setostype (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func___setostype=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func___setostype=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 -$as_echo "$ac_cv_func___setostype" >&6; } -if test "x$ac_cv_func___setostype" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_SETOSTYPE 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wait3" >&5 -$as_echo_n "checking for wait3... " >&6; } -if test "${ac_cv_func_wait3+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wait3 to an innocuous variant, in case declares wait3. - For example, HP-UX 11i declares gettimeofday. */ -#define wait3 innocuous_wait3 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wait3 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wait3 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char wait3 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_wait3 || defined __stub___wait3 -choke me -#endif - -int -main () -{ -return wait3 (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_wait3=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_wait3=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 -$as_echo "$ac_cv_func_wait3" >&6; } -if test "x$ac_cv_func_wait3" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WAIT3 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for isinf" >&5 -$as_echo_n "checking for isinf... " >&6; } -if test "${ac_cv_func_isinf+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define isinf to an innocuous variant, in case declares isinf. - For example, HP-UX 11i declares gettimeofday. */ -#define isinf innocuous_isinf - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char isinf (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef isinf - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char isinf (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_isinf || defined __stub___isinf -choke me -#endif - -int -main () -{ -return isinf (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_isinf=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_isinf=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 -$as_echo "$ac_cv_func_isinf" >&6; } -if test "x$ac_cv_func_isinf" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_ISINF_IN_LIBC 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for isnan" >&5 -$as_echo_n "checking for isnan... " >&6; } -if test "${ac_cv_func_isnan+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define isnan to an innocuous variant, in case declares isnan. - For example, HP-UX 11i declares gettimeofday. */ -#define isnan innocuous_isnan - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char isnan (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef isnan - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char isnan (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_isnan || defined __stub___isnan -choke me -#endif - -int -main () -{ -return isnan (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_isnan=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_isnan=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_isnan" >&5 -$as_echo "$ac_cv_func_isnan" >&6; } -if test "x$ac_cv_func_isnan" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_ISNAN_IN_LIBC 1 -_ACEOF - -fi - - -{ $as_echo "$as_me:$LINENO: checking for mkfifo" >&5 -$as_echo_n "checking for mkfifo... " >&6; } -if test "${ac_cv_func_mkfifo+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mkfifo to an innocuous variant, in case declares mkfifo. - For example, HP-UX 11i declares gettimeofday. */ -#define mkfifo innocuous_mkfifo - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mkfifo (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef mkfifo - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mkfifo (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_mkfifo || defined __stub___mkfifo -choke me -#endif - -int -main () -{ -return mkfifo (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mkfifo=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mkfifo=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 -$as_echo "$ac_cv_func_mkfifo" >&6; } -if test "x$ac_cv_func_mkfifo" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MKFIFO 1 -_ACEOF - -else - cat >>confdefs.h <<\_ACEOF -#define MKFIFO_MISSING 1 -_ACEOF - -fi - - - - - - - - - - - - - - - - - - - - - - - - - -for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ - getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat readlink sbrk select setdtablesize \ - setitimer tcgetpgrp uname ulimit waitpid -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -for ac_func in rename -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -for ac_func in bcopy bzero confstr faccessat fnmatch \ - getaddrinfo gethostbyname getservbyname getservent inet_aton \ - memmove pathconf putenv raise regcomp regexec \ - setenv setlinebuf setlocale setvbuf siginterrupt strchr \ - sysconf syslog tcgetattr times ttyname tzset unsetenv -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - -for ac_func in vasprintf asprintf -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - - - - -for ac_func in isascii isblank isgraph isprint isspace isxdigit -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - -for ac_func in getpwent getpwnam getpwuid -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -for ac_func in getcwd memset -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - - - - - - - -for ac_func in strcasecmp strcasestr strerror strftime strnlen strpbrk strstr -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - - - - - - - -for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - -for ac_func in dprintf -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - -for ac_func in strchrnul -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - -{ $as_echo "$as_me:$LINENO: checking whether confstr is declared" >&5 -$as_echo_n "checking whether confstr is declared... " >&6; } -if test "${ac_cv_have_decl_confstr+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef confstr - (void) confstr; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_confstr=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_confstr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 -$as_echo "$ac_cv_have_decl_confstr" >&6; } -if test "x$ac_cv_have_decl_confstr" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_CONFSTR 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_CONFSTR 0 -_ACEOF - - -fi - - -{ $as_echo "$as_me:$LINENO: checking whether printf is declared" >&5 -$as_echo_n "checking whether printf is declared... " >&6; } -if test "${ac_cv_have_decl_printf+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef printf - (void) printf; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_printf=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_printf=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 -$as_echo "$ac_cv_have_decl_printf" >&6; } -if test "x$ac_cv_have_decl_printf" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PRINTF 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PRINTF 0 -_ACEOF - - -fi - - -{ $as_echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 -$as_echo_n "checking whether sbrk is declared... " >&6; } -if test "${ac_cv_have_decl_sbrk+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef sbrk - (void) sbrk; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_sbrk=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_sbrk=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 -$as_echo "$ac_cv_have_decl_sbrk" >&6; } -if test "x$ac_cv_have_decl_sbrk" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SBRK 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SBRK 0 -_ACEOF - - -fi - - -{ $as_echo "$as_me:$LINENO: checking whether setregid is declared" >&5 -$as_echo_n "checking whether setregid is declared... " >&6; } -if test "${ac_cv_have_decl_setregid+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef setregid - (void) setregid; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_setregid=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_setregid=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 -$as_echo "$ac_cv_have_decl_setregid" >&6; } -if test "x$ac_cv_have_decl_setregid" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SETREGID 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SETREGID 0 -_ACEOF - - -fi - - -{ $as_echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 -$as_echo_n "checking whether strcpy is declared... " >&6; } -if test "${ac_cv_have_decl_strcpy+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef strcpy - (void) strcpy; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_strcpy=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_strcpy=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 -$as_echo "$ac_cv_have_decl_strcpy" >&6; } -if test "x$ac_cv_have_decl_strcpy" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRCPY 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRCPY 0 -_ACEOF - - -fi - - -{ $as_echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 -$as_echo_n "checking whether strsignal is declared... " >&6; } -if test "${ac_cv_have_decl_strsignal+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef strsignal - (void) strsignal; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_strsignal=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_strsignal=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 -$as_echo "$ac_cv_have_decl_strsignal" >&6; } -if test "x$ac_cv_have_decl_strsignal" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRSIGNAL 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRSIGNAL 0 -_ACEOF - - -fi - - - -{ $as_echo "$as_me:$LINENO: checking whether strtold is declared" >&5 -$as_echo_n "checking whether strtold is declared... " >&6; } -if test "${ac_cv_have_decl_strtold+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -#ifndef strtold - (void) strtold; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_strtold=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_strtold=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 -$as_echo "$ac_cv_have_decl_strtold" >&6; } -if test "x$ac_cv_have_decl_strtold" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOLD 1 -_ACEOF - - - { $as_echo "$as_me:$LINENO: checking for broken strtold" >&5 -$as_echo_n "checking for broken strtold... " >&6; } - if test "${bash_cv_strtold_broken+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - bash_cv_strtold_broken=no -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_strtold_broken=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -fi - - { $as_echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 -$as_echo "$bash_cv_strtold_broken" >&6; } - if test "$bash_cv_strtold_broken" = "yes" ; then - cat >>confdefs.h <<\_ACEOF -#define STRTOLD_BROKEN 1 -_ACEOF - - fi - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOLD 0 -_ACEOF - - -fi - - - - - - - -{ $as_echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 -$as_echo_n "checking for declaration of strtoimax... " >&6; } -if test "${bash_cv_decl_strtoimax+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoimax; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_decl_strtoimax=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_strtoimax=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 -$as_echo "$bash_cv_decl_strtoimax" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoimax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoimax = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:$LINENO: checking for declaration of strtol" >&5 -$as_echo_n "checking for declaration of strtol... " >&6; } -if test "${bash_cv_decl_strtol+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtol; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_decl_strtol=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_strtol=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 -$as_echo "$bash_cv_decl_strtol" >&6; } -bash_tr_func=HAVE_DECL_`echo strtol | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtol = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 -$as_echo_n "checking for declaration of strtoll... " >&6; } -if test "${bash_cv_decl_strtoll+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoll; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_decl_strtoll=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_strtoll=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 -$as_echo "$bash_cv_decl_strtoll" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoll | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoll = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 -$as_echo_n "checking for declaration of strtoul... " >&6; } -if test "${bash_cv_decl_strtoul+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoul; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_decl_strtoul=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_strtoul=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 -$as_echo "$bash_cv_decl_strtoul" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoul | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoul = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 -$as_echo_n "checking for declaration of strtoull... " >&6; } -if test "${bash_cv_decl_strtoull+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoull; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_decl_strtoull=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_strtoull=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 -$as_echo "$bash_cv_decl_strtoull" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoull | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoull = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 -$as_echo_n "checking for declaration of strtoumax... " >&6; } -if test "${bash_cv_decl_strtoumax+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoumax; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_decl_strtoumax=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_strtoumax=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 -$as_echo "$bash_cv_decl_strtoumax" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoumax = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - - - -for ac_header in $ac_header_list -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - -for ac_func in $ac_func_list -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:$LINENO: checking for working mktime" >&5 -$as_echo_n "checking for working mktime... " >&6; } -if test "${ac_cv_func_working_mktime+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_working_mktime=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Test program from Paul Eggert and Tony Leneis. */ -#ifdef TIME_WITH_SYS_TIME -# include -# include -#else -# ifdef HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#include -#include - -#ifdef HAVE_UNISTD_H -# include -#endif - -#ifndef HAVE_ALARM -# define alarm(X) /* empty */ -#endif - -/* Work around redefinition to rpl_putenv by other config tests. */ -#undef putenv - -static time_t time_t_max; -static time_t time_t_min; - -/* Values we'll use to set the TZ environment variable. */ -static char *tz_strings[] = { - (char *) 0, "TZ=GMT0", "TZ=JST-9", - "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" -}; -#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) - -/* Return 0 if mktime fails to convert a date in the spring-forward gap. - Based on a problem report from Andreas Jaeger. */ -static int -spring_forward_gap () -{ - /* glibc (up to about 1998-10-07) failed this test. */ - struct tm tm; - - /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" - instead of "TZ=America/Vancouver" in order to detect the bug even - on systems that don't support the Olson extension, or don't have the - full zoneinfo tables installed. */ - putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); - - tm.tm_year = 98; - tm.tm_mon = 3; - tm.tm_mday = 5; - tm.tm_hour = 2; - tm.tm_min = 0; - tm.tm_sec = 0; - tm.tm_isdst = -1; - return mktime (&tm) != (time_t) -1; -} - -static int -mktime_test1 (now) - time_t now; -{ - struct tm *lt; - return ! (lt = localtime (&now)) || mktime (lt) == now; -} - -static int -mktime_test (now) - time_t now; -{ - return (mktime_test1 (now) - && mktime_test1 ((time_t) (time_t_max - now)) - && mktime_test1 ((time_t) (time_t_min + now))); -} - -static int -irix_6_4_bug () -{ - /* Based on code from Ariel Faigon. */ - struct tm tm; - tm.tm_year = 96; - tm.tm_mon = 3; - tm.tm_mday = 0; - tm.tm_hour = 0; - tm.tm_min = 0; - tm.tm_sec = 0; - tm.tm_isdst = -1; - mktime (&tm); - return tm.tm_mon == 2 && tm.tm_mday == 31; -} - -static int -bigtime_test (j) - int j; -{ - struct tm tm; - time_t now; - tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; - now = mktime (&tm); - if (now != (time_t) -1) - { - struct tm *lt = localtime (&now); - if (! (lt - && lt->tm_year == tm.tm_year - && lt->tm_mon == tm.tm_mon - && lt->tm_mday == tm.tm_mday - && lt->tm_hour == tm.tm_hour - && lt->tm_min == tm.tm_min - && lt->tm_sec == tm.tm_sec - && lt->tm_yday == tm.tm_yday - && lt->tm_wday == tm.tm_wday - && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) - == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) - return 0; - } - return 1; -} - -static int -year_2050_test () -{ - /* The correct answer for 2050-02-01 00:00:00 in Pacific time, - ignoring leap seconds. */ - unsigned long int answer = 2527315200UL; - - struct tm tm; - time_t t; - tm.tm_year = 2050 - 1900; - tm.tm_mon = 2 - 1; - tm.tm_mday = 1; - tm.tm_hour = tm.tm_min = tm.tm_sec = 0; - tm.tm_isdst = -1; - - /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" - instead of "TZ=America/Vancouver" in order to detect the bug even - on systems that don't support the Olson extension, or don't have the - full zoneinfo tables installed. */ - putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); - - t = mktime (&tm); - - /* Check that the result is either a failure, or close enough - to the correct answer that we can assume the discrepancy is - due to leap seconds. */ - return (t == (time_t) -1 - || (0 < t && answer - 120 <= t && t <= answer + 120)); -} - -int -main () -{ - time_t t, delta; - int i, j; - - /* This test makes some buggy mktime implementations loop. - Give up after 60 seconds; a mktime slower than that - isn't worth using anyway. */ - alarm (60); - - for (;;) - { - t = (time_t_max << 1) + 1; - if (t <= time_t_max) - break; - time_t_max = t; - } - time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; - - delta = time_t_max / 997; /* a suitable prime number */ - for (i = 0; i < N_STRINGS; i++) - { - if (tz_strings[i]) - putenv (tz_strings[i]); - - for (t = 0; t <= time_t_max - delta; t += delta) - if (! mktime_test (t)) - return 1; - if (! (mktime_test ((time_t) 1) - && mktime_test ((time_t) (60 * 60)) - && mktime_test ((time_t) (60 * 60 * 24)))) - return 1; - - for (j = 1; ; j <<= 1) - if (! bigtime_test (j)) - return 1; - else if (INT_MAX / 2 < j) - break; - if (! bigtime_test (INT_MAX)) - return 1; - } - return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_working_mktime=yes -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_working_mktime=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 -$as_echo "$ac_cv_func_working_mktime" >&6; } -if test $ac_cv_func_working_mktime = no; then - case " $LIBOBJS " in - *" mktime.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS mktime.$ac_objext" - ;; -esac - -fi - - - - - - - - -for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - -for ac_header in stdlib.h unistd.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_func in getpagesize -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:$LINENO: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 1; - if (write (fd, data, pagesize) != pagesize) - return 1; - close (fd); - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - return 1; - data2 = (char *) malloc (2 * pagesize); - if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 1; - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - return 1; - if (read (fd, data3, pagesize) != pagesize) - return 1; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 1; - close (fd); - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mmap_fixed_mapped=yes -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_mmap_fixed_mapped=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MMAP 1 -_ACEOF - -fi -rm -f conftest.mmap - - - - - - - - - - -for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap stpcpy strcspn strdup -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -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 - - - - - - - -for ac_header in wctype.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in wchar.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in langinfo.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:$LINENO: checking for mbrlen" >&5 -$as_echo_n "checking for mbrlen... " >&6; } -if test "${ac_cv_func_mbrlen+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbrlen to an innocuous variant, in case declares mbrlen. - For example, HP-UX 11i declares gettimeofday. */ -#define mbrlen innocuous_mbrlen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbrlen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef mbrlen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mbrlen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_mbrlen || defined __stub___mbrlen -choke me -#endif - -int -main () -{ -return mbrlen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mbrlen=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbrlen=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 -$as_echo "$ac_cv_func_mbrlen" >&6; } -if test "x$ac_cv_func_mbrlen" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBRLEN 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for mbscasecmp" >&5 -$as_echo_n "checking for mbscasecmp... " >&6; } -if test "${ac_cv_func_mbscasecmp+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbscasecmp to an innocuous variant, in case declares mbscasecmp. - For example, HP-UX 11i declares gettimeofday. */ -#define mbscasecmp innocuous_mbscasecmp - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbscasecmp (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef mbscasecmp - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mbscasecmp (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_mbscasecmp || defined __stub___mbscasecmp -choke me -#endif - -int -main () -{ -return mbscasecmp (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mbscasecmp=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbscasecmp=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbscasecmp" >&5 -$as_echo "$ac_cv_func_mbscasecmp" >&6; } -if test "x$ac_cv_func_mbscasecmp" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBSCMP 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for mbscmp" >&5 -$as_echo_n "checking for mbscmp... " >&6; } -if test "${ac_cv_func_mbscmp+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbscmp to an innocuous variant, in case declares mbscmp. - For example, HP-UX 11i declares gettimeofday. */ -#define mbscmp innocuous_mbscmp - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbscmp (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef mbscmp - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mbscmp (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_mbscmp || defined __stub___mbscmp -choke me -#endif - -int -main () -{ -return mbscmp (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mbscmp=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbscmp=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbscmp" >&5 -$as_echo "$ac_cv_func_mbscmp" >&6; } -if test "x$ac_cv_func_mbscmp" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBSCMP 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for mbsnrtowcs" >&5 -$as_echo_n "checking for mbsnrtowcs... " >&6; } -if test "${ac_cv_func_mbsnrtowcs+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbsnrtowcs to an innocuous variant, in case declares mbsnrtowcs. - For example, HP-UX 11i declares gettimeofday. */ -#define mbsnrtowcs innocuous_mbsnrtowcs - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbsnrtowcs (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef mbsnrtowcs - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mbsnrtowcs (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_mbsnrtowcs || defined __stub___mbsnrtowcs -choke me -#endif - -int -main () -{ -return mbsnrtowcs (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mbsnrtowcs=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbsnrtowcs=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbsnrtowcs" >&5 -$as_echo "$ac_cv_func_mbsnrtowcs" >&6; } -if test "x$ac_cv_func_mbsnrtowcs" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBSNRTOWCS 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 -$as_echo_n "checking for mbsrtowcs... " >&6; } -if test "${ac_cv_func_mbsrtowcs+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbsrtowcs to an innocuous variant, in case declares mbsrtowcs. - For example, HP-UX 11i declares gettimeofday. */ -#define mbsrtowcs innocuous_mbsrtowcs - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbsrtowcs (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef mbsrtowcs - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mbsrtowcs (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_mbsrtowcs || defined __stub___mbsrtowcs -choke me -#endif - -int -main () -{ -return mbsrtowcs (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mbsrtowcs=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbsrtowcs=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 -$as_echo "$ac_cv_func_mbsrtowcs" >&6; } -if test "x$ac_cv_func_mbsrtowcs" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBSRTOWCS 1 -_ACEOF - -fi - - - - -for ac_func in mbschr -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - -{ $as_echo "$as_me:$LINENO: checking for wcrtomb" >&5 -$as_echo_n "checking for wcrtomb... " >&6; } -if test "${ac_cv_func_wcrtomb+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wcrtomb to an innocuous variant, in case declares wcrtomb. - For example, HP-UX 11i declares gettimeofday. */ -#define wcrtomb innocuous_wcrtomb - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcrtomb (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wcrtomb - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char wcrtomb (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_wcrtomb || defined __stub___wcrtomb -choke me -#endif - -int -main () -{ -return wcrtomb (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_wcrtomb=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_wcrtomb=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5 -$as_echo "$ac_cv_func_wcrtomb" >&6; } -if test "x$ac_cv_func_wcrtomb" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WCRTOMB 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wcscoll" >&5 -$as_echo_n "checking for wcscoll... " >&6; } -if test "${ac_cv_func_wcscoll+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wcscoll to an innocuous variant, in case declares wcscoll. - For example, HP-UX 11i declares gettimeofday. */ -#define wcscoll innocuous_wcscoll - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcscoll (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wcscoll - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char wcscoll (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_wcscoll || defined __stub___wcscoll -choke me -#endif - -int -main () -{ -return wcscoll (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_wcscoll=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_wcscoll=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5 -$as_echo "$ac_cv_func_wcscoll" >&6; } -if test "x$ac_cv_func_wcscoll" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WCSCOLL 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wcsdup" >&5 -$as_echo_n "checking for wcsdup... " >&6; } -if test "${ac_cv_func_wcsdup+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wcsdup to an innocuous variant, in case declares wcsdup. - For example, HP-UX 11i declares gettimeofday. */ -#define wcsdup innocuous_wcsdup - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcsdup (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wcsdup - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char wcsdup (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_wcsdup || defined __stub___wcsdup -choke me -#endif - -int -main () -{ -return wcsdup (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_wcsdup=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_wcsdup=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 -$as_echo "$ac_cv_func_wcsdup" >&6; } -if test "x$ac_cv_func_wcsdup" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WCSDUP 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wcwidth" >&5 -$as_echo_n "checking for wcwidth... " >&6; } -if test "${ac_cv_func_wcwidth+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wcwidth to an innocuous variant, in case declares wcwidth. - For example, HP-UX 11i declares gettimeofday. */ -#define wcwidth innocuous_wcwidth - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcwidth (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wcwidth - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char wcwidth (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_wcwidth || defined __stub___wcwidth -choke me -#endif - -int -main () -{ -return wcwidth (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_wcwidth=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_wcwidth=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 -$as_echo "$ac_cv_func_wcwidth" >&6; } -if test "x$ac_cv_func_wcwidth" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WCWIDTH 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wctype" >&5 -$as_echo_n "checking for wctype... " >&6; } -if test "${ac_cv_func_wctype+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wctype to an innocuous variant, in case declares wctype. - For example, HP-UX 11i declares gettimeofday. */ -#define wctype innocuous_wctype - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wctype (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef wctype - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char wctype (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_wctype || defined __stub___wctype -choke me -#endif - -int -main () -{ -return wctype (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_wctype=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_wctype=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 -$as_echo "$ac_cv_func_wctype" >&6; } -if test "x$ac_cv_func_wctype" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WCTYPE 1 -_ACEOF - -fi - - - -for ac_func in wcswidth -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - case " $LIBOBJS " in - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; -esac - -fi -done - - - - - { $as_echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5 -$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } -if test "${ac_cv_func_mbrtowc+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -wchar_t wc; - char const s[] = ""; - size_t n = 1; - mbstate_t state; - return ! (sizeof state && (mbrtowc) (&wc, s, n, &state)); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_mbrtowc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbrtowc=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 -$as_echo "$ac_cv_func_mbrtowc" >&6; } - if test $ac_cv_func_mbrtowc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MBRTOWC 1 -_ACEOF - - fi - -if test $ac_cv_func_mbrtowc = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBSTATE_T 1 -_ACEOF - -fi - - - - - - -for ac_func in iswlower iswupper towlower towupper iswctype -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -{ $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if test "${bash_cv_langinfo_codeset+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -char* cs = nl_langinfo(CODESET); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_langinfo_codeset=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_langinfo_codeset=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 -$as_echo "$bash_cv_langinfo_codeset" >&6; } -if test $bash_cv_langinfo_codeset = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_LANGINFO_CODESET 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5 -$as_echo_n "checking for wchar_t in wchar.h... " >&6; } -if test "${bash_cv_type_wchar_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -int -main () -{ - - wchar_t foo; - foo = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - bash_cv_type_wchar_t=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_type_wchar_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5 -$as_echo "$bash_cv_type_wchar_t" >&6; } -if test $bash_cv_type_wchar_t = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WCHAR_T 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5 -$as_echo_n "checking for wctype_t in wctype.h... " >&6; } -if test "${bash_cv_type_wctype_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ - - wctype_t foo; - foo = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - bash_cv_type_wctype_t=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_type_wctype_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5 -$as_echo "$bash_cv_type_wctype_t" >&6; } -if test $bash_cv_type_wctype_t = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WCTYPE_T 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5 -$as_echo_n "checking for wint_t in wctype.h... " >&6; } -if test "${bash_cv_type_wint_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ - - wint_t foo; - foo = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - bash_cv_type_wint_t=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_type_wint_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5 -$as_echo "$bash_cv_type_wint_t" >&6; } -if test $bash_cv_type_wint_t = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WINT_T 1 -_ACEOF - -fi - -if test "$am_cv_func_iconv" = yes; then - OLDLIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - -for ac_func in locale_charset -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - LIBS="$OLDLIBS" -fi - - - -if test "$opt_static_link" != yes; then - -{ $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_dl_dlopen=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 -_ACEOF - - LIBS="-ldl $LIBS" - -fi - - - - -for ac_func in dlopen dlclose dlsym -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -fi - -{ $as_echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 -$as_echo_n "checking whether sys_siglist is declared... " >&6; } -if test "${ac_cv_have_decl_sys_siglist+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -/* NetBSD declares sys_siglist in unistd.h. */ -#ifdef HAVE_UNISTD_H -# include -#endif - - -int -main () -{ -#ifndef sys_siglist - (void) sys_siglist; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_sys_siglist=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_sys_siglist=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 -$as_echo "$ac_cv_have_decl_sys_siglist" >&6; } -if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SYS_SIGLIST 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SYS_SIGLIST 0 -_ACEOF - - -fi - - - - -if test "$ac_cv_func_inet_aton" != 'yes'; then - -{ $as_echo "$as_me:$LINENO: checking for inet_aton" >&5 -$as_echo_n "checking for inet_aton... " >&6; } -if test "${bash_cv_func_inet_aton+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include -#include -#include -struct in_addr ap; -int -main () -{ - inet_aton("127.0.0.1", &ap); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_func_inet_aton=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_func_inet_aton=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 -$as_echo "$bash_cv_func_inet_aton" >&6; } -if test $bash_cv_func_inet_aton = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_INET_ATON 1 -_ACEOF - -else - case " $LIBOBJS " in - *" inet_aton.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" - ;; -esac - -fi - -fi - -case "$host_os" in -irix4*) -{ $as_echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 -$as_echo_n "checking for getpwent in -lsun... " >&6; } -if test "${ac_cv_lib_sun_getpwent+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsun $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getpwent (); -int -main () -{ -return getpwent (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_sun_getpwent=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_sun_getpwent=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 -$as_echo "$ac_cv_lib_sun_getpwent" >&6; } -if test "x$ac_cv_lib_sun_getpwent" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSUN 1 -_ACEOF - - LIBS="-lsun $LIBS" - -fi - ;; -esac - -if test "$ac_cv_func_getpeername" = no; then - -if test "X$bash_cv_have_socklib" = "X"; then -_bash_needmsg= -else -{ $as_echo "$as_me:$LINENO: checking for socket library" >&5 -$as_echo_n "checking for socket library... " >&6; } -_bash_needmsg=yes -fi -if test "${bash_cv_have_socklib+set}" = set; then - $as_echo_n "(cached) " >&6 -else - { $as_echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 -$as_echo_n "checking for getpeername in -lsocket... " >&6; } -if test "${ac_cv_lib_socket_getpeername+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket -lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getpeername (); -int -main () -{ -return getpeername (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_socket_getpeername=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_socket_getpeername=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 -$as_echo "$ac_cv_lib_socket_getpeername" >&6; } -if test "x$ac_cv_lib_socket_getpeername" = x""yes; then - bash_cv_have_socklib=yes -else - bash_cv_have_socklib=no -fi - -fi - -if test "X$_bash_needmsg" = Xyes; then - { $as_echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 -$as_echo "$bash_cv_have_socklib" >&6; } - _bash_needmsg= -fi -if test $bash_cv_have_socklib = yes; then - # check for libnsl, add it to LIBS if present - if test "X$bash_cv_have_libnsl" = "X"; then - _bash_needmsg= - else - { $as_echo "$as_me:$LINENO: checking for libnsl" >&5 -$as_echo_n "checking for libnsl... " >&6; } - _bash_needmsg=yes - fi - if test "${bash_cv_have_libnsl+set}" = set; then - $as_echo_n "(cached) " >&6 -else - { $as_echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 -$as_echo_n "checking for t_open in -lnsl... " >&6; } -if test "${ac_cv_lib_nsl_t_open+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char t_open (); -int -main () -{ -return t_open (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_nsl_t_open=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_nsl_t_open=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 -$as_echo "$ac_cv_lib_nsl_t_open" >&6; } -if test "x$ac_cv_lib_nsl_t_open" = x""yes; then - bash_cv_have_libnsl=yes -else - bash_cv_have_libnsl=no -fi - -fi - - if test "X$_bash_needmsg" = Xyes; then - { $as_echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 -$as_echo "$bash_cv_have_libnsl" >&6; } - _bash_needmsg= - fi - if test $bash_cv_have_libnsl = yes; then - LIBS="-lsocket -lnsl $LIBS" - else - LIBS="-lsocket $LIBS" - fi - cat >>confdefs.h <<\_ACEOF -#define HAVE_LIBSOCKET 1 -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define HAVE_GETPEERNAME 1 -_ACEOF - -fi - -fi -if test "$ac_cv_func_gethostbyname" = no; then - if test "X$bash_cv_have_gethostbyname" = "X"; then -_bash_needmsg=yes -else -{ $as_echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 -$as_echo_n "checking for gethostbyname in socket library... " >&6; } -_bash_needmsg= -fi -if test "${bash_cv_have_gethostbyname+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ - struct hostent *hp; - hp = gethostbyname("localhost"); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_have_gethostbyname=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_have_gethostbyname=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - -fi - -if test "X$_bash_needmsg" = Xyes; then - { $as_echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 -$as_echo_n "checking for gethostbyname in socket library... " >&6; } -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 -$as_echo "$bash_cv_have_gethostbyname" >&6; } -if test "$bash_cv_have_gethostbyname" = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETHOSTBYNAME 1 -_ACEOF - -fi - -fi - -{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if test "${ac_cv_type_uid_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then - ac_cv_type_uid_t=yes -else - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then - -cat >>confdefs.h <<\_ACEOF -#define uid_t int -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define gid_t int -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 -$as_echo_n "checking type of array argument to getgroups... " >&6; } -if test "${ac_cv_type_getgroups+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_type_getgroups=cross -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Thanks to Mike Rendell for this test. */ -$ac_includes_default -#define NGID 256 -#undef MAX -#define MAX(x, y) ((x) > (y) ? (x) : (y)) - -int -main () -{ - gid_t gidset[NGID]; - int i, n; - union { gid_t gval; long int lval; } val; - - val.lval = -1; - for (i = 0; i < NGID; i++) - gidset[i] = val.gval; - n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, - gidset); - /* Exit non-zero if getgroups seems to require an array of ints. This - happens when gid_t is short int but getgroups modifies an array - of ints. */ - return n > 0 && gidset[n] != val.gval; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_getgroups=gid_t -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_type_getgroups=int -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -if test $ac_cv_type_getgroups = cross; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then - ac_cv_type_getgroups=gid_t -else - ac_cv_type_getgroups=int -fi -rm -f conftest* - -fi -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 -$as_echo "$ac_cv_type_getgroups" >&6; } - -cat >>confdefs.h <<_ACEOF -#define GETGROUPS_T $ac_cv_type_getgroups -_ACEOF - - -{ $as_echo "$as_me:$LINENO: checking for off_t" >&5 -$as_echo_n "checking for off_t... " >&6; } -if test "${ac_cv_type_off_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_off_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (off_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((off_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_off_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -$as_echo "$ac_cv_type_off_t" >&6; } -if test "x$ac_cv_type_off_t" = x""yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for mode_t" >&5 -$as_echo_n "checking for mode_t... " >&6; } -if test "${ac_cv_type_mode_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_mode_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (mode_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((mode_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_mode_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 -$as_echo "$ac_cv_type_mode_t" >&6; } -if test "x$ac_cv_type_mode_t" = x""yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define mode_t int -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if test "${ac_cv_type_uid_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then - ac_cv_type_uid_t=yes -else - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then - -cat >>confdefs.h <<\_ACEOF -#define uid_t int -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define gid_t int -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5 -$as_echo_n "checking for pid_t... " >&6; } -if test "${ac_cv_type_pid_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_pid_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (pid_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((pid_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_pid_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -$as_echo "$ac_cv_type_pid_t" >&6; } -if test "x$ac_cv_type_pid_t" = x""yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for size_t" >&5 -$as_echo_n "checking for size_t... " >&6; } -if test "${ac_cv_type_size_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_size_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (size_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((size_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_size_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -$as_echo "$ac_cv_type_size_t" >&6; } -if test "x$ac_cv_type_size_t" = x""yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for ssize_t" >&5 -$as_echo_n "checking for ssize_t... " >&6; } -if test "${ac_cv_type_ssize_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_ssize_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (ssize_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((ssize_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_ssize_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -$as_echo "$ac_cv_type_ssize_t" >&6; } -if test "x$ac_cv_type_ssize_t" = x""yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF - -fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi -{ $as_echo "$as_me:$LINENO: checking for time_t" >&5 -$as_echo_n "checking for time_t... " >&6; } -if test "${ac_cv_type_time_t+set}" = set; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if ${gt_cv_func_gnugettext2_libintl+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_time_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); int main () { -if (sizeof (time_t)) - return 0; +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_gnugettext2_libintl=yes +else + gt_cv_func_gnugettext2_libintl=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext2_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); int main () { -if (sizeof ((time_t))) - return 0; +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext2_libintl=yes - ac_cv_type_time_t=yes fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext2_libintl" >&5 +$as_echo "$gt_cv_func_gnugettext2_libintl" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test "$gt_cv_func_gnugettext2_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext2_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi -fi + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 -$as_echo "$ac_cv_type_time_t" >&6; } -if test "x$ac_cv_type_time_t" = x""yes; then - : -else + if test "$nls_cv_use_gnu_gettext" = "yes"; then + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="lib/intl/libintl.a $LIBICONV" + LTLIBINTL="lib/intl/libintl.a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi -cat >>confdefs.h <<_ACEOF -#define time_t long -_ACEOF + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi -fi + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then +$as_echo "#define ENABLE_NLS 1" >>confdefs.h -{ $as_echo "$as_me:$LINENO: checking for long long" >&5 -$as_echo_n "checking for long long... " >&6; } -if test "${bash_cv_type_long_long+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + else + USE_NLS=no + fi + fi -long long ll = 1; int i = 63; -int -main () -{ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi -long long llm = (long long) -1; -return ll << i | ll >> i | llm / ll | llm % ll; + if test "$USE_NLS" = "yes"; then - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_type_long_long='long long' -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } - bash_cv_type_long_long='long' -fi + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 -$as_echo "$bash_cv_type_long_long" >&6; } -if test "$bash_cv_type_long_long" = 'long long'; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_LONG 1 -_ACEOF + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -fi + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + fi -{ $as_echo "$as_me:$LINENO: checking for unsigned long long" >&5 -$as_echo_n "checking for unsigned long long... " >&6; } -if test "${bash_cv_type_unsigned_long_long+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -unsigned long long ull = 1; int i = 63; -int -main () -{ +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h -unsigned long long ullmax = (unsigned long long) -1; -return ull << i | ull >> i | ullmax / ull | ullmax % ull; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - bash_cv_type_unsigned_long_long='unsigned long long' -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h - bash_cv_type_unsigned_long_long='unsigned long' -fi + fi -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 -$as_echo "$bash_cv_type_unsigned_long_long" >&6; } -if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_UNSIGNED_LONG_LONG 1 -_ACEOF + POSUB=po + fi -fi + + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi -{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if test "${ac_cv_type_signal+set}" = set; then + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -#include +#include <$ac_hdr> int main () { -return *(signal (0, 0)) (0) == 1; +if ((DIR *) 0) +return 0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_signal=int +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_ac_Header=yes" else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_signal=void + eval "$as_ac_Header=no" fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal +eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF +ac_header_dirent=$ac_hdr; break +fi -{ $as_echo "$as_me:$LINENO: checking for sig_atomic_t in signal.h" >&5 -$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } -if test "${ac_cv_have_sig_atomic_t+set}" = set; then +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); int main () { - sig_atomic_t x; +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_have_sig_atomic_t=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : - ac_cv_have_sig_atomic_t=no +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_sig_atomic_t" >&5 -$as_echo "$ac_cv_have_sig_atomic_t" >&6; } -if test "$ac_cv_have_sig_atomic_t" = "no" -then - { $as_echo "$as_me:$LINENO: checking for sig_atomic_t" >&5 -$as_echo_n "checking for sig_atomic_t... " >&6; } -if test "${ac_cv_type_sig_atomic_t+set}" = set; then + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_sig_atomic_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (sig_atomic_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); int main () { -if (sizeof ((sig_atomic_t))) - return 0; +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_sig_atomic_t=yes +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break fi +done +if ${ac_cv_search_opendir+:} false; then : -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + ac_cv_search_opendir=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5 -$as_echo "$ac_cv_type_sig_atomic_t" >&6; } -if test "x$ac_cv_type_sig_atomic_t" = x""yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define sig_atomic_t int -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of char" >&5 -$as_echo_n "checking size of char... " >&6; } -if test "${ac_cv_sizeof_char+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (char))) >= 0)]; -test_array [0] = 0 +#include +#include +#include - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (char))) <= $ac_mid)]; -test_array [0] = 0 - +if ((struct tm *) 0) +return 0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (char))) < 0)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + for ac_header in inttypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + +fi + +done + + + +for ac_header in 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 +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (char))) >= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} +fi + +done + +for ac_header in 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 +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +done + +for ac_header in netinet/in.h arpa/inet.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF - ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + + +ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " +#if HAVE_SYS_STREAM_H +# include +#endif + +" +if test "x$ac_cv_header_sys_ptem_h" = xyes; then : + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (char))) <= $ac_mid)]; -test_array [0] = 0 - +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h - ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_char=$ac_lo;; -'') if test "$ac_cv_type_char" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (char) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_char=0 - fi ;; -esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (char)); } -static unsigned long int ulongval () { return (long int) (sizeof (char)); } -#include -#include +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + int main () { - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (char))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (char)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (char)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - +char *p = (char *) alloca (1); + if (p) return 0; ; return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_char=`cat conftest.val` +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -if test "$ac_cv_type_char" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (char) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_char=0 - fi -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + ac_cv_func_alloca_works=no fi -rm -f conftest.val +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 -$as_echo "$ac_cv_sizeof_char" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } +if test $ac_cv_func_alloca_works = yes; then +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR $ac_cv_sizeof_char -_ACEOF +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if test "${ac_cv_sizeof_short+set}" = set; then +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= 0)]; -test_array [0] = 0 +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; 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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +find_stack_direction (int *addr, int depth) { -static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)]; -test_array [0] = 0 + 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; +} - ; - return 0; +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 +$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } +if ${ac_cv_func_getpgrp_void+:} false; then : + $as_echo_n "(cached) " >&6 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + # Use it with a single arg. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (short))) < 0)]; -test_array [0] = 0 - +getpgrp (0); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_func_getpgrp_void=no +else + ac_cv_func_getpgrp_void=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 +$as_echo "$ac_cv_func_getpgrp_void" >&6; } +if test $ac_cv_func_getpgrp_void = yes; then + +$as_echo "#define GETPGRP_VOID 1" >>confdefs.h + +fi + +if ${ac_cv_func_setvbuf_reversed+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_func_setvbuf_reversed=no +fi + + +for ac_func in vprintf +do : + ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" +if test "x$ac_cv_func_vprintf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VPRINTF 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = xyes; then : + +$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +fi + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +$as_echo_n "checking for working strcoll... " >&6; } +if ${ac_cv_func_strcoll_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_strcoll_works=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= $ac_mid)]; -test_array [0] = 0 - +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_strcoll_works=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_func_strcoll_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +$as_echo "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h - ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + +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 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if test "$ac_cv_func_vprintf" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of vprintf in stdio.h" >&5 +$as_echo_n "checking for declaration of vprintf in stdio.h... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then : + ac_cv_func_vprintf=yes +fi +rm -f conftest* + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vprintf" >&5 +$as_echo "$ac_cv_func_vprintf" >&6; } + if test $ac_cv_func_vprintf = yes; then + $as_echo "#define HAVE_VPRINTF 1" >>confdefs.h + + fi +fi + +if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then + case " $LIBOBJS " in + *" vprint.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS vprint.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include +#include + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)]; -test_array [0] = 0 - +return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +ac_fn_c_check_func "$LINENO" "__setostype" "ac_cv_func___setostype" +if test "x$ac_cv_func___setostype" = xyes; then : + $as_echo "#define HAVE_SETOSTYPE 1" >>confdefs.h - ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes; then : + $as_echo "#define HAVE_WAIT3 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes; then : + $as_echo "#define HAVE_MKFIFO 1" >>confdefs.h + +else + $as_echo "#define MKFIFO_MISSING 1" >>confdefs.h + +fi + + +for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ + getpagesize getpeername getrlimit getrusage gettimeofday \ + kill killpg lstat readlink sbrk select setdtablesize \ + setitimer tcgetpgrp uname ulimit waitpid +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi done -case $ac_lo in -?*) ac_cv_sizeof_short=$ac_lo;; -'') if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (short) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_short=0 - fi ;; -esac + +ac_fn_c_check_func "$LINENO" "rename" "ac_cv_func_rename" +if test "x$ac_cv_func_rename" = xyes; then : + $as_echo "#define HAVE_RENAME 1" >>confdefs.h + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + case " $LIBOBJS " in + *" rename.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS rename.$ac_objext" + ;; +esac + +fi + + + +for ac_func in 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 +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (short)); } -static unsigned long int ulongval () { return (long int) (sizeof (short)); } -#include -#include -int -main () -{ - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (short))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (short)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (short)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; +fi +done - ; - return 0; -} + +for ac_func in vasprintf asprintf +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_short=`cat conftest.val` -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) -if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (short) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_short=0 - fi fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +done + +for ac_func in isascii isblank isgraph isprint isspace isxdigit +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + fi -rm -f conftest.val +done + +for ac_func in getpwent getpwnam getpwuid +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } +done +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes; then : + $as_echo "#define HAVE_GETCWD 1" >>confdefs.h +else + case " $LIBOBJS " in + *" getcwd.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" + ;; +esac -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" +if test "x$ac_cv_func_memset" = xyes; then : + $as_echo "#define HAVE_MEMSET 1" >>confdefs.h -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if test "${ac_cv_sizeof_int+set}" = set; then - $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + case " $LIBOBJS " in + *" memset.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memset.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break +fi + + +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes; then : + $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strcasecmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext" + ;; +esac - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done +ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr" +if test "x$ac_cv_func_strcasestr" = xyes; then : + $as_echo "#define HAVE_STRCASESTR 1" >>confdefs.h + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strcasestr.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strcasestr.$ac_objext" + ;; +esac - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) < 0)]; -test_array [0] = 0 +fi - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= $ac_mid)]; -test_array [0] = 0 +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes; then : + $as_echo "#define HAVE_STRERROR 1" >>confdefs.h - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strerror.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strerror.$ac_objext" + ;; +esac - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done +ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes; then : + $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strftime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strftime.$ac_objext" + ;; +esac - ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" +if test "x$ac_cv_func_strnlen" = xyes; then : + $as_echo "#define HAVE_STRNLEN 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strnlen.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strnlen.$ac_objext" + ;; +esac + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 +ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk" +if test "x$ac_cv_func_strpbrk" = xyes; then : + $as_echo "#define HAVE_STRPBRK 1" >>confdefs.h - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strpbrk.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strpbrk.$ac_objext" + ;; +esac - ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_int=$ac_lo;; -'') if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (int) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_int=0 - fi ;; -esac +ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" +if test "x$ac_cv_func_strstr" = xyes; then : + $as_echo "#define HAVE_STRSTR 1" >>confdefs.h + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (int)); } -static unsigned long int ulongval () { return (long int) (sizeof (int)); } -#include -#include -int -main () -{ + case " $LIBOBJS " in + *" strstr.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strstr.$ac_objext" + ;; +esac - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (int))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (int)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (int)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; +fi - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + +ac_fn_c_check_func "$LINENO" "strtod" "ac_cv_func_strtod" +if test "x$ac_cv_func_strtod" = xyes; then : + $as_echo "#define HAVE_STRTOD 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtod.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtod.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + +fi + +ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" +if test "x$ac_cv_func_strtol" = xyes; then : + $as_echo "#define HAVE_STRTOL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtol.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtol.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_int=`cat conftest.val` + +fi + +ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" +if test "x$ac_cv_func_strtoul" = xyes; then : + $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h + else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strtoul.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoul.$ac_objext" + ;; +esac -( exit $ac_status ) -if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (int) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_int=0 - fi fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes; then : + $as_echo "#define HAVE_STRTOLL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoll.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoll.$ac_objext" + ;; +esac + fi -rm -f conftest.val + +ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull" +if test "x$ac_cv_func_strtoull" = xyes; then : + $as_echo "#define HAVE_STRTOULL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoull.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoull.$ac_objext" + ;; +esac + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } +ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax" +if test "x$ac_cv_func_strtoimax" = xyes; then : + $as_echo "#define HAVE_STRTOIMAX 1" >>confdefs.h +else + case " $LIBOBJS " in + *" strtoimax.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext" + ;; +esac -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "strtoumax" "ac_cv_func_strtoumax" +if test "x$ac_cv_func_strtoumax" = xyes; then : + $as_echo "#define HAVE_STRTOUMAX 1" >>confdefs.h -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if test "${ac_cv_sizeof_long+set}" = set; then - $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)]; -test_array [0] = 0 + case " $LIBOBJS " in + *" strtoumax.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoumax.$ac_objext" + ;; +esac - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; +fi + + +ac_fn_c_check_func "$LINENO" "dprintf" "ac_cv_func_dprintf" +if test "x$ac_cv_func_dprintf" = xyes; then : + $as_echo "#define HAVE_DPRINTF 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" dprintf.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS dprintf.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; +fi + + +ac_fn_c_check_func "$LINENO" "strchrnul" "ac_cv_func_strchrnul" +if test "x$ac_cv_func_strchrnul" = xyes; then : + $as_echo "#define HAVE_STRCHRNUL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strchrnul.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strchrnul.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break + +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 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" strdup.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strdup.$ac_objext" + ;; +esac - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done + + +ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include +" +if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then : + ac_have_decl=1 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_have_decl=0 +fi - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break +ac_fn_c_check_decl "$LINENO" "confstr" "ac_cv_have_decl_confstr" "$ac_includes_default" +if test "x$ac_cv_have_decl_confstr" = xyes; then : + ac_have_decl=1 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_have_decl=0 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CONFSTR $ac_have_decl +_ACEOF - ac_lo= ac_hi= +ac_fn_c_check_decl "$LINENO" "printf" "ac_cv_have_decl_printf" "$ac_includes_default" +if test "x$ac_cv_have_decl_printf" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PRINTF $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default" +if test "x$ac_cv_have_decl_sbrk" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SBRK $ac_have_decl _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} +ac_fn_c_check_decl "$LINENO" "setregid" "ac_cv_have_decl_setregid" "$ac_includes_default" +if test "x$ac_cv_have_decl_setregid" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SETREGID $ac_have_decl _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid + +ac_fn_c_check_decl "$LINENO" "strcpy" "ac_cv_have_decl_strcpy" "$ac_includes_default" +if test "x$ac_cv_have_decl_strcpy" = xyes; then : + ac_have_decl=1 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_have_decl=0 +fi - ac_lo=`expr '(' $ac_mid ')' + 1` +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRCPY $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "$ac_includes_default" +if test "x$ac_cv_have_decl_strsignal" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long=$ac_lo;; -'') if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (long) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_long=0 - fi ;; -esac +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRSIGNAL $ac_have_decl +_ACEOF + + +ac_fn_c_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default" +if test "x$ac_cv_have_decl_strtold" = xyes; then : + ac_have_decl=1 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLD $ac_have_decl _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if test $ac_have_decl = 1; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken strtold" >&5 +$as_echo_n "checking for broken strtold... " >&6; } + if ${bash_cv_strtold_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (long)); } -static unsigned long int ulongval () { return (long int) (sizeof (long)); } -#include #include int main () { - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (long))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (long)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (long)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - +int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} ; return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long=`cat conftest.val` +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_strtold_broken=no else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (long) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_long=0 - fi + bash_cv_strtold_broken=yes fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi -rm -f conftest.val + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_strtold_broken" >&5 +$as_echo "$bash_cv_strtold_broken" >&6; } + if test "$bash_cv_strtold_broken" = "yes" ; then + $as_echo "#define STRTOLD_BROKEN 1" >>confdefs.h + + fi + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of char *" >&5 -$as_echo_n "checking size of char *... " >&6; } -if test "${ac_cv_sizeof_char_p+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoimax" >&5 +$as_echo_n "checking for declaration of strtoimax... " >&6; } +if ${bash_cv_decl_strtoimax+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (char *))) >= 0)]; -test_array [0] = 0 - +return !strtoimax; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoimax=yes +else + bash_cv_decl_strtoimax=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoimax" >&5 +$as_echo "$bash_cv_decl_strtoimax" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoimax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoimax = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (char *))) <= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (char *))) < 0)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtol" >&5 +$as_echo_n "checking for declaration of strtol... " >&6; } +if ${bash_cv_decl_strtol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (char *))) >= $ac_mid)]; -test_array [0] = 0 - +return !strtol; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtol=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + bash_cv_decl_strtol=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtol" >&5 +$as_echo "$bash_cv_decl_strtol" >&6; } +bash_tr_func=HAVE_DECL_`echo strtol | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtol = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF - ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoll" >&5 +$as_echo_n "checking for declaration of strtoll... " >&6; } +if ${bash_cv_decl_strtoll+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (char *))) <= $ac_mid)]; -test_array [0] = 0 - +return !strtoll; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoll=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_lo=`expr '(' $ac_mid ')' + 1` + bash_cv_decl_strtoll=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoll" >&5 +$as_echo "$bash_cv_decl_strtoll" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoll | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoll = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_char_p=$ac_lo;; -'') if test "$ac_cv_type_char_p" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char *) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (char *) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_char_p=0 - fi ;; -esac else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoul" >&5 +$as_echo_n "checking for declaration of strtoul... " >&6; } +if ${bash_cv_decl_strtoul+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (char *)); } -static unsigned long int ulongval () { return (long int) (sizeof (char *)); } -#include -#include + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + int main () { - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (char *))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (char *)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (char *)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - +return !strtoul; ; return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_char_p=`cat conftest.val` +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoul=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -if test "$ac_cv_type_char_p" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (char *) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (char *) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_char_p=0 - fi -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + bash_cv_decl_strtoul=no fi -rm -f conftest.val +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 -$as_echo "$ac_cv_sizeof_char_p" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoul" >&5 +$as_echo "$bash_cv_decl_strtoul" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoul | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoul = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF +fi -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p -_ACEOF -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of double" >&5 -$as_echo_n "checking size of double... " >&6; } -if test "${ac_cv_sizeof_double+set}" = set; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoull" >&5 +$as_echo_n "checking for declaration of strtoull... " >&6; } +if ${bash_cv_decl_strtoull+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (double))) >= 0)]; -test_array [0] = 0 - +return !strtoull; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoull=yes +else + bash_cv_decl_strtoull=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoull" >&5 +$as_echo "$bash_cv_decl_strtoull" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoull | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoull = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoumax" >&5 +$as_echo_n "checking for declaration of strtoumax... " >&6; } +if ${bash_cv_decl_strtoumax+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (double))) <= $ac_mid)]; -test_array [0] = 0 - +return !strtoumax; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoumax=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + bash_cv_decl_strtoumax=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoumax" >&5 +$as_echo "$bash_cv_decl_strtoumax" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoumax = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + + + + + + for ac_func in $ac_func_list +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi +done + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 +$as_echo_n "checking for working mktime... " >&6; } +if ${ac_cv_func_working_mktime+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_working_mktime=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () +/* Test program from Paul Eggert and Tony Leneis. */ +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifndef HAVE_ALARM +# define alarm(X) /* empty */ +#endif + +/* Work around redefinition to rpl_putenv by other config tests. */ +#undef putenv + +static time_t time_t_max; +static time_t time_t_min; + +/* Values we'll use to set the TZ environment variable. */ +static const char *tz_strings[] = { + (const char *) 0, "TZ=GMT0", "TZ=JST-9", + "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" +}; +#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) + +/* Return 0 if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static int +spring_forward_gap () +{ + /* glibc (up to about 1998-10-07) failed this test. */ + struct tm tm; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + tm.tm_year = 98; + tm.tm_mon = 3; + tm.tm_mday = 5; + tm.tm_hour = 2; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + return mktime (&tm) != (time_t) -1; +} + +static int +mktime_test1 (time_t now) +{ + struct tm *lt; + return ! (lt = localtime (&now)) || mktime (lt) == now; +} + +static int +mktime_test (time_t now) +{ + return (mktime_test1 (now) + && mktime_test1 ((time_t) (time_t_max - now)) + && mktime_test1 ((time_t) (time_t_min + now))); +} + +static int +irix_6_4_bug () +{ + /* Based on code from Ariel Faigon. */ + struct tm tm; + tm.tm_year = 96; + tm.tm_mon = 3; + tm.tm_mday = 0; + tm.tm_hour = 0; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + mktime (&tm); + return tm.tm_mon == 2 && tm.tm_mday == 31; +} + +static int +bigtime_test (int j) +{ + struct tm tm; + time_t now; + tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; + now = mktime (&tm); + if (now != (time_t) -1) + { + struct tm *lt = localtime (&now); + if (! (lt + && lt->tm_year == tm.tm_year + && lt->tm_mon == tm.tm_mon + && lt->tm_mday == tm.tm_mday + && lt->tm_hour == tm.tm_hour + && lt->tm_min == tm.tm_min + && lt->tm_sec == tm.tm_sec + && lt->tm_yday == tm.tm_yday + && lt->tm_wday == tm.tm_wday + && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) + == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) + return 0; + } + return 1; +} + +static int +year_2050_test () { -static int test_array [1 - 2 * !(((long int) (sizeof (double))) < 0)]; -test_array [0] = 0 + /* The correct answer for 2050-02-01 00:00:00 in Pacific time, + ignoring leap seconds. */ + unsigned long int answer = 2527315200UL; + + struct tm tm; + time_t t; + tm.tm_year = 2050 - 1900; + tm.tm_mon = 2 - 1; + tm.tm_mday = 1; + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + tm.tm_isdst = -1; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); - ; - return 0; + t = mktime (&tm); + + /* Check that the result is either a failure, or close enough + to the correct answer that we can assume the discrepancy is + due to leap seconds. */ + return (t == (time_t) -1 + || (0 < t && answer - 120 <= t && t <= answer + 120)); } -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default + int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (double))) >= $ac_mid)]; -test_array [0] = 0 + time_t t, delta; + int i, j; - ; - return 0; + /* This test makes some buggy mktime implementations loop. + Give up after 60 seconds; a mktime slower than that + isn't worth using anyway. */ + alarm (60); + + for (;;) + { + t = (time_t_max << 1) + 1; + if (t <= time_t_max) + break; + time_t_max = t; + } + time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; + + delta = time_t_max / 997; /* a suitable prime number */ + for (i = 0; i < N_STRINGS; i++) + { + if (tz_strings[i]) + putenv ((char*) tz_strings[i]); + + for (t = 0; t <= time_t_max - delta; t += delta) + if (! mktime_test (t)) + return 1; + if (! (mktime_test ((time_t) 1) + && mktime_test ((time_t) (60 * 60)) + && mktime_test ((time_t) (60 * 60 * 24)))) + return 1; + + for (j = 1; ; j <<= 1) + if (! bigtime_test (j)) + return 1; + else if (INT_MAX / 2 < j) + break; + if (! bigtime_test (INT_MAX)) + return 1; + } + return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_working_mktime=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_cv_func_working_mktime=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_lo= ac_hi= fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 +$as_echo "$ac_cv_func_working_mktime" >&6; } +if test $ac_cv_func_working_mktime = no; then + case " $LIBOBJS " in + *" mktime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" + ;; +esac -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (double))) <= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} + +for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done -case $ac_lo in -?*) ac_cv_sizeof_double=$ac_lo;; -'') if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (double) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (double) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_double=0 - fi ;; -esac -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default -static long int longval () { return (long int) (sizeof (double)); } -static unsigned long int ulongval () { return (long int) (sizeof (double)); } -#include -#include +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + int main () { + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; - FILE *f = fopen ("conftest.val", "w"); - if (! f) + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) return 1; - if (((long int) (sizeof (double))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (double)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (double)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); - ; + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_double=`cat conftest.val` +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (double) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (double) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_double=0 - fi + ac_cv_func_mmap_fixed_mapped=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f conftest.val + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -$as_echo "$ac_cv_sizeof_double" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then +$as_echo "#define HAVE_MMAP 1" >>confdefs.h +fi +rm -f conftest.mmap conftest.txt -cat >>confdefs.h <<_ACEOF -#define SIZEOF_DOUBLE $ac_cv_sizeof_double +for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ + 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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF +fi +done -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of long long" >&5 -$as_echo_n "checking size of long long... " >&6; } -if test "${ac_cv_sizeof_long_long+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= 0)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 +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 - ; - return 0; -} + + + + + +for ac_header in wctype.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" +if test "x$ac_cv_header_wctype_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WCTYPE_H 1 _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +done - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +for ac_header in wchar.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WCHAR_H 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) < 0)]; -test_array [0] = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= $ac_mid)]; -test_array [0] = 0 +fi - ; - return 0; -} +done + +for ac_header in langinfo.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_langinfo_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LANGINFO_H 1 _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +done + + +ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" +if test "x$ac_cv_func_mbrlen" = xyes; then : + $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h - ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp" +if test "x$ac_cv_func_mbscasecmp" = xyes; then : + $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 +ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp" +if test "x$ac_cv_func_mbscmp" = xyes; then : + $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +fi + +ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs" +if test "x$ac_cv_func_mbsnrtowcs" = xyes; then : + $as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h - ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long_long=$ac_lo;; -'') if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (long long) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_long_long=0 - fi ;; -esac -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (long long)); } -static unsigned long int ulongval () { return (long int) (sizeof (long long)); } -#include -#include -int -main () -{ +ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs" +if test "x$ac_cv_func_mbsrtowcs" = xyes; then : + $as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (long long))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (long long)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (long long)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; +fi + + +ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr" +if test "x$ac_cv_func_mbschr" = xyes; then : + $as_echo "#define HAVE_MBSCHR 1" >>confdefs.h - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long_long=`cat conftest.val` else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case " $LIBOBJS " in + *" mbschr.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mbschr.$ac_objext" + ;; +esac + +fi + + + +ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" +if test "x$ac_cv_func_wcrtomb" = xyes; then : + $as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h -( exit $ac_status ) -if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (long long) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_long_long=0 - fi fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" +if test "x$ac_cv_func_wcscoll" = xyes; then : + $as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h + fi -rm -f conftest.val + +ac_fn_c_check_func "$LINENO" "wcsdup" "ac_cv_func_wcsdup" +if test "x$ac_cv_func_wcsdup" = xyes; then : + $as_echo "#define HAVE_WCSDUP 1" >>confdefs.h + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -$as_echo "$ac_cv_sizeof_long_long" >&6; } +ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" +if test "x$ac_cv_func_wcwidth" = xyes; then : + $as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype" +if test "x$ac_cv_func_wctype" = xyes; then : + $as_echo "#define HAVE_WCTYPE 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth" +if test "x$ac_cv_func_wcswidth" = xyes; then : + $as_echo "#define HAVE_WCSWIDTH 1" >>confdefs.h -{ $as_echo "$as_me:$LINENO: checking for u_int" >&5 -$as_echo_n "checking for u_int... " >&6; } -if test "${ac_cv_type_u_int+set}" = set; then - $as_echo_n "(cached) " >&6 else - ac_cv_type_u_int=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (u_int)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + case " $LIBOBJS " in + *" wcswidth.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS wcswidth.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 +$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } +if ${ac_cv_func_mbrtowc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -if (sizeof ((u_int))) - return 0; +wchar_t wc; + char const s[] = ""; + size_t n = 1; + mbstate_t state; + return ! (sizeof state && (mbrtowc) (&wc, s, n, &state)); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_mbrtowc=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_int=yes + ac_cv_func_mbrtowc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 +$as_echo "$ac_cv_func_mbrtowc" >&6; } + if test $ac_cv_func_mbrtowc = yes; then -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h + fi -fi +if test $ac_cv_func_mbrtowc = yes; then + $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 -$as_echo "$ac_cv_type_u_int" >&6; } -if test "x$ac_cv_type_u_int" = x""yes; then - : -else -cat >>confdefs.h <<_ACEOF -#define u_int unsigned int +for ac_func in iswlower iswupper towlower towupper iswctype +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi +done -{ $as_echo "$as_me:$LINENO: checking for u_long" >&5 -$as_echo_n "checking for u_long... " >&6; } -if test "${ac_cv_type_u_long+set}" = set; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if ${bash_cv_langinfo_codeset+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_u_long=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -if (sizeof (u_long)) - return 0; +char* cs = nl_langinfo(CODESET); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_langinfo_codeset=yes +else + bash_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_langinfo_codeset" >&5 +$as_echo "$bash_cv_langinfo_codeset" >&6; } +if test $bash_cv_langinfo_codeset = yes; then + $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 +$as_echo_n "checking for wchar_t in wchar.h... " >&6; } +if ${bash_cv_type_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include + int main () { -if (sizeof ((u_long))) - return 0; + + wchar_t foo; + foo = 0; + ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_long=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_wchar_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + bash_cv_type_wchar_t=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 -$as_echo "$ac_cv_type_u_long" >&6; } -if test "x$ac_cv_type_u_long" = x""yes; then - : -else +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 +$as_echo "$bash_cv_type_wchar_t" >&6; } +if test $bash_cv_type_wchar_t = yes; then -cat >>confdefs.h <<_ACEOF -#define u_long unsigned long -_ACEOF +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h fi - - -if test "$ac_cv_sizeof_short" = 2; then - { $as_echo "$as_me:$LINENO: checking for bits16_t" >&5 -$as_echo_n "checking for bits16_t... " >&6; } -if test "${ac_cv_type_bits16_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 +$as_echo_n "checking for wctype_t in wctype.h... " >&6; } +if ${bash_cv_type_wctype_t+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits16_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits16_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -if (sizeof ((bits16_t))) - return 0; + + wctype_t foo; + foo = 0; + ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_bits16_t=yes -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_wctype_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + bash_cv_type_wctype_t=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -$as_echo "$ac_cv_type_bits16_t" >&6; } -if test "x$ac_cv_type_bits16_t" = x""yes; then - : -else +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 +$as_echo "$bash_cv_type_wctype_t" >&6; } +if test $bash_cv_type_wctype_t = yes; then -cat >>confdefs.h <<_ACEOF -#define bits16_t short -_ACEOF +$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h fi -elif test "$ac_cv_sizeof_char" = 2; then - { $as_echo "$as_me:$LINENO: checking for bits16_t" >&5 -$as_echo_n "checking for bits16_t... " >&6; } -if test "${ac_cv_type_bits16_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 +$as_echo_n "checking for wint_t in wctype.h... " >&6; } +if ${bash_cv_type_wint_t+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits16_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits16_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -if (sizeof ((bits16_t))) - return 0; + + wint_t foo; + foo = 0; + ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_wint_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + bash_cv_type_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 +$as_echo "$bash_cv_type_wint_t" >&6; } +if test $bash_cv_type_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 +$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; } +if ${bash_cv_wcwidth_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + bash_cv_wcwidth_broken=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +#include +#include - ac_cv_type_bits16_t=yes -fi +main(c, v) +int c; +char **v; +{ + int w; -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + setlocale(LC_ALL, "en_US.UTF-8"); + w = wcwidth (0x0301); + exit (w == 0); /* exit 0 if wcwidth broken */ +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_wcwidth_broken=yes +else + bash_cv_wcwdith_broken=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +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 + +$as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -$as_echo "$ac_cv_type_bits16_t" >&6; } -if test "x$ac_cv_type_bits16_t" = x""yes; then - : -else -cat >>confdefs.h <<_ACEOF -#define bits16_t char +if test "$am_cv_func_iconv" = yes; then + OLDLIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + for ac_func in locale_charset +do : + ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" +if test "x$ac_cv_func_locale_charset" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LOCALE_CHARSET 1 _ACEOF fi +done -else - { $as_echo "$as_me:$LINENO: checking for bits16_t" >&5 -$as_echo_n "checking for bits16_t... " >&6; } -if test "${ac_cv_type_bits16_t+set}" = set; then + LIBS="$OLDLIBS" +fi + + + +if test "$opt_static_link" != yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits16_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits16_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); int main () { -if (sizeof ((bits16_t))) - return 0; +return dlopen (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_bits16_t=yes + ac_cv_lib_dl_dlopen=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDL 1 +_ACEOF -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + LIBS="-ldl $LIBS" + +fi +for ac_func in dlopen dlclose dlsym +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" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi +done -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -$as_echo "$ac_cv_type_bits16_t" >&6; } -if test "x$ac_cv_type_bits16_t" = x""yes; then - : + +ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include +/* NetBSD declares sys_siglist in unistd.h. */ +#ifdef HAVE_UNISTD_H +# include +#endif + +" +if test "x$ac_cv_have_decl_sys_siglist" = xyes; then : + ac_have_decl=1 else + ac_have_decl=0 +fi cat >>confdefs.h <<_ACEOF -#define bits16_t short +#define HAVE_DECL_SYS_SIGLIST $ac_have_decl _ACEOF -fi -fi +if test "$ac_cv_func_inet_aton" != 'yes'; then -if test "$ac_cv_sizeof_short" = 2; then - { $as_echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -$as_echo_n "checking for u_bits16_t... " >&6; } -if test "${ac_cv_type_u_bits16_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 +$as_echo_n "checking for inet_aton... " >&6; } +if ${bash_cv_func_inet_aton+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_u_bits16_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#include +#include +#include +struct in_addr ap; int main () { -if (sizeof (u_bits16_t)) - return 0; + inet_aton("127.0.0.1", &ap); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_func_inet_aton=yes +else + bash_cv_func_inet_aton=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_inet_aton" >&5 +$as_echo "$bash_cv_func_inet_aton" >&6; } +if test $bash_cv_func_inet_aton = yes; then + $as_echo "#define HAVE_INET_ATON 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" inet_aton.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" + ;; esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + +fi + +case "$host_os" in +irix4*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwent in -lsun" >&5 +$as_echo_n "checking for getpwent in -lsun... " >&6; } +if ${ac_cv_lib_sun_getpwent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsun $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getpwent (); int main () { -if (sizeof ((u_bits16_t))) - return 0; +return getpwent (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_sun_getpwent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_bits16_t=yes + ac_cv_lib_sun_getpwent=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwent" >&5 +$as_echo "$ac_cv_lib_sun_getpwent" >&6; } +if test "x$ac_cv_lib_sun_getpwent" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSUN 1 +_ACEOF + + LIBS="-lsun $LIBS" -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -$as_echo "$ac_cv_type_u_bits16_t" >&6; } -if test "x$ac_cv_type_u_bits16_t" = x""yes; then - : -else + ;; +esac -cat >>confdefs.h <<_ACEOF -#define u_bits16_t unsigned short -_ACEOF +if test "$ac_cv_func_getpeername" = no; then +if test "X$bash_cv_have_socklib" = "X"; then +_bash_needmsg= +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket library" >&5 +$as_echo_n "checking for socket library... " >&6; } +_bash_needmsg=yes fi - -elif test "$ac_cv_sizeof_char" = 2; then - { $as_echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -$as_echo_n "checking for u_bits16_t... " >&6; } -if test "${ac_cv_type_u_bits16_t+set}" = set; then +if ${bash_cv_have_socklib+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_u_bits16_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpeername in -lsocket" >&5 +$as_echo_n "checking for getpeername in -lsocket... " >&6; } +if ${ac_cv_lib_socket_getpeername+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket -lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getpeername (); int main () { -if (sizeof (u_bits16_t)) - return 0; +return getpeername (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_getpeername=yes +else + ac_cv_lib_socket_getpeername=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getpeername" >&5 +$as_echo "$ac_cv_lib_socket_getpeername" >&6; } +if test "x$ac_cv_lib_socket_getpeername" = xyes; then : + bash_cv_have_socklib=yes +else + bash_cv_have_socklib=no +fi + +fi + +if test "X$_bash_needmsg" = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_socklib" >&5 +$as_echo "$bash_cv_have_socklib" >&6; } + _bash_needmsg= +fi +if test $bash_cv_have_socklib = yes; then + # check for libnsl, add it to LIBS if present + if test "X$bash_cv_have_libnsl" = "X"; then + _bash_needmsg= + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnsl" >&5 +$as_echo_n "checking for libnsl... " >&6; } + _bash_needmsg=yes + fi + if ${bash_cv_have_libnsl+:} false; then : + $as_echo_n "(cached) " >&6 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 +$as_echo_n "checking for t_open in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_t_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char t_open (); int main () { -if (sizeof ((u_bits16_t))) - return 0; +return t_open (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_t_open=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_bits16_t=yes + ac_cv_lib_nsl_t_open=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 +$as_echo "$ac_cv_lib_nsl_t_open" >&6; } +if test "x$ac_cv_lib_nsl_t_open" = xyes; then : + bash_cv_have_libnsl=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + bash_cv_have_libnsl=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -$as_echo "$ac_cv_type_u_bits16_t" >&6; } -if test "x$ac_cv_type_u_bits16_t" = x""yes; then - : -else -cat >>confdefs.h <<_ACEOF -#define u_bits16_t unsigned char -_ACEOF + if test "X$_bash_needmsg" = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_libnsl" >&5 +$as_echo "$bash_cv_have_libnsl" >&6; } + _bash_needmsg= + fi + if test $bash_cv_have_libnsl = yes; then + LIBS="-lsocket -lnsl $LIBS" + else + LIBS="-lsocket $LIBS" + fi + $as_echo "#define HAVE_LIBSOCKET 1" >>confdefs.h + + $as_echo "#define HAVE_GETPEERNAME 1" >>confdefs.h fi +fi +if test "$ac_cv_func_gethostbyname" = no; then + if test "X$bash_cv_have_gethostbyname" = "X"; then +_bash_needmsg=yes else - { $as_echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -$as_echo_n "checking for u_bits16_t... " >&6; } -if test "${ac_cv_type_u_bits16_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 +$as_echo_n "checking for gethostbyname in socket library... " >&6; } +_bash_needmsg= +fi +if ${bash_cv_have_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_u_bits16_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (u_bits16_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -if (sizeof ((u_bits16_t))) - return 0; + struct hostent *hp; + hp = gethostbyname("localhost"); + ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_have_gethostbyname=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_bits16_t=yes + bash_cv_have_gethostbyname=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +fi +if test "X$_bash_needmsg" = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 +$as_echo_n "checking for gethostbyname in socket library... " >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_gethostbyname" >&5 +$as_echo "$bash_cv_have_gethostbyname" >&6; } +if test "$bash_cv_have_gethostbyname" = yes; then +$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -$as_echo "$ac_cv_type_u_bits16_t" >&6; } -if test "x$ac_cv_type_u_bits16_t" = x""yes; then - : + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } +if ${ac_cv_type_uid_t+:} false; then : + $as_echo_n "(cached) " >&6 else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include -cat >>confdefs.h <<_ACEOF -#define u_bits16_t unsigned short _ACEOF - +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes +else + ac_cv_type_uid_t=no fi +rm -f conftest* fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then +$as_echo "#define uid_t int" >>confdefs.h -if test "$ac_cv_sizeof_int" = 4; then - { $as_echo "$as_me:$LINENO: checking for bits32_t" >&5 -$as_echo_n "checking for bits32_t... " >&6; } -if test "${ac_cv_type_bits32_t+set}" = set; then + +$as_echo "#define gid_t int" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 +$as_echo_n "checking type of array argument to getgroups... " >&6; } +if ${ac_cv_type_getgroups+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + if test "$cross_compiling" = yes; then : + ac_cv_type_getgroups=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +/* Thanks to Mike Rendell for this test. */ $ac_includes_default +#define NGID 256 +#undef MAX +#define MAX(x, y) ((x) > (y) ? (x) : (y)) + int main () { -if (sizeof (bits32_t)) - return 0; - ; - return 0; + gid_t gidset[NGID]; + int i, n; + union { gid_t gval; long int lval; } val; + + val.lval = -1; + for (i = 0; i < NGID; i++) + gidset[i] = val.gval; + n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, + gidset); + /* Exit non-zero if getgroups seems to require an array of ints. This + happens when gid_t is short int but getgroups modifies an array + of ints. */ + return n > 0 && gidset[n] != val.gval; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_type_getgroups=gid_t +else + ac_cv_type_getgroups=int +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +if test $ac_cv_type_getgroups = cross; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits32_t))) - return 0; - ; - return 0; -} +#include + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then : + ac_cv_type_getgroups=gid_t else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_getgroups=int +fi +rm -f conftest* - ac_cv_type_bits32_t=yes fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 +$as_echo "$ac_cv_type_getgroups" >&6; } + +cat >>confdefs.h <<_ACEOF +#define GETGROUPS_T $ac_cv_type_getgroups +_ACEOF + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -$as_echo "$ac_cv_type_bits32_t" >&6; } -if test "x$ac_cv_type_bits32_t" = x""yes; then - : +ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +if test "x$ac_cv_type_mode_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define bits32_t int +#define mode_t int _ACEOF fi -elif test "$ac_cv_sizeof_long" = 4; then - { $as_echo "$as_me:$LINENO: checking for bits32_t" >&5 -$as_echo_n "checking for bits32_t... " >&6; } -if test "${ac_cv_type_bits32_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } +if ${ac_cv_type_uid_t+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits32_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits32_t))) - return 0; - ; - return 0; -} +#include + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_bits32_t=yes + ac_cv_type_uid_t=no fi +rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then +$as_echo "#define uid_t int" >>confdefs.h -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +$as_echo "#define gid_t int" >>confdefs.h + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -$as_echo "$ac_cv_type_bits32_t" >&6; } -if test "x$ac_cv_type_bits32_t" = x""yes; then - : + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define bits32_t long +#define pid_t int _ACEOF fi +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + else - { $as_echo "$as_me:$LINENO: checking for bits32_t" >&5 -$as_echo_n "checking for bits32_t... " >&6; } -if test "${ac_cv_type_bits32_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_bits32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits32_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits32_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -$as_echo "$ac_cv_type_bits32_t" >&6; } -if test "x$ac_cv_type_bits32_t" = x""yes; then - : +ac_fn_c_check_type "$LINENO" "time_t" "ac_cv_type_time_t" "$ac_includes_default" +if test "x$ac_cv_type_time_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define bits32_t int +#define time_t long _ACEOF fi -fi -if test "$ac_cv_sizeof_int" = 4; then - { $as_echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -$as_echo_n "checking for u_bits32_t... " >&6; } -if test "${ac_cv_type_u_bits32_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long" >&5 +$as_echo_n "checking for long long... " >&6; } +if ${bash_cv_type_long_long+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_u_bits32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +long long ll = 1; int i = 63; int main () { -if (sizeof (u_bits32_t)) - return 0; + +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; + ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_type_long_long='long long' +else + bash_cv_type_long_long='long' +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_long_long" >&5 +$as_echo "$bash_cv_type_long_long" >&6; } +if test "$bash_cv_type_long_long" = 'long long'; then + $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5 +$as_echo_n "checking for unsigned long long... " >&6; } +if ${bash_cv_type_unsigned_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +unsigned long long ull = 1; int i = 63; int main () { -if (sizeof ((u_bits32_t))) - return 0; + +unsigned long long ullmax = (unsigned long long) -1; +return ull << i | ull >> i | ullmax / ull | ullmax % ull; + ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_type_unsigned_long_long='unsigned long long' else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_bits32_t=yes + bash_cv_type_unsigned_long_long='unsigned long' fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_unsigned_long_long" >&5 +$as_echo "$bash_cv_type_unsigned_long_long" >&6; } +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then + $as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -$as_echo "$ac_cv_type_u_bits32_t" >&6; } -if test "x$ac_cv_type_u_bits32_t" = x""yes; then - : -else -cat >>confdefs.h <<_ACEOF -#define u_bits32_t unsigned int -_ACEOF - -fi -elif test "$ac_cv_sizeof_long" = 4; then - { $as_echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -$as_echo_n "checking for u_bits32_t... " >&6; } -if test "${ac_cv_type_u_bits32_t+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_u_bits32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include +#include + int main () { -if (sizeof (u_bits32_t)) - return 0; +return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 +$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } +if ${ac_cv_have_sig_atomic_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#include + int main () { -if (sizeof ((u_bits32_t))) - return 0; + sig_atomic_t x; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_have_sig_atomic_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_u_bits32_t=yes + ac_cv_have_sig_atomic_t=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 +$as_echo "$ac_cv_have_sig_atomic_t" >&6; } +if test "$ac_cv_have_sig_atomic_t" = "no" +then + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default" +if test "x$ac_cv_type_sig_atomic_t" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define sig_atomic_t int +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -$as_echo "$ac_cv_type_u_bits32_t" >&6; } -if test "x$ac_cv_type_u_bits32_t" = x""yes; then - : + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 +$as_echo_n "checking size of char... " >&6; } +if ${ac_cv_sizeof_char+:} false; then : + $as_echo_n "(cached) " >&6 else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : -cat >>confdefs.h <<_ACEOF -#define u_bits32_t unsigned long -_ACEOF +else + if test "$ac_cv_type_char" = 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 77 "cannot compute sizeof (char) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_char=0 + fi +fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 +$as_echo "$ac_cv_sizeof_char" >&6; } -else - { $as_echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -$as_echo_n "checking for u_bits32_t... " >&6; } -if test "${ac_cv_type_u_bits32_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_u_bits32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (u_bits32_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((u_bits32_t))) - return 0; - ; - return 0; -} + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } +if ${ac_cv_sizeof_short+:} false; then : + $as_echo_n "(cached) " >&6 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_short" = 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 77 "cannot compute sizeof (short) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_short=0 + fi +fi - ac_cv_type_u_bits32_t=yes fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if ${ac_cv_sizeof_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = 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 77 "cannot compute sizeof (int) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int=0 + fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -$as_echo "$ac_cv_type_u_bits32_t" >&6; } -if test "x$ac_cv_type_u_bits32_t" = x""yes; then - : -else +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + cat >>confdefs.h <<_ACEOF -#define u_bits32_t unsigned int +#define SIZEOF_INT $ac_cv_sizeof_int _ACEOF + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = 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 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } -if test "$ac_cv_sizeof_char_p" = 8; then - { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 -$as_echo_n "checking for bits64_t... " >&6; } -if test "${ac_cv_type_bits64_t+set}" = set; then + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char *" >&5 +$as_echo_n "checking size of char *... " >&6; } +if ${ac_cv_sizeof_char_p+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits64_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits64_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char *))" "ac_cv_sizeof_char_p" "$ac_includes_default"; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test "$ac_cv_type_char_p" = 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 77 "cannot compute sizeof (char *) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_char_p=0 + fi +fi - ac_cv_type_bits64_t=yes fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char_p" >&5 +$as_echo "$ac_cv_sizeof_char_p" >&6; } -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 +$as_echo_n "checking size of double... " >&6; } +if ${ac_cv_sizeof_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_double" = 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 77 "cannot compute sizeof (double) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_double=0 + fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -$as_echo "$ac_cv_type_bits64_t" >&6; } -if test "x$ac_cv_type_bits64_t" = x""yes; then - : -else +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 +$as_echo "$ac_cv_sizeof_double" >&6; } + + cat >>confdefs.h <<_ACEOF -#define bits64_t char * +#define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -fi -elif test "$ac_cv_sizeof_double" = 8; then - { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 -$as_echo_n "checking for bits64_t... " >&6; } -if test "${ac_cv_type_bits64_t+set}" = set; then +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } +if ${ac_cv_sizeof_long_long+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_type_bits64_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits64_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test "$ac_cv_type_long_long" = 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 77 "cannot compute sizeof (long long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long_long=0 + fi +fi - ac_cv_type_bits64_t=yes fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +ac_fn_c_check_type "$LINENO" "u_int" "ac_cv_type_u_int" "$ac_includes_default" +if test "x$ac_cv_type_u_int" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -$as_echo "$ac_cv_type_bits64_t" >&6; } -if test "x$ac_cv_type_bits64_t" = x""yes; then - : else cat >>confdefs.h <<_ACEOF -#define bits64_t double +#define u_int unsigned int _ACEOF fi -elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then - { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 -$as_echo_n "checking for bits64_t... " >&6; } -if test "${ac_cv_type_bits64_t+set}" = set; then - $as_echo_n "(cached) " >&6 +ac_fn_c_check_type "$LINENO" "u_long" "ac_cv_type_u_long" "$ac_includes_default" +if test "x$ac_cv_type_u_long" = xyes; then : + else - ac_cv_type_bits64_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits64_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define u_long unsigned long _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=yes -fi +fi + + + +if test "$ac_cv_sizeof_short" = 2; then + ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_bits16_t" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -$as_echo "$ac_cv_type_bits64_t" >&6; } -if test "x$ac_cv_type_bits64_t" = x""yes; then - : +elif test "$ac_cv_sizeof_char" = 2; then + ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_bits16_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define bits64_t long long +#define bits16_t char _ACEOF fi -elif test "$ac_cv_sizeof_long" = 8; then - { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 -$as_echo_n "checking for bits64_t... " >&6; } -if test "${ac_cv_type_bits64_t+set}" = set; then - $as_echo_n "(cached) " >&6 else - ac_cv_type_bits64_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits64_t))) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : + ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_bits16_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=yes +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + +if test "$ac_cv_sizeof_short" = 2; then + ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits16_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -$as_echo "$ac_cv_type_bits64_t" >&6; } -if test "x$ac_cv_type_bits64_t" = x""yes; then - : +elif test "$ac_cv_sizeof_char" = 2; then + ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits16_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define bits64_t long +#define u_bits16_t unsigned char _ACEOF fi else - { $as_echo "$as_me:$LINENO: checking for bits64_t" >&5 -$as_echo_n "checking for bits64_t... " >&6; } -if test "${ac_cv_type_bits64_t+set}" = set; then - $as_echo_n "(cached) " >&6 + ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits16_t" = xyes; then : + else - ac_cv_type_bits64_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (bits64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((bits64_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + +if test "$ac_cv_sizeof_int" = 4; then + ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_bits32_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +elif test "$ac_cv_sizeof_long" = 4; then + ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t long +_ACEOF + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -$as_echo "$ac_cv_type_bits64_t" >&6; } -if test "x$ac_cv_type_bits64_t" = x""yes; then - : + +else + ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_bits32_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define bits64_t double +#define bits32_t int _ACEOF fi @@ -25251,419 +12384,149 @@ fi fi +if test "$ac_cv_sizeof_int" = 4; then + ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits32_t" = xyes; then : -if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then - { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -$as_echo_n "checking for ptrdiff_t... " >&6; } -if test "${ac_cv_type_ptrdiff_t+set}" = set; then - $as_echo_n "(cached) " >&6 else - ac_cv_type_ptrdiff_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (ptrdiff_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((ptrdiff_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +elif test "$ac_cv_sizeof_long" = 4; then + ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits32_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned long +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -$as_echo "$ac_cv_type_ptrdiff_t" >&6; } -if test "x$ac_cv_type_ptrdiff_t" = x""yes; then - : +else + ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits32_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define ptrdiff_t int +#define u_bits32_t unsigned int _ACEOF fi -elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then - { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -$as_echo_n "checking for ptrdiff_t... " >&6; } -if test "${ac_cv_type_ptrdiff_t+set}" = set; then - $as_echo_n "(cached) " >&6 +fi + + +if test "$ac_cv_sizeof_char_p" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + else - ac_cv_type_ptrdiff_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (ptrdiff_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((ptrdiff_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define bits64_t char * _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +elif test "$ac_cv_sizeof_double" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -$as_echo "$ac_cv_type_ptrdiff_t" >&6; } -if test "x$ac_cv_type_ptrdiff_t" = x""yes; then - : +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define ptrdiff_t long +#define bits64_t long long _ACEOF fi -elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then - { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -$as_echo_n "checking for ptrdiff_t... " >&6; } -if test "${ac_cv_type_ptrdiff_t+set}" = set; then - $as_echo_n "(cached) " >&6 +elif test "$ac_cv_sizeof_long" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + else - ac_cv_type_ptrdiff_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (ptrdiff_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((ptrdiff_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define bits64_t long _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + +else +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -$as_echo "$ac_cv_type_ptrdiff_t" >&6; } -if test "x$ac_cv_type_ptrdiff_t" = x""yes; then - : + + + +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF -#define ptrdiff_t long long +#define ptrdiff_t int _ACEOF fi +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + else - { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -$as_echo_n "checking for ptrdiff_t... " >&6; } -if test "${ac_cv_type_ptrdiff_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_type_ptrdiff_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof (ptrdiff_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if (sizeof ((ptrdiff_t))) - return 0; - ; - return 0; -} + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long long +_ACEOF fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -$as_echo "$ac_cv_type_ptrdiff_t" >&6; } -if test "x$ac_cv_type_ptrdiff_t" = x""yes; then - : +else + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + else cat >>confdefs.h <<_ACEOF @@ -25675,16 +12538,12 @@ fi fi -{ $as_echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; } -if test "${ac_cv_header_stat_broken+set}" = set; then +if ${ac_cv_header_stat_broken+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -25706,48 +12565,25 @@ extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stat_broken=no else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stat_broken=yes + ac_cv_header_stat_broken=yes fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 $as_echo "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then -cat >>confdefs.h <<\_ACEOF -#define STAT_MACROS_BROKEN 1 -_ACEOF +$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether #! works in shell scripts" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether #! works in shell scripts" >&5 $as_echo_n "checking whether #! works in shell scripts... " >&6; } -if test "${ac_cv_sys_interpreter+set}" = set; then +if ${ac_cv_sys_interpreter+:} false; then : $as_echo_n "(cached) " >&6 else echo '#! /bin/cat @@ -25762,28 +12598,22 @@ else fi rm -f conftest fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5 $as_echo "$ac_cv_sys_interpreter" >&6; } interpval=$ac_cv_sys_interpreter if test $ac_cv_sys_interpreter = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_HASH_BANG_EXEC 1 -_ACEOF +$as_echo "#define HAVE_HASH_BANG_EXEC 1" >>confdefs.h fi if test "$ac_cv_func_lstat" = "no"; then -{ $as_echo "$as_me:$LINENO: checking for lstat" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 $as_echo_n "checking for lstat... " >&6; } -if test "${bash_cv_func_lstat+set}" = set; then +if ${bash_cv_func_lstat+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -25797,67 +12627,36 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_func_lstat=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_func_lstat=no + bash_cv_func_lstat=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 $as_echo "$bash_cv_func_lstat" >&6; } if test $bash_cv_func_lstat = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_LSTAT 1 -_ACEOF + $as_echo "#define HAVE_LSTAT 1" >>confdefs.h fi fi -{ $as_echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ctype macros accept non-ascii characters" >&5 $as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; } -if test "${bash_cv_func_ctype_nonascii+set}" = set; then +if ${bash_cv_func_ctype_nonascii+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} bash_cv_func_ctype_nonascii=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_LOCALE_H @@ -25891,68 +12690,35 @@ char *v[]; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_ctype_nonascii=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_func_ctype_nonascii=no + bash_cv_func_ctype_nonascii=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_ctype_nonascii" >&5 $as_echo "$bash_cv_func_ctype_nonascii" >&6; } if test $bash_cv_func_ctype_nonascii = yes; then -cat >>confdefs.h <<\_ACEOF -#define CTYPE_NON_ASCII 1 -_ACEOF +$as_echo "#define CTYPE_NON_ASCII 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dup2 fails to clear the close-on-exec flag" >&5 $as_echo_n "checking if dup2 fails to clear the close-on-exec flag... " >&6; } -if test "${bash_cv_dup2_broken+set}" = set; then +if ${bash_cv_dup2_broken+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;} bash_cv_dup2_broken=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -25972,70 +12738,37 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_dup2_broken=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_dup2_broken=no + bash_cv_dup2_broken=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dup2_broken" >&5 $as_echo "$bash_cv_dup2_broken" >&6; } if test $bash_cv_dup2_broken = yes; then -cat >>confdefs.h <<\_ACEOF -#define DUP2_BROKEN 1 -_ACEOF +$as_echo "#define DUP2_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5 $as_echo_n "checking whether pgrps need synchronization... " >&6; } -if test "${bash_cv_pgrp_pipe+set}" = set; then +if ${bash_cv_pgrp_pipe+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;} bash_cv_pgrp_pipe=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_UNISTD_H @@ -26087,66 +12820,33 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_pgrp_pipe=no else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_pgrp_pipe=yes + bash_cv_pgrp_pipe=yes fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5 $as_echo "$bash_cv_pgrp_pipe" >&6; } if test $bash_cv_pgrp_pipe = yes; then -cat >>confdefs.h <<\_ACEOF -#define PGRP_PIPE 1 -_ACEOF +$as_echo "#define PGRP_PIPE 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for type of signal functions" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 $as_echo_n "checking for type of signal functions... " >&6; } -if test "${bash_cv_signal_vintage+set}" = set; then +if ${bash_cv_signal_vintage+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -26163,38 +12863,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_signal_vintage=posix else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -26208,38 +12881,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_signal_vintage=4.2bsd else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -26250,90 +12896,51 @@ main () int mask = sigmask(SIGINT); sigset(SIGINT, foo); sigrelse(SIGINT); - sighold(SIGINT); sigpause(SIGINT); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then + sighold(SIGINT); sigpause(SIGINT); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : bash_cv_signal_vintage=svr3 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_signal_vintage=v7 + bash_cv_signal_vintage=v7 fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 $as_echo "$bash_cv_signal_vintage" >&6; } if test "$bash_cv_signal_vintage" = posix; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_POSIX_SIGNALS 1 -_ACEOF +$as_echo "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = "4.2bsd"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_BSD_SIGNALS 1 -_ACEOF +$as_echo "#define HAVE_BSD_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = svr3; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_USG_SIGHOLD 1 -_ACEOF +$as_echo "#define HAVE_USG_SIGHOLD 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5 $as_echo_n "checking for sys_errlist and sys_nerr... " >&6; } -if test "${bash_cv_sys_errlist+set}" = set; then +if ${bash_cv_sys_errlist+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -26346,64 +12953,33 @@ extern char *sys_errlist[]; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_sys_errlist=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_sys_errlist=no + bash_cv_sys_errlist=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_errlist" >&5 $as_echo "$bash_cv_sys_errlist" >&6; } if test $bash_cv_sys_errlist = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_SYS_ERRLIST 1 -_ACEOF +$as_echo "#define HAVE_SYS_ERRLIST 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_siglist in system C library" >&5 $as_echo_n "checking for sys_siglist in system C library... " >&6; } -if test "${bash_cv_sys_siglist+set}" = set; then +if ${bash_cv_sys_siglist+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;} bash_cv_sys_siglist=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -26420,63 +12996,30 @@ char *msg = sys_siglist[2]; exit(msg == 0); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_sys_siglist=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_sys_siglist=no + bash_cv_sys_siglist=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_siglist" >&5 $as_echo "$bash_cv_sys_siglist" >&6; } if test $bash_cv_sys_siglist = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_SYS_SIGLIST 1 -_ACEOF +$as_echo "#define HAVE_SYS_SIGLIST 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in signal.h or unistd.h" >&5 $as_echo_n "checking for _sys_siglist in signal.h or unistd.h... " >&6; } -if test "${bash_cv_decl_under_sys_siglist+set}" = set; then +if ${bash_cv_decl_under_sys_siglist+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -26492,59 +13035,32 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_decl_under_sys_siglist=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_decl_under_sys_siglist=no + bash_cv_decl_under_sys_siglist=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_under_sys_siglist" >&5 $as_echo "$bash_cv_decl_under_sys_siglist" >&6; } if test $bash_cv_decl_under_sys_siglist = yes; then -cat >>confdefs.h <<\_ACEOF -#define UNDER_SYS_SIGLIST_DECLARED 1 -_ACEOF +$as_echo "#define UNDER_SYS_SIGLIST_DECLARED 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in system C library" >&5 $as_echo_n "checking for _sys_siglist in system C library... " >&6; } -if test "${bash_cv_under_sys_siglist+set}" = set; then +if ${bash_cv_under_sys_siglist+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;} bash_cv_under_sys_siglist=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -26561,64 +13077,31 @@ char *msg = (char *)_sys_siglist[2]; exit(msg == 0); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_under_sys_siglist=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_under_sys_siglist=no + bash_cv_under_sys_siglist=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_under_sys_siglist" >&5 $as_echo "$bash_cv_under_sys_siglist" >&6; } if test $bash_cv_under_sys_siglist = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_UNDER_SYS_SIGLIST 1 -_ACEOF +$as_echo "#define HAVE_UNDER_SYS_SIGLIST 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5 $as_echo_n "checking whether signal handlers are of type void... " >&6; } -if test "${bash_cv_void_sighandler+set}" = set; then +if ${bash_cv_void_sighandler+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -26637,55 +13120,28 @@ int i; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_void_sighandler=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_void_sighandler=no + bash_cv_void_sighandler=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_void_sighandler" >&5 $as_echo "$bash_cv_void_sighandler" >&6; } if test $bash_cv_void_sighandler = yes; then -cat >>confdefs.h <<\_ACEOF -#define VOID_SIGHANDLER 1 -_ACEOF +$as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for clock_t" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5 $as_echo_n "checking for clock_t... " >&6; } -if test "${bash_cv_type_clock_t+set}" = set; then +if ${bash_cv_type_clock_t+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if STDC_HEADERS @@ -26702,7 +13158,7 @@ cat >>conftest.$ac_ext <<_ACEOF _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "clock_t" >/dev/null 2>&1; then + $EGREP "clock_t" >/dev/null 2>&1; then : bash_cv_type_clock_t=yes else bash_cv_type_clock_t=no @@ -26711,7 +13167,7 @@ rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_clock_t" >&5 $as_echo "$bash_cv_type_clock_t" >&6; } if test $bash_cv_type_clock_t = no; then @@ -26723,210 +13179,12 @@ fi -{ $as_echo "$as_me:$LINENO: checking for sigset_t" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigset_t" >&5 $as_echo_n "checking for sigset_t... " >&6; } -if test "${bash_cv_type_sigset_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sigset_t" >/dev/null 2>&1; then - bash_cv_type_sigset_t=yes -else - bash_cv_type_sigset_t=no -fi -rm -f conftest* - -fi - -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 -$as_echo "$bash_cv_type_sigset_t" >&6; } - -if test $bash_cv_type_sigset_t = no; then - cat >>confdefs.h <<_ACEOF -#define sigset_t int -_ACEOF - -fi - - - -{ $as_echo "$as_me:$LINENO: checking for quad_t" >&5 -$as_echo_n "checking for quad_t... " >&6; } -if test "${bash_cv_type_quad_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif - - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "quad_t" >/dev/null 2>&1; then - bash_cv_type_quad_t=yes -else - bash_cv_type_quad_t=no -fi -rm -f conftest* - -fi - -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 -$as_echo "$bash_cv_type_quad_t" >&6; } -if test $bash_cv_type_quad_t = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_QUAD_T 1 -_ACEOF - - fi -if test $bash_cv_type_quad_t = no; then - cat >>confdefs.h <<_ACEOF -#define quad_t long -_ACEOF - -fi - - - -{ $as_echo "$as_me:$LINENO: checking for intmax_t" >&5 -$as_echo_n "checking for intmax_t... " >&6; } -if test "${bash_cv_type_intmax_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif - - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "intmax_t" >/dev/null 2>&1; then - bash_cv_type_intmax_t=yes -else - bash_cv_type_intmax_t=no -fi -rm -f conftest* - -fi - -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 -$as_echo "$bash_cv_type_intmax_t" >&6; } - -if test $bash_cv_type_intmax_t = no; then - cat >>confdefs.h <<_ACEOF -#define intmax_t $bash_cv_type_long_long -_ACEOF - -fi - - - -{ $as_echo "$as_me:$LINENO: checking for uintmax_t" >&5 -$as_echo_n "checking for uintmax_t... " >&6; } -if test "${bash_cv_type_uintmax_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif - - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uintmax_t" >/dev/null 2>&1; then - bash_cv_type_uintmax_t=yes -else - bash_cv_type_uintmax_t=no -fi -rm -f conftest* - -fi - -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 -$as_echo "$bash_cv_type_uintmax_t" >&6; } - -if test $bash_cv_type_uintmax_t = no; then - cat >>confdefs.h <<_ACEOF -#define uintmax_t $bash_cv_type_unsigned_long_long -_ACEOF - -fi - -if test "$ac_cv_header_sys_socket_h" = "yes"; then - - -{ $as_echo "$as_me:$LINENO: checking for socklen_t" >&5 -$as_echo_n "checking for socklen_t... " >&6; } -if test "${bash_cv_type_socklen_t+set}" = set; then +if ${bash_cv_type_sigset_t+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if STDC_HEADERS @@ -26939,757 +13197,384 @@ cat >>conftest.$ac_ext <<_ACEOF #if HAVE_STDINT_H #include #endif -#include +#include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "socklen_t" >/dev/null 2>&1; then - bash_cv_type_socklen_t=yes + $EGREP "sigset_t" >/dev/null 2>&1; then : + bash_cv_type_sigset_t=yes else - bash_cv_type_socklen_t=no + bash_cv_type_sigset_t=no fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 -$as_echo "$bash_cv_type_socklen_t" >&6; } -if test $bash_cv_type_socklen_t = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKLEN_T 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sigset_t" >&5 +$as_echo "$bash_cv_type_sigset_t" >&6; } - fi -if test $bash_cv_type_socklen_t = no; then +if test $bash_cv_type_sigset_t = no; then cat >>confdefs.h <<_ACEOF -#define socklen_t int +#define sigset_t int _ACEOF fi -fi -{ $as_echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 -$as_echo_n "checking for size and type of struct rlimit fields... " >&6; } -if test "${bash_cv_type_rlimit+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -int -main () -{ -rlim_t xxx; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - bash_cv_type_rlimit=rlim_t -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 -$as_echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} - bash_cv_type_rlimit=long +{ $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 >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#include -#include -main() -{ -#ifdef HAVE_QUAD_T - struct rlimit rl; - if (sizeof(rl.rlim_cur) == sizeof(quad_t)) - exit(0); +#if STDC_HEADERS +#include +#include #endif - exit(1); -} +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_rlimit=quad_t +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 - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_type_rlimit=long -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - + bash_cv_type_sig_atomic_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 -$as_echo "$bash_cv_type_rlimit" >&6; } -if test $bash_cv_type_rlimit = quad_t; then -cat >>confdefs.h <<\_ACEOF -#define RLIMTYPE quad_t -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5 +$as_echo "$bash_cv_type_sig_atomic_t" >&6; } -elif test $bash_cv_type_rlimit = rlim_t; then -cat >>confdefs.h <<\_ACEOF -#define RLIMTYPE rlim_t +if test $bash_cv_type_sig_atomic_t = no; then + cat >>confdefs.h <<_ACEOF +#define sig_atomic_t int _ACEOF fi -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of intmax_t" >&5 -$as_echo_n "checking size of intmax_t... " >&6; } -if test "${ac_cv_sizeof_intmax_t+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (intmax_t))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (intmax_t))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done +{ $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 : + $as_echo_n "(cached) " >&6 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (intmax_t))) < 0)]; -test_array [0] = 0 +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (intmax_t))) >= $ac_mid)]; -test_array [0] = 0 - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "quad_t" >/dev/null 2>&1; then : + bash_cv_type_quad_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_lo= ac_hi= + bash_cv_type_quad_t=no fi +rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (intmax_t))) <= $ac_mid)]; -test_array [0] = 0 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_quad_t" >&5 +$as_echo "$bash_cv_type_quad_t" >&6; } +if test $bash_cv_type_quad_t = yes; then + $as_echo "#define HAVE_QUAD_T 1" >>confdefs.h - ; - return 0; -} + fi +if test $bash_cv_type_quad_t = no; then + cat >>confdefs.h <<_ACEOF +#define quad_t long _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_intmax_t=$ac_lo;; -'') if test "$ac_cv_type_intmax_t" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (intmax_t) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (intmax_t) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_intmax_t=0 - fi ;; -esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 +$as_echo_n "checking for intmax_t... " >&6; } +if ${bash_cv_type_intmax_t+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -static long int longval () { return (long int) (sizeof (intmax_t)); } -static unsigned long int ulongval () { return (long int) (sizeof (intmax_t)); } -#include +#include +#if STDC_HEADERS #include -int -main () -{ +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (((long int) (sizeof (intmax_t))) < 0) - { - long int i = longval (); - if (i != ((long int) (sizeof (intmax_t)))) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (intmax_t)))) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - ; - return 0; -} _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_intmax_t=`cat conftest.val` +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "intmax_t" >/dev/null 2>&1; then : + bash_cv_type_intmax_t=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -if test "$ac_cv_type_intmax_t" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (intmax_t) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (intmax_t) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } - else - ac_cv_sizeof_intmax_t=0 - fi -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.val + bash_cv_type_intmax_t=no fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_intmax_t" >&5 -$as_echo "$ac_cv_sizeof_intmax_t" >&6; } +rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_intmax_t" >&5 +$as_echo "$bash_cv_type_intmax_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t +if test $bash_cv_type_intmax_t = no; then + cat >>confdefs.h <<_ACEOF +#define intmax_t $bash_cv_type_long_long _ACEOF +fi -{ $as_echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 -$as_echo_n "checking for struct termios.c_line... " >&6; } -if test "${ac_cv_member_struct_termios_c_line+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintmax_t" >&5 +$as_echo_n "checking for uintmax_t... " >&6; } +if ${bash_cv_type_uintmax_t+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif -int -main () -{ -static struct termios ac_aggr; -if (ac_aggr.c_line) -return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_termios_c_line=yes +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uintmax_t" >/dev/null 2>&1; then : + bash_cv_type_uintmax_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + bash_cv_type_uintmax_t=no +fi +rm -f conftest* + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_uintmax_t" >&5 +$as_echo "$bash_cv_type_uintmax_t" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +if test $bash_cv_type_uintmax_t = no; then + cat >>confdefs.h <<_ACEOF +#define uintmax_t $bash_cv_type_unsigned_long_long _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include +fi + +if test "$ac_cv_header_sys_socket_h" = "yes"; then -int -main () -{ -static struct termios ac_aggr; -if (sizeof ac_aggr.c_line) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_termios_c_line=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +$as_echo_n "checking for socklen_t... " >&6; } +if ${bash_cv_type_socklen_t+:} false; then : + $as_echo_n "(cached) " >&6 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include - ac_cv_member_struct_termios_c_line=no +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "socklen_t" >/dev/null 2>&1; then : + bash_cv_type_socklen_t=yes +else + bash_cv_type_socklen_t=no fi +rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 -$as_echo "$ac_cv_member_struct_termios_c_line" >&6; } -if test "x$ac_cv_member_struct_termios_c_line" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define TERMIOS_LDISC 1 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_socklen_t" >&5 +$as_echo "$bash_cv_type_socklen_t" >&6; } +if test $bash_cv_type_socklen_t = yes; then + $as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h + + fi +if test $bash_cv_type_socklen_t = no; then + cat >>confdefs.h <<_ACEOF +#define socklen_t unsigned int _ACEOF fi - - -{ $as_echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 -$as_echo_n "checking for struct termio.c_line... " >&6; } -if test "${ac_cv_member_struct_termio_c_line+set}" = set; then +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size and type of struct rlimit fields" >&5 +$as_echo_n "checking for size and type of struct rlimit fields... " >&6; } +if ${bash_cv_type_rlimit+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#include - - +#include int main () { -static struct termio ac_aggr; -if (ac_aggr.c_line) -return 0; +rlim_t xxx; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_termio_c_line=yes +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_rlimit=rlim_t else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +$as_echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + bash_cv_type_rlimit=long +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -#include - - -int -main () +#include +#include +main() { -static struct termio ac_aggr; -if (sizeof ac_aggr.c_line) -return 0; - ; - return 0; +#ifdef HAVE_QUAD_T + struct rlimit rl; + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) + exit(0); +#endif + exit(1); } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_termio_c_line=yes +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_type_rlimit=quad_t else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + bash_cv_type_rlimit=long +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_rlimit" >&5 +$as_echo "$bash_cv_type_rlimit" >&6; } +if test $bash_cv_type_rlimit = quad_t; then +$as_echo "#define RLIMTYPE quad_t" >>confdefs.h + +elif test $bash_cv_type_rlimit = rlim_t; then +$as_echo "#define RLIMTYPE rlim_t" >>confdefs.h + +fi + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5 +$as_echo_n "checking size of intmax_t... " >&6; } +if ${ac_cv_sizeof_intmax_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t" "$ac_includes_default"; then : - ac_cv_member_struct_termio_c_line=no +else + if test "$ac_cv_type_intmax_t" = 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 77 "cannot compute sizeof (intmax_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_intmax_t=0 + fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5 +$as_echo "$ac_cv_sizeof_intmax_t" >&6; } -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 -$as_echo "$ac_cv_member_struct_termio_c_line" >&6; } -if test "x$ac_cv_member_struct_termio_c_line" = x""yes; then - cat >>confdefs.h <<\_ACEOF -#define TERMIO_LDISC 1 + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t _ACEOF + + + +ac_fn_c_check_member "$LINENO" "struct termios" "c_line" "ac_cv_member_struct_termios_c_line" " +#include +#include + +" +if test "x$ac_cv_member_struct_termios_c_line" = xyes; then : + $as_echo "#define TERMIOS_LDISC 1" >>confdefs.h + +fi + + + +ac_fn_c_check_member "$LINENO" "struct termio" "c_line" "ac_cv_member_struct_termio_c_line" " +#include +#include + +" +if test "x$ac_cv_member_struct_termio_c_line" = xyes; then : + $as_echo "#define TERMIO_LDISC 1" >>confdefs.h + fi -{ $as_echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 $as_echo_n "checking for struct dirent.d_ino... " >&6; } -if test "${bash_cv_dirent_has_dino+set}" = set; then +if ${bash_cv_dirent_has_dino+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -27722,55 +13607,28 @@ struct dirent d; int z; z = d.d_ino; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_dirent_has_dino=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_dirent_has_dino=no + bash_cv_dirent_has_dino=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_dino" >&5 $as_echo "$bash_cv_dirent_has_dino" >&6; } if test $bash_cv_dirent_has_dino = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_DIRENT_D_INO 1 -_ACEOF +$as_echo "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 $as_echo_n "checking for struct dirent.d_fileno... " >&6; } -if test "${bash_cv_dirent_has_d_fileno+set}" = set; then +if ${bash_cv_dirent_has_d_fileno+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -27803,55 +13661,28 @@ struct dirent d; int z; z = d.d_fileno; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_dirent_has_d_fileno=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_dirent_has_d_fileno=no + bash_cv_dirent_has_d_fileno=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 $as_echo "$bash_cv_dirent_has_d_fileno" >&6; } if test $bash_cv_dirent_has_d_fileno = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_DIRENT_D_FILENO 1 -_ACEOF +$as_echo "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_namlen" >&5 $as_echo_n "checking for struct dirent.d_namlen... " >&6; } -if test "${bash_cv_dirent_has_d_namlen+set}" = set; then +if ${bash_cv_dirent_has_d_namlen+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -27884,54 +13715,27 @@ struct dirent d; int z; z = d.d_namlen; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_dirent_has_d_namlen=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_dirent_has_d_namlen=no + bash_cv_dirent_has_d_namlen=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_namlen" >&5 $as_echo "$bash_cv_dirent_has_d_namlen" >&6; } if test $bash_cv_dirent_has_d_namlen = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_DIRENT_D_NAMLEN 1 -_ACEOF +$as_echo "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 $as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } -if test "${bash_cv_struct_winsize_header+set}" = set; then +if ${bash_cv_struct_winsize_header+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -27943,34 +13747,10 @@ struct winsize x; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_struct_winsize_header=ioctl_h else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -27982,472 +13762,154 @@ struct winsize x; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_struct_winsize_header=termios_h else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_struct_winsize_header=other + bash_cv_struct_winsize_header=other fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then - { $as_echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 $as_echo "sys/ioctl.h" >&6; } - cat >>confdefs.h <<\_ACEOF -#define STRUCT_WINSIZE_IN_SYS_IOCTL 1 -_ACEOF + $as_echo "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h elif test $bash_cv_struct_winsize_header = termios_h; then - { $as_echo "$as_me:$LINENO: result: termios.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 $as_echo "termios.h" >&6; } - cat >>confdefs.h <<\_ACEOF -#define STRUCT_WINSIZE_IN_TERMIOS 1 -_ACEOF - -else - { $as_echo "$as_me:$LINENO: result: not found" >&5 -$as_echo "not found" >&6; } -fi - -{ $as_echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 -$as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; } -if test "${bash_cv_struct_timeval+set}" = set; then - $as_echo_n "(cached) " >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "struct timeval" >/dev/null 2>&1; then - bash_cv_struct_timeval=yes -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "struct timeval" >/dev/null 2>&1; then - bash_cv_struct_timeval=yes -else - bash_cv_struct_timeval=no -fi -rm -f conftest* - -fi -rm -f conftest* - - -fi - -{ $as_echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 -$as_echo "$bash_cv_struct_timeval" >&6; } -if test $bash_cv_struct_timeval = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_TIMEVAL 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 -$as_echo_n "checking for struct stat.st_blocks... " >&6; } -if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static struct stat ac_aggr; -if (ac_aggr.st_blocks) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_stat_st_blocks=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static struct stat ac_aggr; -if (sizeof ac_aggr.st_blocks) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_stat_st_blocks=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_member_struct_stat_st_blocks=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 -$as_echo "$ac_cv_member_struct_stat_st_blocks" >&6; } -if test "x$ac_cv_member_struct_stat_st_blocks" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLOCKS 1 -_ACEOF - - -fi + $as_echo "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h -{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if test "${ac_cv_struct_tm+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_struct_tm=time.h -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_struct_tm=sys/time.h -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -$as_echo_n "checking for struct tm.tm_zone... " >&6; } -if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include <$ac_cv_struct_tm> - - -int -main () -{ -static struct tm ac_aggr; -if (ac_aggr.tm_zone) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_tm_tm_zone=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } +fi - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5 +$as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; } +if ${bash_cv_struct_timeval+:} false; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include <$ac_cv_struct_tm> +#include +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timeval" >/dev/null 2>&1; then : + bash_cv_struct_timeval=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include -int -main () -{ -static struct tm ac_aggr; -if (sizeof ac_aggr.tm_zone) -return 0; - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_tm_tm_zone=yes +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timeval" >/dev/null 2>&1; then : + bash_cv_struct_timeval=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + bash_cv_struct_timeval=no +fi +rm -f conftest* - ac_cv_member_struct_tm_tm_zone=no fi +rm -f conftest* + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5 +$as_echo "$bash_cv_struct_timeval" >&6; } +if test $bash_cv_struct_timeval = yes; then + $as_echo "#define HAVE_TIMEVAL 1" >>confdefs.h + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -$as_echo "$ac_cv_member_struct_tm_tm_zone" >&6; } -if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then + +ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 _ACEOF fi -if test "$ac_cv_member_struct_tm_tm_zone" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_TM_ZONE 1 -_ACEOF - -else - { $as_echo "$as_me:$LINENO: checking whether tzname is declared" >&5 -$as_echo_n "checking whether tzname is declared... " >&6; } -if test "${ac_cv_have_decl_tzname+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include #include int main () { -#ifndef tzname - (void) tzname; -#endif - +struct tm tm; + int *p = &tm.tm_sec; + return !p; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_tzname=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_tzname=no + ac_cv_struct_tm=sys/time.h fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 -$as_echo "$ac_cv_have_decl_tzname" >&6; } -if test "x$ac_cv_have_decl_tzname" = x""yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include +#include <$ac_cv_struct_tm> + +" +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME 1 +#define HAVE_STRUCT_TM_TM_ZONE 1 _ACEOF -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME 0 -_ACEOF +fi +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h +else + ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" +if test "x$ac_cv_have_decl_tzname" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 fi +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME $ac_have_decl +_ACEOF - { $as_echo "$as_me:$LINENO: checking for tzname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 $as_echo_n "checking for tzname... " >&6; } -if test "${ac_cv_var_tzname+set}" = set; then +if ${ac_cv_var_tzname+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !HAVE_DECL_TZNAME @@ -28462,80 +13924,45 @@ return tzname[0][0]; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_var_tzname=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_var_tzname=no + ac_cv_var_tzname=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 $as_echo "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_TZNAME 1 -_ACEOF +$as_echo "#define HAVE_TZNAME 1" >>confdefs.h fi fi -{ $as_echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timezone in sys/time.h and time.h" >&5 $as_echo_n "checking for struct timezone in sys/time.h and time.h... " >&6; } -if test "${bash_cv_struct_timezone+set}" = set; then +if ${bash_cv_struct_timezone+:} false; then : $as_echo_n "(cached) " >&6 else -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "struct timezone" >/dev/null 2>&1; then + $EGREP "struct timezone" >/dev/null 2>&1; then : bash_cv_struct_timezone=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "struct timezone" >/dev/null 2>&1; then + $EGREP "struct timezone" >/dev/null 2>&1; then : bash_cv_struct_timezone=yes else bash_cv_struct_timezone=no @@ -28548,28 +13975,27 @@ rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timezone" >&5 $as_echo "$bash_cv_struct_timezone" >&6; } if test $bash_cv_struct_timezone = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_TIMEZONE 1 -_ACEOF + $as_echo "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for offset of exit status in return status from wait" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for offset of exit status in return status from wait" >&5 $as_echo_n "checking for offset of exit status in return status from wait... " >&6; } -if test "${bash_cv_wexitstatus_offset+set}" = set; then +if ${bash_cv_wexitstatus_offset+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5 $as_echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;} bash_cv_wexitstatus_offset=0 else - cat >conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ #include #include @@ -28605,68 +14031,247 @@ main(c, v) } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_wexitstatus_offset=0 else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + bash_cv_wexitstatus_offset=$? +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +if test "$bash_cv_wexitstatus_offset" -gt 32 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bad exit status from test program -- defaulting to 0" >&5 +$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;} + bash_cv_wexitstatus_offset=0 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wexitstatus_offset" >&5 +$as_echo "$bash_cv_wexitstatus_offset" >&6; } + +cat >>confdefs.h <<_ACEOF +#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset +_ACEOF + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +$as_echo_n "checking for struct timespec in ... " >&6; } +if ${bash_cv_sys_struct_timespec_in_time_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +static struct timespec x; x.tv_sec = x.tv_nsec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_sys_struct_timespec_in_time_h=yes +else + bash_cv_sys_struct_timespec_in_time_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_time_h" >&5 +$as_echo "$bash_cv_sys_struct_timespec_in_time_h" >&6; } + + HAVE_STRUCT_TIMESPEC=0 + TIME_H_DEFINES_STRUCT_TIMESPEC=0 + SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 + PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 + if test $bash_cv_sys_struct_timespec_in_time_h = yes; then + $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + + $as_echo "#define TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + + TIME_H_DEFINES_STRUCT_TIMESPEC=1 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +$as_echo_n "checking for struct timespec in ... " >&6; } +if ${bash_cv_sys_struct_timespec_in_sys_time_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +static struct timespec x; x.tv_sec = x.tv_nsec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_sys_struct_timespec_in_sys_time_h=yes +else + bash_cv_sys_struct_timespec_in_sys_time_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5 +$as_echo "$bash_cv_sys_struct_timespec_in_sys_time_h" >&6; } + if test $bash_cv_sys_struct_timespec_in_sys_time_h = yes; then + SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 + $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + + $as_echo "#define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +$as_echo_n "checking for struct timespec in ... " >&6; } +if ${bash_cv_sys_struct_timespec_in_pthread_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +static struct timespec x; x.tv_sec = x.tv_nsec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_sys_struct_timespec_in_pthread_h=yes +else + bash_cv_sys_struct_timespec_in_pthread_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5 +$as_echo "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; } + if test $bash_cv_sys_struct_timespec_in_pthread_h = yes; then + PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 + $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + + $as_echo "#define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + + fi + fi + fi + + + + + + + + + + ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 +_ACEOF + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5 +$as_echo_n "checking whether struct stat.st_atim is of type struct timespec... " >&6; } +if ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #if HAVE_SYS_TIME_H + # include + #endif + #include + struct timespec ts; + struct stat st; + +int +main () +{ + + st.st_atim = ts; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes +else + ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5 +$as_echo "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; } + if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then + +$as_echo "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h + + fi +else + ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1 +_ACEOF + + +else + ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 +_ACEOF + + +else + ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes; then : -( exit $ac_status ) -bash_cv_wexitstatus_offset=$? -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1 +_ACEOF fi -if test "$bash_cv_wexitstatus_offset" -gt 32 ; then - { $as_echo "$as_me:$LINENO: WARNING: bad exit status from test program -- defaulting to 0" >&5 -$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;} - bash_cv_wexitstatus_offset=0 fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_wexitstatus_offset" >&5 -$as_echo "$bash_cv_wexitstatus_offset" >&6; } -cat >>confdefs.h <<_ACEOF -#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset -_ACEOF +fi + +fi -{ $as_echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5 $as_echo_n "checking for the existence of strsignal... " >&6; } -if test "${bash_cv_have_strsignal+set}" = set; then +if ${bash_cv_have_strsignal+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -28678,65 +14283,34 @@ char *s = (char *)strsignal(2); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_have_strsignal=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_have_strsignal=no + bash_cv_have_strsignal=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_strsignal" >&5 $as_echo "$bash_cv_have_strsignal" >&6; } if test $bash_cv_have_strsignal = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRSIGNAL 1 -_ACEOF +$as_echo "#define HAVE_STRSIGNAL 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if opendir() opens non-directories" >&5 $as_echo_n "checking if opendir() opens non-directories... " >&6; } -if test "${bash_cv_opendir_not_robust+set}" = set; then +if ${bash_cv_opendir_not_robust+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;} bash_cv_opendir_not_robust=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -28778,69 +14352,36 @@ rmdir("bash-aclocal"); exit (dir == 0); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_opendir_not_robust=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_opendir_not_robust=no + bash_cv_opendir_not_robust=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_opendir_not_robust" >&5 $as_echo "$bash_cv_opendir_not_robust" >&6; } if test $bash_cv_opendir_not_robust = yes; then -cat >>confdefs.h <<\_ACEOF -#define OPENDIR_NOT_ROBUST 1 -_ACEOF +$as_echo "#define OPENDIR_NOT_ROBUST 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ulimit can substitute for getdtablesize" >&5 $as_echo_n "checking whether ulimit can substitute for getdtablesize... " >&6; } -if test "${bash_cv_ulimit_maxfds+set}" = set; then +if ${bash_cv_ulimit_maxfds+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;} bash_cv_ulimit_maxfds=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ main() @@ -28850,50 +14391,21 @@ exit (maxfds == -1L); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_ulimit_maxfds=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_ulimit_maxfds=no + bash_cv_ulimit_maxfds=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_ulimit_maxfds" >&5 $as_echo "$bash_cv_ulimit_maxfds" >&6; } if test $bash_cv_ulimit_maxfds = yes; then -cat >>confdefs.h <<\_ACEOF -#define ULIMIT_MAXFDS 1 -_ACEOF +$as_echo "#define ULIMIT_MAXFDS 1" >>confdefs.h fi @@ -28904,103 +14416,31 @@ fi - - - - - - - - - - - { $as_echo "$as_me:$LINENO: checking whether fpurge is declared" >&5 -$as_echo_n "checking whether fpurge is declared... " >&6; } -if test "${ac_cv_have_decl_fpurge+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef fpurge - (void) fpurge; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_fpurge=yes + ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include +" +if test "x$ac_cv_have_decl_fpurge" = xyes; then : + ac_have_decl=1 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_fpurge=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_have_decl=0 fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fpurge" >&5 -$as_echo "$ac_cv_have_decl_fpurge" >&6; } -if test "x$ac_cv_have_decl_fpurge" = x""yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPURGE 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPURGE 0 +#define HAVE_DECL_FPURGE $ac_have_decl _ACEOF -fi - - - -{ $as_echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if getenv can be redefined" >&5 $as_echo_n "checking to see if getenv can be redefined... " >&6; } -if test "${bash_cv_getenv_redef+set}" = set; then +if ${bash_cv_getenv_redef+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 $as_echo "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;} bash_cv_getenv_redef=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_UNISTD_H @@ -29035,70 +14475,37 @@ exit(s == 0); /* force optimizer to leave getenv in */ } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_getenv_redef=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_getenv_redef=no + bash_cv_getenv_redef=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getenv_redef" >&5 $as_echo "$bash_cv_getenv_redef" >&6; } if test $bash_cv_getenv_redef = yes; then -cat >>confdefs.h <<\_ACEOF -#define CAN_REDEFINE_GETENV 1 -_ACEOF +$as_echo "#define CAN_REDEFINE_GETENV 1" >>confdefs.h fi if test "$ac_cv_func_getcwd" = "yes"; then -{ $as_echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory with 0 size" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if getcwd() will dynamically allocate memory with 0 size" >&5 $as_echo_n "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; } -if test "${bash_cv_getcwd_malloc+set}" = set; then +if ${bash_cv_getcwd_malloc+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;} bash_cv_getcwd_malloc=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -29114,50 +14521,21 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_getcwd_malloc=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_getcwd_malloc=no + bash_cv_getcwd_malloc=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getcwd_malloc" >&5 $as_echo "$bash_cv_getcwd_malloc" >&6; } if test $bash_cv_getcwd_malloc = no; then -cat >>confdefs.h <<\_ACEOF -#define GETCWD_BROKEN 1 -_ACEOF +$as_echo "#define GETCWD_BROKEN 1" >>confdefs.h case " $LIBOBJS " in *" getcwd.$ac_objext "* ) ;; @@ -29169,22 +14547,18 @@ fi fi -{ $as_echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 $as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } -if test "${bash_cv_func_sigsetjmp+set}" = set; then +if ${bash_cv_func_sigsetjmp+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 $as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} bash_cv_func_sigsetjmp=missing else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_UNISTD_H @@ -29225,70 +14599,37 @@ exit(1); #endif } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_sigsetjmp=present else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_func_sigsetjmp=missing + bash_cv_func_sigsetjmp=missing fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 $as_echo "$bash_cv_func_sigsetjmp" >&6; } if test $bash_cv_func_sigsetjmp = present; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_POSIX_SIGSETJMP 1 -_ACEOF +$as_echo "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 $as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; } -if test "${bash_cv_func_strcoll_broken+set}" = set; then +if ${bash_cv_func_strcoll_broken+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} bash_cv_func_strcoll_broken=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -29327,50 +14668,21 @@ char *v[]; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_strcoll_broken=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_func_strcoll_broken=no + bash_cv_func_strcoll_broken=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 $as_echo "$bash_cv_func_strcoll_broken" >&6; } if test $bash_cv_func_strcoll_broken = yes; then -cat >>confdefs.h <<\_ACEOF -#define STRCOLL_BROKEN 1 -_ACEOF +$as_echo "#define STRCOLL_BROKEN 1" >>confdefs.h fi @@ -29378,28 +14690,19 @@ fi - - - - - if test X$ac_cv_func_snprintf = Xyes; then - { $as_echo "$as_me:$LINENO: checking for standard-conformant snprintf" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant snprintf" >&5 $as_echo_n "checking for standard-conformant snprintf... " >&6; } -if test "${bash_cv_func_snprintf+set}" = set; then +if ${bash_cv_func_snprintf+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check standard snprintf if cross-compiling" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard snprintf if cross-compiling" >&5 $as_echo "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;} bash_cv_func_snprintf=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -29412,44 +14715,17 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_snprintf=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_func_snprintf=no + bash_cv_func_snprintf=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_snprintf" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_snprintf" >&5 $as_echo "$bash_cv_func_snprintf" >&6; } if test $bash_cv_func_snprintf = no; then ac_cv_func_snprintf=no @@ -29457,9 +14733,7 @@ $as_echo "$bash_cv_func_snprintf" >&6; } fi if test $ac_cv_func_snprintf = no; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_SNPRINTF 0 -_ACEOF +$as_echo "#define HAVE_SNPRINTF 0" >>confdefs.h fi @@ -29467,28 +14741,19 @@ _ACEOF - - - - - if test X$ac_cv_func_vsnprintf = Xyes; then - { $as_echo "$as_me:$LINENO: checking for standard-conformant vsnprintf" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant vsnprintf" >&5 $as_echo_n "checking for standard-conformant vsnprintf... " >&6; } -if test "${bash_cv_func_vsnprintf+set}" = set; then +if ${bash_cv_func_vsnprintf+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check standard vsnprintf if cross-compiling" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard vsnprintf if cross-compiling" >&5 $as_echo "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;} bash_cv_func_vsnprintf=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_STDARG_H @@ -29529,44 +14794,17 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_func_vsnprintf=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_func_vsnprintf=no + bash_cv_func_vsnprintf=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_func_vsnprintf" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_vsnprintf" >&5 $as_echo "$bash_cv_func_vsnprintf" >&6; } if test $bash_cv_func_vsnprintf = no; then ac_cv_func_vsnprintf=no @@ -29574,9 +14812,7 @@ $as_echo "$bash_cv_func_vsnprintf" >&6; } fi if test $ac_cv_func_vsnprintf = no; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_VSNPRINTF 0 -_ACEOF +$as_echo "#define HAVE_VSNPRINTF 0" >>confdefs.h fi @@ -29586,16 +14822,12 @@ if test "$ac_cv_func_putenv" = "yes"; then -{ $as_echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant putenv declaration" >&5 $as_echo_n "checking for standard-conformant putenv declaration... " >&6; } -if test "${bash_cv_std_putenv+set}" = set; then +if ${bash_cv_std_putenv+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if STDC_HEADERS @@ -29621,69 +14853,36 @@ return (putenv == 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_std_putenv=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_std_putenv=no + bash_cv_std_putenv=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_putenv" >&5 $as_echo "$bash_cv_std_putenv" >&6; } if test $bash_cv_std_putenv = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STD_PUTENV 1 -_ACEOF +$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h fi else -cat >>confdefs.h <<\_ACEOF -#define HAVE_STD_PUTENV 1 -_ACEOF +$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h fi if test "$ac_cv_func_unsetenv" = "yes"; then -{ $as_echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant unsetenv declaration" >&5 $as_echo_n "checking for standard-conformant unsetenv declaration... " >&6; } -if test "${bash_cv_std_unsetenv+set}" = set; then +if ${bash_cv_std_unsetenv+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if STDC_HEADERS @@ -29709,72 +14908,39 @@ return (unsetenv == 0); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : bash_cv_std_unsetenv=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_std_unsetenv=no + bash_cv_std_unsetenv=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_unsetenv" >&5 $as_echo "$bash_cv_std_unsetenv" >&6; } if test $bash_cv_std_unsetenv = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_STD_UNSETENV 1 -_ACEOF +$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h fi else -cat >>confdefs.h <<\_ACEOF -#define HAVE_STD_UNSETENV 1 -_ACEOF +$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf floating point output in hex notation" >&5 $as_echo_n "checking for printf floating point output in hex notation... " >&6; } -if test "${bash_cv_printf_a_format+set}" = set; then +if ${bash_cv_printf_a_format+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;} bash_cv_printf_a_format=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -29791,72 +14957,39 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_printf_a_format=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_printf_a_format=no + bash_cv_printf_a_format=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_printf_a_format" >&5 $as_echo "$bash_cv_printf_a_format" >&6; } if test $bash_cv_printf_a_format = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_PRINTF_A_FORMAT 1 -_ACEOF +$as_echo "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 $as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; } -if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then +if ${bash_cv_must_reinstall_sighandlers+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} bash_cv_must_reinstall_sighandlers=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -29903,70 +15036,37 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_must_reinstall_sighandlers=no else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_must_reinstall_sighandlers=yes + bash_cv_must_reinstall_sighandlers=yes fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 $as_echo "$bash_cv_must_reinstall_sighandlers" >&6; } if test $bash_cv_must_reinstall_sighandlers = yes; then -cat >>confdefs.h <<\_ACEOF -#define MUST_REINSTALL_SIGHANDLERS 1 -_ACEOF +$as_echo "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of necessary job control definitions" >&5 $as_echo_n "checking for presence of necessary job control definitions... " >&6; } -if test "${bash_cv_job_control_missing+set}" = set; then +if ${bash_cv_job_control_missing+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 $as_echo "$as_me: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&2;} bash_cv_job_control_missing=missing else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30013,69 +15113,36 @@ exit(1); exit(0); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_job_control_missing=present else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_job_control_missing=missing + bash_cv_job_control_missing=missing fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5 $as_echo "$bash_cv_job_control_missing" >&6; } if test $bash_cv_job_control_missing = missing; then -cat >>confdefs.h <<\_ACEOF -#define JOB_CONTROL_MISSING 1 -_ACEOF +$as_echo "#define JOB_CONTROL_MISSING 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of named pipes" >&5 $as_echo_n "checking for presence of named pipes... " >&6; } -if test "${bash_cv_sys_named_pipes+set}" = set; then +if ${bash_cv_sys_named_pipes+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 $as_echo "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;} bash_cv_sys_named_pipes=missing else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30116,64 +15183,31 @@ rmdir ("bash-aclocal"); exit(0); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_sys_named_pipes=present else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_sys_named_pipes=missing + bash_cv_sys_named_pipes=missing fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_named_pipes" >&5 $as_echo "$bash_cv_sys_named_pipes" >&6; } if test $bash_cv_sys_named_pipes = missing; then -cat >>confdefs.h <<\_ACEOF -#define NAMED_PIPES_MISSING 1 -_ACEOF +$as_echo "#define NAMED_PIPES_MISSING 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 $as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; } -if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then +if ${ac_cv_sys_tiocgwinsz_in_termios_h+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -30183,7 +15217,7 @@ cat >>conftest.$ac_ext <<_ACEOF _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then + $EGREP "yes" >/dev/null 2>&1; then : ac_cv_sys_tiocgwinsz_in_termios_h=yes else ac_cv_sys_tiocgwinsz_in_termios_h=no @@ -30191,20 +15225,16 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 $as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - { $as_echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 $as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } -if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then +if ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -30214,7 +15244,7 @@ cat >>conftest.$ac_ext <<_ACEOF _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then + $EGREP "yes" >/dev/null 2>&1; then : ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes else ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no @@ -30222,28 +15252,22 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 $as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then -cat >>confdefs.h <<\_ACEOF -#define GWINSZ_IN_SYS_IOCTL 1 -_ACEOF +$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h fi fi -{ $as_echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 $as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; } -if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then +if ${bash_cv_tiocstat_in_ioctl+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -30255,54 +15279,27 @@ int x = TIOCSTAT; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_tiocstat_in_ioctl=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_tiocstat_in_ioctl=no + bash_cv_tiocstat_in_ioctl=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 $as_echo "$bash_cv_tiocstat_in_ioctl" >&6; } if test $bash_cv_tiocstat_in_ioctl = yes; then -cat >>confdefs.h <<\_ACEOF -#define TIOCSTAT_IN_SYS_IOCTL 1 -_ACEOF +$as_echo "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 $as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; } -if test "${bash_cv_fionread_in_ioctl+set}" = set; then +if ${bash_cv_fionread_in_ioctl+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -30314,62 +15311,35 @@ int x = FIONREAD; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_fionread_in_ioctl=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_fionread_in_ioctl=no + bash_cv_fionread_in_ioctl=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 $as_echo "$bash_cv_fionread_in_ioctl" >&6; } if test $bash_cv_fionread_in_ioctl = yes; then -cat >>confdefs.h <<\_ACEOF -#define FIONREAD_IN_SYS_IOCTL 1 -_ACEOF +$as_echo "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 $as_echo_n "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; } -if test "${bash_cv_wcontinued_broken+set}" = set; then +if ${bash_cv_wcontinued_broken+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 $as_echo "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;} bash_cv_wcontinued_broken=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30392,64 +15362,31 @@ main() } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_wcontinued_broken=no else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_wcontinued_broken=yes + bash_cv_wcontinued_broken=yes fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcontinued_broken" >&5 $as_echo "$bash_cv_wcontinued_broken" >&6; } if test $bash_cv_wcontinued_broken = yes; then -cat >>confdefs.h <<\_ACEOF -#define WCONTINUED_BROKEN 1 -_ACEOF +$as_echo "#define WCONTINUED_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 $as_echo_n "checking for speed_t in sys/types.h... " >&6; } -if test "${bash_cv_speed_t_in_sys_types+set}" = set; then +if ${bash_cv_speed_t_in_sys_types+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -30460,54 +15397,27 @@ speed_t x; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_speed_t_in_sys_types=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_speed_t_in_sys_types=no + bash_cv_speed_t_in_sys_types=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 $as_echo "$bash_cv_speed_t_in_sys_types" >&6; } if test $bash_cv_speed_t_in_sys_types = yes; then -cat >>confdefs.h <<\_ACEOF -#define SPEED_T_IN_SYS_TYPES 1 -_ACEOF +$as_echo "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 $as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; } -if test "${bash_cv_getpw_declared+set}" = set; then +if ${bash_cv_getpw_declared+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30518,7 +15428,7 @@ cat >>conftest.$ac_ext <<_ACEOF _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getpwuid" >/dev/null 2>&1; then + $EGREP "getpwuid" >/dev/null 2>&1; then : bash_cv_getpw_declared=yes else bash_cv_getpw_declared=no @@ -30527,31 +15437,25 @@ rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 $as_echo "$bash_cv_getpw_declared" >&6; } if test $bash_cv_getpw_declared = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETPW_DECLS 1 -_ACEOF +$as_echo "#define HAVE_GETPW_DECLS 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unusable real-time signals due to large values" >&5 $as_echo_n "checking for unusable real-time signals due to large values... " >&6; } -if test "${bash_cv_unusable_rtsigs+set}" = set; then +if ${bash_cv_unusable_rtsigs+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - { $as_echo "$as_me:$LINENO: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 $as_echo "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;} bash_cv_unusable_rtsigs=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30573,50 +15477,21 @@ main () exit(rtmin < n_sigs); } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : bash_cv_unusable_rtsigs=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_unusable_rtsigs=no + bash_cv_unusable_rtsigs=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_unusable_rtsigs" >&5 $as_echo "$bash_cv_unusable_rtsigs" >&6; } if test $bash_cv_unusable_rtsigs = yes; then -cat >>confdefs.h <<\_ACEOF -#define UNUSABLE_RT_SIGNALS 1 -_ACEOF +$as_echo "#define UNUSABLE_RT_SIGNALS 1" >>confdefs.h fi @@ -30633,16 +15508,12 @@ fi case "$host_os" in -hpux*) { $as_echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +hpux*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 $as_echo_n "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; } -if test "${bash_cv_kernel_rlimit+set}" = set; then +if ${bash_cv_kernel_rlimit+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30659,34 +15530,10 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_kernel_rlimit=no else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -30705,45 +15552,21 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_kernel_rlimit=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - bash_cv_kernel_rlimit=no + bash_cv_kernel_rlimit=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_kernel_rlimit" >&5 $as_echo "$bash_cv_kernel_rlimit" >&6; } if test $bash_cv_kernel_rlimit = yes; then -cat >>confdefs.h <<\_ACEOF -#define RLIMIT_NEEDS_KERNEL 1 -_ACEOF +$as_echo "#define RLIMIT_NEEDS_KERNEL 1" >>confdefs.h fi ;; @@ -30757,113 +15580,25 @@ esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi -if test "${bash_cv_termcap_lib+set}" = set; then - $as_echo_n "(cached) " >&6 -else - { $as_echo "$as_me:$LINENO: checking for tgetent" >&5 -$as_echo_n "checking for tgetent... " >&6; } -if test "${ac_cv_func_tgetent+set}" = set; then +if ${bash_cv_termcap_lib+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define tgetent to an innocuous variant, in case declares tgetent. - For example, HP-UX 11i declares gettimeofday. */ -#define tgetent innocuous_tgetent - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char tgetent (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef tgetent - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char tgetent (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_tgetent || defined __stub___tgetent -choke me -#endif - -int -main () -{ -return tgetent (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_tgetent=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_tgetent=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -$as_echo "$ac_cv_func_tgetent" >&6; } -if test "x$ac_cv_func_tgetent" = x""yes; then + ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" +if test "x$ac_cv_func_tgetent" = xyes; then : bash_cv_termcap_lib=libc else - { $as_echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 $as_echo_n "checking for tgetent in -ltermcap... " >&6; } -if test "${ac_cv_lib_termcap_tgetent+set}" = set; then +if ${ac_cv_lib_termcap_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -30881,57 +15616,28 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_termcap_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_termcap_tgetent=no + ac_cv_lib_termcap_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 $as_echo "$ac_cv_lib_termcap_tgetent" >&6; } -if test "x$ac_cv_lib_termcap_tgetent" = x""yes; then +if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : bash_cv_termcap_lib=libtermcap else - { $as_echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 $as_echo_n "checking for tgetent in -ltinfo... " >&6; } -if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then +if ${ac_cv_lib_tinfo_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -30949,57 +15655,28 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tinfo_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_tinfo_tgetent=no + ac_cv_lib_tinfo_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 $as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } -if test "x$ac_cv_lib_tinfo_tgetent" = x""yes; then +if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : bash_cv_termcap_lib=libtinfo else - { $as_echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 $as_echo_n "checking for tgetent in -lcurses... " >&6; } -if test "${ac_cv_lib_curses_tgetent+set}" = set; then +if ${ac_cv_lib_curses_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -31017,57 +15694,28 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_curses_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_curses_tgetent=no + ac_cv_lib_curses_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 $as_echo "$ac_cv_lib_curses_tgetent" >&6; } -if test "x$ac_cv_lib_curses_tgetent" = x""yes; then +if test "x$ac_cv_lib_curses_tgetent" = xyes; then : bash_cv_termcap_lib=libcurses else - { $as_echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 $as_echo_n "checking for tgetent in -lncurses... " >&6; } -if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then +if ${ac_cv_lib_ncurses_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -31085,43 +15733,18 @@ return tgetent (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_tgetent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_ncurses_tgetent=no + ac_cv_lib_ncurses_tgetent=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } -if test "x$ac_cv_lib_ncurses_tgetent" = x""yes; then +if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : bash_cv_termcap_lib=libncurses else bash_cv_termcap_lib=gnutermcap @@ -31138,10 +15761,10 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ $as_echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } fi -{ $as_echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 $as_echo "using $bash_cv_termcap_lib" >&6; } if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" @@ -31168,9 +15791,9 @@ fi -{ $as_echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/fd is available" >&5 $as_echo_n "checking whether /dev/fd is available... " >&6; } -if test "${bash_cv_dev_fd+set}" = set; then +if ${bash_cv_dev_fd+:} false; then : $as_echo_n "(cached) " >&6 else bash_cv_dev_fd="" @@ -31192,31 +15815,23 @@ fi fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_fd" >&5 $as_echo "$bash_cv_dev_fd" >&6; } if test $bash_cv_dev_fd = "standard"; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_DEV_FD 1 -_ACEOF + $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define DEV_FD_PREFIX "/dev/fd/" -_ACEOF + $as_echo "#define DEV_FD_PREFIX \"/dev/fd/\"" >>confdefs.h elif test $bash_cv_dev_fd = "whacky"; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_DEV_FD 1 -_ACEOF + $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define DEV_FD_PREFIX "/proc/self/fd/" -_ACEOF + $as_echo "#define DEV_FD_PREFIX \"/proc/self/fd/\"" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/stdin stdout stderr are available" >&5 $as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; } -if test "${bash_cv_dev_stdin+set}" = set; then +if ${bash_cv_dev_stdin+:} false; then : $as_echo_n "(cached) " >&6 else if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then @@ -31229,18 +15844,16 @@ else fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_stdin" >&5 $as_echo "$bash_cv_dev_stdin" >&6; } if test $bash_cv_dev_stdin = "present"; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_DEV_STDIN 1 -_ACEOF + $as_echo "#define HAVE_DEV_STDIN 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for default mail directory" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default mail directory" >&5 $as_echo_n "checking for default mail directory... " >&6; } -if test "${bash_cv_mail_dir+set}" = set; then +if ${bash_cv_mail_dir+:} false; then : $as_echo_n "(cached) " >&6 else if test -d /var/mail; then @@ -31257,7 +15870,7 @@ else fi -{ $as_echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_mail_dir" >&5 $as_echo "$bash_cv_mail_dir" >&6; } cat >>confdefs.h <<_ACEOF #define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" @@ -31270,9 +15883,7 @@ if test "$bash_cv_job_control_missing" = missing; then fi if test "$opt_job_control" = yes; then -cat >>confdefs.h <<\_ACEOF -#define JOB_CONTROL 1 -_ACEOF +$as_echo "#define JOB_CONTROL 1" >>confdefs.h JOBS_O=jobs.o else @@ -31286,21 +15897,13 @@ LOCAL_DEFS=-DSHELL case "${host_os}" in -sysv4.2*) cat >>confdefs.h <<\_ACEOF -#define SVR4_2 1 -_ACEOF +sysv4.2*) $as_echo "#define SVR4_2 1" >>confdefs.h - cat >>confdefs.h <<\_ACEOF -#define SVR4 1 -_ACEOF + $as_echo "#define SVR4 1" >>confdefs.h ;; -sysv4*) cat >>confdefs.h <<\_ACEOF -#define SVR4 1 -_ACEOF +sysv4*) $as_echo "#define SVR4 1" >>confdefs.h ;; -sysv5*) cat >>confdefs.h <<\_ACEOF -#define SVR5 1 -_ACEOF +sysv5*) $as_echo "#define SVR5 1" >>confdefs.h ;; hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;; hpux*) LOCAL_CFLAGS=-DHPUX ;; @@ -31320,16 +15923,15 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[456789]*|3*) cat >>confdefs.h <<\_ACEOF -#define PGRP_PIPE 1 -_ACEOF + 2.[456789]*|3*) $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; 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" ;; +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 @@ -31366,7 +15968,7 @@ esac # if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf then - { $as_echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking shared object configuration for loadable builtins" >&5 $as_echo_n "checking shared object configuration for loadable builtins... " >&6; } eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` @@ -31376,7 +15978,7 @@ $as_echo_n "checking shared object configuration for loadable builtins... " >&6; - { $as_echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5 $as_echo "$SHOBJ_STATUS" >&6; } fi @@ -31469,13 +16071,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) $as_unset $ac_var ;; + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -31483,8 +16085,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -31506,12 +16108,23 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi else - { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi @@ -31525,14 +16138,15 @@ DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -31541,13 +16155,14 @@ LTLIBOBJS=$ac_ltlibobjs -: ${CONFIG_STATUS=./config.status} +: "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -31557,17 +16172,18 @@ cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 debug=false ac_cs_recheck=false ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which @@ -31575,23 +16191,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - as_nl=' ' export as_nl @@ -31599,7 +16207,13 @@ export as_nl as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else @@ -31610,7 +16224,7 @@ else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; - case $arg in + case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; @@ -31633,13 +16247,6 @@ if test "${PATH_SEPARATOR+set}" != set; then } fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - # IFS # We need space, tab and new line, in precisely that order. Quoting is @@ -31649,15 +16256,16 @@ fi IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -31669,12 +16277,16 @@ if test "x$as_myself" = x; then fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' @@ -31686,7 +16298,89 @@ export LC_ALL LANGUAGE=C export LANGUAGE -# Required to use basename. +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -31700,8 +16394,12 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ @@ -31721,76 +16419,25 @@ $as_echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # 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). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then @@ -31805,49 +16452,85 @@ 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 + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p 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'" @@ -31857,13 +16540,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -# Save the log message, to keep $[0] and so on meaningful, and to +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to # 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-release, which was -generated by GNU Autoconf 2.63. Invocation command line was +This file was extended by bash $as_me 4.3-release, which was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -31895,13 +16584,15 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. -Usage: $0 [OPTION]... [FILE]... +Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit + --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files @@ -31920,16 +16611,17 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _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-release -configured by $0, generated by GNU Autoconf 2.63, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +bash config.status 4.3-release +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" -Copyright (C) 2008 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." @@ -31945,11 +16637,16 @@ ac_need_defaults=: while test $# != 0 do case $1 in - --*=*) + --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; *) ac_option=$1 ac_optarg=$2 @@ -31963,27 +16660,29 @@ do ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; esac - CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" + as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac - CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" + as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { $as_echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ @@ -31991,11 +16690,10 @@ Try \`$0 --help' for more information." >&2 ac_cs_silent=: ;; # This is an error. - -*) { $as_echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; - *) ac_config_targets="$ac_config_targets $1" + *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac @@ -32012,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' @@ -32070,9 +16768,7 @@ do "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -32095,26 +16791,24 @@ fi # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= + tmp= ac_tmp= trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 + trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" + test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || -{ - $as_echo "$as_me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. @@ -32122,7 +16816,13 @@ $debug || if test -n "$CONFIG_FILES"; then -ac_cr=' ' +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' @@ -32130,7 +16830,7 @@ else ac_cs_awk_cr=$ac_cr fi -echo 'BEGIN {' >"$tmp/subs1.awk" && +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF @@ -32139,24 +16839,18 @@ _ACEOF echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi @@ -32164,7 +16858,7 @@ done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h @@ -32178,7 +16872,7 @@ s/'"$ac_delim"'$// t delim :nl h -s/\(.\{148\}\).*/\1/ +s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p @@ -32192,7 +16886,7 @@ s/.\{148\}// t nl :delim h -s/\(.\{148\}\).*/\1/ +s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p @@ -32212,7 +16906,7 @@ t delim rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK -cat >>"\$tmp/subs1.awk" <<_ACAWK && +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" @@ -32244,23 +16938,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ - || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 -$as_echo "$as_me: error: could not setup config files machinery" >&2;} - { (exit 1); exit 1; }; } +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// s/^[^=]*=[ ]*$// }' fi @@ -32272,7 +16972,7 @@ fi # test -n "$CONFIG_FILES" # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then -cat >"$tmp/defines.awk" <<\_ACAWK || +cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF @@ -32284,13 +16984,11 @@ _ACEOF # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do - ac_t=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_t"; then + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then break elif $ac_last_try; then - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi @@ -32375,9 +17073,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 -$as_echo "$as_me: error: could not setup config headers machinery" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" @@ -32390,9 +17086,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 -$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} - { (exit 1); exit 1; }; };; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -32411,7 +17105,7 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} for ac_f do case $ac_f in - -) ac_f="$tmp/stdin";; + -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -32420,12 +17114,10 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - ac_file_inputs="$ac_file_inputs '$ac_f'" + as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't @@ -32436,7 +17128,7 @@ $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. @@ -32448,10 +17140,8 @@ $as_echo "$as_me: creating $ac_file" >&6;} esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } ;; + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -32479,47 +17169,7 @@ $as_echo X"$ac_file" | q } s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in @@ -32571,7 +17221,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= - ac_sed_dataroot=' /datarootdir/ { p @@ -32581,12 +17230,11 @@ ac_sed_dataroot=' /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p -' +/@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -32596,7 +17244,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF @@ -32623,27 +17271,24 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} +which seems to be undefined. Please make sure it is defined" >&2;} - rm -f "$tmp/stdin" + rm -f "$ac_tmp/stdin" case $ac_file in - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # @@ -32652,31 +17297,25 @@ $as_echo "$as_me: error: could not create $ac_file" >&2;} if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" - } >"$tmp/config.h" \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } - if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" - mv "$tmp/config.h" "$ac_file" \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ - || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 -$as_echo "$as_me: error: could not create -" >&2;} - { (exit 1); exit 1; }; } + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; - :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -32793,15 +17432,12 @@ echo timestamp > stamp-h done # for ac_tag -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || - { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. @@ -32822,10 +17458,10 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..97e8e04 --- /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 . + +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 +#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 ]]) + +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 ], + [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 ], long) +BASH_CHECK_TYPE(sigset_t, [#include ], int) +BASH_CHECK_TYPE(sig_atomic_t, [#include ], 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 ], [unsigned int], HAVE_SOCKLEN_T) +fi +BASH_TYPE_RLIMIT + +AC_CHECK_SIZEOF(intmax_t, 8) + +dnl presence and contents of structures used by system calls +BASH_STRUCT_TERMIOS_LDISC +BASH_STRUCT_TERMIO_LDISC +BASH_STRUCT_DIRENT_D_INO +BASH_STRUCT_DIRENT_D_FILENO +BASH_STRUCT_DIRENT_D_NAMLEN +BASH_STRUCT_WINSIZE +BASH_STRUCT_TIMEVAL +AC_CHECK_MEMBERS([struct stat.st_blocks]) +AC_STRUCT_TM +AC_STRUCT_TIMEZONE +BASH_STRUCT_TIMEZONE + +BASH_STRUCT_WEXITSTATUS_OFFSET + +BASH_CHECK_TYPE_STRUCT_TIMESPEC +BASH_STAT_TIME + +dnl presence and behavior of C library functions +BASH_FUNC_STRSIGNAL +BASH_FUNC_OPENDIR_CHECK +BASH_FUNC_ULIMIT_MAXFDS +BASH_FUNC_FPURGE +BASH_FUNC_GETENV +if test "$ac_cv_func_getcwd" = "yes"; then +BASH_FUNC_GETCWD +fi +BASH_FUNC_POSIX_SETJMP +BASH_FUNC_STRCOLL +BASH_FUNC_SNPRINTF +BASH_FUNC_VSNPRINTF + +dnl If putenv or unsetenv is not present, set the right define so the +dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant + +if test "$ac_cv_func_putenv" = "yes"; then +BASH_FUNC_STD_PUTENV +else +AC_DEFINE(HAVE_STD_PUTENV) +fi +if test "$ac_cv_func_unsetenv" = "yes"; then +BASH_FUNC_STD_UNSETENV +else +AC_DEFINE(HAVE_STD_UNSETENV) +fi + +BASH_FUNC_PRINTF_A_FORMAT + +dnl presence and behavior of OS functions +BASH_SYS_REINSTALL_SIGHANDLERS +BASH_SYS_JOB_CONTROL_MISSING +BASH_SYS_NAMED_PIPES + +dnl presence of certain CPP defines +AC_HEADER_TIOCGWINSZ +BASH_HAVE_TIOCSTAT +BASH_HAVE_FIONREAD + +BASH_CHECK_WCONTINUED + +dnl miscellaneous +BASH_CHECK_SPEED_T +BASH_CHECK_GETPW_FUNCS +BASH_CHECK_RTSIGS +BASH_CHECK_SYS_SIGLIST + +dnl special checks +case "$host_os" in +hpux*) BASH_CHECK_KERNEL_RLIMIT ;; +esac + +if test "$opt_readline" = yes; then +dnl yuck +case "$host_os" in +aix*) prefer_curses=yes ;; +esac +BASH_CHECK_LIB_TERMCAP +fi +AC_SUBST(TERMCAP_LIB) +AC_SUBST(TERMCAP_DEP) + +BASH_CHECK_DEV_FD +BASH_CHECK_DEV_STDIN +BASH_SYS_DEFAULT_MAIL_DIR + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +AC_DEFINE(JOB_CONTROL) +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + +AC_SUBST(JOBS_O) + +dnl Defines that we want to propagate to the Makefiles in subdirectories, +dnl like glob and readline + +LOCAL_DEFS=-DSHELL + +dnl use this section to possibly define more cpp variables, specify local +dnl libraries, and specify any additional local cc or ld flags +dnl +dnl this should really go away someday + +case "${host_os}" in +sysv4.2*) AC_DEFINE(SVR4_2) + AC_DEFINE(SVR4) ;; +sysv4*) AC_DEFINE(SVR4) ;; +sysv5*) AC_DEFINE(SVR5) ;; +hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;; +hpux*) LOCAL_CFLAGS=-DHPUX ;; +dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;; +isc*) LOCAL_CFLAGS=-Disc386 ;; +rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;; +darwin*) LOCAL_CFLAGS=-DMACOSX ;; +sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;; +sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;; +sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; +lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading + case "`uname -r`" in + 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;; + esac ;; +*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; +*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; +powerux*) LOCAL_LIBS="-lgen" ;; +cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;; +*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;; +esac + +dnl Stanza for OS/compiler pair-specific flags +case "${host_os}-${CC}" in +aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;; +aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;; +bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +esac + +dnl FreeBSD-3.x can have either a.out or ELF +case "${host_os}" in +freebsd[[3-9]]*) + if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then + LOCAL_LDFLAGS=-rdynamic # allow dynamic loading + fi ;; +freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading +dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading +esac + +case "$host_cpu" in +*cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it +esac + +case "$host_cpu-$host_os" in +ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;; +esac + +case "$host_cpu-$host_vendor-$host_os" in +m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;; +mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;; +esac + +# +# Shared object configuration section. These values are generated by +# ${srcdir}/support/shobj-conf +# +if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf +then + AC_MSG_CHECKING(shared object configuration for loadable builtins) + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` + AC_SUBST(SHOBJ_CC) + AC_SUBST(SHOBJ_CFLAGS) + AC_SUBST(SHOBJ_LD) + AC_SUBST(SHOBJ_LDFLAGS) + AC_SUBST(SHOBJ_XLDFLAGS) + AC_SUBST(SHOBJ_LIBS) + AC_SUBST(SHOBJ_STATUS) + AC_MSG_RESULT($SHOBJ_STATUS) +fi + +# try to create a directory tree if the source is elsewhere +# this should be packaged into a script accessible via ${srcdir}/support +case "$srcdir" in +.) ;; +*) for d in doc tests support lib examples; do # dirs + test -d $d || mkdir $d + done + for ld in readline glob tilde malloc sh termcap; do # libdirs + test -d lib/$ld || mkdir lib/$ld + done + test -d examples/loadables || mkdir examples/loadables # loadable builtins + test -d examples/loadables/perl || mkdir examples/loadables/perl + ;; +esac + +BUILD_DIR=`pwd` +case "$BUILD_DIR" in +*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; +*) ;; +esac + +if test -z "$localedir"; then + localedir='${datarootdir}/locale' +fi +if test -z "$datarootdir"; then + datarootdir='${prefix}/share' +fi + +AC_SUBST(PROFILE_FLAGS) + +AC_SUBST(incdir) +AC_SUBST(BUILD_DIR) + +# Some versions of autoconf don't substitute these automatically +AC_SUBST(datarootdir) +AC_SUBST(localedir) + +AC_SUBST(YACC) +AC_SUBST(AR) +AC_SUBST(ARFLAGS) + +AC_SUBST(BASHVERS) +AC_SUBST(RELSTATUS) +AC_SUBST(DEBUG) +AC_SUBST(MALLOC_DEBUG) + +AC_SUBST(host_cpu) +AC_SUBST(host_vendor) +AC_SUBST(host_os) + +AC_SUBST(LOCAL_LIBS) +AC_SUBST(LOCAL_CFLAGS) +AC_SUBST(LOCAL_LDFLAGS) +AC_SUBST(LOCAL_DEFS) + +#AC_SUBST(ALLOCA_SOURCE) +#AC_SUBST(ALLOCA_OBJECT) + +AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ + lib/intl/Makefile \ + lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ + lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ + examples/loadables/Makefile examples/loadables/perl/Makefile], +[ +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h +]) diff --git a/doc/FAQ b/doc/FAQ index 33ca3d3..1df48d5 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,4 +1,4 @@ -This is the Bash FAQ, version 4.12, for Bash version 4.2. +This is the Bash FAQ, version 4.13, for Bash version 4.3. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -36,8 +36,8 @@ A10) What is the bash `posix mode'? Section B: The latest version -B1) What's new in version 4.2? -B2) Are there any user-visible incompatibilities between bash-4.2 and +B1) What's new in version 4.3? +B2) Are there any user-visible incompatibilities between bash-4.3 and previous bash versions? Section C: Differences from other Unix shells @@ -144,26 +144,26 @@ of Case Western Reserve University. A2) What's the latest version? -The latest version is 4.2, first made available on 14 February, 2011. +The latest version is 4.3, first made available on xx December, 2013. A3) Where can I get it? Bash is the GNU project's shell, and so is available from the master GNU archive site, ftp.gnu.org, and its mirrors. The latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 4.2: +The following URLs tell how to get version 4.3: -ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-4.3.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-4.3.tar.gz Formatted versions of the documentation are available with the URLs: -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-4.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.3.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-4.3.tar.gz Any patches for the current version are available with the URL: -ftp://ftp.cwru.edu/pub/bash/bash-4.2-patches/ +ftp://ftp.cwru.edu/pub/bash/bash-4.3-patches/ A4) On what machines will bash run? @@ -219,7 +219,8 @@ Mark began to work with bash-2.05, but I don't know the current status. Bash-3.0 compiles and runs with no modifications under Microsoft's Services for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-4.2, but will gladly accept any patches that are needed. +with building bash-4.2 and later, but will gladly accept any patches that +are needed. A6) How can I build bash with gcc? @@ -388,14 +389,130 @@ They are also listed in a section in the Bash Reference Manual Section B: The latest version -B1) What's new in version 4.2? +B1) What's new in version 4.3? -Bash-4.2 is the second revision to the fourth major release of bash. +Bash-4.3 is the third revision to the fourth major release of bash. -Bash-4.2 contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-4.2 +Bash-4.3 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-4.3 distribution): +o The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +o The `help' builtin no longer does prefix substring matching first, so + `help read' does not match `readonly', but will do it if exact string + matching fails. + +o The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +o Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +o There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +o There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +o In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +o The `return' and `exit' builtins accept negative exit status arguments. + +o The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +o In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +o When compiled for strict Posix conformance, history expansion is disabled + by default. + +o The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +o `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +o Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +o The `read' builtin now skips NUL bytes in the input. + +o There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +o When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +o The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +o The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +o The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +o The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +o The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +o The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +o The {x} s2/-nt/-ot/-ef/-O/-G/-S + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S/-R bash reads ~/.bashrc for interactive shells, $ENV for non-interactive bash restricted shell mode is more extensive bash allows functions and variables with the same name @@ -1188,18 +1305,20 @@ Implementation differences: C3) Which new features in ksh-93 are not in bash, and which are? -This list is current through ksh93t+ (05/05/2009) +This list is current through ksh93v (10/08/2013) -New things in ksh-93 not in bash-4.2: - floating point arithmetic and variables - math library functions +New things in ksh-93 not in bash-4.3: + floating point arithmetic, variables, and constants + math library functions, including user-defined math functions ${!name[sub]} name of subscript for associative array `.' is allowed in variable names to create a hierarchical namespace more extensive compound assignment syntax discipline functions KEYBD trap variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT, + .sh.sig, .sh.stats, .sh.siginfo, .sh.pwdfd, .sh.op_astbin, + .sh.pool backreferences in pattern matching (\N) `&' operator in pattern lists for matching (match all instead of any) exit statuses between 0 and 255 @@ -1208,17 +1327,20 @@ New things in ksh-93 not in bash-4.2: no scoping for local variables in `POSIX' functions $'' \C[.collating-element.] escape sequence -C/-I invocation options - print -f (bash uses printf) + print -f (bash uses printf) and rest of print builtin options + printf %(type)q, %#q `fc' has been renamed to `hist' `.' can execute shell functions getopts -a printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag - read -n/-N differ/-v + read -n/-N differ/-v/-S set -o showme/-o multiline (bash default) + set -K + kill -Q/-q/-L + trap -a `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables [[ -R name ]] (checks whether or not name is a nameref) - typeset -C/-S/-T/-X/-h/-s + typeset -C/-S/-T/-X/-h/-s/-c/-M experimental `type' definitions (a la typedef) using typeset array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} associative array assignments using `;' as element separator @@ -1226,8 +1348,12 @@ New things in ksh-93 not in bash-4.2: new '${ ' form of command substitution, executed in current shell new >;/<>;/<#pat/<##pat/<#/># redirections brace expansion printf-like formats + CHLD trap triggered by SIGSTOP and SIGCONT + ~{fd} expansion, which replaces fd with the corresponding path name + $"string" expanded when referenced rather than when first parsed + job "pools", which allow a collection of jobs to be managed as a unit -New things in ksh-93 present in bash-4.2: +New things in ksh-93 present in bash-4.3: associative arrays [n]<&word- and [n]>&word- redirections (combination dup and close) for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command @@ -1266,6 +1392,8 @@ New things in ksh-93 present in bash-4.2: redirection operators preceded with {varname} to store fd number in varname DEBUG can force skipping following command [[ -v var ]] operator (checks whether or not var is set) + typeset -n and `nameref' variables + process substitutions work without /dev/fd Section D: Why does bash do some things differently than other Unix shells? @@ -1854,6 +1982,18 @@ compat40 set of the entire list to be aborted (in versions before bash-4.0, interrupting one command in a list caused the next to be executed) +compat41 set + - interrupting a command list such as "a ; b ; c" causes the execution + of the entire list to be aborted (in versions before bash-4.1, + interrupting one command in a list caused the next to be executed) + - when in posix mode, single quotes in the `word' portion of a + double-quoted parameter expansion define a new quoting context and + are treated specially + +compat42 set + - the replacement string in double-quoted pattern substitution is not + run through quote removal, as in previous versions + Section F: Things to watch out for on certain Unix versions F1) Why can't I use command line editing in my `cmdtool'? @@ -2095,7 +2235,7 @@ before `eval' is executed. In versions of bash later than bash-2.0, does the same thing. This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. +is similar. Namerefs are available bash version 4.3, and work as in ksh93. G4) How can I make the bash `time' reserved word print timing output that looks like the output from my system's /usr/bin/time? @@ -2255,16 +2395,15 @@ a module system like zsh's, using dynamic loading like builtins a bash programmer's guide with a chapter on creating loadable builtins a better loadable interface to perl with access to the shell builtins and variables (contributions gratefully accepted) -ksh93-like `nameref' variables ksh93-like `xx.yy' variables (including some of the .sh.* variables) and associated disipline functions Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? -The next version will appear sometime in 2010. Never make predictions. +The next version will appear sometime in 2015. Never make predictions. -This document is Copyright 1995-2010 by Chester Ramey. +This document is Copyright 1995-2014 by Chester Ramey. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, and distribute diff --git a/doc/Makefile.in b/doc/Makefile.in index 493985b..3c67db6 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,6 +1,6 @@ # This Makefile is for the Bash/documentation directory -*- text -*-. # -# Copyright (C) 2003-2009 Free Software Foundation, Inc. +# Copyright (C) 2003-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 @@ -23,6 +23,8 @@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ + # SHELL = @MAKE_SHELL@ RM = rm -f @@ -38,6 +40,8 @@ datarootdir = @datarootdir@ infodir = @infodir@ +docdir = @docdir@ + # set this to a directory name to have the HTML files installed htmldir = @htmldir@ @@ -166,6 +170,8 @@ bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER) bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi +# can also use: +# $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi @@ -191,6 +197,9 @@ bashref.pdf: bashref.dvi bash.pdf: bash.ps rose94.pdf: rose94.ps +OTHER_DOCS = $(srcdir)/FAQ $(srcdir)/INTRO +OTHER_INSTALLED_DOCS = FAQ INTRO + $(MAN2HTML): ${topdir}/support/man2html.c -( cd ${BUILD_DIR}/support ; ${MAKE} ${MFLAGS} man2html) @@ -218,6 +227,7 @@ maybe-clean: installdirs: -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(man1dir) -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(infodir) + -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(docdir) -if test -n "$(htmldir)" ; then \ $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ fi @@ -225,6 +235,7 @@ installdirs: install: info installdirs bash.info -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} + -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) # uncomment the next lines to install the builtins man page # sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 # -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} @@ -252,6 +263,7 @@ uninstall: -$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext} -$(RM) $(DESTDIR)$(man1dir)/bash_builtins${man1ext} $(RM) $(DESTDIR)$(infodir)/bash.info + -( cd $(DESTDIR)$(docdir) && $(RM) $(OTHER_INSTALLED_DOCS) ) -if test -n "$(htmldir)" ; then \ $(RM) $(DESTDIR)$(htmldir)/bash.html ; \ $(RM) $(DESTDIR)$(htmldir)/bashref.html ; \ diff --git a/doc/aosa-bash.pdf b/doc/aosa-bash.pdf new file mode 100644 index 0000000000000000000000000000000000000000..006a767769451694f5f25a9dfdb18282067d982b GIT binary patch literal 153472 zcma&NLzFPUwyasUZQHK;%eHOXwr$(CZQHhOn|;n*uX}O_{YIH<&vQk_7qLm@g+*x@ z=~$ph$FAcFq1Xu+26rsPh^U>^-qJv*k%hxeS%-I)wPy>ZWzs^Y zma<~%5*^nu6K$g!hOK3lgF17jYCm;g>i6_y$scR_@_H*;cf0F5C%1)}dwK&<#*#7M zcmDqT_S)|06u0cEa;%|(dUE*-d_CyqS@J|ywP~o5!EI&L)XBH|UATMOwWN7w>9FLf zlv+dmUQRYO|d6zzu8L zL>I4Nv%D5(r9-4w)#;nBw7j#63wKp$J4jiNe!F!@`4F!-L?|*4_6>rQqLro1^YXm* zw3$39!(2}TlUpKd#7FbJ-l`d6=1FmGu;Dhbgb%;dEk@=y++w@#p~`;`1__0B0YBFy zztddGYLxP%h3%57)A+_Ao3He40Zle&QZ+i!WU)LjGtqOfn(t?GprTVrdoFd;b&vpZ ziw9RdS*Td|E9j?V7d@J%ngdsxrNjNbYzO=^=Axncj=Tb6yPCR>cxQY2_ZWo*eg=C> z3f?sheG?k<+#bD9{gYT@K#L(=1gr*%HJx5vfjzfj>e;j4ky~XKW+JFDy5rIHeB|Gj z@S|dBpL2phvLF@HK&>@kX|o~KH)^$9Jp6W5IPjHhd9HW(C=Ev%mmh4Q9TbxLnUiIr zQk0$$sM1SFnkwo8uo16N(peLwe8_?Z+X^CEe|@;1@5MqB%xQ1fyW{$BXZ5m8?{z4! zjIK3?JWt1?&Itv?M#kr#XB9JRXc<0h)V&1EB~USdJIF>KX|dvg5nmL{VBXLU1OSb; z(rL0{J9dOP&1ZHM6T)D#CD~I@UqQ>`{A-5nEFDKcd0A9CuDWA@_W@~(_ol2{2LPM}-bC98{1U^u%|gn=}O98_F! zewqI=F;dj|E*}6EnqdTA-AB>}PzFnsN)QpUW%VxNK$HC&5-Z$p12CQM%!;EG>n_wSh-miXU;3Y#;Nts!W)lNXQ+xjk_)ErT~nwbKMjnd)1 zj;s!1ki;HT=;_ZQW(F_}a;||eyFkf5kYxrJ2*wgb@H0trUUdd|OvHfr%yc<$pzAN0 zM&p=0A;ce+`oo-^f%GAMPYvNA4W=Pw{|2cv`<~$M0q34Riji+`Qi)39G|xYSm2VC1 zEi+QvEJDDPLRiAb@jXL0Vlm9;L2+@ROfFy~fQ{OrUBw?(n!=woTEt+Z8O=Wzf(y;i z1o##jE>O1b2J6A}6G|IU8$w)rzWv~Ro|^2*>y-NF=pPc~ui7JQ7s|o8$olWD;1V>0 zZC_mlGG%GhjBNUGh{IZOfEJQ27BJB%Q7E>QaDaU61_B%=A6l1Wa{&bRAaztn9^d$MppSCB#IzHfONGxG-mD{{*tD7v2})KH1}!~f zbrlK9H#1u#c&1>CX6D-Rgy9?#BD&&4+IwsM?u@69jIr4mUDIxT>?bDJVcW$6h^w@( z=gD{;}_E;Ox8KRTJ)y=_U&r2@Inwe}2YFxyYO=4D06f63l5o=Xct8W z@o2(@1ZM2XN+MY9enKCiiN3KoBoWQr*0A7@MTd^mLu6%8z0IVR8nuk6eu{J361NX~m{dp&CQA*3_5#9@MOLfF+J`1M{I0^cR z0E-TpP>6lSE=6rmxkW)RkbE6YI(&9rSf+U^dGCV}gx!4KorEl@al3tkeK42T>=(BICIK?0db<4huXjJOQKH=y zKXNnRa9;}E_|fB6LNCDSod!gQ*j&QM1qE8%1_SBGWDu3f*1HHyu2ND>Q=sZ=Y?yRZ ztDE$Gy5|`3v(tF87Ka5DeDx4+KPMhw5F@7n9jo4zCwNDU^R{LaZ6tC?&(&a)VKNjX?~ z*@28<_g3GEvPpA?tWzb+L&etY=tP5p$mv)1j=4e=nAisb5pzmUF2p3S_~#L&T(JDQ zA1M%tw*JW}k)S{2lx8z`9ADUe*K>z`u*gO7^~`&$d!%Se{)zfvx4VtCn{E7UWQQH1 z=t;lKX8n+>7byj!6#dWbnC zxbsYT!j~ZKs!|C~HBDsrR2*B-zAx77t-jCK(-4~|ZYf&-wwCr4EOEa@J+ZvIAjcH| z(z6Z0vvjkRzM#S*Hb_Atb}BQm!3j?kzu{ORAee-+0QciYR9$$%#@IzAM?f#&;8Nuf zk{3s401H22hf5em(;M>*5KsV1)8b+kmd|My*q(gAJA2`C99Jn$v>DU_E;Y8a(O~=B43!;8vh?x^Pk&)ozQ>%&wo#5CU!Qc|1)D^`Cm4PiS_@+C(Wo!*=>m; z^j@jmx6@dsejPJ`LUGh4HH&8tt7Za8z_YZZu8S8-D>}eDFXzom{o0zn3Me*4o~mC7 z-Wr*@o@UwcebPxHPZpy19TaR&_x2UCXu39aVIosalt(A$b8kl1RfxCGFL;tMNg|iV z#q6iPShITJub3x@ovkrr>E!8kwlxN|)m9Hg$#VQ^ye*wMBJ<=NS)!gu)TU1teb8PH z{=+&UN>Daa81+ajp~FVu-KuO|c_N7X?bK88SxDS`7a*^$F(Shy6aq;OR@y@4xRKB5Y8 z+QNM~lJuW#@VHJ6!5km!?)_hfDve5nKKEgVWczcAXQ)P1YS(ITx548@(tENKhk5P9 zQlZwyKgV6`RvDYi-JaYQQd?b>9!f73g5Z9dvichUJe3kt=T}pwYm^LcZy4EK z-QQMp&Jliw?@K9j?9Ae8h9G-qI_9(ipsEo{JVN3vptzxf49LYW2a(LJd+E;=Vo#DJ+*8)PR)M!M<2fnTtNul-y-6_YLJ8JjpGKX~Qk5Z%e~ z7D!4{oa*FK?2ijJw08ir=I~}1a@tP>_t_ya$Diw+F^+&^FVPaB!g1V41E(h(2oPF?LIphd9cjRo3yj=eBljiNwV#}T4oKS)ZxXAb z>IXUxvOpWpd-#qM8_6z}g+Le?pITb>0S*q9L?(Ol{&~;qMFGfJ^3h9$cVg0$X({2Q zp`oyl;aQarSZ52~LW>gN8RJUXN0#Fe8wiOB{p2Ndzq^5R}Ctl|uLre9;6#R2iA^tekswNk9gNLZR4J22-YQcQ>v@+NT!(~=0fflAKGzfP zk|$SgdIO_B8R;2Y_PCFl-7d`Su%k9)0nRn~lpZYG<>EfgAK6TYSG_pyWce;ASTN7| zLo-o$9>wUb$A=w^F1UWpef*4QFW~V=@daaIG2QxK8O=N*px! z@F!c4Q77RK*nf_;yUNRt`mKG^P~m@@j&*|<%9mHs`1od`{;JFJHoGPp`+FJt{k~=A z!*25E?ftsqx|-54iIlmB*~&gLx^dsTDqyait`+5Pt&*DB|CHy?v-QLsoZr;fE{d{mh z%;^7r}_=J#`de-PLA1@ZLw=lO0%;w2DXHB(zDMR0lmpoK2V$I`V; zm9Tmvsb*W*y{?jL;mzS%FLGkg$JB+_wIqRmb?&7}SSN*MG%{4~}cUbyHZkHoA}|OJ^YY z*FlSYoC4itD!E##-LmHLTEA&2=6PoAUK_$`AKIYEZKE0rzVGV*6LqvBTlg&jbP5_t zsIrb$+%c;R&N#3TU@eSXNaZ{vr$01w{i5o6UZ?W_plg9x!V>53?gs*jAXUdC@61oU zmBUr7;G$$Kgxd43)IQ2m&D~(b2t6b~$}Eq*tQ9|8J^rpjB&Ntg{(t~{d9ww>yP=5; zqOgGkI0~jorrvHz`J66-tF*#m>(%on&q53XG){PIO&~=~z|!Y7R6}iIBlwWl$5fQip#F55)EIw4;3c6WuGbXL<7to?C%|Nr2AbDC6%t_fbQ`b)qk{#9;Z1hMPHJ{4meCCI2xhpw!bYkR~XM{YrIh>^Q+!xdvv ze*!ETn){K}w>_P7c0#!-XCs0f#?7TBHVbG*Q+4%PTbCx}w(JipZD@CY z{qkjZ&{UKvWO%qg(|Ql?;im*TRPraUC>JtPM4&JC}pJ8Gy4#_v1vYGe z-T_U3>a&@^9RY0f{a49fpspVqs>|3O(4bw{R|VJ@8X-)-vJT?vDTj=Vk5Y%jQ>Y21Lye_6vyi}ydfrO84dl9cQk(U!7Ky7aC|4TpsPRiY>AAhMCJar?t%aPZ zLKngZFk{pb9Sh=-`@?1#dc3Rv)exP}dY&y15_DPV-O&g1lqk#@IjO@iyDNIE|I#wx z`q7u<|i6a`g! zJYBn44o&5C`tfwBW>YN-0N!xwM#Be@sebslKsHp>KT$oe&>hmKoWm)OgozI(ugp>A zqZcc`UVGbtibhAM(BKiXSVaceQZX*z_&uz}NU-dYdm8t?V)Hpn6#>el zk6eL92yhfvyb+lZc>4XB&f)P;yAo8;b0M7!`KSEhf=ZGg0Dn17;(zO9zmwVifQwEO z!2L4F@#P$n*`qwBvm9C6^tEr^Soj~LxV6y_QSn{{lrWa{4jb@#=SqfefYZ5T{zJBQ znbaRF zYb7bsAhxl1U$3q=hj>p8(Q&-yc8ZP6GJ(C}b`zd0$3H%eJ+B#u{41{>5FjM`7%)tWH~j!(66i^0^GQ&p2Cn|#{_?I_AV`pPLIlrK z6u=uJHu?#BBX0C!Fyx?K)MXWr%qRsF6DY|W))vmxtM1kOkY>(BUJe}R;7KHRDgrNB zzVksFYOCLp9wS(;WYT>V8g>VJPJGX1R2(TJl*B5;^+!W?4cvec)BR5pLGWR|rx*}P z5^BaI!rVi%awUqx-*^s7_uhTM@L}yB4FJCB?6Lkt1s1TKWffB5nTa|L2%k8sW0JI4 zenTO9hT!3ok_T=22veeUytt75%yP6{s^PeLflK80@ZO*OSr9eqRccg*XqEHiPQX{0}o5puSqAEqJ_JL}ZtL-#| zhcrVXm_dS+h{A9n)oAmFO>;DtjjQg36`@Y&@7bUFZ=BTk`&L&(Xo#aed$T-dIqKU* zjll^w;$5`XWzAAP!B+JagA~tdp|NSCA@mVk(MQ52N9NrC{t|6tSG*=)CZ>KWb&kV;c*Gj`z>f)F3LY85hy6a{W;$7AWjTOFC3TJwCNLKaRv)a zJ$m~Cs&+)vgKDb0MgfQhCCiLdj&$)hfM|vN*X?xJu~2$QUoGPSK^K%B_$ptG5qlmL zRUVPTdr()wKbeBufgM0QNLPC0b)s+jo+ny?o7TP}iW95-U7Y#c8`dabG~eOfT( zOu#m3q~*G1=WBF}m18dx4h{OpNtgCeJi=_X4PA}Phe1Tl&M&4eiN%J2^ZInP#3-T?eAn?a~t!9EM z(=Gf3Xqh1NN-;r12T6hmfLYVq0AyFEL?#vY^FZQ*vVNBuu#=7PnV>zSUB6v@_a{Bo zD6vVZ?5B!D8F`YDj{&kdNhysE5|0T}>x&!s@gGDZWK@+3oBK)DSj<@yb5UFq2%dxZ zsly|kxURd5N53moM<7QVWM&7voo~uoK z^u_sWHb~gdLDAqpc!R(p28OI8OxJyv2OM1R8&=#m8^h{YD=J!+e^KX>JGm&Cqym(@ zRiRD~O+dKlH7iulRD`=I%1r}Zkg7jT=szd-Pi7czE6|ZS95Gy?Tz4gQo>jnufZHz# zR+oJh*c7)5-(;h@?wSn_QvD00G?BU_7g*7+ix?;AJ~0jfC05W_-#j$6;TZJOi7FkZ z(ELLi_Ty<>rF&0?bo!?CQc zQ#;<6bh2+`lW@QwhGW#I6rd}YWf24zo@CRs4rh? zN2FyhegBqZia70jqEOc*w8>Q2D2Z7M8Yw#!dUV>3zmtfbz&>06idP5hYnyY!Z6ue{y|GgLAx38V&C;|KKctP^6p;ba9I{S^ z1nYF5dghWUaqJTjm{`@#;}LaKZ}%1NkoVy=B+{-Id5Mf58qEq9Q9SO$Cum@BB7awL zsO^(7|GA#~VkXWvMpsyT6>FCcKN19?$D%hZgY_MG7|t$LE8>9!n2>HxbowJ!cZE)& zS)E8~#;-s-*l`XsIkl6TcvR>zW%)ypP^cmWeygIcCVy$4#OTUI85Aa;ml_(d18%nY zDE^FsjuF}-yo@N-Ow-tZbgm2v23J-42N?Z%cb~nFy+s!&wGJUC!7B9X;cI z870Pn?v5-kap)3lk$O;U2)#1z9y=B>uEh)!Z&KNCWf=43uZ|$rm${xnw^h@GN#oFa zIG6xJ%6)R#(Dl3KE%9G~f?(UIuVnsH2?1Q@=VzXglRIXac_0hy58+A%*MYVPuwK=U@v z(cfi_tH*4nBQbOs`H@8q=DfIS%`|D}zL!R>pb(5OHd8Nw7qGgWtCFg58E10opl+V~ ze#2oQ%_y|ybZ)c%ciQ2XDb#0?^h22381~C7=aW6U_2jVnG2_TfbtuC`=s`*tpM+q4 z9mcU7R+C88U()9szv|j|vOB8E_mF<=YNMze&R>ssPY2FCtYU(PGgjAu1TIT7fx$x%c`A4?JH?6G_dd*+bldNJApwur=*QG5A%~XExbYjmpu6C>xagM(RpV`O-z~4s(BMO3J$Q*y~8?ip*toq?%jyxM1Bw!%Rt9Qq3=#WL&@w-LiAwpOP7oi>kOd z!=gj_m~xMV6cQ&HE15+f=}78ZCZ%f_$LxNG!8qdYsVLjW$?^#O(5=gi4%%AqFghLT zlpsxXV$V!uccPBPgxkSS{q6Gzn|Q}D0D7#OyoAv49p3H_*LR(tOuAj}e{wefZTzAC zP5=If>iw7gu`)2R{=f8(h2eiCZ!C=eH_2Oy=8oO=D5Bq*p2PW4E+ON#jxQN}$Pq^j z^qRyCG*B}IP^6fI^zAtGM3Oa%&wbx~U;9%-QBjSI@`0TJvwPsl9E|9kBd#ASqXLH*~%luw!$z zI$rJbl`yrt_lleY3)}yoKS`S3qMM_=8{d}~u!<;^oaK;-tCdqQ)dTjP$|jOEl@6*J znaSm9wy!9^%I)eWmY=oLy87vC8fJ@>Vi8Cwb}a($mQ@YKwNClHo^OMv&!5jpW7b}I zjmF+d>a5}lm8?76sW54uo>h-TOQYpCzFxn#&&w0eptEL{OZt0}9`7eO^CuKtmCGTw zy1ibVGY>dwE3~s`6iV;<`Hq{(5HHL!n4DD!)pZqxAQS4c zn7XVFxOHVP%zjF@qs_uknF_pBvLL+-LB3nnX&tY59dmCEtM1xVX1C=l;PEjO5>#POy>x^UJeHm zp!l(ZfJPc*(vvgENr4JYfXjQO1yzvSzfT0JbfJD20KlxOxG6PjtA~^7XaQTJc&j*v z6@KiJyNolw-5o_H9IK$|}ETq}-aeAQD43t0vcLb86-ElX5^Ie)I z5R*8Xh72tZ=knb!7Ymq*TWy>ClurBgOK<_s@~!}Vq%VwHlfbNZ{VdM85%(Sh7RoIX z1c)vX?S#PhTzN}5c}eRjZDA=HB5B#ghjR-;pDJ+>#{p80pD>$xCW1shk@CAPizi?)QuK{TL zzE;poW+kJo{6V9R5nr%Jq+>LaWrt$u&J|GQfRKP4$Ei*q{SZTldr&}kCFVIKtlF-V z0Gb(Akw}lWoBgh`I_-CH9{%xN+{iy+6#x^Z*1*8VS*IbBq?suqdewLmMLE%*r%Cy*)f~{PYzrs=fQ>BP_>>L&BHxewdW-azc6oi-aaD-9ZDI3LfwglXleO z`G;^jrAb1BfY!%g+h8R1vjK{@8b-qa4QqjQH97|Y>8nnm{h-RmRMzIZFq`+m^;7aQ zD`^T9V9D~&AA_|5-k#z9B>Z(W_H%E_Wi2SfQ-@3LoRnZIUx7fGp;}!{WH!U zSlrs_4p+O=-juOOz%#y1Lp&@{P8c9SlyP?`WvOYoKr4;;qXb}ejrb*bQ_{icK)v@x zc=qEh_4(*V^x`m|qsLq=7v`9+dltB6Cqy^gnVKf&+D`rnE-4M^L6c<6c$Trqi$qRn zR~ev;Y+G-l!KMqDjP&UYyv%_L4Wgk=Yg#N9yEvgfVMN@d7U7p#3rsG6>m(F=#opQ8 zuhJw=xl6jaCMnc1-|(ds2{HIYwPj=lxc7^%x4rN0nJf6ZL6CixS|NbSYDVe0UTr&H zk71-|lf*&Qc-_U~X+|Q#tCOXIE!TaGevO$akoAK-_@m|@kF6P6zF)0Y(bQD{Y*`)F zCW|`;W5NSyZHN_{Sa`i||J!=gybm$<7-^sppkVJ>hXOy8;awN&f#%ELh$4$M~rQ#TMNzH~(Dru{6V*rrdX?x%#P6;7_5ltiXp>SFZV}J&z+BBjM%oOGLL;E*b@Yr(jm9;iL zx0boL|C)zwN@ol1tDaIo>t=kw2{IbsoZy3p3!*f~yx=(Jkp)lN-`c~+)4D9UcXwmN z_UJx%qaZ272r)U{KL}Xa$9&tg zU&w3n>^evn+0QAdsE~cl+RSm)xV1}oANN0+lfoT9svD=XJ%_QA=Ov#kYd*Q>jYBx4 z!~4_^?2o{OXI>x_z_w_`7uC~{imS25G>^16+Bow8+|>0DQ4SdFZ6)_rT>{+UN3Su3 zQ_sTTdquGxk}a{r7tG8&f_aYil9Yz?6#5gZA5KHz#A1dSY9|gU7E8`AFC|X=Sz@XV zmBk-ngZXN+S|Vv?k4}_-CU99qbiO4kp@g?9BXUAalm!n5euIsk=b;aIgampBvI&-2 zQ?tSGwZS1&L4I&zd408BfGeiaiRMfT+Zh=No+gzoFh=ZWASw5sScvESog|vzu`(^$ z_*7VMB==bhlEj_DsN#<@rF?a=(Zn*V)`a}d3G5hX4+6Ut(3c%v7Y^>j%=jUs7h-VQ z0u{oJ<=t6s2GhX2BM4b3ZYWVpv>M;VEh_G;z4ria+Gb;Tp&ycsmXaN

t#LjeI_ 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

I(G<`;WSlMQteZ|h!? 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

COPYRIGHT

-Bash is Copyright © 1989-2010 by the Free Software Foundation, Inc. +Bash is Copyright © 1989-2013 by the Free Software Foundation, Inc.  

DESCRIPTION

@@ -76,17 +76,17 @@ interprets the following options when it is invoked:
-
-c string +
-c
If the -c -option is present, then commands are read from -string. +option is present, then commands are read from the first non-option argument +command_string. If there are arguments after the -string, +command_string, they are assigned to the positional parameters, starting with $0. @@ -275,6 +275,12 @@ This option is on by default if the shell is invoked as
Change the behavior of bash where the default operation differs from the POSIX standard to match the standard (posix mode). +See +SEE ALSO + + +below for a reference to a document that details how posix mode affects +bash's behavior.
--restricted
@@ -376,7 +382,7 @@ If any of the files exist but cannot be read, bash reports an error. -Tildes are expanded in file names as described below under +Tildes are expanded in filenames as described below under Tilde Expansion in the @@ -447,7 +453,7 @@ but the value of the PATH -variable is not used to search for the file name. +variable is not used to search for the filename.

If @@ -544,8 +550,8 @@ The option may be used to inhibit this behavior, and the --rcfile -option may be used to force another file to be read, but -rshd does not generally invoke the shell with those options +option may be used to force another file to be read, but neither +rshd nor sshd generally invoke the shell with those options or allow them to be specified.

@@ -654,7 +660,7 @@ command: -! case do done elif else esac fi for function if in select then until while { } time [[ ]] +! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]

@@ -708,11 +714,12 @@ command (see below). -If |& is used, the standard error of command is connected to -command2's standard input through the pipe; it is shorthand for -2>&1 |. -This implicit redirection of the standard error is performed after any -redirections specified by the command. +If |& is used, command's standard error, in addition to its +standard output, is connected to +command2's standard input through the pipe; +it is shorthand for 2>&1 |. +This implicit redirection of the standard error to the standard output is +performed after any redirections specified by the command.

The return status of a pipeline is the exit status of the last @@ -869,7 +876,10 @@ executed in the list.

-A compound command is one of the following: +A compound command is one of the following. +In most cases a list in a command's description may be separated from +the rest of the command by one or more newlines, and may be followed by a +newline in place of a semicolon.

(list)
list is executed in a subshell environment (see @@ -907,8 +917,9 @@ Expressions are composed of the primaries described below under Word splitting and pathname expansion are not performed on the words -between the [[ and ]]; tilde expansion, parameter and -variable expansion, arithmetic expansion, command substitution, process +between the [[ and ]]; tilde expansion, +parameter and variable expansion, +arithmetic expansion, command substitution, process substitution, and quote removal are performed. Conditional operators such as -f must be unquoted to be recognized as primaries. @@ -922,7 +933,9 @@ lexicographically using the current locale. When the == and != operators are used, the string to the right of the operator is considered a pattern and matched according -to the rules described below under Pattern Matching. +to the rules described below under Pattern Matching, +as if the extglob shell option were enabled. +The = operator is equivalent to ==. If the shell option nocasematch @@ -930,8 +943,8 @@ is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (==) or does not match (!=) the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force it to be matched as a -string. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string.

@@ -948,8 +961,12 @@ If the shell option is enabled, the match is performed without regard to the case of alphabetic characters. -Any part of the pattern may be quoted to force it to be matched as a -string. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +Bracket expressions in regular expressions must be treated carefully, +since normal quoting characters lose their meanings between brackets. +If the pattern is stored in a shell variable, quoting the variable +expansion forces the entire pattern to be matched as a string. Substrings matched by parenthesized subexpressions within the regular expression are saved in the array variable BASH_REMATCH. @@ -1113,7 +1130,7 @@ on a successful match. The exit status is zero if no pattern matches. Otherwise, it is the exit status of the last command executed in list. -

if list; then list; [ elif list; then list; ] ... [ else list; ] fi
+
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
The if @@ -1167,11 +1184,11 @@ The format for a coprocess is:

This creates a coprocess named NAME. -If NAME is not supplied, the default name is COPROC. +If NAME is not supplied, the default name is COPROC. NAME must not be supplied if command is a simple command (see above); otherwise, it is interpreted as the first word of the simple command. -When the coproc is executed, the shell creates an array variable (see +When the coprocess is executed, the shell creates an array variable (see Arrays below) named NAME in the context of the executing shell. @@ -1193,12 +1210,15 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. +The file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. The wait builtin command may be used to wait for the coprocess to terminate.

+Since the coprocess is created as an asynchronous command, +the coproc command always returns success. The return status of a coprocess is the exit status of command.  

Shell Function Definitions

@@ -1224,6 +1244,8 @@ That command is usually a list of commands between { and }, but may be any command listed under Compound Commands above. compound-command is executed whenever name is specified as the name of a simple command. +When in posix mode, name may not be the name of one of the +POSIX special builtins. Any redirections (see REDIRECTION @@ -1560,6 +1582,9 @@ and local builtin commands. +When in posix mode, these builtins may appear in a command after +one or more instances of the command builtin and retain these +assignment statement properties.

In the context where an assignment statement is assigning a value @@ -1578,6 +1603,41 @@ appended to the array beginning at one greater than the array's maximum index associative array. When applied to a string-valued variable, value is expanded and appended to the variable's value. +

+ +A variable can be assigned the nameref attribute using the +-n option to the declare or local builtin commands +(see the descriptions of declare and local below) +to create a nameref, or a reference to another variable. +This allows variables to be manipulated indirectly. +Whenever the nameref variable is referenced or assigned to, the operation +is actually performed on the variable specified by the nameref variable's +value. +A nameref is commonly used within shell functions to refer to a variable +whose name is passed as an argument to the function. +For instance, if a variable name is passed to a shell function as its first +argument, running +

+

+declare -n ref=$1 + +
+ +

+inside the function creates a nameref variable ref whose value is +the variable name passed as the first argument. +References and assignments to ref are treated as references and +assignments to the variable whose name was passed as $1. +If the control variable in a for loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. +Array variables cannot be given the -n attribute. +However, nameref variables can reference array variables and subscripted +array variables. +Namerefs can be unset using the -n option to the unset builtin. +Otherwise, if unset is executed with the name of a nameref variable +as an argument, the variable referenced by the nameref variable will be unset.  

Positional Parameters

@@ -1619,8 +1679,12 @@ only be referenced; assignment to them is not allowed.
*
-Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, it expands to a single word +Expands to the positional parameters, starting from one. +When the expansion is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and pathname expansion. +When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS @@ -1689,8 +1753,13 @@ subshell.
!
-Expands to the process ID of the most recently executed background -(asynchronous) command. +Expands to the process ID of the job most recently placed into the +background, whether executed as an asynchronous command or using +the bg builtin (see +JOB CONTROL + + +below).
0
@@ -1712,7 +1781,7 @@ option, then is set to the first argument after the string to be executed, if one is present. Otherwise, it is set -to the file name used to invoke +to the filename used to invoke bash, as given by argument zero. @@ -1743,7 +1812,7 @@ The following variables are set by the shell:
BASH
-Expands to the full file name used to invoke this instance of +Expands to the full filename used to invoke this instance of bash.
BASHOPTS @@ -1895,7 +1964,8 @@ The shell function
BASH_SUBSHELL
-Incremented by one each time a subshell or subshell environment is spawned. +Incremented by one within each subshell or subshell environment when +the shell begins executing in that environment. The initial value is 0.
BASH_VERSINFO @@ -1907,7 +1977,6 @@ this instance of The values assigned to the array members are as follows:

-
BASH_VERSINFO[0] @@ -1936,7 +2005,6 @@ The value of MACHTYPE. -
BASH_VERSION @@ -2334,6 +2402,25 @@ below.
+
BASH_COMPAT + +
+The value is used to set the shell's compatibility level. +See the description of the shopt builtin below under +SHELL BUILTIN COMMANDS +for a description of the various compatibility +levels and their effects. +The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) +corresponding to the desired compatibility level. +If BASH_COMPAT is unset or set to the empty string, the compatibility +level is set to the default for the current version. +If BASH_COMPAT is set to a value that is not one of the valid +compatibility levels, the shell prints an error message and sets the +compatibility level to the default for the current version. +The valid compatibility levels correspond to the compatibility options +accepted by the shopt builtin described below (for example, +compat42 means that 4.2 and 42 are valid values). +The current version is also a valid value.
BASH_ENV
@@ -2347,11 +2434,11 @@ The value of is subjected to parameter expansion, command substitution, and arithmetic -expansion before being interpreted as a file name. +expansion before being interpreted as a filename. PATH -is not used to search for the resultant file name. +is not used to search for the resultant filename.
BASH_XTRACEFD
@@ -2393,11 +2480,23 @@ command. A sample value is ".:~:/usr". +
CHILD_MAX + +
+Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a POSIX-mandated +minimum, and there is a maximum value (currently 8192) that this may +not exceed. +The minimum value is system-dependent.
COLUMNS
Used by the select compound command to determine the terminal width -when printing selection lists. Automatically set upon receipt of a +when printing selection lists. +Automatically set if the +checkwinsize + +option is enabled or in an interactive shell upon receipt of a SIGWINCH. @@ -2407,6 +2506,7 @@ when printing selection lists. Automatically set upon receipt of a An array variable from which bash reads the possible completions generated by a shell function invoked by the programmable completion facility (see Programmable Completion below). +Each array element contains one possible completion.
EMACS
@@ -2514,16 +2614,20 @@ The name of the file in which command history is saved (see below). The default value is ~/.bash_history. If unset, the -command history is not saved when an interactive shell exits. +command history is not saved when a shell exits.
HISTFILESIZE
The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if -necessary, by removing the oldest entries, -to contain no more than that number of lines. The default -value is 500. The history file is also truncated to this size after -writing it when an interactive shell exits. +necessary, +to contain no more than that number of lines by removing the oldest entries. +The history file is also truncated to this size after +writing it when a shell exits. +If the value is 0, the history file is truncated to zero size. +Non-numeric values and numeric values less than zero inhibit truncation. +The shell sets the default value to the value of HISTSIZE +after reading any startup files.
HISTIGNORE
@@ -2551,7 +2655,11 @@ The number of commands to remember in the command history (see HISTORY -below). The default value is 500. +below). +If the value is 0, commands are not saved in the history list. +Numeric values less than zero result in every command being saved +on the history list (there is no limit). +The shell sets the default value to 500 after reading any startup files.
HISTTIMEFORMAT
@@ -2690,7 +2798,11 @@ This variable determines the locale category used for number formatting.
Used by the select compound command to determine the column length -for printing selection lists. Automatically set upon receipt of a +for printing selection lists. +Automatically set if the +checkwinsize + +option is enabled or in an interactive shell upon receipt of a SIGWINCH. @@ -2720,9 +2832,9 @@ greater than or equal to zero, the shell disables mail checking.
MAILPATH
-A colon-separated list of file names to be checked for mail. +A colon-separated list of filenames to be checked for mail. The message to be printed when mail arrives in a particular file -may be specified by separating the file name from the message with a `?'. +may be specified by separating the filename from the message with a `?'. When used in the text of the message, $_ expands to the name of the current mailfile. Example: @@ -2779,7 +2891,7 @@ and is set by the administrator who installs bash. A common value is -/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin. +/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin.
POSIXLY_CORRECT @@ -2914,9 +3026,10 @@ The value of p determines whether or not the fraction is included.
If this variable is not set, bash acts as if it had the -value $aq\nreal\t%3lR\nuser\t%3lU\nsys %3lSaq. +value $aq\nreal\t%3lR\nuser\t%3lU\nsys\t%3lSaq. If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. +
TMOUT
@@ -2933,11 +3046,12 @@ after seconds when input is coming from a terminal. In an interactive shell, the value is interpreted as the -number of seconds to wait for input after issuing the primary prompt. +number of seconds to wait for a line of input after issuing the +primary prompt. Bash -terminates after waiting for that number of seconds if input does -not arrive. +terminates after waiting for that number of seconds if a complete +line of input does not arrive.
TMPDIR
@@ -3016,6 +3130,7 @@ be indexed or assigned contiguously. Indexed arrays are referenced using integers (including arithmetic expressions) and are zero-based; associative arrays are referenced using arbitrary strings. +Unless otherwise noted, indexed array indices must be non-negative integers.

An indexed array is created automatically if any variable is assigned to @@ -3023,12 +3138,6 @@ using the syntax name[subscript]=value. The subscript is treated as an arithmetic expression that must evaluate to a number. -If -subscript - -evaluates to a number less than zero, it is used as -an offset from one greater than the array's maximum index (so a subcript -of -1 refers to the last element of the array). To explicitly declare an indexed array, use declare -a name @@ -3060,7 +3169,7 @@ builtins. Each attribute applies to all members of an array. Arrays are assigned to using compound assignments of the form name=(value1 ... valuen), where each value is of the form [subscript]=string. -Indexed array assignments do not require the bracket and subscript. +Indexed array assignments do not require anything but string. When assigning to indexed arrays, if the optional brackets and subscript are supplied, that index is assigned to; otherwise the index of the element assigned is the last index assigned @@ -3075,6 +3184,13 @@ This syntax is also accepted by the builtin. Individual array elements may be assigned to using the name[subscript]=value syntax introduced above. +When assigning to an indexed array, if +name + +is subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +name, so negative indices count back from the end of the +array, and an index of -1 references the last element.

Any element of an array may be referenced using @@ -3105,17 +3221,33 @@ ${name[subscript]}. If subscript is * or @, the expansion is the number of elements in the array. Referencing an array variable without a subscript is equivalent to referencing the array with a subscript of 0. +If the +subscript + +used to reference an element of an indexed array +evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the array, +so negative indices count back from the end of the +array, and an index of -1 references the last element.

An array variable is considered set if a subscript has been assigned a value. The null string is a valid value.

+It is possible to obtain the keys (indices) of an array as well as the values. +${!name[@]} and ${!name[*]} +expand to the indices assigned in array variable name. +The treatment when in double quotes is similar to the expansion of the +special parameters @ and * within double quotes. +

+ The unset builtin is used to destroy arrays. unset name[subscript] destroys the array element at index subscript. +Negative subscripts to indexed arrays are interpreted as described above. Care must be taken to avoid unwanted side effects caused by pathname expansion. unset name, where name is an array, or @@ -3138,6 +3270,10 @@ option to specify an indexed array and a -A option to specify an associative array. +If both options are supplied, +-A + +takes precedence. The read @@ -3175,15 +3311,19 @@ and

-The order of expansions is: brace expansion, tilde expansion, -parameter, variable and arithmetic expansion and -command substitution -(done in a left-to-right fashion), word splitting, and pathname -expansion. +The order of expansions is: +brace expansion; +tilde expansion, parameter and variable expansion, arithmetic expansion, +and command substitution (done in a left-to-right fashion); +word splitting; +and pathname expansion.

On systems that can support it, there is an additional expansion available: process substitution. +This is performed at the +same time as tilde, parameter, variable, and arithmetic expansion and +command substitution.

Only brace expansion, word splitting, and pathname expansion @@ -3231,12 +3371,14 @@ and incr, an optional increment, is an integer. When integers are supplied, the expression expands to each number between x and y, inclusive. Supplied integers may be prefixed with 0 to force each term to have the -same width. When either x or y begins with a zero, the shell +same width. +When either x or y begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary. When characters are supplied, the expression expands to each character -lexicographically between x and y, inclusive. Note that -both x and y must be of the same type. +lexicographically between x and y, inclusive, +using the default C locale. +Note that both x and y must be of the same type. When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.

@@ -3377,7 +3519,7 @@ or the first =. In these cases, tilde expansion is also performed. -Consequently, one may use file names with tildes in assignments to +Consequently, one may use filenames with tildes in assignments to PATH, @@ -3421,18 +3563,20 @@ or when is followed by a character which is not to be interpreted as part of its name. +The parameter is a shell parameter as described above +PARAMETERS) or an array reference (Arrays).

If the first character of parameter is an exclamation point (!), -a level of variable indirection is introduced. +it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of parameter as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the value of parameter itself. This is known as indirect expansion. -The exceptions to this are the expansions of ${!\fPfIprefix*} and +The exceptions to this are the expansions of ${!prefix*} and ${!name[@]} described below. The exclamation point must immediately follow the left brace in order to introduce indirection. @@ -3442,7 +3586,8 @@ In each of the cases below, word is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion.

-When not performing substring expansion, using the forms documented below, +When not performing substring expansion, using the forms documented below +(e.g., :-), bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset.

@@ -3502,33 +3647,50 @@ is substituted.

${parameter:offset:length}
Substring Expansion. -Expands to up to length characters of parameter +Expands to up to length characters of the value of parameter starting at the character specified by offset. -If length is omitted, expands to the substring of -parameter starting at the character specified by offset. +If parameter is @, an indexed array subscripted by +@ or *, or an associative array name, the results differ as +described below. +If length is omitted, expands to the substring of the value of +parameter starting at the character specified by offset +and extending to the end of the value. length and offset are arithmetic expressions (see ARITHMETIC EVALUATION below). +

If offset evaluates to a number less than zero, the value -is used as an offset from the end of the value of parameter. -If length evaluates to a number less than zero, and parameter -is not @ and not an indexed or associative array, it is interpreted -as an offset from the end of the value of parameter rather than -a number of characters, and the expansion is the characters between the -two offsets. +is used as an offset in characters +from the end of the value of parameter. +If length evaluates to a number less than zero, +it is interpreted as an offset in characters +from the end of the value of parameter rather than +a number of characters, and the expansion is the characters between +offset and that result. +Note that a negative offset must be separated from the colon by at least +one space to avoid being confused with the :- expansion. +

If parameter is @, the result is length positional parameters beginning at offset. +A negative offset is taken relative to one greater than the greatest +positional parameter, so an offset of -1 evaluates to the last positional +parameter. +It is an expansion error if length evaluates to a number less than +zero. +

If parameter is an indexed array name subscripted by @ or *, the result is the length members of the array beginning with ${parameter[offset]}. A negative offset is taken relative to one greater than the maximum index of the specified array. +It is an expansion error if length evaluates to a number less than +zero. +

Substring expansion applied to an associative array produces undefined results. -Note that a negative offset must be separated from the colon by at least -one space to avoid being confused with the :- expansion. +

Substring indexing is zero-based unless the positional parameters are used, in which case the indexing starts at 1 by default. If offset is 0, and the positional parameters are used, $0 is @@ -3580,6 +3742,13 @@ or @, the value substituted is the number of elements in the array. +If +parameter + +is an indexed array name subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +parameter, so negative indices count back from the end of the +array, and an index of -1 references the last element.

${parameter#word}
${parameter##word}
@@ -3703,6 +3872,9 @@ array in turn, and the expansion is the resultant list. This expansion modifies the case of alphabetic characters in parameter. The pattern is expanded to produce a pattern just as in pathname expansion. +Each character in the expanded value of parameter is tested against +pattern, and, if it matches the pattern, its case is converted. +The pattern should not attempt to match more than one character. The ^ operator converts lowercase letters matching pattern to uppercase; the , operator converts matching uppercase letters to lowercase. @@ -3741,8 +3913,6 @@ array in turn, and the expansion is the resultant list. Command substitution allows the output of a command to replace the command name. There are two forms: -

-

@@ -3808,8 +3978,9 @@ The is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. -All tokens in the expression undergo parameter expansion, string -expansion, command substitution, and quote removal. +All tokens in the expression undergo parameter and variable expansion, +command substitution, and quote removal. +The result is treated as the arithmetic expression to be evaluated. Arithmetic expansions may be nested.

@@ -3868,7 +4039,8 @@ The shell treats each character of as a delimiter, and splits the results of the other -expansions into words on these characters. If +expansions into words using these characters as field terminators. +If IFS @@ -3973,8 +4145,13 @@ regarded as a pattern, and replaced with an alphabetically sorted list of -file names matching the pattern. -If no matching file names are found, +filenames matching the pattern +(see +Pattern Matching + + +below). +If no matching filenames are found, and the shell option nullglob @@ -4033,19 +4210,19 @@ The GLOBIGNORE -shell variable may be used to restrict the set of file names matching a +shell variable may be used to restrict the set of filenames matching a pattern. If GLOBIGNORE -is set, each matching file name that also matches one of the patterns in +is set, each matching filename that also matches one of the patterns in GLOBIGNORE is removed from the list of matches. -The file names +The filenames ``.'' and @@ -4062,11 +4239,11 @@ is set and not null. However, setting to a non-null value has the effect of enabling the dotglob -shell option, so all other file names beginning with a +shell option, so all other filenames beginning with a ``.'' will match. -To get the old behavior of ignoring file names beginning with a +To get the old behavior of ignoring filenames beginning with a ``.'', make @@ -4123,7 +4300,7 @@ Matches any single character. Matches any one of the enclosed characters. A pair of characters separated by a hyphen denotes a range expression; -any character that sorts between those two characters, inclusive, +any character that falls between those two characters, inclusive, using the current locale's collating sequence and character set, is matched. If the first character following the [ @@ -4136,12 +4313,31 @@ or a then any character not enclosed is matched. The sorting order of characters in range expressions is determined by -the current locale and the value of the +the current locale and the values of the LC_COLLATE -shell variable, -if set. +or +LC_ALL + + +shell variables, if set. +To obtain the traditional interpretation of range expressions, where +[a-d] + +is equivalent to +[abcd], + +set value of the +LC_ALL + +shell variable to +C, + +or enable the +globasciiranges + +shell option. A - @@ -4257,8 +4453,13 @@ may be redirected using a special notation interpreted by the shell. -Redirection may also be used to open and close files for the -current shell execution environment. The following redirection +Redirection allows commands' file handles to be +duplicated, opened, closed, +made to refer to different files, +and can change the files the command reads from and writes to. +Redirection may also be used to modify file handles in the +current shell execution environment. +The following redirection operators may precede or appear anywhere within a simple command @@ -4273,7 +4474,8 @@ Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {varname}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater -than 10 and assign it to varname. If >&- or <&- is preceded +than or equal to 10 and assign it to varname. +If >&- or <&- is preceded by {varname}, the value of varname defines the file descriptor to close.

@@ -4291,9 +4493,10 @@ the redirection refers to the standard output (file descriptor

The word following the redirection operator in the following -descriptions, unless otherwise noted, is subjected to brace expansion, -tilde expansion, parameter expansion, command substitution, arithmetic -expansion, quote removal, pathname expansion, and word splitting. +descriptions, unless otherwise noted, is subjected to +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, quote removal, +pathname expansion, and word splitting. If it expands to more than one word, bash @@ -4359,13 +4562,13 @@ File descriptor 2 is duplicated.

If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open -a TCP connection to the corresponding socket. +the corresponding TCP socket.
/dev/udp/host/port
If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open -a UDP connection to the corresponding socket. +the corresponding UDP socket.
@@ -4523,6 +4726,10 @@ This is semantically equivalent to

+When using the second form, word may not expand to a number or +-. If it does, other redirection operators apply +(see Duplicating File Descriptors below) for compatibility +reasons.  

Appending Standard Output and Standard Error

@@ -4553,6 +4760,9 @@ This is semantically equivalent to >>word 2>&1 +

+ +(see Duplicating File Descriptors below).  

Here Documents

@@ -4582,8 +4792,8 @@ The format of here-documents is:

-No parameter expansion, command substitution, arithmetic expansion, -or pathname expansion is performed on +No parameter and variable expansion, command substitution, +arithmetic expansion, or pathname expansion is performed on word. If any characters in @@ -4597,9 +4807,9 @@ is the result of quote removal on and the lines in the here-document are not expanded. If word is unquoted, -all lines of the here-document are subjected to parameter expansion, -command substitution, and arithmetic expansion. In the latter -case, the character sequence +all lines of the here-document are subjected to +parameter expansion, command substitution, and arithmetic expansion, +the character sequence \<newline> is ignored, and @@ -4640,8 +4850,12 @@ A variant of here documents, the format is:

-The word is expanded and supplied to the command on its standard -input. +The word undergoes +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. +Pathname expansion and word splitting are not performed. +The result is supplied as a single string to the command on its +standard input.  

Duplicating File Descriptors

@@ -4700,8 +4914,18 @@ If the digits in word do not specify a file descriptor open for output, a redirection error occurs. +If +word + +evaluates to +-, + +file descriptor +n + +is closed. As a special case, if n is omitted, and word does not -expand to one or more digits, the standard output and standard +expand to one or more digits or -, the standard output and standard error are redirected as described previously.  

Moving File Descriptors

@@ -5111,7 +5335,8 @@ Otherwise, numbers take the form [base#]n, where the optional base is a decimal number between 2 and 64 representing the arithmetic base, and n is a number in that base. If base# is omitted, then base 10 is used. -The digits greater than 9 are represented by the lowercase letters, +When specifying n, +the digits greater< than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 @@ -5263,6 +5488,13 @@ True if the shell variable varname is set (has been assigned a value). +

Lo*QaWMd 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 VT%O4=kVq^&6`e6-!P14%{{;k<3%LLQ diff --git a/doc/article.ps b/doc/article.ps index 3aadf2f..adbeba0 100644 --- a/doc/article.ps +++ b/doc/article.ps @@ -1,17 +1,22 @@ %!PS-Adobe-3.0 -%%Creator: groff version 1.16.1 -%%CreationDate: Mon Nov 19 13:06:55 2001 +%%Creator: groff version 1.19.2 +%%CreationDate: Tue Oct 22 11:07:52 2013 %%DocumentNeededResources: font Times-Bold %%+ font Times-Italic %%+ font Times-Roman %%+ font Courier -%%DocumentSuppliedResources: procset grops 1.16 1 +%%DocumentSuppliedResources: procset grops 1.19 2 %%Pages: 11 %%PageOrder: Ascend +%%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait %%EndComments +%%BeginDefaults +%%PageMedia: Default +%%EndDefaults %%BeginProlog -%%BeginResource: procset grops 1.16 1 +%%BeginResource: procset grops 1.19 2 +%!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop currentpacking @@ -79,7 +84,7 @@ LS{ /EP{ level0 restore showpage -}bind def +}def /DA{ newpath arcn stroke }bind def @@ -109,11 +114,26 @@ TM setmatrix /ST/stroke load def /MT/moveto load def /CL/closepath load def -/FL{ -currentgray exch setgray fill setgray +/Fr{ +setrgbcolor fill +}bind def +/setcmykcolor where{ +pop +/Fk{ +setcmykcolor fill +}bind def +}if +/Fg{ +setgray fill }bind def -/BL/fill load def +/FL/fill load def /LW/setlinewidth load def +/Cr/setrgbcolor load def +/setcmykcolor where{ +pop +/Ck/setcmykcolor load def +}if +/Cg/setgray load def /RE{ findfont dup maxlength 1 index/FontName known not{1 add}if dict begin @@ -155,9 +175,9 @@ newpath /CNT countdictstack def userdict begin /showpage{}def +/setpagedevice{}def }bind def /PEND{ -clear countdictstack CNT sub{end}repeat level1 restore }bind def @@ -167,13 +187,18 @@ pop setpacking }if %%EndResource +%%EndProlog +%%BeginSetup +%%BeginFeature: *PageSize Default +<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice +%%EndFeature %%IncludeResource: font Times-Bold %%IncludeResource: font Times-Italic %%IncludeResource: font Times-Roman %%IncludeResource: font Courier grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron -/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent @@ -201,256 +226,254 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def /Courier@0 ENC0/Courier RE/Times-Roman@0 ENC0/Times-Roman RE /Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE -%%EndProlog +%%EndSetup %%Page: 1 1 %%BeginPageSetup BP %%EndPageSetup /F0 12/Times-Bold@0 SF(Bash \255 The GNU shell*)227.904 123 Q/F1 10 -/Times-Italic@0 SF(Chet Rame)263.85 147 Q(y)-.3 E(Case W)221.72 159 Q -(estern Reserve Univer)-.92 E(sity)-.1 E -.15(ch)250.425 171 S -(et@po.cwru.edu).15 E/F2 10/Times-Bold@0 SF 2.5(1. Intr)72 207 R -(oduction)-.18 E(Bash)97 222.6 Q/F3 10/Times-Roman@0 SF .904 +/Times-Italic@0 SF(Chet Rame)263.85 159 Q(y)-.3 E(Case W)221.72 171 Q +(estern Reserve Univer)-.92 E(sity)-.1 E -.15(ch)250.425 183 S +(et@po.cwru.edu).15 E/F2 10/Times-Bold@0 SF 2.5(1. Intr)72 219 R +(oduction)-.18 E(Bash)97 234.6 Q/F3 10/Times-Roman@0 SF .904 (is the shell, or command language interpreter)3.404 F 3.404(,t)-.4 G .904(hat will appear in the GNU operating system.)-3.404 F 1.075 -(The name is an acron)72 234.6 R 1.075(ym for the \231Bourne-Ag)-.15 F +(The name is an acron)72 246.6 R 1.075(ym for the \231Bourne-Ag)-.15 F 1.075(ain SHell\232, a pun on Ste)-.05 F 1.375 -.15(ve B)-.25 H 1.075 (ourne, the author of the direct).15 F .206(ancestor of the current)72 -246.6 R/F4 8/Times-Roman@0 SF(UNIX)2.706 E F3 2.706C(hell)-2.706 E +258.6 R/F4 8/Times-Roman@0 SF(UNIX)2.706 E F3 2.706C(hell)-2.706 E F1(/bin/sh)2.706 E F3 2.706(,w)C .205(hich appeared in the Se)-2.706 F -.15(ve)-.25 G .205(nth Edition Bell Labs Research v).15 F(er)-.15 E(-) --.2 E(sion of)72 258.6 Q/F5 9/Times-Roman@0 SF(UNIX)2.5 E F3(.)A .387 -(Bash is an)97 274.2 R F2(sh)2.887 E F3 .387 +-.2 E(sion of)72 270.6 Q/F5 9/Times-Roman@0 SF(UNIX)2.5 E F3(.)A .387 +(Bash is an)97 286.2 R F2(sh)2.887 E F3 .387 (\255compatible shell that incorporates useful features from the K)B .388(orn shell \()-.35 F F2(ksh)A F3 2.888(\)a)C .388(nd the C)-2.888 F -.023(shell \()72 286.2 R F2(csh)A F3 .023 +.023(shell \()72 298.2 R F2(csh)A F3 .023 (\), described later in this article.)B .022 (It is ultimately intended to be a conformant implementation of the) 5.022 F 3.568(IEEE POSIX Shell and Utilities speci\214cation \(IEEE W)72 -298.2 R 3.568(orking Group 1003.2\).)-.8 F 3.569(It of)8.569 F 3.569 -(fers functional)-.25 F(impro)72 310.2 Q -.15(ve)-.15 G(ments o).15 E +310.2 R 3.568(orking Group 1003.2\).)-.8 F 3.569(It of)8.569 F 3.569 +(fers functional)-.25 F(impro)72 322.2 Q -.15(ve)-.15 G(ments o).15 E -.15(ve)-.15 G 2.5(rs).15 G 2.5(hf)-2.5 G(or both interacti)-2.5 E .3 -.15(ve a)-.25 H(nd programming use.).15 E .697 -(While the GNU operating system will most lik)97 325.8 R .697 +(While the GNU operating system will most lik)97 337.8 R .697 (ely include a v)-.1 F .697(ersion of the Berk)-.15 F(ele)-.1 E 3.197 -(ys)-.15 G .696(hell csh, Bash)-3.197 F .015(will be the def)72 337.8 R +(ys)-.15 G .696(hell csh, Bash)-3.197 F .015(will be the def)72 349.8 R .015(ault shell.)-.1 F(Lik)5.015 E 2.515(eo)-.1 G .015(ther GNU softw) -2.515 F .016(are, Bash is quite portable.)-.1 F .016 (It currently runs on nearly e)5.016 F -.15(ve)-.25 G(ry).15 E -.15(ve) -72 349.8 S .523(rsion of).15 F F4(UNIX)3.023 E F3 .523(and a fe)3.023 F +72 361.8 S .523(rsion of).15 F F4(UNIX)3.023 E F3 .523(and a fe)3.023 F 3.023(wo)-.25 G .523 (ther operating systems \255 an independently-supported port e)-3.023 F .523(xists for OS/2, and)-.15 F .706 -(there are rumors of ports to DOS and W)72 361.8 R(indo)-.4 E .706 +(there are rumors of ports to DOS and W)72 373.8 R(indo)-.4 E .706 (ws NT)-.25 F 5.706(.P)-.74 G .706(orts to)-5.706 F F5(UNIX)3.206 E F3 (-lik)A 3.206(es)-.1 G .706(ystems such as QNX and Minix)-3.206 F -(are part of the distrib)72 373.8 Q(ution.)-.2 E .405 -(The original author of Bash w)97 389.4 R .405(as Brian F)-.1 F .405 +(are part of the distrib)72 385.8 Q(ution.)-.2 E .405 +(The original author of Bash w)97 401.4 R .405(as Brian F)-.1 F .405 (ox, an emplo)-.15 F .405(yee of the Free Softw)-.1 F .405(are F)-.1 F -2.905(oundation. The)-.15 F(cur)2.905 E(-)-.2 E(rent de)72 401.4 Q -.15 +2.905(oundation. The)-.15 F(cur)2.905 E(-)-.2 E(rent de)72 413.4 Q -.15 (ve)-.25 G(loper and maintainer is Chet Rame).15 E 1.3 -.65(y, a v)-.15 H(olunteer who w).45 E(orks at Case W)-.1 E(estern Reserv)-.8 E 2.5(eU) -.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(.)-.65 E F2 2.5(2. What')72 -425.4 R 2.5(sP)-.37 G(OSIX, anyway?)-2.5 E F1(POSIX)97 441 Q F3 .343 +437.4 R 2.5(sP)-.37 G(OSIX, anyway?)-2.5 E F1(POSIX)97 453 Q F3 .343 (is a name originally coined by Richard Stallman for a f)2.843 F .343 -(amily of open system standards based)-.1 F(on)72 453 Q F5(UNIX)3.24 E +(amily of open system standards based)-.1 F(on)72 465 Q F5(UNIX)3.24 E F3 5.74(.T)C .74(here are a number of aspects of)-5.74 F F5(UNIX)3.24 E F3 .74(under consideration for standardization, from the basic)3.24 F -.192(system services at the system call and C library le)72 465 R -.15 +.192(system services at the system call and C library le)72 477 R -.15 (ve)-.25 G 2.692(lt).15 G 2.692(oa)-2.692 G .192 (pplications and tools to system administration and)-2.692 F 2.5 -(management. Each)72 477 R(area of standardization is assigned to a w) +(management. Each)72 489 R(area of standardization is assigned to a w) 2.5 E(orking group in the 1003 series.)-.1 E 2.814 -(The POSIX Shell and Utilities standard has been de)97 492.6 R -.15(ve) +(The POSIX Shell and Utilities standard has been de)97 504.6 R -.15(ve) -.25 G 2.814(loped by IEEE W).15 F 2.813(orking Group 1003.2)-.8 F .254 (\(POSIX.2\).\210 It concentrates on the command interpreter interf)72 -504.6 R .253(ace and utility programs commonly e)-.1 F -.15(xe)-.15 G -(cuted).15 E 1.112(from the command line or by other programs.)72 516.6 +516.6 R .253(ace and utility programs commonly e)-.1 F -.15(xe)-.15 G +(cuted).15 E 1.112(from the command line or by other programs.)72 528.6 R 1.112(An initial v)6.112 F 1.113 (ersion of the standard has been appro)-.15 F -.15(ve)-.15 G 3.613(da) -.15 G(nd)-3.613 E .365(published by the IEEE, and w)72 528.6 R .365 +.15 G(nd)-3.613 E .365(published by the IEEE, and w)72 540.6 R .365 (ork is currently underw)-.1 F .365(ay to update it.)-.1 F .365 (There are four primary areas of w)5.365 F(ork)-.1 E -(in the 1003.2 standard:)72 540.6 Q 21.5<8341>72 556.2 S .835 +(in the 1003.2 standard:)72 552.6 Q 21.5<8341>72 568.2 S .835 (spects of the shell')-21.5 F 3.335(ss)-.55 G .835 (yntax and command language.)-3.335 F 3.335(An)5.835 G .835 (umber of special b)-3.335 F .835(uiltins such as)-.2 F F2(cd)3.335 E F3 -(and)3.335 E F2(exec)97 568.2 Q F3 .545(are being speci\214ed as part o\ +(and)3.335 E F2(exec)97 580.2 Q F3 .545(are being speci\214ed as part o\ f the shell, since their functionality usually cannot be implemented) -3.046 F(by a separate e)97 580.2 Q -.15(xe)-.15 G(cutable;).15 E 21.5 -<8341>72 595.8 S .926 +3.046 F(by a separate e)97 592.2 Q -.15(xe)-.15 G(cutable;).15 E 21.5 +<8341>72 607.8 S .926 (set of utilities to be called by shell scripts and applications.) -18.074 F .927(Examples are programs lik)5.927 F(e)-.1 E F1 .927 -(sed, tr)3.427 F(,)-1.11 E F3(and)97 607.8 Q F1(awk.)2.797 E F3 .297 +(sed, tr)3.427 F(,)-1.11 E F3(and)97 619.8 Q F1(awk.)2.797 E F3 .297 (Utilities commonly implemented as shell b)5.297 F .296 (uiltins are described in this section, such as)-.2 F F2(test)2.796 E F3 -(and)97 619.8 Q F2(kill)3.422 E F3 5.922(.A)C 3.422(ne)-5.922 G .922 +(and)97 631.8 Q F2(kill)3.422 E F3 5.922(.A)C 3.422(ne)-5.922 G .922 (xpansion of this section')-3.572 F 3.423(ss)-.55 G .923 (cope, termed the User Portability Extension, or UPE, has)-3.423 F -(standardized interacti)97 631.8 Q .3 -.15(ve p)-.25 H(rograms such as) -.15 E F1(vi)2.5 E F3(and)2.5 E F1(mailx;)2.5 E F3 21.5<8341>72 647.4 S +(standardized interacti)97 643.8 Q .3 -.15(ve p)-.25 H(rograms such as) +.15 E F1(vi)2.5 E F3(and)2.5 E F1(mailx;)2.5 E F3 21.5<8341>72 659.4 S .288(group of functional interf)-18.712 F .287(aces to services pro)-.1 F .287(vided by the shell, such as the traditional)-.15 F/F6 10 -/Courier@0 SF(system\(\))2.787 E F3 3.289(Cl)97 659.4 S .789 +/Courier@0 SF(system\(\))2.787 E F3 3.289(Cl)97 671.4 S .789 (ibrary function.)-3.289 F .789(There are functions to perform shell w) 5.789 F .789(ord e)-.1 F .79(xpansions, perform \214lename e)-.15 F -(xpan-)-.15 E .324(sion \()97 671.4 R F1(globbing)A F3 .324 -(\), obtain v)B .323(alues of POSIX.2 system con\214guration v)-.25 F -.323(ariables, retrie)-.25 F .623 -.15(ve v)-.25 H .323(alues of en)-.1 -F(viron-)-.4 E(ment v)97 683.4 Q(ariables \()-.25 E F6(getenv\(\))A F3 -(\), and other services;).833 E .32 LW 144 691.4 72 691.4 DL F4 -(*An earlier v)72 703.2 Q +(xpan-)-.15 E 3.624(sion \()97 683.4 R F1(globbing)A F3 3.624 +(\), obtain v)B 3.624(alues of POSIX.2 system con\214guration v)-.25 F +3.623(ariables, retrie)-.25 F 3.923 -.15(ve v)-.25 H 3.623(alues of)-.1 +F .32 LW 144 691.4 72 691.4 DL F4(*An earlier v)72 703.2 Q (ersion of this article appeared in The Linux Journal.)-.12 E(\210IEEE,) 72 715 Q/F7 8/Times-Italic@0 SF 1.231(IEEE Standar)3.231 F 3.231(df) -.296 G 1.231(or Information T)-3.231 F(ec)-.736 E(hnolo)-.12 E 1.231 (gy -- P)-.08 F 1.231(ortable Oper)-.64 F 1.232 (ating System Interface \(POSIX\) P)-.12 F 1.232(art 2:)-.64 F -(Shell and Utilities)72 725 Q F4 2(,1)C(992.)-2 E EP +(Shell and Utilities)72 725 Q F4 2(,1)C(992.)-2 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-2-)282.17 48 Q 21.5<8341>72 84 S -(suite of \231de)-19 E -.15(ve)-.25 G(lopment\232 utilities such as).15 -E/F1 10/Times-Italic@0 SF(c89)2.5 E F0(\(the POSIX.2 v)2.5 E(ersion of) --.15 E F1(cc)2.5 E F0(\), and)A F1(yacc.)2.5 E F0 .483 -(Bash is concerned with the aspects of the shell')97 99.6 R 2.983(sb) +/F0 10/Times-Roman@0 SF(-2-)282.17 48 Q(en)97 84 Q(vironment v)-.4 E +(ariables \()-.25 E/F1 10/Courier@0 SF(getenv\(\))A F0 +(\), and other services;).833 E 21.5<8341>72 99.6 S(suite of \231de)-19 +E -.15(ve)-.25 G(lopment\232 utilities such as).15 E/F2 10 +/Times-Italic@0 SF(c89)2.5 E F0(\(the POSIX.2 v)2.5 E(ersion of)-.15 E +F2(cc)2.5 E F0(\), and)A F2(yacc.)2.5 E F0 .483 +(Bash is concerned with the aspects of the shell')97 115.2 R 2.983(sb) -.55 G(eha)-2.983 E .484(vior de\214ned by POSIX.2.)-.2 F .484 (The shell command)5.484 F 1.439 (language has of course been standardized, including the basic \215o)72 -111.6 R 3.938(wc)-.25 G 1.438(ontrol and program e)-3.938 F -.15(xe)-.15 +127.2 R 3.938(wc)-.25 G 1.438(ontrol and program e)-3.938 F -.15(xe)-.15 G 1.438(cution con-).15 F 1.284 -(structs, I/O redirection and pipelining, ar)72 123.6 R 1.284 +(structs, I/O redirection and pipelining, ar)72 139.2 R 1.284 (gument handling, v)-.18 F 1.284(ariable e)-.25 F 1.284 -(xpansion, and quoting.)-.15 F(The)6.285 E F1(special)3.785 E F0 -.2(bu) -72 135.6 S .676 +(xpansion, and quoting.)-.15 F(The)6.285 E F2(special)3.785 E F0 -.2(bu) +72 151.2 S .676 (iltins, which must be implemented as part of the shell to pro).2 F .676 (vide the desired functionality)-.15 F 3.176(,a)-.65 G .676 -(re speci\214ed)-3.176 F .7(as being part of the shell; e)72 147.6 R .7 -(xamples of these are)-.15 F/F2 10/Times-Bold@0 SF -2.3 -.15(ev a)3.201 -H(l).15 E F0(and)3.201 E F2(export)3.201 E F0 5.701(.O)C .701 +(re speci\214ed)-3.176 F .7(as being part of the shell; e)72 163.2 R .7 +(xamples of these are)-.15 F/F3 10/Times-Bold@0 SF -2.3 -.15(ev a)3.201 +H(l).15 E F0(and)3.201 E F3(export)3.201 E F0 5.701(.O)C .701 (ther utilities appear in the sections of)-5.701 F .256(POSIX.2 not de) -72 159.6 R -.2(vo)-.25 G .256(ted to the shell which are commonly \(and\ +72 175.2 R -.2(vo)-.25 G .256(ted to the shell which are commonly \(and\ in some cases must be\) implemented as b).2 F(uiltin)-.2 E .213 -(commands, such as)72 171.6 R F2 -.18(re)2.713 G(ad).18 E F0(and)2.713 E -F2(test)2.713 E F0 5.213(.P)C .213 +(commands, such as)72 187.2 R F3 -.18(re)2.713 G(ad).18 E F0(and)2.713 E +F3(test)2.713 E F0 5.213(.P)C .213 (OSIX.2 also speci\214es aspects of the shell')-5.213 F 2.713(si)-.55 G (nteracti)-2.713 E .513 -.15(ve b)-.25 H(eha).15 E .214(vior as part)-.2 F .598(of the UPE, including job control and command line editing.)72 -183.6 R .598(Interestingly enough, only)5.598 F F1(vi)3.098 E F0 .598 -(-style line edit-)B(ing commands ha)72 195.6 Q .3 -.15(ve b)-.2 H -(een standardized;).15 E F1(emacs)2.5 E F0 +199.2 R .598(Interestingly enough, only)5.598 F F2(vi)3.098 E F0 .598 +(-style line edit-)B(ing commands ha)72 211.2 Q .3 -.15(ve b)-.2 H +(een standardized;).15 E F2(emacs)2.5 E F0 (editing commands were left out due to objections.)2.5 E 1.128 (While POSIX.2 includes much of what the shell has traditionally pro)97 -211.2 R 1.129(vided, some important things)-.15 F(ha)72 223.2 Q .344 +226.8 R 1.129(vided, some important things)-.15 F(ha)72 238.8 Q .344 -.15(ve b)-.2 H .044(een omitted as being \231be).15 F .044 (yond its scope.)-.15 F 5.043<9a54>-.7 G .043 (here is, for instance, no mention of a dif)-5.043 F .043 -(ference between a)-.25 F F1(lo)72 235.2 Q(gin)-.1 E F0 1.445 +(ference between a)-.25 F F2(lo)72 250.8 Q(gin)-.1 E F0 1.445 (shell and an)3.945 F 3.945(yo)-.15 G 1.445(ther interacti)-3.945 F 1.745 -.15(ve s)-.25 H 1.446 (hell \(since POSIX.2 does not specify a login program\).).15 F 1.446 (No \214x)6.446 F(ed)-.15 E(startup \214les are de\214ned, either \255 \ -the standard does not mention)72 247.2 Q F1(.pr)2.5 E(o\214le)-.45 E F0 -(.)A F2 2.5(3. Basic)72 271.2 R(Bash featur)2.5 E(es)-.18 E F0 1.448 -(Since the Bourne shell pro)97 286.8 R 1.448 +the standard does not mention)72 262.8 Q F2(.pr)2.5 E(o\214le)-.45 E F0 +(.)A F3 2.5(3. Basic)72 286.8 R(Bash featur)2.5 E(es)-.18 E F0 1.448 +(Since the Bourne shell pro)97 302.4 R 1.448 (vides Bash with most of its philosophical underpinnings, Bash inherits) --.15 F .64(most of its features and functionality from sh.)72 298.8 R +-.15 F .64(most of its features and functionality from sh.)72 314.4 R .641(Bash implements all of the traditional sh \215o)5.641 F 3.141(wc) --.25 G .641(ontrol con-)-3.141 F .8(structs \()72 310.8 R F1(for)A F0(,) -A F1(if)3.3 E F0(,)A F1(while)3.3 E F0 3.3(,e)C 3.3(tc.\). All)-3.3 F +-.25 G .641(ontrol con-)-3.141 F .8(structs \()72 326.4 R F2(for)A F0(,) +A F2(if)3.3 E F0(,)A F2(while)3.3 E F0 3.3(,e)C 3.3(tc.\). All)-3.3 F .799(of the Bourne shell b)3.3 F .799 (uiltins, including those not speci\214ed in the POSIX.2)-.2 F .536 -(standard, appear in Bash.)72 322.8 R(Shell)5.536 E F1(functions)3.036 E +(standard, appear in Bash.)72 338.4 R(Shell)5.536 E F2(functions)3.036 E F0 3.036(,i)C .536(ntroduced in the SVR2 v)-3.036 F .537 (ersion of the Bourne shell, are similar)-.15 F .779 -(to shell scripts, b)72 334.8 R .779 +(to shell scripts, b)72 350.4 R .779 (ut are de\214ned using a special syntax and are e)-.2 F -.15(xe)-.15 G .779(cuted in the same process as the calling).15 F 2.841(shell. Bash)72 -346.8 R .341(has shell functions which beha)2.841 F .641 -.15(ve i)-.2 H +362.4 R .341(has shell functions which beha)2.841 F .641 -.15(ve i)-.2 H 2.841(naf).15 G .341(ashion upw)-2.941 F .342 (ard-compatible with sh functions.)-.1 F .342(There are)5.342 F 1.447 -(certain shell v)72 358.8 R 1.446 +(certain shell v)72 374.4 R 1.446 (ariables that Bash interprets in the same w)-.25 F 1.446 -(ay as sh, such as)-.1 F F2(PS1)3.946 E F0(,)A F2(IFS)3.946 E F0 3.946 -(,a)C(nd)-3.946 E F2 -.74(PA)3.946 G(TH)-.21 E F0 6.446(.B)C(ash)-6.446 -E 1.423(implements essentially the same grammar)72 370.8 R 3.924(,p)-.4 +(ay as sh, such as)-.1 F F3(PS1)3.946 E F0(,)A F3(IFS)3.946 E F0 3.946 +(,a)C(nd)-3.946 E F3 -.74(PA)3.946 G(TH)-.21 E F0 6.446(.B)C(ash)-6.446 +E 1.423(implements essentially the same grammar)72 386.4 R 3.924(,p)-.4 G 1.424(arameter and v)-3.924 F 1.424(ariable e)-.25 F 1.424 (xpansion semantics, redirection, and)-.15 F 1.06 -(quoting as the Bourne shell.)72 382.8 R 1.06(Where dif)6.06 F 1.06 +(quoting as the Bourne shell.)72 398.4 R 1.06(Where dif)6.06 F 1.06 (ferences appear between the POSIX.2 standard and traditional sh)-.25 F -(beha)72 394.8 Q(vior)-.2 E 2.5(,B)-.4 G(ash follo)-2.5 E(ws POSIX.)-.25 -E 1.608(The K)97 410.4 R 1.608(orn Shell \()-.35 F F2(ksh)A F0 4.108 -(\)i)C 4.108(sad)-4.108 G 1.608 -(escendent of the Bourne shell written at A)-4.108 F 1.609 -(T&T Bell Laboratories by)-1.11 F(Da)72 422.4 Q 1.059(vid K)-.2 F 3.559 -(orn\207. It)-.35 F(pro)3.559 E 1.059 +(beha)72 410.4 Q(vior)-.2 E 2.5(,B)-.4 G(ash follo)-2.5 E(ws POSIX.)-.25 +E 1.608(The K)97 426 R 1.608(orn Shell \()-.35 F F3(ksh)A F0 4.108(\)i)C +4.108(sad)-4.108 G 1.608(escendant of the Bourne shell written at A) +-4.108 F 1.609(T&T Bell Laboratories by)-1.11 F(Da)72 438 Q 1.059(vid K) +-.2 F 3.559(orn\207. It)-.35 F(pro)3.559 E 1.059 (vides a number of useful features that POSIX and Bash ha)-.15 F 1.359 -.15(ve a)-.2 H 3.558(dopted. Man).15 F 3.558(yo)-.15 G 3.558(ft)-3.558 -G(he)-3.558 E(interacti)72 434.4 Q 1.312 -.15(ve f)-.25 H 1.012 +G(he)-3.558 E(interacti)72 450 Q 1.312 -.15(ve f)-.25 H 1.012 (acilities in POSIX.2 ha).05 F 1.312 -.15(ve t)-.2 H 1.012 (heir roots in the ksh: for e).15 F 1.013 -(xample, the POSIX and ksh job control)-.15 F -.1(fa)72 446.4 S .513 +(xample, the POSIX and ksh job control)-.15 F -.1(fa)72 462 S .513 (cilities are nearly identical. Bash includes features from the K).1 F .513(orn Shell for both interacti)-.35 F .813 -.15(ve u)-.25 H .513 -(se and shell).15 F 3.905(programming. F)72 458.4 R 1.405 +(se and shell).15 F 3.905(programming. F)72 474 R 1.405 (or programming, Bash pro)-.15 F 1.405(vides v)-.15 F 1.405 -(ariables such as)-.25 F F2(RANDOM)3.905 E F0(and)3.905 E F2(REPL)3.905 -E(Y)-.92 E F0 3.905(,t)C(he)-3.905 E F2(typeset)3.905 E F0 -.2(bu)72 -470.4 S .398(iltin, the ability to remo).2 F .698 -.15(ve s)-.15 H .398 +(ariables such as)-.25 F F3(RANDOM)3.905 E F0(and)3.905 E F3(REPL)3.905 +E(Y)-.92 E F0 3.905(,t)C(he)-3.905 E F3(typeset)3.905 E F0 -.2(bu)72 486 +S .398(iltin, the ability to remo).2 F .698 -.15(ve s)-.15 H .398 (ubstrings from v).15 F .398 -(ariables based on patterns, and shell arithmetic.)-.25 F F2(RANDOM) -5.397 E F0 -.15(ex)72 482.4 S .489 +(ariables based on patterns, and shell arithmetic.)-.25 F F3(RANDOM) +5.397 E F0 -.15(ex)72 498 S .489 (pands to a random number each time it is referenced; assigning a v).15 -F .49(alue to)-.25 F F2(RANDOM)2.99 E F0 .49(seeds the random)2.99 F -.055(number generator)72 494.4 R(.)-.55 E F2(REPL)5.055 E(Y)-.92 E F0 -.054(is the def)2.554 F .054(ault v)-.1 F .054(ariable used by the)-.25 -F F2 -.18(re)2.554 G(ad).18 E F0 -.2(bu)2.554 G .054(iltin when no v).2 -F .054(ariable names are sup-)-.25 F .742(plied as ar)72 506.4 R 3.243 -(guments. The)-.18 F F2(typeset)3.243 E F0 -.2(bu)3.243 G .743 +F .49(alue to)-.25 F F3(RANDOM)2.99 E F0 .49(seeds the random)2.99 F +.055(number generator)72 510 R(.)-.55 E F3(REPL)5.055 E(Y)-.92 E F0 .054 +(is the def)2.554 F .054(ault v)-.1 F .054(ariable used by the)-.25 F F3 +-.18(re)2.554 G(ad).18 E F0 -.2(bu)2.554 G .054(iltin when no v).2 F +.054(ariable names are sup-)-.25 F .742(plied as ar)72 522 R 3.243 +(guments. The)-.18 F F3(typeset)3.243 E F0 -.2(bu)3.243 G .743 (iltin is used to de\214ne v).2 F .743(ariables and gi)-.25 F 1.043 -.15 -(ve t)-.25 H .743(hem attrib).15 F .743(utes such as)-.2 F F2 -.18(re) -3.243 G(ad-).18 E(only)72 518.4 Q F0 5.512(.B)C .512 -(ash arithmetic allo)-5.512 F .512(ws the e)-.25 F -.25(va)-.25 G .511 -(luation of an e).25 F .511 -(xpression and the substitution of the result.)-.15 F .511(Shell v)5.511 -F(ari-)-.25 E .222 -(ables may be used as operands, and the result of an e)72 530.4 R .222 +(ve t)-.25 H .743(hem attrib).15 F .743(utes such as)-.2 F F3 -.18(re) +3.243 G(ad-).18 E(only)72 534 Q F0 5.512(.B)C .512(ash arithmetic allo) +-5.512 F .512(ws the e)-.25 F -.25(va)-.25 G .511(luation of an e).25 F +.511(xpression and the substitution of the result.)-.15 F .511(Shell v) +5.511 F(ari-)-.25 E .222 +(ables may be used as operands, and the result of an e)72 546 R .222 (xpression may be assigned to a v)-.15 F 2.722(ariable. Nearly)-.25 F -.222(all of)2.722 F(the operators from the C language are a)72 542.4 Q --.25(va)-.2 G(ilable, with the same precedence rules:).25 E/F3 10 -/Courier@0 SF 6($e)97 560.4 S(cho $\(\(3 + 5 * 32\)\))-6 E(163)97 572.4 -Q F0 -.15(Fo)72 594 S 3.24(ri).15 G(nteracti)-3.24 E 1.04 -.15(ve u)-.25 -H .74(se, Bash implements ksh-style aliases and b).15 F .74 -(uiltins such as)-.2 F F2(fc)3.24 E F0 .74(\(discussed belo)3.24 F .74 -(w\) and)-.25 F F2(jobs)3.24 E F0(.)A .291(Bash aliases allo)72 606 R -2.791(was)-.25 G .291(tring to be substituted for a command name.)-2.791 -F(The)5.291 E 2.791(yc)-.15 G .291(an be used to create a mnemonic) --2.791 F .568(for a)72 618 R/F4 9/Times-Roman@0 SF(UNIX)3.068 E F0 .568 -(command name \()3.068 F F3 .568(alias del=rm)B F0 .568(\), to e)B .567 +.222(all of)2.722 F(the operators from the C language are a)72 558 Q +-.25(va)-.2 G(ilable, with the same precedence rules:).25 E F1 6($e)97 +576 S(cho $\(\(3 + 5 * 32\)\))-6 E(163)97 588 Q F0 -.15(Fo)72 609.6 S +3.24(ri).15 G(nteracti)-3.24 E 1.04 -.15(ve u)-.25 H .74 +(se, Bash implements ksh-style aliases and b).15 F .74(uiltins such as) +-.2 F F3(fc)3.24 E F0 .74(\(discussed belo)3.24 F .74(w\) and)-.25 F F3 +(jobs)3.24 E F0(.)A .291(Bash aliases allo)72 621.6 R 2.791(was)-.25 G +.291(tring to be substituted for a command name.)-2.791 F(The)5.291 E +2.791(yc)-.15 G .291(an be used to create a mnemonic)-2.791 F .568 +(for a)72 633.6 R/F4 9/Times-Roman@0 SF(UNIX)3.068 E F0 .568 +(command name \()3.068 F F1 .568(alias del=rm)B F0 .568(\), to e)B .567 (xpand a single w)-.15 F .567(ord to a comple)-.1 F 3.067(xc)-.15 G .567 -(ommand \()-3.067 F F3(alias)A .255 -(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 630 R F0 .255 -(\), or to ensure that a command)B(is in)72 642 Q -.2(vo)-.4 G -.1(ke).2 -G 2.5(dw).1 G(ith a basic set of options \()-2.5 E F3 -(alias ls="/bin/ls -F")A F0(\).)A .293(The C shell \()97 657.6 R F2(csh) +(ommand \()-3.067 F F1(alias)A .255 +(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 645.6 R F0 .255 +(\), or to ensure that a command)B(is in)72 657.6 Q -.2(vo)-.4 G -.1(ke) +.2 G 2.5(dw).1 G(ith a basic set of options \()-2.5 E F1 +(alias ls="/bin/ls -F")A F0(\).)A .293(The C shell \()97 673.2 R F3(csh) A F0 .293(\)\207, originally written by Bill Jo)B 2.792(yw)-.1 G .292 (hile at Berk)-2.792 F(ele)-.1 E 1.592 -.65(y, i)-.15 H 2.792(sw).65 G .292(idely used and quite popular)-2.792 F 1.499(for its interacti)72 -669.6 R 1.799 -.15(ve f)-.25 H 3.999(acilities. Bash).05 F 1.499 +685.2 R 1.799 -.15(ve f)-.25 H 3.999(acilities. Bash).05 F 1.499 (includes a csh-compatible history e)3.999 F 1.5 -(xpansion mechanism \(\231! history\232\),)-.15 F .019(brace e)72 681.6 -R .018(xpansion, access to a stack of directories via the)-.15 F F2 -(pushd)2.518 E F0(,)A F2(popd)2.518 E F0 2.518(,a)C(nd)-2.518 E F2(dirs) +(xpansion mechanism \(\231! history\232\),)-.15 F .019(brace e)72 697.2 +R .018(xpansion, access to a stack of directories via the)-.15 F F3 +(pushd)2.518 E F0(,)A F3(popd)2.518 E F0 2.518(,a)C(nd)-2.518 E F3(dirs) 2.518 E F0 -.2(bu)2.518 G .018(iltins, and tilde e).2 F(xpansion,)-.15 E -1.293(to generate users' home directories.)72 693.6 R -.35(Ti)6.294 G +1.293(to generate users' home directories.)72 709.2 R -.35(Ti)6.294 G 1.294(lde e).35 F 1.294(xpansion has also been adopted by both the K) --.15 F 1.294(orn Shell and)-.35 F .32 LW 144 708.2 72 708.2 DL/F5 8 -/Times-Roman@0 SF(\207Morris Bolsk)72 720 Q 2(ya)-.12 G(nd Da)-2 E +-.15 F 1.294(orn Shell and)-.35 F .32 LW 144 717.2 72 717.2 DL/F5 8 +/Times-Roman@0 SF(\207Morris Bolsk)72 727.2 Q 2(ya)-.12 G(nd Da)-2 E (vid K)-.16 E(orn,)-.28 E/F6 8/Times-Italic@0 SF(The K)2 E (ornShell Command and Pr)-.32 E -.08(og)-.36 G -.12(ra).08 G (mming Langua).12 E -.08(ge)-.08 G F5 2(,P).08 G(rentice Hall, 1989.)-2 -E EP +E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -520,10 +543,10 @@ tput of the command contained within the parentheses, with)-.15 F .664 (xpansion, the ability to de\214ne a v)-.15 F(ariable)-.25 E .283 (and a function with the same name, local v)72 398.4 R .282 (ariables in shell functions, the ability to enable and disable indi-) --.25 F .547(vidual b)72 410.4 R .547 -(uiltins or write a function to replace a b)-.2 F .547 -(uiltin, or a means to e)-.2 F .547 -(xport a shell function to a child pro-)-.15 F(cess.)72 422.4 Q .32 +-.25 F 1.532(vidual b)72 410.4 R 1.532 +(uiltins or write a function to replace a b)-.2 F 1.533 +(uiltin, or a means to e)-.2 F 1.533(xport a shell function to a child) +-.15 F(process.)72 422.4 Q .32 (Bash has closed a long-standing shell security hole by not using the)97 438 R F1($IFS)2.82 E F0 -.25(va)2.82 G .32(riable to split each w).25 F (ord)-.1 E 1.254(read by the shell, b)72 450 R 1.254 @@ -580,11 +603,11 @@ E F1($ENV)2.842 E F0 2.841(,i)C 2.841(fs)-2.841 G .341 (on out here.)-.1 F(Interestingly)5.158 E 2.658(,t)-.65 G .158(he ne) -2.658 F .159(xt release of ksh will change to reading)-.15 F F1($ENV) 2.659 E .32 LW 144 705.2 72 705.2 DL/F4 8/Times-Roman@0 SF .559 -(\207Bill Jo)72 717 R 1.599 -.52(y, A)-.08 H 2.559(nI).52 G .559 +(\207Bill Jo)72 715.2 R 1.599 -.52(y, A)-.08 H 2.559(nI).52 G .559 (ntroduction to the C Shell,)-2.559 F/F5 8/Times-Italic@0 SF .558 (UNIX User')2.558 F 2.558(sS)-.32 G .558(upplementary Documents)-2.558 F F4 2.558(,U)C(ni)-2.558 E -.12(ve)-.2 G .558(rsity of California at).12 -F(Berk)72 727 Q(ele)-.08 E 1.04 -.52(y, 1)-.12 H(986.).52 E EP +F(Berk)72 725.2 Q(ele)-.08 E 1.04 -.52(y, 1)-.12 H(986.).52 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -696,7 +719,7 @@ R -.15(ey)-.1 G 1.196(map to which subsequent k).15 F 1.496 -.15(ey b) -3.031 G -.15(ve)-3.281 G 3.031(nw).15 G .531 (hat happens when readline w)-3.031 F .531(ants to ring the terminal') -.1 F 3.03(sb)-.55 G 3.03(ell. All)-3.03 F .53(of these v)3.03 F -(ariables)-.25 E EP +(ariables)-.25 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -724,9 +747,9 @@ S(repare to type a quoted word -- insert open and close double)-6 E 6 249.6 Q($endif)97 261.6 Q F0 .322(There is a readline command to re-rea\ d the \214le, so users can edit the \214le, change some bindings, and b\ e)72 283.2 R(gin)-.15 E(to use them almost immediately)72 295.2 Q(.)-.65 -E .851(Bash implements the)97 310.8 R F1(bind)3.351 E F0 -.2(bu)3.351 G -.851(iltin for more dyamic control of readline than the startup \214le \ -permits.).2 F F1(Bind)72 322.8 Q F0 .25(is used in se)2.75 F -.15(ve) +E .518(Bash implements the)97 310.8 R F1(bind)3.018 E F0 -.2(bu)3.018 G +.518(iltin for more dynamic control of readline than the startup \214le\ + permits.).2 F F1(Bind)72 322.8 Q F0 .25(is used in se)2.75 F -.15(ve) -.25 G .25(ral w).15 F 2.75(ays. In)-.1 F/F3 10/Times-Italic@0 SF(list) 2.75 E F0 .25(mode, it can display the current k)2.75 F .55 -.15(ey b) -.1 H .25(indings, list all the readline edit-).15 F .149(ing directi)72 @@ -781,11 +804,11 @@ lly quite good at determining what type of completion to attempt.)72 (and the readline library)72 570 R 5.077(.B)-.65 G .077(ash pro)-5.077 F .077(vides v)-.15 F .077(ariables \()-.25 F F1($HISTFILE)A F0(,)A F1 ($HISTSIZE)2.577 E F0 2.577(,a)C(nd)-2.577 E F1($HISTCONTR)2.577 E(OL) --.3 E F0 2.577(\)a)C(nd)-2.577 E(the)72 582 Q F1(history)2.89 E F0(and) -2.89 E F1(fc)2.89 E F0 -.2(bu)2.89 G .39 -(iltins to manipulate the history list.).2 F .391(The v)5.391 F .391 -(alue of)-.25 F F1($HISTFILE)2.891 E F0 .391(specifes the \214le where) -2.891 F .49(Bash writes the command history on e)72 594 R .489 +-.3 E F0 2.577(\)a)C(nd)-2.577 E(the)72 582 Q F1(history)2.759 E F0(and) +2.759 E F1(fc)2.759 E F0 -.2(bu)2.759 G .259 +(iltins to manipulate the history list.).2 F .26(The v)5.259 F .26 +(alue of)-.25 F F1($HISTFILE)2.76 E F0 .26(speci\214es the \214le where) +2.76 F .49(Bash writes the command history on e)72 594 R .489 (xit and reads it on startup.)-.15 F F1($HISTSIZE)5.489 E F0 .489 (is used to limit the number)2.989 F .642(of commands sa)72 606 R -.15 (ve)-.2 G 3.142(di).15 G 3.142(nt)-3.142 G .642(he history)-3.142 F(.) @@ -820,7 +843,7 @@ or a string typed by the user)72 690 R(.)-.55 E(Finally)72 702 Q 2.535 -.15(xe)-.15 G 1.022(cution of pre).15 F 1.022(vious commands v)-.25 F 1.022(ery similar to csh \(\231bang history\232, so)-.15 F (called because the e)72 726 Q -(xclamation point introduces a history substitution\):)-.15 E EP +(xclamation point introduces a history substitution\):)-.15 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -903,7 +926,7 @@ e)-.15 F .104(when opened.)72 648 R .103 (xpansion. Process)-.15 F .103(substitution can be used to com-)2.603 F (pare the outputs of tw)72 660 Q 2.5(od)-.1 G(if)-2.5 E(ferent v)-.25 E (ersions of an application as part of a re)-.15 E(gression test:)-.15 E -F1 6($c)97 678 S(mp <\(old_prog\) <\(new_prog\))-6 E EP +F1 6($c)97 678 S(mp <\(old_prog\) <\(new_prog\))-6 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -998,7 +1021,7 @@ G .367 E(/usr/local/bin)97 624 Q 6($/)97 636 S(bin/pwd)-6 E (/net/share/sun4/local/bin)97 648 Q 6($c)97 660 S 6(d.)-6 G(.)-6 E 6($p) 97 672 S(wd)-6 E(/usr/local)97 684 Q 6($/)97 696 S(bin/pwd)-6 E -(/net/share/sun4/local)97 708 Q 6($c)97 720 S 6(d.)-6 G(.)-6 E EP +(/net/share/sun4/local)97 708 Q 6($c)97 720 S 6(d.)-6 G(.)-6 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1097,7 +1120,7 @@ such)-2.931 F .136 (nting the use of these sequences in earlier v).15 F .559(ersions, b) -.15 F .559(ut the readline redisplay algorithm assumed)-.2 F (each character occupied ph)72 720 Q(ysical screen space and w)-.05 E -(ould wrap lines prematurely)-.1 E(.)-.65 E EP +(ould wrap lines prematurely)-.1 E(.)-.65 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1244,7 +1267,7 @@ F F1(HISTIGNORE)4.286 E F0 4.285(,w)C 1.785(hich w)-4.285 F 1.785 (mentation to be printed by the)72 697.2 R F1(help)3.851 E F0 1.351 (command \(possibly present in the shared object as well\).)3.851 F 1.351(It w)6.351 F(ould)-.1 E(manage the details of e)72 709.2 Q -(xtending the internal table of b)-.15 E(uiltins.)-.2 E EP +(xtending the internal table of b)-.15 E(uiltins.)-.2 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP @@ -1256,14 +1279,14 @@ BP (command, which prints)3.292 F 1.412(the v)72 96 R 1.412 (alues of system con\214guration v)-.25 F 1.411 (ariables de\214ned by POSIX.2, and a)-.25 F F1(diso)3.911 E(wn)-.1 E F0 --.2(bu)3.911 G 1.411(iltin, which causes a).2 F 1.347 -(shell running with job control acti)72 108 R 1.647 -.15(ve t)-.25 H -3.847<6f99>.15 G(for)-3.847 E 1.347 -(get about\232 one or more background jobs in its internal jobs)-.18 F -3.465(table. Using)72 120 R F1(getconf)3.465 E F0 3.465(,f)C .965(or e) --3.465 F .965(xample, a user could retrie)-.15 F 1.264 -.15(ve a v)-.25 -H .964(alue for)-.1 F F1($P)3.464 E -.95(AT)-.74 G(H).95 E F0 .964 -(guaranteed to \214nd all of the)3.464 F .884 +-.2(bu)3.911 G 1.411(iltin, which causes a).2 F .547 +(shell running with job control acti)72 108 R .847 -.15(ve t)-.25 H +3.047<6f99>.15 G(for)-3.047 E .547 +(get about\232 one or more background jobs in its internal jobs ta-)-.18 +F 3.866(ble. Using)72 120 R F1(getconf)3.866 E F0 3.866(,f)C 1.366(or e) +-3.866 F 1.366(xample, a user could retrie)-.15 F 1.666 -.15(ve a v)-.25 +H 1.365(alue for)-.1 F F1($P)3.865 E -.95(AT)-.74 G(H).95 E F0 1.365 +(guaranteed to \214nd all of the)3.865 F .884 (POSIX standard utilities, or \214nd out ho)72 132 R 3.385(wl)-.25 G .885 (ong \214lenames may be in the \214le system containing a speci\214ed) @@ -1368,7 +1391,7 @@ E F0(for more information.)2.5 E .694(Bash is also distrib)97 656.4 R -.15(ve)-.25 G .948(ral Linux distrib).15 F .948 (utions \(more about the dif)-.2 F .948 (ference in a moment\), and as contrib)-.25 F(uted)-.2 E .32 LW 144 -676.4 72 676.4 DL/F5 8/Times-Roman@0 SF .781 +678.2 72 678.2 DL/F5 8/Times-Roman@0 SF .781 (\207S. R. Bourne, \231UNIX T)72 688.2 R .781(ime-Sharing System:)-.28 F .781(The UNIX Shell\232,)4.781 F/F6 8/Times-Italic@0 SF .78 (Bell System T)2.78 F(ec)-.736 E .78(hnical J)-.12 F(ournal)-.2 E F5 @@ -1377,7 +1400,8 @@ E F0(for more information.)2.5 E .694(Bash is also distrib)97 656.4 R (f, \231Rc \255 A Shell for Plan 9 and)-.2 F/F7 7/Times-Roman@0 SF(UNIX) 2.432 E F5(systems\232,)2.432 E F6(Pr)2.432 E .432 (oc. of the Summer 1990 EUUG Confer)-.36 F(ence)-.296 E F5 2.432(,L)C -(on-)-2.432 E(don, July)72 720 Q 2(,1)-.52 G(990, pp. 21-33.)-2 E EP +(on-)-2.432 E(don, July)72 720 Q 2(,1)-.52 G(990, pp. 21-33.)-2 E 0 Cg +EP %%Page: 11 11 %%BeginPageSetup BP @@ -1410,9 +1434,9 @@ F .8(It is suf)5.8 F .8(\214ciently portable to run on nearly e)-.25 F (ral thousand re).15 F 1.515(gular users, and their feedback has)-.15 F (helped to mak)72 235.2 Q 2.5(ei)-.1 G 2.5(ta)-2.5 G 2.5(sg)-2.5 G (ood as it is today \255 a testament to the bene\214ts of free softw) --2.5 E(are.)-.1 E .32 LW 144 708.2 72 708.2 DL/F4 8/Times-Roman@0 SF +-2.5 E(are.)-.1 E .32 LW 144 710 72 710 DL/F4 8/Times-Roman@0 SF (*BSD/386 is a trademark of Berk)72 720 Q(ele)-.08 E 2(yS)-.12 G(oftw)-2 -E(are Design, Inc.)-.08 E EP +E(are Design, Inc.)-.08 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bash.0 b/doc/bash.0 index 86d8b70..c3b29b5 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -6,10 +6,10 @@ NNAAMMEE bash - GNU Bourne-Again SHell SSYYNNOOPPSSIISS - bbaasshh [options] [file] + bbaasshh [options] [command_string | file] CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2010 by the Free Software Foundation, Inc. + Bash is Copyright (C) 1989-2013 by the Free Software Foundation, Inc. DDEESSCCRRIIPPTTIIOONN BBaasshh is an sshh-compatible command language interpreter that executes @@ -26,77 +26,80 @@ OOPPTTIIOONNSS is invoked. In addition, bbaasshh interprets the following options when it is invoked: - --cc _s_t_r_i_n_g If the --cc option is present, then commands are read from - _s_t_r_i_n_g. If there are arguments after the _s_t_r_i_n_g, they are - assigned to the positional parameters, starting with $$00. + --cc If the --cc option is present, then commands are read from the + first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu- + ments after the _c_o_m_m_a_n_d___s_t_r_i_n_g, they are assigned to the + positional parameters, starting with $$00. --ii If the --ii option is present, the shell is _i_n_t_e_r_a_c_t_i_v_e. --ll Make bbaasshh act as if it had been invoked as a login shell (see IINNVVOOCCAATTIIOONN below). - --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d + --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). - --ss If the --ss option is present, or if no arguments remain after - option processing, then commands are read from the standard - input. This option allows the positional parameters to be + --ss If the --ss option is present, or if no arguments remain after + option processing, then commands are read from the standard + input. This option allows the positional parameters to be set when invoking an interactive shell. - --DD A list of all double-quoted strings preceded by $$ is printed - on the standard output. These are the strings that are sub- + --DD A list of all double-quoted strings preceded by $$ is printed + on the standard output. These are the strings that are sub- ject to language translation when the current locale is not CC - or PPOOSSIIXX. This implies the --nn option; no commands will be + or PPOOSSIIXX. This implies the --nn option; no commands will be executed. [[--++]]OO [[_s_h_o_p_t___o_p_t_i_o_n]] - _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the - sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If + _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the + sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If _s_h_o_p_t___o_p_t_i_o_n is present, --OO sets the value of that option; ++OO - unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and - values of the shell options accepted by sshhoopptt are printed on - the standard output. If the invocation option is ++OO, the - output is displayed in a format that may be reused as input. - ---- A ---- signals the end of options and disables further option - processing. Any arguments after the ---- are treated as file- + unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and + values of the shell options accepted by sshhoopptt are printed on + the standard output. If the invocation option is ++OO, the + output is displayed in a format that may be reused as input. + ---- A ---- signals the end of options and disables further option + processing. Any arguments after the ---- are treated as file- names and arguments. An argument of -- is equivalent to ----. - BBaasshh also interprets a number of multi-character options. These - options must appear on the command line before the single-character + BBaasshh also interprets a number of multi-character options. These + options must appear on the command line before the single-character options to be recognized. ----ddeebbuuggggeerr Arrange for the debugger profile to be executed before the shell - starts. Turns on extended debugging mode (see the description + starts. Turns on extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin below). ----dduummpp--ppoo--ssttrriinnggss - Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por- + Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por- table object) file format. ----dduummpp--ssttrriinnggss Equivalent to --DD. - ----hheellpp Display a usage message on standard output and exit success- + ----hheellpp Display a usage message on standard output and exit success- fully. ----iinniitt--ffiillee _f_i_l_e ----rrccffiillee _f_i_l_e Execute commands from _f_i_l_e instead of the standard personal ini- - tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see + tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see IINNVVOOCCAATTIIOONN below). ----llooggiinn Equivalent to --ll. ----nnooeeddiittiinngg - Do not use the GNU rreeaaddlliinnee library to read command lines when + Do not use the GNU rreeaaddlliinnee library to read command lines when the shell is interactive. ----nnoopprrooffiillee - Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or - any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e, - _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these - files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN + Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or + any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e, + _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these + files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN below). ----nnoorrcc Do not read and execute the personal initialization file - _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by + _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by default if the shell is invoked as sshh. ----ppoossiixx - Change the behavior of bbaasshh where the default operation differs - from the POSIX standard to match the standard (_p_o_s_i_x _m_o_d_e). + Change the behavior of bbaasshh where the default operation differs + from the POSIX standard to match the standard (_p_o_s_i_x _m_o_d_e). See + SSEEEE AALLSSOO below for a reference to a document that details how + posix mode affects bash's behavior. ----rreessttrriicctteedd The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). @@ -105,113 +108,113 @@ OOPPTTIIOONNSS Equivalent to --vv. ----vveerrssiioonn - Show version information for this instance of bbaasshh on the stan- + Show version information for this instance of bbaasshh on the stan- dard output and exit successfully. AARRGGUUMMEENNTTSS If arguments remain after option processing, and neither the --cc nor the - --ss option has been supplied, the first argument is assumed to be the - name of a file containing shell commands. If bbaasshh is invoked in this - fashion, $$00 is set to the name of the file, and the positional parame- - ters are set to the remaining arguments. BBaasshh reads and executes com- - mands from this file, then exits. BBaasshh's exit status is the exit sta- - tus of the last command executed in the script. If no commands are - executed, the exit status is 0. An attempt is first made to open the + --ss option has been supplied, the first argument is assumed to be the + name of a file containing shell commands. If bbaasshh is invoked in this + fashion, $$00 is set to the name of the file, and the positional parame- + ters are set to the remaining arguments. BBaasshh reads and executes com- + mands from this file, then exits. BBaasshh's exit status is the exit sta- + tus of the last command executed in the script. If no commands are + executed, the exit status is 0. An attempt is first made to open the file in the current directory, and, if no file is found, then the shell searches the directories in PPAATTHH for the script. IINNVVOOCCAATTIIOONN - A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or + A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or one started with the ----llooggiinn option. - An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments and + An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments and without the --cc option whose standard input and error are both connected - to terminals (as determined by _i_s_a_t_t_y(3)), or one started with the --ii - option. PPSS11 is set and $$-- includes ii if bbaasshh is interactive, allowing + to terminals (as determined by _i_s_a_t_t_y(3)), or one started with the --ii + option. PPSS11 is set and $$-- includes ii if bbaasshh is interactive, allowing a shell script or a startup file to test this state. - The following paragraphs describe how bbaasshh executes its startup files. - If any of the files exist but cannot be read, bbaasshh reports an error. - Tildes are expanded in file names as described below under TTiillddee EExxppaann-- + The following paragraphs describe how bbaasshh executes its startup files. + If any of the files exist but cannot be read, bbaasshh reports an error. + Tildes are expanded in filenames as described below under TTiillddee EExxppaann-- ssiioonn in the EEXXPPAANNSSIIOONN section. - When bbaasshh is invoked as an interactive login shell, or as a non-inter- - active shell with the ----llooggiinn option, it first reads and executes com- - mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading + When bbaasshh is invoked as an interactive login shell, or as a non-inter- + active shell with the ----llooggiinn option, it first reads and executes com- + mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading that file, it looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e, - in that order, and reads and executes commands from the first one that - exists and is readable. The ----nnoopprrooffiillee option may be used when the + in that order, and reads and executes commands from the first one that + exists and is readable. The ----nnoopprrooffiillee option may be used when the shell is started to inhibit this behavior. - When a login shell exits, bbaasshh reads and executes commands from the + When a login shell exits, bbaasshh reads and executes commands from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists. - When an interactive shell that is not a login shell is started, bbaasshh - reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This - may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option - will force bbaasshh to read and execute commands from _f_i_l_e instead of + When an interactive shell that is not a login shell is started, bbaasshh + reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This + may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option + will force bbaasshh to read and execute commands from _f_i_l_e instead of _~_/_._b_a_s_h_r_c. - When bbaasshh is started non-interactively, to run a shell script, for + When bbaasshh is started non-interactively, to run a shell script, for example, it looks for the variable BBAASSHH__EENNVV in the environment, expands - its value if it appears there, and uses the expanded value as the name - of a file to read and execute. BBaasshh behaves as if the following com- + its value if it appears there, and uses the expanded value as the name + of a file to read and execute. BBaasshh behaves as if the following com- mand were executed: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi - but the value of the PPAATTHH variable is not used to search for the file + but the value of the PPAATTHH variable is not used to search for the file- name. - If bbaasshh is invoked with the name sshh, it tries to mimic the startup - behavior of historical versions of sshh as closely as possible, while - conforming to the POSIX standard as well. When invoked as an interac- - tive login shell, or a non-interactive shell with the ----llooggiinn option, - it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and - _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to - inhibit this behavior. When invoked as an interactive shell with the - name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is - defined, and uses the expanded value as the name of a file to read and + If bbaasshh is invoked with the name sshh, it tries to mimic the startup + behavior of historical versions of sshh as closely as possible, while + conforming to the POSIX standard as well. When invoked as an interac- + tive login shell, or a non-interactive shell with the ----llooggiinn option, + it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and + _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to + inhibit this behavior. When invoked as an interactive shell with the + name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is + defined, and uses the expanded value as the name of a file to read and execute. Since a shell invoked as sshh does not attempt to read and exe- - cute commands from any other startup files, the ----rrccffiillee option has no - effect. A non-interactive shell invoked with the name sshh does not - attempt to read any other startup files. When invoked as sshh, bbaasshh + cute commands from any other startup files, the ----rrccffiillee option has no + effect. A non-interactive shell invoked with the name sshh does not + attempt to read any other startup files. When invoked as sshh, bbaasshh enters _p_o_s_i_x mode after the startup files are read. - When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line + When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line option, it follows the POSIX standard for startup files. In this mode, - interactive shells expand the EENNVV variable and commands are read and - executed from the file whose name is the expanded value. No other + interactive shells expand the EENNVV variable and commands are read and + executed from the file whose name is the expanded value. No other startup files are read. BBaasshh attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the remote shell - daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- - mines it is being run in this fashion, it reads and executes commands - from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do - this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this - behavior, and the ----rrccffiillee option may be used to force another file to - be read, but _r_s_h_d does not generally invoke the shell with those - options or allow them to be specified. + daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- + mines it is being run in this fashion, it reads and executes commands + from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do + this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this + behavior, and the ----rrccffiillee option may be used to force another file to + be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with + those options or allow them to be specified. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the --pp option is not supplied, no startup files are read, shell functions are not inherited from the environment, - the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they - appear in the environment, are ignored, and the effective user id is - set to the real user id. If the --pp option is supplied at invocation, - the startup behavior is the same, but the effective user id is not + the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + appear in the environment, are ignored, and the effective user id is + set to the real user id. If the --pp option is supplied at invocation, + the startup behavior is the same, but the effective user id is not reset. DDEEFFIINNIITTIIOONNSS - The following definitions are used throughout the rest of this docu- + The following definitions are used throughout the rest of this docu- ment. bbllaannkk A space or tab. - wwoorrdd A sequence of characters considered as a single unit by the + wwoorrdd A sequence of characters considered as a single unit by the shell. Also known as a ttookkeenn. - nnaammee A _w_o_r_d consisting only of alphanumeric characters and under- - scores, and beginning with an alphabetic character or an under- + nnaammee A _w_o_r_d consisting only of alphanumeric characters and under- + scores, and beginning with an alphabetic character or an under- score. Also referred to as an iiddeennttiiffiieerr. mmeettaacchhaarraacctteerr - A character that, when unquoted, separates words. One of the + A character that, when unquoted, separates words. One of the following: || && ;; (( )) << >> ssppaaccee ttaabb ccoonnttrrooll ooppeerraattoorr @@ -222,36 +225,37 @@ DDEEFFIINNIITTIIOONNSS RREESSEERRVVEEDD WWOORRDDSS _R_e_s_e_r_v_e_d _w_o_r_d_s are words that have a special meaning to the shell. The following words are recognized as reserved when unquoted and either the - first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third + first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third word of a ccaassee or ffoorr command: - !! ccaassee ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt tthheenn uunnttiill - wwhhiillee {{ }} ttiimmee [[[[ ]]]] + !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt + tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] SSHHEELLLL GGRRAAMMMMAARR SSiimmppllee CCoommmmaannddss - A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- - lowed by bbllaannkk-separated words and redirections, and terminated by a + A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- + lowed by bbllaannkk-separated words and redirections, and terminated by a _c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first word specifies the command to be executed, - and is passed as argument zero. The remaining words are passed as + and is passed as argument zero. The remaining words are passed as arguments to the invoked command. - The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if + The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if the command is terminated by signal _n. PPiippeelliinneess - A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of + A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of the control operators || or ||&&. The format for a pipeline is: [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] - The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard - input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- + The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard + input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used, - the standard error of _c_o_m_m_a_n_d is connected to _c_o_m_m_a_n_d_2's standard input - through the pipe; it is shorthand for 22>>&&11 ||. This implicit redirect- - ion of the standard error is performed after any redirections specified - by the command. + _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- + nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand + for 22>>&&11 ||. This implicit redirection of the standard error to the + standard output is performed after any redirections specified by the + command. The return status of a pipeline is the exit status of the last command, unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the @@ -316,75 +320,84 @@ SSHHEELLLL GGRRAAMMMMAARR the last command executed in the list. CCoommppoouunndd CCoommmmaannddss - A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following: - - (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- - TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- - mands that affect the shell's environment do not remain in - effect after the command completes. The return status is the + A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a + command's description may be separated from the rest of the command by + one or more newlines, and may be followed by a newline in place of a + semicolon. + + (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- + TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- + mands that affect the shell's environment do not remain in + effect after the command completes. The return status is the exit status of _l_i_s_t. { _l_i_s_t; } - _l_i_s_t is simply executed in the current shell environment. _l_i_s_t - must be terminated with a newline or semicolon. This is known - as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of - _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are + _l_i_s_t is simply executed in the current shell environment. _l_i_s_t + must be terminated with a newline or semicolon. This is known + as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of + _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are _r_e_s_e_r_v_e_d _w_o_r_d_s and must occur where a reserved word is permitted - to be recognized. Since they do not cause a word break, they - must be separated from _l_i_s_t by whitespace or another shell + to be recognized. Since they do not cause a word break, they + must be separated from _l_i_s_t by whitespace or another shell metacharacter. ((_e_x_p_r_e_s_s_i_o_n)) - The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described - below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expres- - sion is non-zero, the return status is 0; otherwise the return + The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described + below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expres- + sion is non-zero, the return status is 0; otherwise the return status is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"". [[[[ _e_x_p_r_e_s_s_i_o_n ]]]] - Return a status of 0 or 1 depending on the evaluation of the - conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of - the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - Word splitting and pathname expansion are not performed on the - words between the [[[[ and ]]]]; tilde expansion, parameter and - variable expansion, arithmetic expansion, command substitution, - process substitution, and quote removal are performed. Condi- + Return a status of 0 or 1 depending on the evaluation of the + conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of + the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + Word splitting and pathname expansion are not performed on the + words between the [[[[ and ]]]]; tilde expansion, parameter and + variable expansion, arithmetic expansion, command substitution, + process substitution, and quote removal are performed. Condi- tional operators such as --ff must be unquoted to be recognized as primaries. - When used with [[[[, the << and >> operators sort lexicographically + When used with [[[[, the << and >> operators sort lexicographically using the current locale. - When the ==== and !!== operators are used, the string to the right + When the ==== and !!== operators are used, the string to the right of the operator is considered a pattern and matched according to - the rules described below under PPaatttteerrnn MMaattcchhiinngg. If the shell - option nnooccaasseemmaattcchh is enabled, the match is performed without - regard to the case of alphabetic characters. The return value - is 0 if the string matches (====) or does not match (!!==) the pat- - tern, and 1 otherwise. Any part of the pattern may be quoted to - force it to be matched as a string. - - An additional binary operator, ==~~, is available, with the same - precedence as ==== and !!==. When it is used, the string to the - right of the operator is considered an extended regular expres- + the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt-- + gglloobb shell option were enabled. The == operator is equivalent to + ====. If the shell option nnooccaasseemmaattcchh is enabled, the match is + performed without regard to the case of alphabetic characters. + The return value is 0 if the string matches (====) or does not + match (!!==) the pattern, and 1 otherwise. Any part of the pat- + tern may be quoted to force the quoted portion to be matched as + a string. + + An additional binary operator, ==~~, is available, with the same + precedence as ==== and !!==. When it is used, the string to the + right of the operator is considered an extended regular expres- sion and matched accordingly (as in _r_e_g_e_x(3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the - regular expression is syntactically incorrect, the conditional + regular expression is syntactically incorrect, the conditional expression's return value is 2. If the shell option nnooccaasseemmaattcchh is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to - force it to be matched as a string. Substrings matched by - parenthesized subexpressions within the regular expression are - saved in the array variable BBAASSHH__RREEMMAATTCCHH. The element of - BBAASSHH__RREEMMAATTCCHH with index 0 is the portion of the string matching - the entire regular expression. The element of BBAASSHH__RREEMMAATTCCHH with - index _n is the portion of the string matching the _nth parenthe- - sized subexpression. - - Expressions may be combined using the following operators, + force the quoted portion to be matched as a string. Bracket + expressions in regular expressions must be treated carefully, + since normal quoting characters lose their meanings between + brackets. If the pattern is stored in a shell variable, quoting + the variable expansion forces the entire pattern to be matched + as a string. Substrings matched by parenthesized subexpressions + within the regular expression are saved in the array variable + BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0 is the + portion of the string matching the entire regular expression. + The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion of the + string matching the _nth parenthesized subexpression. + + Expressions may be combined using the following operators, listed in decreasing order of precedence: (( _e_x_p_r_e_s_s_i_o_n )) - Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to + Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to override the normal precedence of operators. !! _e_x_p_r_e_s_s_i_o_n True if _e_x_p_r_e_s_s_i_o_n is false. @@ -394,115 +407,118 @@ SSHHEELLLL GGRRAAMMMMAARR True if either _e_x_p_r_e_s_s_i_o_n_1 or _e_x_p_r_e_s_s_i_o_n_2 is true. The &&&& and |||| operators do not evaluate _e_x_p_r_e_s_s_i_o_n_2 if the value - of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of + of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of the entire conditional expression. ffoorr _n_a_m_e [ [ iinn [ _w_o_r_d _._._. ] ] ; ] ddoo _l_i_s_t ; ddoonnee The list of words following iinn is expanded, generating a list of items. The variable _n_a_m_e is set to each element of this list in - turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- - ted, the ffoorr command executes _l_i_s_t once for each positional + turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- + ted, the ffoorr command executes _l_i_s_t once for each positional parameter that is set (see PPAARRAAMMEETTEERRSS below). The return status - is the exit status of the last command that executes. If the + is the exit status of the last command that executes. If the expansion of the items following iinn results in an empty list, no commands are executed, and the return status is 0. ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) ; ddoo _l_i_s_t ; ddoonnee First, the arithmetic expression _e_x_p_r_1 is evaluated according to - the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The - arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until - it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero - value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is - evaluated. If any expression is omitted, it behaves as if it + the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The + arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until + it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero + value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is + evaluated. If any expression is omitted, it behaves as if it evaluates to 1. The return value is the exit status of the last command in _l_i_s_t that is executed, or false if any of the expres- sions is invalid. sseelleecctt _n_a_m_e [ iinn _w_o_r_d ] ; ddoo _l_i_s_t ; ddoonnee The list of words following iinn is expanded, generating a list of - items. The set of expanded words is printed on the standard - error, each preceded by a number. If the iinn _w_o_r_d is omitted, - the positional parameters are printed (see PPAARRAAMMEETTEERRSS below). - The PPSS33 prompt is then displayed and a line read from the stan- - dard input. If the line consists of a number corresponding to - one of the displayed words, then the value of _n_a_m_e is set to - that word. If the line is empty, the words and prompt are dis- + items. The set of expanded words is printed on the standard + error, each preceded by a number. If the iinn _w_o_r_d is omitted, + the positional parameters are printed (see PPAARRAAMMEETTEERRSS below). + The PPSS33 prompt is then displayed and a line read from the stan- + dard input. If the line consists of a number corresponding to + one of the displayed words, then the value of _n_a_m_e is set to + that word. If the line is empty, the words and prompt are dis- played again. If EOF is read, the command completes. Any other - value read causes _n_a_m_e to be set to null. The line read is - saved in the variable RREEPPLLYY. The _l_i_s_t is executed after each + value read causes _n_a_m_e to be set to null. The line read is + saved in the variable RREEPPLLYY. The _l_i_s_t is executed after each selection until a bbrreeaakk command is executed. The exit status of - sseelleecctt is the exit status of the last command executed in _l_i_s_t, + sseelleecctt is the exit status of the last command executed in _l_i_s_t, or zero if no commands were executed. ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc A ccaassee command first expands _w_o_r_d, and tries to match it against each _p_a_t_t_e_r_n in turn, using the same matching rules as for path- - name expansion (see PPaatthhnnaammee EExxppaannssiioonn below). The _w_o_r_d is - expanded using tilde expansion, parameter and variable expan- - sion, arithmetic substitution, command substitution, process - substitution and quote removal. Each _p_a_t_t_e_r_n examined is + name expansion (see PPaatthhnnaammee EExxppaannssiioonn below). The _w_o_r_d is expanded using tilde expansion, parameter and variable expan- + sion, arithmetic substitution, command substitution, process + substitution and quote removal. Each _p_a_t_t_e_r_n examined is + expanded using tilde expansion, parameter and variable expan- sion, arithmetic substitution, command substitution, and process - substitution. If the shell option nnooccaasseemmaattcchh is enabled, the - match is performed without regard to the case of alphabetic - characters. When a match is found, the corresponding _l_i_s_t is + substitution. If the shell option nnooccaasseemmaattcchh is enabled, the + match is performed without regard to the case of alphabetic + characters. When a match is found, the corresponding _l_i_s_t is executed. If the ;;;; operator is used, no subsequent matches are - attempted after the first pattern match. Using ;;&& in place of - ;;;; causes execution to continue with the _l_i_s_t associated with - the next set of patterns. Using ;;;;&& in place of ;;;; causes the - shell to test the next pattern list in the statement, if any, + attempted after the first pattern match. Using ;;&& in place of + ;;;; causes execution to continue with the _l_i_s_t associated with + the next set of patterns. Using ;;;;&& in place of ;;;; causes the + shell to test the next pattern list in the statement, if any, and execute any associated _l_i_s_t on a successful match. The exit status is zero if no pattern matches. Otherwise, it is the exit status of the last command executed in _l_i_s_t. - iiff _l_i_s_t; tthheenn _l_i_s_t_; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii - The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn - _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in - turn, and if its exit status is zero, the corresponding tthheenn + iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii + The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn + _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in + turn, and if its exit status is zero, the corresponding tthheenn _l_i_s_t is executed and the command completes. Otherwise, the eellssee - _l_i_s_t is executed, if present. The exit status is the exit sta- + _l_i_s_t is executed, if present. The exit status is the exit sta- tus of the last command executed, or zero if no condition tested true. wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long + The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long as the last command in the list _l_i_s_t_-_1 returns an exit status of - zero. The uunnttiill command is identical to the wwhhiillee command, - except that the test is negated; _l_i_s_t_-_2 is executed as long as - the last command in _l_i_s_t_-_1 returns a non-zero exit status. The - exit status of the wwhhiillee and uunnttiill commands is the exit status + zero. The uunnttiill command is identical to the wwhhiillee command, + except that the test is negated; _l_i_s_t_-_2 is executed as long as + the last command in _l_i_s_t_-_1 returns a non-zero exit status. The + exit status of the wwhhiillee and uunnttiill commands is the exit status of the last command executed in _l_i_s_t_-_2, or zero if none was exe- cuted. CCoopprroocceesssseess A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A - coprocess is executed asynchronously in a subshell, as if the command - had been terminated with the && control operator, with a two-way pipe + coprocess is executed asynchronously in a subshell, as if the command + had been terminated with the && control operator, with a two-way pipe established between the executing shell and the coprocess. The format for a coprocess is: ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] - This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the - default name is _C_O_P_R_O_C. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_- + This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the + default name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_- _p_l_e _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word - of the simple command. When the coproc is executed, the shell creates - an array variable (see AArrrraayyss below) named _N_A_M_E in the context of the - executing shell. The standard output of _c_o_m_m_a_n_d is connected via a - pipe to a file descriptor in the executing shell, and that file - descriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is - connected via a pipe to a file descriptor in the executing shell, and - that file descriptor is assigned to _N_A_M_E[1]. This pipe is established - before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN - below). The file descriptors can be utilized as arguments to shell - commands and redirections using standard word expansions. The process - ID of the shell spawned to execute the coprocess is available as the - value of the variable _N_A_M_E_PID. The wwaaiitt builtin command may be used - to wait for the coprocess to terminate. - - The return status of a coprocess is the exit status of _c_o_m_m_a_n_d. + of the simple command. When the coprocess is executed, the shell cre- + ates an array variable (see AArrrraayyss below) named _N_A_M_E in the context of + the executing shell. The standard output of _c_o_m_m_a_n_d is connected via a + pipe to a file descriptor in the executing shell, and that file + descriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is + connected via a pipe to a file descriptor in the executing shell, and + that file descriptor is assigned to _N_A_M_E[1]. This pipe is established + before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN + below). The file descriptors can be utilized as arguments to shell + commands and redirections using standard word expansions. The file + descriptors are not available in subshells. The process ID of the + shell spawned to execute the coprocess is available as the value of the + variable _N_A_M_E_PID. The wwaaiitt builtin command may be used to wait for + the coprocess to terminate. + + Since the coprocess is created as an asynchronous command, the ccoopprroocc + command always returns success. The return status of a coprocess is + the exit status of _c_o_m_m_a_n_d. SShheellll FFuunnccttiioonn DDeeffiinniittiioonnss A shell function is an object that is called like a simple command and @@ -518,65 +534,66 @@ SSHHEELLLL GGRRAAMMMMAARR That command is usually a _l_i_s_t of commands between { and }, but may be any command listed under CCoommppoouunndd CCoommmmaannddss above. _c_o_m_- _p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _n_a_m_e is specified as the name - of a simple command. Any redirections (see RREEDDIIRREECCTTIIOONN below) - specified when a function is defined are performed when the - function is executed. The exit status of a function definition - is zero unless a syntax error occurs or a readonly function with - the same name already exists. When executed, the exit status of - a function is the exit status of the last command executed in - the body. (See FFUUNNCCTTIIOONNSS below.) + of a simple command. When in _p_o_s_i_x _m_o_d_e, _n_a_m_e may not be the + name of one of the POSIX _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. Any redirections + (see RREEDDIIRREECCTTIIOONN below) specified when a function is defined are + performed when the function is executed. The exit status of a + function definition is zero unless a syntax error occurs or a + readonly function with the same name already exists. When exe- + cuted, the exit status of a function is the exit status of the + last command executed in the body. (See FFUUNNCCTTIIOONNSS below.) CCOOMMMMEENNTTSS In a non-interactive shell, or an interactive shell in which the iinntteerr-- - aaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word beginning with ## causes that word and - all remaining characters on that line to be ignored. An interactive - shell without the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not allow + aaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word beginning with ## causes that word and + all remaining characters on that line to be ignored. An interactive + shell without the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not allow comments. The iinntteerraaccttiivvee__ccoommmmeennttss option is on by default in interac- tive shells. QQUUOOTTIINNGG - _Q_u_o_t_i_n_g is used to remove the special meaning of certain characters or - words to the shell. Quoting can be used to disable special treatment + _Q_u_o_t_i_n_g is used to remove the special meaning of certain characters or + words to the shell. Quoting can be used to disable special treatment for special characters, to prevent reserved words from being recognized as such, and to prevent parameter expansion. - Each of the _m_e_t_a_c_h_a_r_a_c_t_e_r_s listed above under DDEEFFIINNIITTIIOONNSS has special + Each of the _m_e_t_a_c_h_a_r_a_c_t_e_r_s listed above under DDEEFFIINNIITTIIOONNSS has special meaning to the shell and must be quoted if it is to represent itself. - When the command history expansion facilities are being used (see HHIISS-- + When the command history expansion facilities are being used (see HHIISS-- TTOORRYY EEXXPPAANNSSIIOONN below), the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, usually !!, must be quoted to prevent history expansion. - There are three quoting mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single + There are three quoting mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single quotes, and double quotes. - A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It preserves the + A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It preserves the literal value of the next character that follows, with the exception of - . If a \\ pair appears, and the backslash is not - itself quoted, the \\ is treated as a line continuation (that + . If a \\ pair appears, and the backslash is not + itself quoted, the \\ is treated as a line continuation (that is, it is removed from the input stream and effectively ignored). - Enclosing characters in single quotes preserves the literal value of + Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. - Enclosing characters in double quotes preserves the literal value of - all characters within the quotes, with the exception of $$, ``, \\, and, - when history expansion is enabled, !!. The characters $$ and `` retain - their special meaning within double quotes. The backslash retains its - special meaning only when followed by one of the following characters: - $$, ``, "", \\, or <>. A double quote may be quoted within double + Enclosing characters in double quotes preserves the literal value of + all characters within the quotes, with the exception of $$, ``, \\, and, + when history expansion is enabled, !!. The characters $$ and `` retain + their special meaning within double quotes. The backslash retains its + special meaning only when followed by one of the following characters: + $$, ``, "", \\, or <>. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion - will be performed unless an !! appearing in double quotes is escaped + will be performed unless an !! appearing in double quotes is escaped using a backslash. The backslash preceding the !! is not removed. - The special parameters ** and @@ have special meaning when in double + The special parameters ** and @@ have special meaning when in double quotes (see PPAARRAAMMEETTEERRSS below). Words of the form $$'_s_t_r_i_n_g' are treated specially. The word expands to - _s_t_r_i_n_g, with backslash-escaped characters replaced as specified by the - ANSI C standard. Backslash escape sequences, if present, are decoded + _s_t_r_i_n_g, with backslash-escaped characters replaced as specified by the + ANSI C standard. Backslash escape sequences, if present, are decoded as follows: \\aa alert (bell) \\bb backspace @@ -590,112 +607,142 @@ QQUUOOTTIINNGG \\\\ backslash \\'' single quote \\"" double quote - \\_n_n_n the eight-bit character whose value is the octal value + \\_n_n_n the eight-bit character whose value is the octal value _n_n_n (one to three digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) \\cc_x a control-_x character - The expanded result is single-quoted, as if the dollar sign had not + The expanded result is single-quoted, as if the dollar sign had not been present. A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") will cause - the string to be translated according to the current locale. If the - current locale is CC or PPOOSSIIXX, the dollar sign is ignored. If the + the string to be translated according to the current locale. If the + current locale is CC or PPOOSSIIXX, the dollar sign is ignored. If the string is translated and replaced, the replacement is double-quoted. PPAARRAAMMEETTEERRSS - A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num- + A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num- ber, or one of the special characters listed below under SSppeecciiaall PPaarraamm-- - eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a - _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the - ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS). + eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a + _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the + ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS). A parameter is set if it has been assigned a value. The null string is - a valid value. Once a variable is set, it may be unset only by using + a valid value. Once a variable is set, it may be unset only by using the uunnsseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A _v_a_r_i_a_b_l_e may be assigned to by a statement of the form _n_a_m_e=[_v_a_l_u_e] - If _v_a_l_u_e is not given, the variable is assigned the null string. All - _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com- - mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- + If _v_a_l_u_e is not given, the variable is assigned the null string. All + _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com- + mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- SSIIOONN below). If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e is evaluated as an arithmetic expression even if the $((...)) expansion - is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not - performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall - PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state- - ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, - eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands. - - In the context where an assignment statement is assigning a value to a + is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not + performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall + PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state- + ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, + eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands. When in _p_o_s_i_x _m_o_d_e, + these builtins may appear in a command after one or more instances of + the ccoommmmaanndd builtin and retain these assignment statement properties. + + In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. When += is applied to a vari- - able for which the _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated - as an arithmetic expression and added to the variable's current value, + able for which the _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated + as an arithmetic expression and added to the variable's current value, which is also evaluated. When += is applied to an array variable using - compound assignment (see AArrrraayyss below), the variable's value is not + compound assignment (see AArrrraayyss below), the variable's value is not unset (as it is when using =), and new values are appended to the array - beginning at one greater than the array's maximum index (for indexed + beginning at one greater than the array's maximum index (for indexed arrays) or added as additional key-value pairs in an associative array. - When applied to a string-valued variable, _v_a_l_u_e is expanded and + When applied to a string-valued variable, _v_a_l_u_e is expanded and appended to the variable's value. + A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to + the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree + and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari- + able. This allows variables to be manipulated indirectly. Whenever + the nameref variable is referenced or assigned to, the operation is + actually performed on the variable specified by the nameref variable's + value. A nameref is commonly used within shell functions to refer to a + variable whose name is passed as an argument to the function. For + instance, if a variable name is passed to a shell function as its first + argument, running + declare -n ref=$1 + inside the function creates a nameref variable rreeff whose value is the + variable name passed as the first argument. References and assignments + to rreeff are treated as references and assignments to the variable whose + name was passed as $$11. If the control variable in a ffoorr loop has the + nameref attribute, the list of words can be a list of shell variables, + and a name reference will be established for each word in the list, in + turn, when the loop is executed. Array variables cannot be given the + --nn attribute. However, nameref variables can reference array variables + and subscripted array variables. Namerefs can be unset using the --nn + option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the + name of a nameref variable as an argument, the variable referenced by + the nameref variable will be unset. + PPoossiittiioonnaall PPaarraammeetteerrss - A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits, + A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits, other than the single digit 0. Positional parameters are assigned from - the shell's arguments when it is invoked, and may be reassigned using - the sseett builtin command. Positional parameters may not be assigned to - with assignment statements. The positional parameters are temporarily + the shell's arguments when it is invoked, and may be reassigned using + the sseett builtin command. Positional parameters may not be assigned to + with assignment statements. The positional parameters are temporarily replaced when a shell function is executed (see FFUUNNCCTTIIOONNSS below). - When a positional parameter consisting of more than a single digit is + When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces (see EEXXPPAANNSSIIOONN below). SSppeecciiaall PPaarraammeetteerrss - The shell treats several parameters specially. These parameters may + The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. - ** Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, it expands to a sin- - gle word with the value of each parameter separated by the first - character of the IIFFSS special variable. That is, "$$**" is equiva- - lent to "$$11_c$$22_c......", where _c is the first character of the value - of the IIFFSS variable. If IIFFSS is unset, the parameters are sepa- - rated by spaces. If IIFFSS is null, the parameters are joined - without intervening separators. - @@ Expands to the positional parameters, starting from one. When + ** Expands to the positional parameters, starting from one. When + the expansion is not within double quotes, each positional + parameter expands to a separate word. In contexts where it is + performed, those words are subject to further word splitting and + pathname expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each + parameter separated by the first character of the IIFFSS special + variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c + is the first character of the value of the IIFFSS variable. If IIFFSS + is unset, the parameters are separated by spaces. If IIFFSS is + null, the parameters are joined without intervening separators. + @@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$$@@" is equivalent to "$$11" - "$$22" ... If the double-quoted expansion occurs within a word, - the expansion of the first parameter is joined with the begin- - ning part of the original word, and the expansion of the last - parameter is joined with the last part of the original word. - When there are no positional parameters, "$$@@" and $$@@ expand to + "$$22" ... If the double-quoted expansion occurs within a word, + the expansion of the first parameter is joined with the begin- + ning part of the original word, and the expansion of the last + parameter is joined with the last part of the original word. + When there are no positional parameters, "$$@@" and $$@@ expand to nothing (i.e., they are removed). ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- + ?? Expands to the exit status of the most recently executed fore- ground pipeline. - -- Expands to the current option flags as specified upon invoca- - tion, by the sseett builtin command, or those set by the shell + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell itself (such as the --ii option). - $$ Expands to the process ID of the shell. In a () subshell, it - expands to the process ID of the current shell, not the sub- + $$ Expands to the process ID of the shell. In a () subshell, it + expands to the process ID of the current shell, not the sub- shell. - !! Expands to the process ID of the most recently executed back- - ground (asynchronous) command. + !! Expands to the process ID of the job most recently placed into + the background, whether executed as an asynchronous command or + using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). 00 Expands to the name of the shell or shell script. This is set at shell initialization. If bbaasshh is invoked with a file of com- mands, $$00 is set to the name of that file. If bbaasshh is started with the --cc option, then $$00 is set to the first argument after the string to be executed, if one is present. Otherwise, it is - set to the file name used to invoke bbaasshh, as given by argument + set to the filename used to invoke bbaasshh, as given by argument zero. __ At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the envi- @@ -709,7 +756,7 @@ PPAARRAAMMEETTEERRSS SShheellll VVaarriiaabblleess The following variables are set by the shell: - BBAASSHH Expands to the full file name used to invoke this instance of + BBAASSHH Expands to the full filename used to invoke this instance of bbaasshh. BBAASSHHOOPPTTSS A colon-separated list of enabled shell options. Each word in @@ -780,214 +827,196 @@ PPAARRAAMMEETTEERRSS defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. BBAASSHH__SSUUBBSSHHEELLLL - Incremented by one each time a subshell or subshell environment - is spawned. The initial value is 0. + Incremented by one within each subshell or subshell environment + when the shell begins executing in that environment. The ini- + tial value is 0. BBAASSHH__VVEERRSSIINNFFOO A readonly array variable whose members hold version information - for this instance of bbaasshh. The values assigned to the array + for this instance of bbaasshh. The values assigned to the array members are as follows: - BBAASSHH__VVEERRSSIINNFFOO[[0]] The major version number (the _r_e_l_e_a_s_e). - BBAASSHH__VVEERRSSIINNFFOO[[1]] The minor version number (the _v_e_r_s_i_o_n). + BBAASSHH__VVEERRSSIINNFFOO[[0]] The major version number (the _r_e_l_e_a_s_e). + BBAASSHH__VVEERRSSIINNFFOO[[1]] The minor version number (the _v_e_r_s_i_o_n). BBAASSHH__VVEERRSSIINNFFOO[[2]] The patch level. BBAASSHH__VVEERRSSIINNFFOO[[3]] The build version. BBAASSHH__VVEERRSSIINNFFOO[[4]] The release status (e.g., _b_e_t_a_1). BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE. - BBAASSHH__VVEERRSSIIOONN - Expands to a string describing the version of this instance of + Expands to a string describing the version of this instance of bbaasshh. - CCOOMMPP__CCWWOORRDD - An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current + An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current cursor position. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__KKEEYY The key (or final key of a key sequence) used to invoke the cur- rent completion function. - CCOOMMPP__LLIINNEE - The current command line. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn + The current command line. This variable is available only in + shell functions and external commands invoked by the pro- + grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__PPOOIINNTT - The index of the current cursor position relative to the begin- - ning of the current command. If the current cursor position is + The index of the current cursor position relative to the begin- + ning of the current command. If the current cursor position is at the end of the current command, the value of this variable is - equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn + equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in + shell functions and external commands invoked by the pro- + grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__TTYYPPEE - Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: _T_A_B, - for normal completion, _?, for listing completions after succes- - sive tabs, _!, for listing alternatives on partial word comple- - tion, _@, to list completions if the word is not unmodified, or - _%, for menu completion. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn + Set to an integer value corresponding to the type of completion + attempted that caused a completion function to be called: _T_A_B, + for normal completion, _?, for listing completions after succes- + sive tabs, _!, for listing alternatives on partial word comple- + tion, _@, to list completions if the word is not unmodified, or + _%, for menu completion. This variable is available only in + shell functions and external commands invoked by the pro- + grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__WWOORRDDBBRREEAAKKSS - The set of characters that the rreeaaddlliinnee library treats as word - separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS - is unset, it loses its special properties, even if it is subse- + The set of characters that the rreeaaddlliinnee library treats as word + separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS + is unset, it loses its special properties, even if it is subse- quently reset. - CCOOMMPP__WWOORRDDSS - An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The line is split into - words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as + An array variable (see AArrrraayyss below) consisting of the individ- + ual words in the current command line. The line is split into + words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as described above. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - - CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file - descriptors for output from and input to an unnamed coprocess + CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file + descriptors for output from and input to an unnamed coprocess (see CCoopprroocceesssseess above). - DDIIRRSSTTAACCKK An array variable (see AArrrraayyss below) containing the current con- - tents of the directory stack. Directories appear in the stack - in the order they are displayed by the ddiirrss builtin. Assigning + tents of the directory stack. Directories appear in the stack + in the order they are displayed by the ddiirrss builtin. Assigning to members of this array variable may be used to modify directo- - ries already in the stack, but the ppuusshhdd and ppooppdd builtins must + ries already in the stack, but the ppuusshhdd and ppooppdd builtins must be used to add and remove directories. Assignment to this vari- - able will not change the current directory. If DDIIRRSSTTAACCKK is - unset, it loses its special properties, even if it is subse- + able will not change the current directory. If DDIIRRSSTTAACCKK is + unset, it loses its special properties, even if it is subse- quently reset. - - EEUUIIDD Expands to the effective user ID of the current user, initial- + EEUUIIDD Expands to the effective user ID of the current user, initial- ized at shell startup. This variable is readonly. - FFUUNNCCNNAAMMEE - An array variable containing the names of all shell functions + An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function. The bot- - tom-most element (the one with the highest index) is "main". - This variable exists only when a shell function is executing. - Assignments to FFUUNNCCNNAAMMEE have no effect and return an error sta- - tus. If FFUUNNCCNNAAMMEE is unset, it loses its special properties, + tom-most element (the one with the highest index) is "main". + This variable exists only when a shell function is executing. + Assignments to FFUUNNCCNNAAMMEE have no effect and return an error sta- + tus. If FFUUNNCCNNAAMMEE is unset, it loses its special properties, even if it is subsequently reset. - This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. - Each element of FFUUNNCCNNAAMMEE has corresponding elements in - BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For - instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. + Each element of FFUUNNCCNNAAMMEE has corresponding elements in + BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For + instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The ccaalllleerr builtin displays the current call stack using this infor- mation. - - GGRROOUUPPSS An array variable containing the list of groups of which the - current user is a member. Assignments to GGRROOUUPPSS have no effect - and return an error status. If GGRROOUUPPSS is unset, it loses its + GGRROOUUPPSS An array variable containing the list of groups of which the + current user is a member. Assignments to GGRROOUUPPSS have no effect + and return an error status. If GGRROOUUPPSS is unset, it loses its special properties, even if it is subsequently reset. - HHIISSTTCCMMDD The history number, or index in the history list, of the current - command. If HHIISSTTCCMMDD is unset, it loses its special properties, + command. If HHIISSTTCCMMDD is unset, it loses its special properties, even if it is subsequently reset. - HHOOSSTTNNAAMMEE Automatically set to the name of the current host. - HHOOSSTTTTYYPPEE - Automatically set to a string that uniquely describes the type - of machine on which bbaasshh is executing. The default is system- + Automatically set to a string that uniquely describes the type + of machine on which bbaasshh is executing. The default is system- dependent. - - LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a - decimal number representing the current sequential line number - (starting with 1) within a script or function. When not in a - script or function, the value substituted is not guaranteed to + LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a + decimal number representing the current sequential line number + (starting with 1) within a script or function. When not in a + script or function, the value substituted is not guaranteed to be meaningful. If LLIINNEENNOO is unset, it loses its special proper- ties, even if it is subsequently reset. - MMAACCHHTTYYPPEE - Automatically set to a string that fully describes the system - type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- + Automatically set to a string that fully describes the system + type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- _p_a_n_y_-_s_y_s_t_e_m format. The default is system-dependent. - MMAAPPFFIILLEE - An array variable (see AArrrraayyss below) created to hold the text + An array variable (see AArrrraayyss below) created to hold the text read by the mmaappffiillee builtin when no variable name is supplied. - OOLLDDPPWWDD The previous working directory as set by the ccdd command. - - OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss + OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - - OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss + OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - - OOSSTTYYPPEE Automatically set to a string that describes the operating sys- - tem on which bbaasshh is executing. The default is system-depen- + OOSSTTYYPPEE Automatically set to a string that describes the operating sys- + tem on which bbaasshh is executing. The default is system-depen- dent. - PPIIPPEESSTTAATTUUSS - An array variable (see AArrrraayyss below) containing a list of exit - status values from the processes in the most-recently-executed + An array variable (see AArrrraayyss below) containing a list of exit + status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command). - - PPPPIIDD The process ID of the shell's parent. This variable is read- + PPPPIIDD The process ID of the shell's parent. This variable is read- only. - PPWWDD The current working directory as set by the ccdd command. - RRAANNDDOOMM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RRAANNDDOOMM. If RRAANNDDOOMM is unset, - it loses its special properties, even if it is subsequently + it loses its special properties, even if it is subsequently reset. - RREEAADDLLIINNEE__LLIINNEE The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEAADDLLIINNEE__PPOOIINNTT The position of the insertion point in the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - - RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no arguments are supplied. - SSEECCOONNDDSS - Each time this parameter is referenced, the number of seconds - since shell invocation is returned. If a value is assigned to - SSEECCOONNDDSS, the value returned upon subsequent references is the - number of seconds since the assignment plus the value assigned. + Each time this parameter is referenced, the number of seconds + since shell invocation is returned. If a value is assigned to + SSEECCOONNDDSS, the value returned upon subsequent references is the + number of seconds since the assignment plus the value assigned. If SSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. - SSHHEELLLLOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --oo option to the sseett + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --oo option to the sseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. - SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. - UUIIDD Expands to the user ID of the current user, initialized at shell startup. This variable is readonly. - The following variables are used by the shell. In some cases, bbaasshh + The following variables are used by the shell. In some cases, bbaasshh assigns a default value to a variable; these cases are noted below. + BBAASSHH__CCOOMMPPAATT + The value is used to set the shell's compatibility level. See + the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS for a description of the various compatibility levels + and their effects. The value may be a decimal number (e.g., + 4.2) or an integer (e.g., 42) corresponding to the desired com- + patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty + string, the compatibility level is set to the default for the + current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not + one of the valid compatibility levels, the shell prints an error + message and sets the compatibility level to the default for the + current version. The valid compatibility levels correspond to + the compatibility options accepted by the sshhoopptt builtin + described below (for example, ccoommppaatt4422 means that 4.2 and 42 are + valid values). The current version is also a valid value. BBAASSHH__EENNVV If this parameter is set when bbaasshh is executing a shell script, its value is interpreted as a filename containing commands to initialize the shell, as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV is subjected to parameter expansion, command substitution, and - arithmetic expansion before being interpreted as a file name. - PPAATTHH is not used to search for the resultant file name. + arithmetic expansion before being interpreted as a filename. + PPAATTHH is not used to search for the resultant filename. BBAASSHH__XXTTRRAACCEEFFDD If set to an integer corresponding to a valid file descriptor, bbaasshh will write the trace output generated when _s_e_t _-_x is @@ -1001,14 +1030,22 @@ PPAARRAAMMEETTEERRSS list of directories in which the shell looks for destination directories specified by the ccdd command. A sample value is ".:~:/usr". + CCHHIILLDD__MMAAXX + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below + a POSIX-mandated minimum, and there is a maximum value (cur- + rently 8192) that this may not exceed. The minimum value is + system-dependent. CCOOLLUUMMNNSS Used by the sseelleecctt compound command to determine the terminal - width when printing selection lists. Automatically set upon + width when printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. CCOOMMPPRREEPPLLYY An array variable from which bbaasshh reads the possible completions - generated by a shell function invoked by the programmable com- - pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + generated by a shell function invoked by the programmable com- + pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each + array element contains one possible completion. EEMMAACCSS If bbaasshh finds this variable in the environment when the shell starts with value "t", it assumes that the shell is running in an Emacs shell buffer and disables line editing. @@ -1047,15 +1084,17 @@ PPAARRAAMMEETTEERRSS HHIISSTTFFIILLEE The name of the file in which command history is saved (see HHIISS-- TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, - the command history is not saved when an interactive shell - exits. + the command history is not saved when a shell exits. HHIISSTTFFIILLEESSIIZZEE The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is trun- - cated, if necessary, by removing the oldest entries, to contain - no more than that number of lines. The default value is 500. - The history file is also truncated to this size after writing it - when an interactive shell exits. + this variable is assigned a value, the history file is trun- + cated, if necessary, to contain no more than that number of + lines by removing the oldest entries. The history file is also + truncated to this size after writing it when a shell exits. If + the value is 0, the history file is truncated to zero size. + Non-numeric values and numeric values less than zero inhibit + truncation. The shell sets the default value to the value of + HHIISSTTSSIIZZEE after reading any startup files. HHIISSTTIIGGNNOORREE A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is @@ -1070,7 +1109,11 @@ PPAARRAAMMEETTEERRSS history regardless of the value of HHIISSTTIIGGNNOORREE. HHIISSTTSSIIZZEE The number of commands to remember in the command history (see - HHIISSTTOORRYY below). The default value is 500. + HHIISSTTOORRYY below). If the value is 0, commands are not saved in + the history list. Numeric values less than zero result in every + command being saved on the history list (there is no limit). + The shell sets the default value to 500 after reading any + startup files. HHIISSTTTTIIMMEEFFOORRMMAATT If this variable is set and not null, its value is used as a format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated @@ -1127,41 +1170,42 @@ PPAARRAAMMEETTEERRSS This variable determines the locale category used for number formatting. LLIINNEESS Used by the sseelleecctt compound command to determine the column - length for printing selection lists. Automatically set upon + length for printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. - MMAAIILL If this parameter is set to a file or directory name and the - MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the - arrival of mail in the specified file or Maildir-format direc- + MMAAIILL If this parameter is set to a file or directory name and the + MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the + arrival of mail in the specified file or Maildir-format direc- tory. MMAAIILLCCHHEECCKK - Specifies how often (in seconds) bbaasshh checks for mail. The - default is 60 seconds. When it is time to check for mail, the - shell does so before displaying the primary prompt. If this - variable is unset, or set to a value that is not a number + Specifies how often (in seconds) bbaasshh checks for mail. The + default is 60 seconds. When it is time to check for mail, the + shell does so before displaying the primary prompt. If this + variable is unset, or set to a value that is not a number greater than or equal to zero, the shell disables mail checking. MMAAIILLPPAATTHH - A colon-separated list of file names to be checked for mail. - The message to be printed when mail arrives in a particular file - may be specified by separating the file name from the message - with a `?'. When used in the text of the message, $$__ expands to - the name of the current mailfile. Example: + A colon-separated list of filenames to be checked for mail. The + message to be printed when mail arrives in a particular file may + be specified by separating the filename from the message with a + `?'. When used in the text of the message, $$__ expands to the + name of the current mailfile. Example: MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' - BBaasshh supplies a default value for this variable, but the loca- - tion of the user mail files that it uses is system dependent + BBaasshh supplies a default value for this variable, but the loca- + tion of the user mail files that it uses is system dependent (e.g., /var/mail/$$UUSSEERR). OOPPTTEERRRR If set to the value 1, bbaasshh displays error messages generated by - the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a + the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a shell script is executed. - PPAATTHH The search path for commands. It is a colon-separated list of - directories in which the shell looks for commands (see CCOOMMMMAANNDD - EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the + PPAATTHH The search path for commands. It is a colon-separated list of + directories in which the shell looks for commands (see CCOOMMMMAANNDD + EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the value of PPAATTHH indicates the current directory. A null directory - name may appear as two adjacent colons, or as an initial or - trailing colon. The default path is system-dependent, and is - set by the administrator who installs bbaasshh. A common value is - ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin''. + name may appear as two adjacent colons, or as an initial or + trailing colon. The default path is system-dependent, and is + set by the administrator who installs bbaasshh. A common value is + ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. PPOOSSIIXXLLYY__CCOORRRREECCTT If this variable is in the environment when bbaasshh starts, the shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if @@ -1216,70 +1260,66 @@ PPAARRAAMMEETTEERRSS the fraction is included. If this variable is not set, bbaasshh acts as if it had the value - $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss%%33llSS''. If the value is null, no - timing information is displayed. A trailing newline is added + $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, + no timing information is displayed. A trailing newline is added when the format string is displayed. - TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the default timeout for the rreeaadd builtin. The sseelleecctt command termi- nates if input does not arrive after TTMMOOUUTT seconds when input is coming from a terminal. In an interactive shell, the value is - interpreted as the number of seconds to wait for input after - issuing the primary prompt. BBaasshh terminates after waiting for - that number of seconds if input does not arrive. - - TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which + interpreted as the number of seconds to wait for a line of input + after issuing the primary prompt. BBaasshh terminates after waiting + for that number of seconds if a complete line of input does not + arrive. + TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which bbaasshh creates temporary files for the shell's use. - aauuttoo__rreessuummee This variable controls how the shell interacts with the user and - job control. If this variable is set, single word simple com- + job control. If this variable is set, single word simple com- mands without redirections are treated as candidates for resump- tion of an existing stopped job. There is no ambiguity allowed; - if there is more than one job beginning with the string typed, - the job most recently accessed is selected. The _n_a_m_e of a - stopped job, in this context, is the command line used to start - it. If set to the value _e_x_a_c_t, the string supplied must match - the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the - string supplied needs to match a substring of the name of a - stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- - gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set - to any other value, the supplied string must be a prefix of a + if there is more than one job beginning with the string typed, + the job most recently accessed is selected. The _n_a_m_e of a + stopped job, in this context, is the command line used to start + it. If set to the value _e_x_a_c_t, the string supplied must match + the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the + string supplied needs to match a substring of the name of a + stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- + gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set + to any other value, the supplied string must be a prefix of a stopped job's name; this provides functionality analogous to the %%_s_t_r_i_n_g job identifier. - hhiissttcchhaarrss - The two or three characters which control history expansion and + The two or three characters which control history expansion and tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN below). The first character - is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals - the start of a history expansion, normally `!!'. The second - character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as - shorthand for re-running the previous command entered, substi- - tuting one string for another in the command. The default is - `^^'. The optional third character is the character which indi- - cates that the remainder of the line is a comment when found as - the first character of a word, normally `##'. The history com- + is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals + the start of a history expansion, normally `!!'. The second + character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as + shorthand for re-running the previous command entered, substi- + tuting one string for another in the command. The default is + `^^'. The optional third character is the character which indi- + cates that the remainder of the line is a comment when found as + the first character of a word, normally `##'. The history com- ment character causes history substitution to be skipped for the - remaining words on the line. It does not necessarily cause the + remaining words on the line. It does not necessarily cause the shell parser to treat the rest of the line as a comment. AArrrraayyss - BBaasshh provides one-dimensional indexed and associative array variables. - Any variable may be used as an indexed array; the ddeeccllaarree builtin will - explicitly declare an array. There is no maximum limit on the size of - an array, nor any requirement that members be indexed or assigned con- - tiguously. Indexed arrays are referenced using integers (including - arithmetic expressions) and are zero-based; associative arrays are - referenced using arbitrary strings. + BBaasshh provides one-dimensional indexed and associative array variables. + Any variable may be used as an indexed array; the ddeeccllaarree builtin will + explicitly declare an array. There is no maximum limit on the size of + an array, nor any requirement that members be indexed or assigned con- + tiguously. Indexed arrays are referenced using integers (including + arithmetic expressions) and are zero-based; associative arrays are + referenced using arbitrary strings. Unless otherwise noted, indexed + array indices must be non-negative integers. An indexed array is created automatically if any variable is assigned to using the syntax _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The _s_u_b_s_c_r_i_p_t is treated as - an arithmetic expression that must evaluate to a number. If _s_u_b_s_c_r_i_p_t - evaluates to a number less than zero, it is used as an offset from one - greater than the array's maximum index (so a subcript of -1 refers to - the last element of the array). To explicitly declare an indexed - array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). ddeeccllaarree - --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_s_c_r_i_p_t is ignored. + an arithmetic expression that must evaluate to a number. To explicitly + declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- + MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- + _s_c_r_i_p_t is ignored. Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. @@ -1288,17 +1328,21 @@ PPAARRAAMMEETTEERRSS Arrays are assigned to using compound assignments of the form _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- - _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require the bracket - and subscript. When assigning to indexed arrays, if the optional - brackets and subscript are supplied, that index is assigned to; other- - wise the index of the element assigned is the last index assigned to by - the statement plus one. Indexing starts at zero. + _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but + _s_t_r_i_n_g. When assigning to indexed arrays, if the optional brackets and + subscript are supplied, that index is assigned to; otherwise the index + of the element assigned is the last index assigned to by the statement + plus one. Indexing starts at zero. When assigning to an associative array, the subscript is required. This syntax is also accepted by the ddeeccllaarree builtin. Individual array elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax - introduced above. + introduced above. When assigning to an indexed array, if _n_a_m_e is sub- + scripted by a negative number, that number is interpreted as relative + to one greater than the maximum index of _n_a_m_e, so negative indices + count back from the end of the array, and an index of -1 references the + last element. Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are required to avoid conflicts with pathname expansion. If @@ -1316,36 +1360,50 @@ PPAARRAAMMEETTEERRSS above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- ments in the array. Referencing an array variable without a subscript - is equivalent to referencing the array with a subscript of 0. + is equivalent to referencing the array with a subscript of 0. If the + _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array evaluates to + a number less than zero, it is interpreted as relative to one greater + than the maximum index of the array, so negative indices count back + from the end of the array, and an index of -1 references the last ele- + ment. - An array variable is considered set if a subscript has been assigned a + An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. + It is possible to obtain the keys (indices) of an array as well as the + values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in + array variable _n_a_m_e. The treatment when in double quotes is similar to + the expansion of the special parameters _@ and _* within double quotes. + The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] - destroys the array element at index _s_u_b_s_c_r_i_p_t. Care must be taken to - avoid unwanted side effects caused by pathname expansion. uunnsseett _n_a_m_e, - where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** - or @@, removes the entire array. - - The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to - specify an indexed array and a --AA option to specify an associative - array. The rreeaadd builtin accepts a --aa option to assign a list of words - read from the standard input to an array. The sseett and ddeeccllaarree builtins - display array values in a way that allows them to be reused as assign- - ments. + destroys the array element at index _s_u_b_s_c_r_i_p_t. Negative subscripts to + indexed arrays are interpreted as described above. Care must be taken + to avoid unwanted side effects caused by pathname expansion. uunnsseett + _n_a_m_e, where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t + is ** or @@, removes the entire array. + + The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to + specify an indexed array and a --AA option to specify an associative + array. If both options are supplied, --AA takes precedence. The rreeaadd + builtin accepts a --aa option to assign a list of words read from the + standard input to an array. The sseett and ddeeccllaarree builtins display array + values in a way that allows them to be reused as assignments. EEXXPPAANNSSIIOONN Expansion is performed on the command line after it has been split into - words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, - _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- + words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, + _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- _t_i_o_n, _a_r_i_t_h_m_e_t_i_c _e_x_p_a_n_s_i_o_n, _w_o_r_d _s_p_l_i_t_t_i_n_g, and _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n. - The order of expansions is: brace expansion, tilde expansion, parame- - ter, variable and arithmetic expansion and command substitution (done - in a left-to-right fashion), word splitting, and pathname expansion. + The order of expansions is: brace expansion; tilde expansion, parameter + and variable expansion, arithmetic expansion, and command substitution + (done in a left-to-right fashion); word splitting; and pathname expan- + sion. On systems that can support it, there is an additional expansion avail- - able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. + able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as + tilde, parameter, variable, and arithmetic expansion and command sub- + stitution. Only brace expansion, word splitting, and pathname expansion can change the number of words of the expansion; other expansions expand a single @@ -1374,10 +1432,10 @@ EEXXPPAANNSSIIOONN or _y begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where neces- sary. When characters are supplied, the expression expands to each - character lexicographically between _x and _y, inclusive. Note that both - _x and _y must be of the same type. When the increment is supplied, it - is used as the difference between each term. The default increment is - 1 or -1 as appropriate. + character lexicographically between _x and _y, inclusive, using the + default C locale. Note that both _x and _y must be of the same type. + When the increment is supplied, it is used as the difference between + each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any char- acters special to other expansions are preserved in the result. It is @@ -1435,7 +1493,7 @@ EEXXPPAANNSSIIOONN Each variable assignment is checked for unquoted tilde-prefixes immedi- ately following a :: or the first ==. In these cases, tilde expansion is - also performed. Consequently, one may use file names with tildes in + also performed. Consequently, one may use filenames with tildes in assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded value. @@ -1455,69 +1513,87 @@ EEXXPPAANNSSIIOONN The value of _p_a_r_a_m_e_t_e_r is substituted. The braces are required when _p_a_r_a_m_e_t_e_r is a positional parameter with more than one digit, or when _p_a_r_a_m_e_t_e_r is followed by a character which is not - to be interpreted as part of its name. - - If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), a - level of variable indirection is introduced. BBaasshh uses the value of - the variable formed from the rest of _p_a_r_a_m_e_t_e_r as the name of the vari- - able; this variable is then expanded and that value is used in the rest - of the substitution, rather than the value of _p_a_r_a_m_e_t_e_r itself. This - is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The exceptions to this are the expan- - sions of ${!!\\ffPPffIIpprreeffiixx**} and ${!!_n_a_m_e[_@]} described below. The excla- - mation point must immediately follow the left brace in order to intro- - duce indirection. + to be interpreted as part of its name. The _p_a_r_a_m_e_t_e_r is a shell + parameter as described above PPAARRAAMMEETTEERRSS) or an array reference + (AArrrraayyss). + + If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), it + introduces a level of variable indirection. BBaasshh uses the value of the + variable formed from the rest of _p_a_r_a_m_e_t_e_r as the name of the variable; + this variable is then expanded and that value is used in the rest of + the substitution, rather than the value of _p_a_r_a_m_e_t_e_r itself. This is + known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The exceptions to this are the expansions + of ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point + must immediately follow the left brace in order to introduce indirec- + tion. In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic expansion. When not performing substring expansion, using the forms documented - below, bbaasshh tests for a parameter that is unset or null. Omitting the - colon results in a test only for a parameter that is unset. + below (e.g., ::--), bbaasshh tests for a parameter that is unset or null. + Omitting the colon results in a test only for a parameter that is + unset. ${_p_a_r_a_m_e_t_e_r::--_w_o_r_d} - UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan- - sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r + UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan- + sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r is substituted. ${_p_a_r_a_m_e_t_e_r::==_w_o_r_d} - AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the + AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expansion of _w_o_r_d is assigned to _p_a_r_a_m_e_t_e_r. The value of _p_a_r_a_m_- - _e_t_e_r is then substituted. Positional parameters and special + _e_t_e_r is then substituted. Positional parameters and special parameters may not be assigned to in this way. ${_p_a_r_a_m_e_t_e_r::??_w_o_r_d} - DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset, - the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is - not present) is written to the standard error and the shell, if + DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset, + the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is + not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of _p_a_r_a_m_e_t_e_r is substituted. ${_p_a_r_a_m_e_t_e_r::++_w_o_r_d} - UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or unset, nothing is + UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or unset, nothing is substituted, otherwise the expansion of _w_o_r_d is substituted. ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t} ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t::_l_e_n_g_t_h} - SSuubbssttrriinngg EExxppaannssiioonn. Expands to up to _l_e_n_g_t_h characters of - _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t. If - _l_e_n_g_t_h is omitted, expands to the substring of _p_a_r_a_m_e_t_e_r start- - ing at the character specified by _o_f_f_s_e_t. _l_e_n_g_t_h and _o_f_f_s_e_t are - arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). If - _o_f_f_s_e_t evaluates to a number less than zero, the value is used - as an offset from the end of the value of _p_a_r_a_m_e_t_e_r. If _l_e_n_g_t_h - evaluates to a number less than zero, and _p_a_r_a_m_e_t_e_r is not @@ and - not an indexed or associative array, it is interpreted as an - offset from the end of the value of _p_a_r_a_m_e_t_e_r rather than a num- - ber of characters, and the expansion is the characters between - the two offsets. If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h posi- - tional parameters beginning at _o_f_f_s_e_t. If _p_a_r_a_m_e_t_e_r is an - indexed array name subscripted by @ or *, the result is the - _l_e_n_g_t_h members of the array beginning with ${_p_a_r_a_m_e_t_e_r[_o_f_f_s_e_t]}. - A negative _o_f_f_s_e_t is taken relative to one greater than the max- - imum index of the specified array. Substring expansion applied - to an associative array produces undefined results. Note that a - negative offset must be separated from the colon by at least one - space to avoid being confused with the :- expansion. Substring - indexing is zero-based unless the positional parameters are - used, in which case the indexing starts at 1 by default. If - _o_f_f_s_e_t is 0, and the positional parameters are used, $$00 is pre- - fixed to the list. + SSuubbssttrriinngg EExxppaannssiioonn. Expands to up to _l_e_n_g_t_h characters of the + value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_- + _s_e_t. If _p_a_r_a_m_e_t_e_r is @@, an indexed array subscripted by @@ or **, + or an associative array name, the results differ as described + below. If _l_e_n_g_t_h is omitted, expands to the substring of the + value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t + and extending to the end of the value. _l_e_n_g_t_h and _o_f_f_s_e_t are + arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). + + If _o_f_f_s_e_t evaluates to a number less than zero, the value is + used as an offset in characters from the end of the value of + _p_a_r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it + is interpreted as an offset in characters from the end of the + value of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the + expansion is the characters between _o_f_f_s_e_t and that result. + Note that a negative offset must be separated from the colon by + at least one space to avoid being confused with the ::-- expan- + sion. + + If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters + beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one + greater than the greatest positional parameter, so an offset of + -1 evaluates to the last positional parameter. It is an expan- + sion error if _l_e_n_g_t_h evaluates to a number less than zero. + + If _p_a_r_a_m_e_t_e_r is an indexed array name subscripted by @ or *, the + result is the _l_e_n_g_t_h members of the array beginning with + ${_p_a_r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to + one greater than the maximum index of the specified array. It + is an expansion error if _l_e_n_g_t_h evaluates to a number less than + zero. + + Substring expansion applied to an associative array produces + undefined results. + + Substring indexing is zero-based unless the positional parame- + ters are used, in which case the indexing starts at 1 by + default. If _o_f_f_s_e_t is 0, and the positional parameters are + used, $$00 is prefixed to the list. ${!!_p_r_e_f_i_x**} ${!!_p_r_e_f_i_x@@} @@ -1540,78 +1616,85 @@ EEXXPPAANNSSIIOONN _p_a_r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value substituted is the number of positional parameters. If _p_a_r_a_m_e_- _t_e_r is an array name subscripted by ** or @@, the value substi- - tuted is the number of elements in the array. + tuted is the number of elements in the array. If _p_a_r_a_m_e_t_e_r is + an indexed array name subscripted by a negative number, that + number is interpreted as relative to one greater than the maxi- + mum index of _p_a_r_a_m_e_t_e_r, so negative indices count back from the + end of the array, and an index of -1 references the last ele- + ment. ${_p_a_r_a_m_e_t_e_r##_w_o_r_d} ${_p_a_r_a_m_e_t_e_r####_w_o_r_d} RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a pattern just as in pathname expansion. If the pattern matches - the beginning of the value of _p_a_r_a_m_e_t_e_r, then the result of the - expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest - matching pattern (the ``##'' case) or the longest matching pat- - tern (the ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the - pattern removal operation is applied to each positional parame- + the beginning of the value of _p_a_r_a_m_e_t_e_r, then the result of the + expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest + matching pattern (the ``##'' case) or the longest matching pat- + tern (the ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the + pattern removal operation is applied to each positional parame- ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- - _e_t_e_r is an array variable subscripted with @@ or **, the pattern - removal operation is applied to each member of the array in + _e_t_e_r is an array variable subscripted with @@ or **, the pattern + removal operation is applied to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a pattern just as in pathname expansion. If the pattern matches - a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the - result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with - the shortest matching pattern (the ``%%'' case) or the longest - matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ - or **, the pattern removal operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the pattern removal operation is applied to each member of + a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the + result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with + the shortest matching pattern (the ``%%'' case) or the longest + matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ + or **, the pattern removal operation is applied to each posi- + tional parameter in turn, and the expansion is the resultant + list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + **, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g} PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- - tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and - the longest match of _p_a_t_t_e_r_n against its value is replaced with - _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with //, all matches of _p_a_t_t_e_r_n are - replaced with _s_t_r_i_n_g. Normally only the first match is + tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and + the longest match of _p_a_t_t_e_r_n against its value is replaced with + _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with //, all matches of _p_a_t_t_e_r_n are + replaced with _s_t_r_i_n_g. Normally only the first match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at the begin- ning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n begins with - %%, it must match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. + %%, it must match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted and the // fol- lowing _p_a_t_t_e_r_n may be omitted. If _p_a_r_a_m_e_t_e_r is @@ or **, the sub- - stitution operation is applied to each positional parameter in - turn, and the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is - an array variable subscripted with @@ or **, the substitution - operation is applied to each member of the array in turn, and + stitution operation is applied to each positional parameter in + turn, and the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is + an array variable subscripted with @@ or **, the substitution + operation is applied to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} - CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- - betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- - duce a pattern just as in pathname expansion. The ^^ operator - converts lowercase letters matching _p_a_t_t_e_r_n to uppercase; the ,, - operator converts matching uppercase letters to lowercase. The - ^^^^ and ,,,, expansions convert each matched character in the - expanded value; the ^^ and ,, expansions match and convert only - the first character in the expanded value. If _p_a_t_t_e_r_n is omit- - ted, it is treated like a ??, which matches every character. If - _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied - to each positional parameter in turn, and the expansion is the - resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted - with @@ or **, the case modification operation is applied to each - member of the array in turn, and the expansion is the resultant - list. + CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- + betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- + duce a pattern just as in pathname expansion. Each character in + the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, + if it matches the pattern, its case is converted. The pattern + should not attempt to match more than one character. The ^^ + operator converts lowercase letters matching _p_a_t_t_e_r_n to upper- + case; the ,, operator converts matching uppercase letters to low- + ercase. The ^^^^ and ,,,, expansions convert each matched character + in the expanded value; the ^^ and ,, expansions match and convert + only the first character in the expanded value. If _p_a_t_t_e_r_n is + omitted, it is treated like a ??, which matches every character. + If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is + applied to each positional parameter in turn, and the expansion + is the resultant list. If _p_a_r_a_m_e_t_e_r is an array variable sub- + scripted with @@ or **, the case modification operation is applied + to each member of the array in turn, and the expansion is the + resultant list. CCoommmmaanndd SSuubbssttiittuuttiioonn _C_o_m_m_a_n_d _s_u_b_s_t_i_t_u_t_i_o_n allows the output of a command to replace the com- mand name. There are two forms: - $$((_c_o_m_m_a_n_d)) or ``_c_o_m_m_a_n_d`` @@ -1643,136 +1726,141 @@ EEXXPPAANNSSIIOONN The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. All - tokens in the expression undergo parameter expansion, string expansion, - command substitution, and quote removal. Arithmetic expansions may be + tokens in the expression undergo parameter and variable expansion, com- + mand substitution, and quote removal. The result is treated as the + arithmetic expression to be evaluated. Arithmetic expansions may be nested. - The evaluation is performed according to the rules listed below under + The evaluation is performed according to the rules listed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message indicating failure and no substitution occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is supported on systems that support named pipes - (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. It takes the form - of <<((_l_i_s_t)) or >>((_l_i_s_t)). The process _l_i_s_t is run with its input or out- + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is supported on systems that support named pipes + (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. It takes the form + of <<((_l_i_s_t)) or >>((_l_i_s_t)). The process _l_i_s_t is run with its input or out- put connected to a _F_I_F_O or some file in //ddeevv//ffdd. The name of this file - is passed as an argument to the current command as the result of the - expansion. If the >>((_l_i_s_t)) form is used, writing to the file will pro- - vide input for _l_i_s_t. If the <<((_l_i_s_t)) form is used, the file passed as + is passed as an argument to the current command as the result of the + expansion. If the >>((_l_i_s_t)) form is used, writing to the file will pro- + vide input for _l_i_s_t. If the <<((_l_i_s_t)) form is used, the file passed as an argument should be read to obtain the output of _l_i_s_t. - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic + When available, process substitution is performed simultaneously with + parameter and variable expansion, command substitution, and arithmetic expansion. WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes + The shell scans the results of parameter expansion, command substitu- + tion, and arithmetic expansion that did not occur within double quotes for _w_o_r_d _s_p_l_i_t_t_i_n_g. - The shell treats each character of IIFFSS as a delimiter, and splits the - results of the other expansions into words on these characters. If IIFFSS - is unset, or its value is exactly <><><>, the default, - then sequences of <>, <>, and <> at the beginning and - end of the results of the previous expansions are ignored, and any - sequence of IIFFSS characters not at the beginning or end serves to - delimit words. If IIFFSS has a value other than the default, then - sequences of the whitespace characters ssppaaccee and ttaabb are ignored at the - beginning and end of the word, as long as the whitespace character is - in the value of IIFFSS (an IIFFSS whitespace character). Any character in - IIFFSS that is not IIFFSS whitespace, along with any adjacent IIFFSS whitespace - characters, delimits a field. A sequence of IIFFSS whitespace characters - is also treated as a delimiter. If the value of IIFFSS is null, no word - splitting occurs. - - Explicit null arguments ("""" or '''') are retained. Unquoted implicit + The shell treats each character of IIFFSS as a delimiter, and splits the + results of the other expansions into words using these characters as + field terminators. If IIFFSS is unset, or its value is exactly + <><><>, the default, then sequences of <>, <>, + and <> at the beginning and end of the results of the previous + expansions are ignored, and any sequence of IIFFSS characters not at the + beginning or end serves to delimit words. If IIFFSS has a value other + than the default, then sequences of the whitespace characters ssppaaccee and + ttaabb are ignored at the beginning and end of the word, as long as the + whitespace character is in the value of IIFFSS (an IIFFSS whitespace charac- + ter). Any character in IIFFSS that is not IIFFSS whitespace, along with any + adjacent IIFFSS whitespace characters, delimits a field. A sequence of + IIFFSS whitespace characters is also treated as a delimiter. If the value + of IIFFSS is null, no word splitting occurs. + + Explicit null arguments ("""" or '''') are retained. Unquoted implicit null arguments, resulting from the expansion of parameters that have no - values, are removed. If a parameter with no value is expanded within + values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained. Note that if no expansion occurs, no splitting is performed. PPaatthhnnaammee EExxppaannssiioonn - After word splitting, unless the --ff option has been set, bbaasshh scans - each word for the characters **, ??, and [[. If one of these characters - appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an - alphabetically sorted list of file names matching the pattern. If no - matching file names are found, and the shell option nnuullllgglloobb is not - enabled, the word is left unchanged. If the nnuullllgglloobb option is set, - and no matches are found, the word is removed. If the ffaaiillgglloobb shell - option is set, and no matches are found, an error message is printed - and the command is not executed. If the shell option nnooccaasseegglloobb is - enabled, the match is performed without regard to the case of alpha- - betic characters. When a pattern is used for pathname expansion, the - character ````..'''' at the start of a name or immediately following a - slash must be matched explicitly, unless the shell option ddoottgglloobb is - set. When matching a pathname, the slash character must always be - matched explicitly. In other cases, the ````..'''' character is not - treated specially. See the description of sshhoopptt below under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiill-- - gglloobb, and ddoottgglloobb shell options. - - The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file - names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file - name that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed - from the list of matches. The file names ````..'''' and ````....'''' are always - ignored when GGLLOOBBIIGGNNOORREE is set and not null. However, setting GGLLOOBBIIGG-- - NNOORREE to a non-null value has the effect of enabling the ddoottgglloobb shell - option, so all other file names beginning with a ````..'''' will match. To - get the old behavior of ignoring file names beginning with a ````..'''', - make ````..**'''' one of the patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is - disabled when GGLLOOBBIIGGNNOORREE is unset. + After word splitting, unless the --ff option has been set, bbaasshh scans + each word for the characters **, ??, and [[. If one of these characters + appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an + alphabetically sorted list of filenames matching the pattern (see PPaatt-- + tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the + shell option nnuullllgglloobb is not enabled, the word is left unchanged. If + the nnuullllgglloobb option is set, and no matches are found, the word is + removed. If the ffaaiillgglloobb shell option is set, and no matches are + found, an error message is printed and the command is not executed. If + the shell option nnooccaasseegglloobb is enabled, the match is performed without + regard to the case of alphabetic characters. When a pattern is used + for pathname expansion, the character ````..'''' at the start of a name or + immediately following a slash must be matched explicitly, unless the + shell option ddoottgglloobb is set. When matching a pathname, the slash char- + acter must always be matched explicitly. In other cases, the ````..'''' + character is not treated specially. See the description of sshhoopptt below + under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullll-- + gglloobb, ffaaiillgglloobb, and ddoottgglloobb shell options. + + The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file- + names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching filename + that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed from the + list of matches. The filenames ````..'''' and ````....'''' are always ignored + when GGLLOOBBIIGGNNOORREE is set and not null. However, setting GGLLOOBBIIGGNNOORREE to a + non-null value has the effect of enabling the ddoottgglloobb shell option, so + all other filenames beginning with a ````..'''' will match. To get the old + behavior of ignoring filenames beginning with a ````..'''', make ````..**'''' one + of the patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when + GGLLOOBBIIGGNNOORREE is unset. PPaatttteerrnn MMaattcchhiinngg Any character that appears in a pattern, other than the special pattern - characters described below, matches itself. The NUL character may not - occur in a pattern. A backslash escapes the following character; the - escaping backslash is discarded when matching. The special pattern + characters described below, matches itself. The NUL character may not + occur in a pattern. A backslash escapes the following character; the + escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally. The special pattern characters have the following meanings: - ** Matches any string, including the null string. When the - gglloobbssttaarr shell option is enabled, and ** is used in a - pathname expansion context, two adjacent **s used as a - single pattern will match all files and zero or more - directories and subdirectories. If followed by a //, two - adjacent **s will match only directories and subdirecto- + ** Matches any string, including the null string. When the + gglloobbssttaarr shell option is enabled, and ** is used in a + pathname expansion context, two adjacent **s used as a + single pattern will match all files and zero or more + directories and subdirectories. If followed by a //, two + adjacent **s will match only directories and subdirecto- ries. ?? Matches any single character. - [[......]] Matches any one of the enclosed characters. A pair of - characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_- - _s_i_o_n; any character that sorts between those two charac- - ters, inclusive, using the current locale's collating - sequence and character set, is matched. If the first + [[......]] Matches any one of the enclosed characters. A pair of + characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_- + _s_i_o_n; any character that falls between those two charac- + ters, inclusive, using the current locale's collating + sequence and character set, is matched. If the first character following the [[ is a !! or a ^^ then any charac- - ter not enclosed is matched. The sorting order of char- - acters in range expressions is determined by the current - locale and the value of the LLCC__CCOOLLLLAATTEE shell variable, if - set. A -- may be matched by including it as the first or - last character in the set. A ]] may be matched by includ- - ing it as the first character in the set. - - Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using + ter not enclosed is matched. The sorting order of char- + acters in range expressions is determined by the current + locale and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell + variables, if set. To obtain the traditional interpreta- + tion of range expressions, where [[aa--dd]] is equivalent to + [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or + enable the gglloobbaasscciiiirraannggeess shell option. A -- may be + matched by including it as the first or last character in + the set. A ]] may be matched by including it as the first + character in the set. + + Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt A character class matches any character belonging to that class. The wwoorrdd character class matches letters, digits, and the character _. - Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified + Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified using the syntax [[==_c==]], which matches all characters with - the same collation weight (as defined by the current + the same collation weight (as defined by the current locale) as the character _c. Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat- ing symbol _s_y_m_b_o_l. If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several - extended pattern matching operators are recognized. In the following + extended pattern matching operators are recognized. In the following description, a _p_a_t_t_e_r_n_-_l_i_s_t is a list of one or more patterns separated by a ||. Composite patterns may be formed using one or more of the fol- lowing sub-patterns: @@ -1790,23 +1878,26 @@ EEXXPPAANNSSIIOONN QQuuoottee RReemmoovvaall After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions + ters \\, '', and "" that did not result from one of the above expansions are removed. RREEDDIIRREECCTTIIOONN - Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d - using a special notation interpreted by the shell. Redirection may - also be used to open and close files for the current shell execution - environment. The following redirection operators may precede or appear - anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may follow a _c_o_m_m_a_n_d. Redirections - are processed in the order they appear, from left to right. + Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d + using a special notation interpreted by the shell. Redirection allows + commands' file handles to be duplicated, opened, closed, made to refer + to different files, and can change the files the command reads from and + writes to. Redirection may also be used to modify file handles in the + current shell execution environment. The following redirection opera- + tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol- + low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, + from left to right. Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a - file descriptor greater than 10 and assign it to _v_a_r_n_a_m_e. If >&- or - <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines the file - descriptor to close. + file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. + If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines + the file descriptor to close. In the following descriptions, if the file descriptor number is omit- ted, and the first character of the redirection operator is <<, the re- @@ -1816,29 +1907,29 @@ RREEDDIIRREECCTTIIOONN The word following the redirection operator in the following descrip- tions, unless otherwise noted, is subjected to brace expansion, tilde - expansion, parameter expansion, command substitution, arithmetic expan- - sion, quote removal, pathname expansion, and word splitting. If it - expands to more than one word, bbaasshh reports an error. + expansion, parameter and variable expansion, command substitution, + arithmetic expansion, quote removal, pathname expansion, and word + splitting. If it expands to more than one word, bbaasshh reports an error. - Note that the order of redirections is significant. For example, the + Note that the order of redirections is significant. For example, the command ls >> dirlist 2>>&&1 - directs both standard output and standard error to the file _d_i_r_l_i_s_t, + directs both standard output and standard error to the file _d_i_r_l_i_s_t, while the command ls 2>>&&1 >> dirlist - directs only the standard output to file _d_i_r_l_i_s_t, because the standard - error was duplicated from the standard output before the standard out- + directs only the standard output to file _d_i_r_l_i_s_t, because the standard + error was duplicated from the standard output before the standard out- put was redirected to _d_i_r_l_i_s_t. BBaasshh handles several filenames specially when they are used in redirec- tions, as described in the following table: //ddeevv//ffdd//_f_d - If _f_d is a valid integer, file descriptor _f_d is dupli- + If _f_d is a valid integer, file descriptor _f_d is dupli- cated. //ddeevv//ssttddiinn File descriptor 0 is duplicated. @@ -1848,22 +1939,22 @@ RREEDDIIRREECCTTIIOONN File descriptor 2 is duplicated. //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts - to open a TCP connection to the corresponding socket. + is an integer port number or service name, bbaasshh attempts + to open the corresponding TCP socket. //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts - to open a UDP connection to the corresponding socket. + is an integer port number or service name, bbaasshh attempts + to open the corresponding UDP socket. A failure to open or create a file causes the redirection to fail. - Redirections using file descriptors greater than 9 should be used with - care, as they may conflict with file descriptors the shell uses inter- + Redirections using file descriptors greater than 9 should be used with + care, as they may conflict with file descriptors the shell uses inter- nally. RReeddiirreeccttiinngg IInnppuutt Redirection of input causes the file whose name results from the expan- - sion of _w_o_r_d to be opened for reading on file descriptor _n, or the + sion of _w_o_r_d to be opened for reading on file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. The general format for redirecting input is: @@ -1871,27 +1962,27 @@ RREEDDIIRREECCTTIIOONN [_n]<<_w_o_r_d RReeddiirreeccttiinngg OOuuttppuutt - Redirection of output causes the file whose name results from the + Redirection of output causes the file whose name results from the expansion of _w_o_r_d to be opened for writing on file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file - does not exist it is created; if it does exist it is truncated to zero + does not exist it is created; if it does exist it is truncated to zero size. The general format for redirecting output is: [_n]>>_w_o_r_d - If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett - builtin has been enabled, the redirection will fail if the file whose - name results from the expansion of _w_o_r_d exists and is a regular file. + If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett + builtin has been enabled, the redirection will fail if the file whose + name results from the expansion of _w_o_r_d exists and is a regular file. If the redirection operator is >>||, or the redirection operator is >> and the nnoocclloobbbbeerr option to the sseett builtin command is not enabled, the re- direction is attempted even if the file named by _w_o_r_d exists. AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt - Redirection of output in this fashion causes the file whose name - results from the expansion of _w_o_r_d to be opened for appending on file - descriptor _n, or the standard output (file descriptor 1) if _n is not + Redirection of output in this fashion causes the file whose name + results from the expansion of _w_o_r_d to be opened for appending on file + descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file does not exist it is created. The general format for appending output is: @@ -1900,11 +1991,11 @@ RREEDDIIRREECCTTIIOONN RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be redirected to the + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be redirected to the file whose name is the expansion of _w_o_r_d. - There are two formats for redirecting standard output and standard + There are two formats for redirecting standard output and standard error: &&>>_w_o_r_d @@ -1916,10 +2007,13 @@ RREEDDIIRREECCTTIIOONN >>_w_o_r_d 2>>&&1 + When using the second form, _w_o_r_d may not expand to a number or --. If + it does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee + DDeessccrriippttoorrss below) for compatibility reasons. AAppppeennddiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be appended to the + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be appended to the file whose name is the expansion of _w_o_r_d. The format for appending standard output and standard error is: @@ -1930,10 +2024,12 @@ RREEDDIIRREECCTTIIOONN >>>>_w_o_r_d 2>>&&1 + (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). + HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the + This type of redirection instructs the shell to read input from the current source until a line containing only _d_e_l_i_m_i_t_e_r (with no trailing - blanks) is seen. All of the lines read up to that point are then used + blanks) is seen. All of the lines read up to that point are then used as the standard input for a command. The format of here-documents is: @@ -1942,18 +2038,18 @@ RREEDDIIRREECCTTIIOONN _h_e_r_e_-_d_o_c_u_m_e_n_t _d_e_l_i_m_i_t_e_r - No parameter expansion, command substitution, arithmetic expansion, or - pathname expansion is performed on _w_o_r_d. If any characters in _w_o_r_d are - quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal on _w_o_r_d, and the - lines in the here-document are not expanded. If _w_o_r_d is unquoted, all - lines of the here-document are subjected to parameter expansion, com- - mand substitution, and arithmetic expansion. In the latter case, the - character sequence \\<> is ignored, and \\ must be used to quote - the characters \\, $$, and ``. + No parameter and variable expansion, command substitution, arithmetic + expansion, or pathname expansion is performed on _w_o_r_d. If any charac- + ters in _w_o_r_d are quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal + on _w_o_r_d, and the lines in the here-document are not expanded. If _w_o_r_d + is unquoted, all lines of the here-document are subjected to parameter + expansion, command substitution, and arithmetic expansion, the charac- + ter sequence \\<> is ignored, and \\ must be used to quote the + characters \\, $$, and ``. If the redirection operator is <<<<--, then all leading tab characters are - stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This - allows here-documents within shell scripts to be indented in a natural + stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This + allows here-documents within shell scripts to be indented in a natural fashion. HHeerree SSttrriinnggss @@ -1961,7 +2057,11 @@ RREEDDIIRREECCTTIIOONN <<<<<<_w_o_r_d - The _w_o_r_d is expanded and supplied to the command on its standard input. + The _w_o_r_d undergoes brace expansion, tilde expansion, parameter and + variable expansion, command substitution, arithmetic expansion, and + quote removal. Pathname expansion and word splitting are not per- + formed. The result is supplied as a single string to the command on + its standard input. DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss The redirection operator @@ -1982,16 +2082,17 @@ RREEDDIIRREECCTTIIOONN is used similarly to duplicate output file descriptors. If _n is not specified, the standard output (file descriptor 1) is used. If the digits in _w_o_r_d do not specify a file descriptor open for output, a re- - direction error occurs. As a special case, if _n is omitted, and _w_o_r_d - does not expand to one or more digits, the standard output and standard - error are redirected as described previously. + direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is + closed. As a special case, if _n is omitted, and _w_o_r_d does not expand + to one or more digits or --, the standard output and standard error are + redirected as described previously. MMoovviinngg FFiillee DDeessccrriippttoorrss The redirection operator [_n]<<&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being duplicated to _n. @@ -1999,7 +2100,7 @@ RREEDDIIRREECCTTIIOONN [_n]>>&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg @@ -2007,117 +2108,117 @@ RREEDDIIRREECCTTIIOONN [_n]<<>>_w_o_r_d - causes the file whose name is the expansion of _w_o_r_d to be opened for - both reading and writing on file descriptor _n, or on file descriptor 0 + causes the file whose name is the expansion of _w_o_r_d to be opened for + both reading and writing on file descriptor _n, or on file descriptor 0 if _n is not specified. If the file does not exist, it is created. AALLIIAASSEESS - _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as - the first word of a simple command. The shell maintains a list of - aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin - commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each - simple command, if unquoted, is checked to see if it has an alias. If - so, that word is replaced by the text of the alias. The characters //, - $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters + _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as + the first word of a simple command. The shell maintains a list of + aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin + commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each + simple command, if unquoted, is checked to see if it has an alias. If + so, that word is replaced by the text of the alias. The characters //, + $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters listed above may not appear in an alias name. The replacement text may - contain any valid shell input, including shell metacharacters. The - first word of the replacement text is tested for aliases, but a word - that is identical to an alias being expanded is not expanded a second - time. This means that one may alias llss to llss --FF, for instance, and - bbaasshh does not try to recursively expand the replacement text. If the - last character of the alias value is a _b_l_a_n_k, then the next command + contain any valid shell input, including shell metacharacters. The + first word of the replacement text is tested for aliases, but a word + that is identical to an alias being expanded is not expanded a second + time. This means that one may alias llss to llss --FF, for instance, and + bbaasshh does not try to recursively expand the replacement text. If the + last character of the alias value is a _b_l_a_n_k, then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the aalliiaass command, and removed with the uunnaalliiaass command. - There is no mechanism for using arguments in the replacement text. If - arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS + There is no mechanism for using arguments in the replacement text. If + arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS below). - Aliases are not expanded when the shell is not interactive, unless the - eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of + Aliases are not expanded when the shell is not interactive, unless the + eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands + The rules concerning the definition and use of aliases are somewhat + confusing. BBaasshh always reads at least one complete line of input + before executing any of the commands on that line. Aliases are + expanded when a command is read, not when it is executed. Therefore, + an alias definition appearing on the same line as another command does + not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- + alias. This behavior is also an issue when functions are executed. + Aliases are expanded when a function definition is read, not when the + function is executed, because a function definition is itself a com- pound command. As a consequence, aliases defined in a function are not - available until after that function is executed. To be safe, always - put alias definitions on a separate line, and do not use aalliiaass in com- + available until after that function is executed. To be safe, always + put alias definitions on a separate line, and do not use aalliiaass in com- pound commands. For almost every purpose, aliases are superseded by shell functions. FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the list of commands + A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, + stores a series of commands for later execution. When the name of a + shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed - in the context of the current shell; no new process is created to - interpret them (contrast this with the execution of a shell script). - When a function is executed, the arguments to the function become the + in the context of the current shell; no new process is created to + interpret them (contrast this with the execution of a shell script). + When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter ## is - updated to reflect the change. Special parameter 00 is unchanged. The - first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- + updated to reflect the change. Special parameter 00 is unchanged. The + first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- tion while the function is executing. - All other aspects of the shell execution environment are identical + All other aspects of the shell execution environment are identical between a function and its caller with these exceptions: the DDEEBBUUGG and - RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been - given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin - below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett - builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN - traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell + RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been + given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin + below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett + builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN + traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell option has been enabled. - Variables local to the function may be declared with the llooccaall builtin + Variables local to the function may be declared with the llooccaall builtin command. Ordinarily, variables and their values are shared between the function and its caller. - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, - defines a maximum function nesting level. Function invocations that + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, + defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. Any command associated with the RREETTUURRNN trap is executed + If the builtin command rreettuurrnn is executed in a function, the function + completes and execution resumes with the next command after the func- + tion call. Any command associated with the RREETTUURRNN trap is executed before execution resumes. When a function completes, the values of the - positional parameters and the special parameter ## are restored to the + positional parameters and the special parameter ## are restored to the values they had prior to the function's execution. - Function names and definitions may be listed with the --ff option to the + Function names and definitions may be listed with the --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee-- - sseett will list the function names only (and optionally the source file - and line number, if the eexxttddeebbuugg shell option is enabled). Functions - may be exported so that subshells automatically have them defined with - the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell + sseett will list the function names only (and optionally the source file + and line number, if the eexxttddeebbuugg shell option is enabled). Functions + may be exported so that subshells automatically have them defined with + the --ff option to the eexxppoorrtt builtin. A function definition may be + deleted using the --ff option to the uunnsseett builtin. Note that shell functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- + tically-named entries in the environment passed to the shell's chil- dren. Care should be taken in cases where this may cause a problem. Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit - the depth of the function call stack and restrict the number of func- - tion invocations. By default, no limit is imposed on the number of + the depth of the function call stack and restrict the number of func- + tion invocations. By default, no limit is imposed on the number of recursive calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc - EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check - for overflow, though division by 0 is trapped and flagged as an error. - The operators and their precedence, associativity, and values are the - same as in the C language. The following list of operators is grouped - into levels of equal-precedence operators. The levels are listed in + The shell allows arithmetic expressions to be evaluated, under certain + circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc + EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check + for overflow, though division by 0 is trapped and flagged as an error. + The operators and their precedence, associativity, and values are the + same as in the C language. The following list of operators is grouped + into levels of equal-precedence operators. The levels are listed in order of decreasing precedence. _i_d++++ _i_d---- @@ -2145,46 +2246,46 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN _e_x_p_r_1 ,, _e_x_p_r_2 comma - Shell variables are allowed as operands; parameter expansion is per- + Shell variables are allowed as operands; parameter expansion is per- formed before the expression is evaluated. Within an expression, shell - variables may also be referenced by name without using the parameter - expansion syntax. A shell variable that is null or unset evaluates to + variables may also be referenced by name without using the parameter + expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. - The value of a variable is evaluated as an arithmetic expression when - it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r + The value of a variable is evaluated as an arithmetic expression when + it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates - to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on + to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on to be used in an expression. Constants with a leading 0 are interpreted as octal numbers. A leading - 0x or 0X denotes hexadecimal. Otherwise, numbers take the form - [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 - representing the arithmetic base, and _n is a number in that base. If - _b_a_s_e_# is omitted, then base 10 is used. The digits greater than 9 are - represented by the lowercase letters, the uppercase letters, @, and _, - in that order. If _b_a_s_e is less than or equal to 36, lowercase and - uppercase letters may be used interchangeably to represent numbers - between 10 and 35. - - Operators are evaluated in order of precedence. Sub-expressions in - parentheses are evaluated first and may override the precedence rules + 0x or 0X denotes hexadecimal. Otherwise, numbers take the form + [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 + representing the arithmetic base, and _n is a number in that base. If + _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits + greater< than 9 are represented by the lowercase letters, the uppercase + letters, @, and _, in that order. If _b_a_s_e is less than or equal to 36, + lowercase and uppercase letters may be used interchangeably to repre- + sent numbers between 10 and 35. + + Operators are evaluated in order of precedence. Sub-expressions in + parentheses are evaluated first and may override the precedence rules above. CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. If any _f_i_l_e argument to one of the pri- + Conditional expressions are used by the [[[[ compound command and the + tteesstt and [[ builtin commands to test file attributes and perform string + and arithmetic comparisons. Expressions are formed from the following + unary or binary primaries. If any _f_i_l_e argument to one of the pri- maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If - the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, - _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, + the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, + _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, is checked. Unless otherwise specified, primaries that operate on files follow sym- bolic links and operate on the target of the link, rather than the link itself. - When used with [[[[, the << and >> operators sort lexicographically using + When used with [[[[, the << and >> operators sort lexicographically using the current locale. The tteesstt command sorts using ASCII ordering. --aa _f_i_l_e @@ -2223,28 +2324,31 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS --LL _f_i_l_e True if _f_i_l_e exists and is a symbolic link. --NN _f_i_l_e - True if _f_i_l_e exists and has been modified since it was last + True if _f_i_l_e exists and has been modified since it was last read. --OO _f_i_l_e True if _f_i_l_e exists and is owned by the effective user id. --SS _f_i_l_e True if _f_i_l_e exists and is a socket. _f_i_l_e_1 --eeff _f_i_l_e_2 - True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- + True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- bers. _f_i_l_e_1 -nntt _f_i_l_e_2 - True if _f_i_l_e_1 is newer (according to modification date) than + True if _f_i_l_e_1 is newer (according to modification date) than _f_i_l_e_2, or if _f_i_l_e_1 exists and _f_i_l_e_2 does not. _f_i_l_e_1 -oott _f_i_l_e_2 - True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1 + True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1 does not. --oo _o_p_t_n_a_m_e - True if the shell option _o_p_t_n_a_m_e is enabled. See the list of - options under the description of the --oo option to the sseett + True if the shell option _o_p_t_n_a_m_e is enabled. See the list of + options under the description of the --oo option to the sseett builtin below. --vv _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a + True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a value). + --RR _v_a_r_n_a_m_e + True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- + ence. --zz _s_t_r_i_n_g True if the length of _s_t_r_i_n_g is zero. _s_t_r_i_n_g @@ -2254,7 +2358,9 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS _s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2 _s_t_r_i_n_g_1 == _s_t_r_i_n_g_2 True if the strings are equal. == should be used with the tteesstt - command for POSIX conformance. + command for POSIX conformance. When used with the [[[[ command, + this performs pattern matching as described above (CCoommppoouunndd CCoomm-- + mmaannddss). _s_t_r_i_n_g_1 !!== _s_t_r_i_n_g_2 True if the strings are not equal. @@ -2359,7 +2465,6 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- ing: - +o open files inherited by the shell at invocation, as modified by redirections supplied to the eexxeecc builtin @@ -2453,8 +2558,8 @@ EENNVVIIRROONNMMEENNTT just those that precede the command name. When bbaasshh invokes an external command, the variable __ is set to the - full file name of the command and passed to that command in its envi- - ronment. + full filename of the command and passed to that command in its environ- + ment. EEXXIITT SSTTAATTUUSS The exit status of an executed command is the value returned by the @@ -2803,175 +2908,198 @@ RREEAADDLLIINNEE If set to OOnn, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their read- line equivalents. + ccoolloorreedd--ssttaattss ((OOffff)) + If set to OOnn, readline displays possible completions using dif- + ferent colors to indicate their file type. The color defini- + tions are taken from the value of the LLSS__CCOOLLOORRSS environment + variable. ccoommmmeenntt--bbeeggiinn ((````##'''')) - The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt + The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt command is executed. This command is bound to MM--## in emacs mode and to ## in vi command mode. ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) If set to OOnn, readline performs filename matching and completion in a case-insensitive fashion. ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) - The length in characters of the common prefix of a list of pos- - sible completions that is displayed without modification. When - set to a value greater than zero, common prefixes longer than - this value are replaced with an ellipsis when displaying possi- + The length in characters of the common prefix of a list of pos- + sible completions that is displayed without modification. When + set to a value greater than zero, common prefixes longer than + this value are replaced with an ellipsis when displaying possi- ble completions. ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) - This determines when the user is queried about viewing the num- - ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- - ttiioonnss command. It may be set to any integer value greater than - or equal to zero. If the number of possible completions is + This determines when the user is queried about viewing the num- + ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- + ttiioonnss command. It may be set to any integer value greater than + or equal to zero. If the number of possible completions is greater than or equal to the value of this variable, the user is - asked whether or not he wishes to view them; otherwise they are + asked whether or not he wishes to view them; otherwise they are simply listed on the terminal. ccoonnvveerrtt--mmeettaa ((OOnn)) - If set to OOnn, readline will convert characters with the eighth + If set to OOnn, readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and - prefixing an escape character (in effect, using escape as the + prefixing an escape character (in effect, using escape as the _m_e_t_a _p_r_e_f_i_x). ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) If set to OOnn, readline will inhibit word completion. Completion - characters will be inserted into the line as if they had been + characters will be inserted into the line as if they had been mapped to sseellff--iinnsseerrtt. eeddiittiinngg--mmooddee ((eemmaaccss)) Controls whether readline begins with a set of key bindings sim- ilar to _E_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or vvii. eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) - When set to OOnn, on operating systems that indicate they support + When set to OOnn, on operating systems that indicate they support it, readline echoes a character corresponding to a signal gener- ated from the keyboard. eennaabbllee--kkeeyyppaadd ((OOffff)) When set to OOnn, readline will try to enable the application key- - pad when it is called. Some systems need this to enable the + pad when it is called. Some systems need this to enable the arrow keys. eennaabbllee--mmeettaa--kkeeyy ((OOnn)) - When set to OOnn, readline will try to enable any meta modifier - key the terminal claims to support when it is called. On many + When set to OOnn, readline will try to enable any meta modifier + key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. eexxppaanndd--ttiillddee ((OOffff)) - If set to OOnn, tilde expansion is performed when readline + If set to OOnn, tilde expansion is performed when readline attempts word completion. hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to OOnn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- + If set to OOnn, the history code attempts to place point at the + same location on each history line retrieved with pprreevviioouuss--hhiiss-- ttoorryy or nneexxtt--hhiissttoorryy. hhiissttoorryy--ssiizzee ((00)) - Set the maximum number of history entries saved in the history - list. If set to zero, the number of entries in the history list - is not limited. + Set the maximum number of history entries saved in the history + list. If set to zero, any existing history entries are deleted + and no new entries are saved. If set to a value less than zero, + the number of history entries is not limited. By default, the + number of history entries is not limited. hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) - When set to OOnn, makes readline use a single line for display, + When set to OOnn, makes readline use a single line for display, scrolling the input horizontally on a single screen line when it - becomes longer than the screen width rather than wrapping to a + becomes longer than the screen width rather than wrapping to a new line. iinnppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will enable eight-bit input (that is, it - will not strip the high bit from the characters it reads), + If set to OOnn, readline will enable eight-bit input (that is, it + will not strip the high bit from the characters it reads), regardless of what the terminal claims it can support. The name mmeettaa--ffllaagg is a synonym for this variable. iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ'''')) - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- + The string of characters that should terminate an incremental + search without subsequently executing the character as a com- + mand. If this variable has not been given a value, the charac- ters _E_S_C and _C_-_J will terminate an incremental search. kkeeyymmaapp ((eemmaaccss)) - Set the current readline keymap. The set of valid keymap names - is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- - _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is - equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the + Set the current readline keymap. The set of valid keymap names + is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- + _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is + equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the value of eeddiittiinngg--mmooddee also affects the default keymap. + kkeeyysseeqq--ttiimmeeoouutt ((550000)) + Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when + reading an ambiguous key sequence (one that can form a 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, _r_e_a_d_l_i_n_e will use the shorter but + complete key sequence. The value is specified in milliseconds, + so a value of 1000 means that _r_e_a_d_l_i_n_e 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, _r_e_a_d_l_i_n_e will wait + until another key is pressed to decide which key sequence to + complete. mmaarrkk--ddiirreeccttoorriieess ((OOnn)) If set to OOnn, completed directory names have a slash appended. mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, history lines that have been modified are dis- + If set to OOnn, history lines that have been modified are dis- played with a preceding asterisk (**). mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of + tories have a slash appended (subject to the value of mmaarrkk--ddiirreeccttoorriieess). mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion. If set to OOffff, the leading `.' must be + This variable, when set to OOnn, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion. If set to OOffff, the leading `.' must be supplied by the user in the filename to be completed. mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) - If set to OOnn, menu completion displays the common prefix of the + If set to OOnn, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will display characters with the eighth + If set to OOnn, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- + If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- play a screenful of possible completions at a time. pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the + If set to OOnn, readline will display completions with matches + sorted horizontally in alphabetical order, rather than down the screen. rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to OOnn, readline will undo all changes to history lines + If set to OOnn, readline will undo all changes to history lines before returning when aacccceepptt--lliinnee is executed. By default, his- - tory lines may be modified and retain individual undo lists + tory lines may be modified and retain individual undo lists across calls to rreeaaddlliinnee. sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. + This alters the default behavior of the completion functions. If set to OOnn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing + cause the matches to be listed immediately instead of ringing the bell. sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in + This alters the default behavior of the completion functions in a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately + which have more than one possible completion without any possi- + ble partial completion (the possible completions don't share a + common prefix) cause the matches to be listed immediately instead of ringing the bell. + sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) + If set to OOnn, add a character to the beginning of the prompt + indicating the editing mode: emacs (@), vi command (:) or vi + insertion (+). sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) - If set to OOnn, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - readline does not insert characters from the completion that - match characters after point in the word being completed, so + If set to OOnn, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- + If set to OOnn, a character denoting a file's type as reported by + _s_t_a_t(2) is appended to the filename when listing possible com- pletions. RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There + Readline implements a facility similar in spirit to the conditional + compilation features of the C preprocessor which allows key bindings + and variable settings to be performed as the result of tests. There are four parser directives used. - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using - readline. The text of the test extends to the end of the line; + $$iiff The $$iiff construct allows bindings to be made based on the edit- + ing mode, the terminal being used, or the application using + readline. The text of the test extends to the end of the line; no characters are required to isolate it. - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for - instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and - _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in + mmooddee The mmooddee== form of the $$iiff directive is used to test + whether readline is in emacs or vi mode. This may be + used in conjunction with the sseett kkeeyymmaapp command, for + instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and + _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in emacs mode. - tteerrmm The tteerrmm== form may be used to include terminal-specific + tteerrmm The tteerrmm== form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side of the == is tested against the both full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, + minal and the portion of the terminal name before the + first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for instance. aapppplliiccaattiioonn The aapppplliiccaattiioonn construct is used to include application- specific settings. Each program using the readline - library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization + library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization file can test for a particular value. This could be used - to bind key sequences to functions useful for a specific - program. For instance, the following command adds a key - sequence that quotes the current or previous word in + to bind key sequences to functions useful for a specific + program. For instance, the following command adds a key + sequence that quotes the current or previous word in bbaasshh: $$iiff Bash @@ -2986,51 +3114,51 @@ RREEAADDLLIINNEE test fails. $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- + This directive takes a single filename as an argument and reads + commands and bindings from that file. For example, the follow- ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c SSeeaarrcchhiinngg - Readline provides commands for searching through the command history + Readline provides commands for searching through the command history (see HHIISSTTOORRYY below) for lines containing a specified string. There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l. - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, read- + Incremental searches begin before the user has finished typing the + search string. As each character of the search string is typed, read- line displays the next entry from the history matching the string typed - so far. An incremental search requires only as many characters as - needed to find the desired history entry. The characters present in - the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an + so far. An incremental search requires only as many characters as + needed to find the desired history entry. The characters present in + the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental search. If that variable has not been assigned a value the - Escape and Control-J characters will terminate an incremental search. - Control-G will abort an incremental search and restore the original - line. When the search is terminated, the history entry containing the + Escape and Control-J characters will terminate an incremental search. + Control-G will abort an incremental search and restore the original + line. When the search is terminated, the history entry containing the search string becomes the current line. - To find other matching entries in the history list, type Control-S or - Control-R as appropriate. This will search backward or forward in the - history for the next entry matching the search string typed so far. - Any other key sequence bound to a readline command will terminate the - search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- + To find other matching entries in the history list, type Control-S or + Control-R as appropriate. This will search backward or forward in the + history for the next entry matching the search string typed so far. + Any other key sequence bound to a readline command will terminate the + search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- nate the search and accept the line, thereby executing the command from the history list. Readline remembers the last incremental search string. If two Control- - Rs are typed without any intervening characters defining a new search + Rs are typed without any intervening characters defining a new search string, any remembered search string is used. - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed + Non-incremental searches read the entire search string before starting + to search for matching history lines. The search string may be typed by the user or be part of the contents of the current line. RReeaaddlliinnee CCoommmmaanndd NNaammeess - The following is a list of the names of the commands and the default + The following is a list of the names of the commands and the default key sequences to which they are bound. Command names without an accom- panying key sequence are unbound by default. In the following descrip- - tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to - a cursor position saved by the sseett--mmaarrkk command. The text between the + tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to + a cursor position saved by the sseett--mmaarrkk command. The text between the point and mark is referred to as the _r_e_g_i_o_n. CCoommmmaannddss ffoorr MMoovviinngg @@ -3046,17 +3174,17 @@ RREEAADDLLIINNEE Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). sshheellll--ffoorrwwaarrdd--wwoorrdd - Move forward to the end of the next word. Words are delimited + Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. sshheellll--bbaacckkwwaarrdd--wwoorrdd - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen leaving the current line at the top of the - screen. With an argument, refresh the current line without + Clear the screen leaving the current line at the top of the + screen. With an argument, refresh the current line without clearing the screen. rreeddrraaww--ccuurrrreenntt--lliinnee Refresh the current line. @@ -3064,95 +3192,100 @@ RREEAADDLLIINNEE CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn)) Accept the line regardless of where the cursor is. If this line - is non-empty, add it to the history list according to the state - of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history + is non-empty, add it to the history list according to the state + of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history line, then restore the history line to its original state. pprreevviioouuss--hhiissttoorryy ((CC--pp)) Fetch the previous command from the history list, moving back in the list. nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in + Fetch the next command from the history list, moving forward in the list. bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<)) Move to the first line in the history. eenndd--ooff--hhiissttoorryy ((MM-->>)) - Move to the end of the input history, i.e., the line currently + Move to the end of the input history, i.e., the line currently being entered. rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental + Search backward starting at the current line and moving `up' + through the history as necessary. This is an incremental search. ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss)) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental + Search forward starting at the current line and moving `down' + through the history as necessary. This is an incremental search. nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the + using a non-incremental search for a string supplied by the user. nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental + Search forward through the history using a non-incremental search for a string supplied by the user. hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. This is a + Search forward through the history for the string of characters + between the start of the current line and the point. This is a non-incremental search. hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd Search backward through the history for the string of characters - between the start of the current line and the point. This is a + between the start of the current line and the point. This is a non-incremental search. yyaannkk--nntthh--aarrgg ((MM--CC--yy)) - Insert the first argument to the previous command (usually the + Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument _n, - insert the _nth word from the previous command (the words in the - previous command begin with word 0). A negative argument + insert the _nth word from the previous command (the words in the + previous command begin with word 0). A negative argument inserts the _nth word from the end of the previous command. Once - the argument _n is computed, the argument is extracted as if the + the argument _n is computed, the argument is extracted as if the "!_n" history expansion had been specified. yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word + Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last word (or - the word specified by the argument to the first call) of each + exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg + move back through the history list, inserting the last word (or + the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive - calls determines the direction to move through the history. A - negative argument switches the direction through the history + calls determines the direction to move through the history. A + negative argument switches the direction through the history (back or forward). The history expansion facilities are used to - extract the last argument, as if the "!$" history expansion had - been specified. + extract the last word, as if the "!$" history expansion had been + specified. sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) Expand the line as the shell does. This performs alias and his- tory expansion as well as all of the shell word expansions. See - HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. + HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) - Perform history expansion on the current line. See HHIISSTTOORRYY + Perform history expansion on the current line. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. mmaaggiicc--ssppaaccee - Perform history expansion on the current line and insert a + Perform history expansion on the current line and insert a space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. aalliiaass--eexxppaanndd--lliinnee - Perform alias expansion on the current line. See AALLIIAASSEESS above + Perform alias expansion on the current line. See AALLIIAASSEESS above for a description of alias expansion. hhiissttoorryy--aanndd--aalliiaass--eexxppaanndd--lliinnee Perform history and alias expansion on the current line. iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__)) A synonym for yyaannkk--llaasstt--aarrgg. ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) - Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any + Accept the current line for execution and fetch the next line + relative to the current line from the history for editing. Any argument is ignored. eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xxCC--ee)) - Invoke an editor on the current command line, and execute the - result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, + Invoke an editor on the current command line, and execute the + result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt + _e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd)) + The character indicating end-of-file as set, for example, by + ``stty''. If this character is read when there are no charac- + ters on the line, and point is at the beginning of the line, + Readline interprets it as the end of input and returns EEOOFF. ddeelleettee--cchhaarr ((CC--dd)) - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last - character typed was not bound to ddeelleettee--cchhaarr, then return EEOOFF. + Delete the character at point. If this function is bound to the + same character as the tty EEOOFF character, as CC--dd commonly is, see + above for the effects. bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring. @@ -3350,165 +3483,168 @@ RREEAADDLLIINNEE ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee)) Re-execute the last keyboard macro defined, by making the char- acters in the macro appear as if typed at the keyboard. + pprriinntt--llaasstt--kkbbdd--mmaaccrroo (()) + Print the last keyboard macro defined in a format suitable for + the _i_n_p_u_t_r_c file. MMiisscceellllaanneeoouuss rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr)) - Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any + Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any bindings or variable assignments found there. aabboorrtt ((CC--gg)) - Abort the current editing command and ring the terminal's bell + Abort the current editing command and ring the terminal's bell (subject to the setting of bbeellll--ssttyyllee). ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......)) - If the metafied character _x is lowercase, run the command that + If the metafied character _x is lowercase, run the command that is bound to the corresponding uppercase character. pprreeffiixx--mmeettaa ((EESSCC)) Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff. uunnddoo ((CC--__,, CC--xx CC--uu)) Incremental undo, separately remembered for each line. rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial + Undo all changes made to this line. This is like executing the + uunnddoo command enough times to return the line to its initial state. ttiillddee--eexxppaanndd ((MM--&&)) Perform tilde expansion on the current word. sseett--mmaarrkk ((CC--@@,, MM--<>)) - Set the mark to the point. If a numeric argument is supplied, + Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved + Swap the point with the mark. The current cursor position is + set to the saved position, and the old cursor position is saved as the mark. cchhaarraacctteerr--sseeaarrcchh ((CC--]])) A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- + that character. A negative count searches for previous occur- rences. cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- + A character is read and point is moved to the previous occur- + rence of that character. A negative count searches for subse- quent occurrences. sskkiipp--ccssii--sseeqquueennccee - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn variable is inserted at the beginning of the current + Without a numeric argument, the value of the readline ccoomm-- + mmeenntt--bbeeggiinn variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- + toggle: if the characters at the beginning of the line do not + match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn - causes this command to make the current line a shell comment. - If a numeric argument causes the comment character to be + ning of the line. In either case, the line is accepted as if a + newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn + causes this command to make the current line a shell comment. + If a numeric argument causes the comment character to be removed, the line will be executed by the shell. gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) - The word before point is treated as a pattern for pathname - expansion, with an asterisk implicitly appended. This pattern - is used to generate a list of matching file names for possible + The word before point is treated as a pattern for pathname + expansion, with an asterisk implicitly appended. This pattern + is used to generate a list of matching filenames for possible completions. gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) - The word before point is treated as a pattern for pathname - expansion, and the list of matching file names is inserted, - replacing the word. If a numeric argument is supplied, an + The word before point is treated as a pattern for pathname + expansion, and the list of matching filenames is inserted, + replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion. gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg)) - The list of expansions that would have been generated by - gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a - numeric argument is supplied, an asterisk is appended before + The list of expansions that would have been generated by + gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a + numeric argument is supplied, an asterisk is appended before pathname expansion. dduummpp--ffuunnccttiioonnss - Print all of the functions and their key bindings to the read- + Print all of the functions and their key bindings to the read- line output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an + put is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--vvaarriiaabblleess Print all of the settable readline variables and their values to - the readline output stream. If a numeric argument is supplied, - the output is formatted in such a way that it can be made part + the readline output stream. If a numeric argument is supplied, + the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--mmaaccrrooss - Print all of the readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the + Print all of the readline key sequences bound to macros and the + strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) - Display version information about the current instance of bbaasshh. + Display version information about the current instance of bbaasshh. PPrrooggrraammmmaabbllee CCoommpplleettiioonn - When word completion is attempted for an argument to a command for - which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using - the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the pro- + When word completion is attempted for an argument to a command for + which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using + the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the pro- grammable completion facilities are invoked. - First, the command name is identified. If the command word is the - empty string (completion attempted at the beginning of an empty line), - any compspec defined with the --EE option to ccoommpplleettee is used. If a - compspec has been defined for that command, the compspec is used to + First, the command name is identified. If the command word is the + empty string (completion attempted at the beginning of an empty line), + any compspec defined with the --EE option to ccoommpplleettee is used. If a + compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command - word is a full pathname, a compspec for the full pathname is searched - for first. If no compspec is found for the full pathname, an attempt - is made to find a compspec for the portion following the final slash. - If those searches do not result in a compspec, any compspec defined + word is a full pathname, a compspec for the full pathname is searched + for first. If no compspec is found for the full pathname, an attempt + is made to find a compspec for the portion following the final slash. + If those searches do not result in a compspec, any compspec defined with the --DD option to ccoommpplleettee is used as the default. - Once a compspec has been found, it is used to generate the list of - matching words. If a compspec is not found, the default bbaasshh comple- + Once a compspec has been found, it is used to generate the list of + matching words. If a compspec is not found, the default bbaasshh comple- tion as described above under CCoommpplleettiinngg is performed. - First, the actions specified by the compspec are used. Only matches - which are prefixed by the word being completed are returned. When the - --ff or --dd option is used for filename or directory name completion, the + First, the actions specified by the compspec are used. Only matches + which are prefixed by the word being completed are returned. When the + --ff or --dd option is used for filename or directory name completion, the shell variable FFIIGGNNOORREE is used to filter the matches. - Any completions specified by a pathname expansion pattern to the --GG + Any completions specified by a pathname expansion pattern to the --GG option are generated next. The words generated by the pattern need not - match the word being completed. The GGLLOOBBIIGGNNOORREE shell variable is not + match the word being completed. The GGLLOOBBIIGGNNOORREE shell variable is not used to filter the matches, but the FFIIGGNNOORREE variable is used. - Next, the string specified as the argument to the --WW option is consid- - ered. The string is first split using the characters in the IIFFSS spe- - cial variable as delimiters. Shell quoting is honored. Each word is - then expanded using brace expansion, tilde expansion, parameter and - variable expansion, command substitution, and arithmetic expansion, as + Next, the string specified as the argument to the --WW option is consid- + ered. The string is first split using the characters in the IIFFSS spe- + cial variable as delimiters. Shell quoting is honored. Each word is + then expanded using brace expansion, tilde expansion, parameter and + variable expansion, command substitution, and arithmetic expansion, as described above under EEXXPPAANNSSIIOONN. The results are split using the rules described above under WWoorrdd SSpplliittttiinngg. The results of the expansion are prefix-matched against the word being completed, and the matching words become the possible completions. - After these matches have been generated, any shell function or command - specified with the --FF and --CC options is invoked. When the command or + After these matches have been generated, any shell function or command + specified with the --FF and --CC options is invoked. When the command or function is invoked, the CCOOMMPP__LLIINNEE, CCOOMMPP__PPOOIINNTT, CCOOMMPP__KKEEYY, and CCOOMMPP__TTYYPPEE variables are assigned values as described above under SShheellll VVaarriiaabblleess. - If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD - variables are also set. When the function or command is invoked, the - first argument is the name of the command whose arguments are being - completed, the second argument is the word being completed, and the - third argument is the word preceding the word being completed on the - current command line. No filtering of the generated completions - against the word being completed is performed; the function or command - has complete freedom in generating the matches. - - Any function specified with --FF is invoked first. The function may use - any of the shell facilities, including the ccoommppggeenn builtin described - below, to generate the matches. It must put the possible completions - in the CCOOMMPPRREEPPLLYY array variable. - - Next, any command specified with the --CC option is invoked in an envi- - ronment equivalent to command substitution. It should print a list of - completions, one per line, to the standard output. Backslash may be + If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD + variables are also set. When the function or command is invoked, the + first argument ($$11) is the name of the command whose arguments are + being completed, the second argument ($$22) is the word being completed, + and the third argument ($$33) is the word preceding the word being com- + pleted on the current command line. No filtering of the generated com- + pletions against the word being completed is performed; the function or + command has complete freedom in generating the matches. + + Any function specified with --FF is invoked first. The function may use + any of the shell facilities, including the ccoommppggeenn builtin described + below, to generate the matches. It must put the possible completions + in the CCOOMMPPRREEPPLLYY array variable, one per array element. + + Next, any command specified with the --CC option is invoked in an envi- + ronment equivalent to command substitution. It should print a list of + completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. - After all of the possible completions are generated, any filter speci- - fied with the --XX option is applied to the list. The filter is a pat- - tern as used for pathname expansion; a && in the pattern is replaced - with the text of the word being completed. A literal && may be escaped - with a backslash; the backslash is removed before attempting a match. - Any completion that matches the pattern will be removed from the list. + After all of the possible completions are generated, any filter speci- + fied with the --XX option is applied to the list. The filter is a pat- + tern as used for pathname expansion; a && in the pattern is replaced + with the text of the word being completed. A literal && may be escaped + with a backslash; the backslash is removed before attempting a match. + Any completion that matches the pattern will be removed from the list. A leading !! negates the pattern; in this case any completion not match- ing the pattern will be removed. @@ -3516,83 +3652,86 @@ RREEAADDLLIINNEE added to each member of the completion list, and the result is returned to the readline completion code as the list of possible completions. - If the previously-applied actions do not generate any matches, and the - --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was + If the previously-applied actions do not generate any matches, and the + --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was defined, directory name completion is attempted. - If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec + If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions. - By default, if a compspec is found, whatever it generates is returned - to the completion code as the full set of possible completions. The + By default, if a compspec is found, whatever it generates is returned + to the completion code as the full set of possible completions. The default bbaasshh completions are not attempted, and the readline default of filename completion is disabled. If the --oo bbaasshhddeeffaauulltt option was sup- - plied to ccoommpplleettee when the compspec was defined, the bbaasshh default com- + plied to ccoommpplleettee when the compspec was defined, the bbaasshh default com- pletions are attempted if the compspec generates no matches. If the --oo - ddeeffaauulltt option was supplied to ccoommpplleettee when the compspec was defined, - readline's default completion will be performed if the compspec (and, + ddeeffaauulltt option was supplied to ccoommpplleettee when the compspec was defined, + readline's default completion will be performed if the compspec (and, if attempted, the default bbaasshh completions) generate no matches. - When a compspec indicates that directory name completion is desired, - the programmable completion functions force readline to append a slash - to completed names which are symbolic links to directories, subject to - the value of the mmaarrkk--ddiirreeccttoorriieess readline variable, regardless of the + When a compspec indicates that directory name completion is desired, + the programmable completion functions force readline to append a slash + to completed names which are symbolic links to directories, subject to + the value of the mmaarrkk--ddiirreeccttoorriieess readline variable, regardless of the setting of the mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess readline variable. - There is some support for dynamically modifying completions. This is - most useful when used in combination with a default completion speci- - fied with ccoommpplleettee --DD. It's possible for shell functions executed as - completion handlers to indicate that completion should be retried by - returning an exit status of 124. If a shell function returns 124, and + There is some support for dynamically modifying completions. This is + most useful when used in combination with a default completion speci- + fied with ccoommpplleettee --DD. It's possible for shell functions executed as + completion handlers to indicate that completion should be retried by + returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is - being attempted (supplied as the first argument when the function is + being attempted (supplied as the first argument when the function is executed), programmable completion restarts from the beginning, with an - attempt to find a new compspec for that command. This allows a set of - completions to be built dynamically as completion is attempted, rather + attempt to find a new compspec for that command. This allows a set of + completions to be built dynamically as completion is attempted, rather than being loaded all at once. - For instance, assuming that there is a library of compspecs, each kept - in a file corresponding to the name of the command, the following + For instance, assuming that there is a library of compspecs, each kept + in a file corresponding to the name of the command, the following default completion function would load completions dynamically: _completion_loader() { . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 } - complete -D -F _completion_loader + complete -D -F _completion_loader -o bashdefault -o default HHIISSTTOORRYY - When the --oo hhiissttoorryy option to the sseett builtin is enabled, the shell + When the --oo hhiissttoorryy option to the sseett builtin is enabled, the shell provides access to the _c_o_m_m_a_n_d _h_i_s_t_o_r_y, the list of commands previously - typed. The value of the HHIISSTTSSIIZZEE variable is used as the number of + typed. The value of the HHIISSTTSSIIZZEE variable is used as the number of commands to save in a history list. The text of the last HHIISSTTSSIIZZEE com- - mands (default 500) is saved. The shell stores each command in the - history list prior to parameter and variable expansion (see EEXXPPAANNSSIIOONN - above) but after history expansion is performed, subject to the values + mands (default 500) is saved. The shell stores each command in the + history list prior to parameter and variable expansion (see EEXXPPAANNSSIIOONN + above) but after history expansion is performed, subject to the values of the shell variables HHIISSTTIIGGNNOORREE and HHIISSTTCCOONNTTRROOLL. On startup, the history is initialized from the file named by the vari- - able HHIISSTTFFIILLEE (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). The file named by the value - of HHIISSTTFFIILLEE is truncated, if necessary, to contain no more than the - number of lines specified by the value of HHIISSTTFFIILLEESSIIZZEE. When the his- - tory file is read, lines beginning with the history comment character - followed immediately by a digit are interpreted as timestamps for the - preceding history line. These timestamps are optionally displayed - depending on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When an inter- - active shell exits, the last $$HHIISSTTSSIIZZEE lines are copied from the his- - tory list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled (see - the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the lines - are appended to the history file, otherwise the history file is over- - written. If HHIISSTTFFIILLEE is unset, or if the history file is unwritable, - the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, time - stamps are written to the history file, marked with the history comment - character, so they may be preserved across shell sessions. This uses - the history comment character to distinguish timestamps from other his- - tory lines. After saving the history, the history file is truncated to - contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE is not set, - no truncation is performed. + able HHIISSTTFFIILLEE (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). The file named by the value + of HHIISSTTFFIILLEE is truncated, if necessary, to contain no more than the + number of lines specified by the value of HHIISSTTFFIILLEESSIIZZEE. If HHIISSTTFFIILLEE-- + SSIIZZEE is unset, or set to null, a non-numeric value, or a numeric value + less than zero, the history file is not truncated. When the history + file is read, lines beginning with the history comment character fol- + lowed immediately by a digit are interpreted as timestamps for the pre- + ceding history line. These timestamps are optionally displayed depend- + ing on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When a shell with + history enabled exits, the last $$HHIISSTTSSIIZZEE lines are copied from the + history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled + (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the + lines are appended to the history file, otherwise the history file is + overwritten. If HHIISSTTFFIILLEE is unset, or if the history file is + unwritable, the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable + is set, time stamps are written to the history file, marked with the + history comment character, so they may be preserved across shell ses- + sions. This uses the history comment character to distinguish time- + stamps from other history lines. After saving the history, the history + file is truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTT-- + FFIILLEESSIIZZEE is unset, or set to null, a non-numeric value, or a numeric + value less than zero, the history file is not truncated. The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used to list or edit and re-execute a portion of the history list. The hhiiss-- @@ -3678,7 +3817,7 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN Refer to the most recent command preceding the current position in the history list starting with _s_t_r_i_n_g. !!??_s_t_r_i_n_g[[??]] - Refer to the most recent command preceding the current postition + Refer to the most recent command preceding the current position in the history list containing _s_t_r_i_n_g. The trailing ?? may be omitted if _s_t_r_i_n_g is followed immediately by a newline. ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ @@ -3699,7 +3838,8 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN The zeroth word. For the shell, this is the command word. _n The _nth word. ^^ The first argument. That is, word 1. - $$ The last argument. + $$ The last word. This is usually the last argument, but will + expand to the zeroth word if there is only one word in the line. %% The word matched by the most recent `?_s_t_r_i_n_g?' search. _x--_y A range of words; `-_y' abbreviates `0-_y'. ** All of the words but the zeroth. This is a synonym for `_1_-_$'. @@ -3715,8 +3855,8 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. - hh Remove a trailing file name component, leaving only the head. - tt Remove all leading file name components, leaving the tail. + hh Remove a trailing filename component, leaving only the head. + tt Remove all leading filename components, leaving the tail. rr Remove a trailing suffix of the form _._x_x_x, leaving the basename. ee Remove all but the trailing suffix. pp Print the new command but do not execute it. @@ -3759,9 +3899,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] Read and execute commands from _f_i_l_e_n_a_m_e in the current shell environment and return the exit status of the last command exe- - cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, file - names in PPAATTHH are used to find the directory containing _f_i_l_e_- - _n_a_m_e. The file searched for in PPAATTHH need not be executable. + cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, + filenames in PPAATTHH are used to find the directory containing + _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option to the sshhoopptt builtin command is turned off, the PPAATTHH is not @@ -3791,7 +3931,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS enabled, any specified _j_o_b_s_p_e_c was not found or was started without job control. - bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVV] + bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVVXX] bbiinndd [--mm _k_e_y_m_a_p] [--qq _f_u_n_c_t_i_o_n] [--uu _f_u_n_c_t_i_o_n] [--rr _k_e_y_s_e_q] bbiinndd [--mm _k_e_y_m_a_p] --ff _f_i_l_e_n_a_m_e bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d @@ -3838,6 +3978,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- LLIINNEE__PPOOIINNTT, those new values will be reflected in the editing state. + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as + input. The return value is 0 unless an unrecognized option is given or an error occurred. @@ -3870,117 +4013,129 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS routine call or _e_x_p_r does not correspond to a valid position in the call stack. - ccdd [--LL|[--PP [--ee]]] [_d_i_r] - Change the current directory to _d_i_r. The variable HHOOMMEE is the - default _d_i_r. The variable CCDDPPAATTHH defines the search path for - the directory containing _d_i_r. Alternative directory names in - CCDDPPAATTHH are separated by a colon (:). A null directory name in - CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If - _d_i_r begins with a slash (/), then CCDDPPAATTHH is not used. The --PP - option says to use the physical directory structure instead of - following symbolic links (see also the --PP option to the sseett - builtin command); the --LL option forces symbolic links to be fol- - lowed. If the --ee option is supplied with --PP, and the current - working directory cannot be successfully determined after a suc- - cessful directory change, ccdd will return an unsuccessful status. - An argument of -- is equivalent to $$OOLLDDPPWWDD. If a non-empty - directory name from CCDDPPAATTHH is used, or if -- is the first argu- - ment, and the directory change is successful, the absolute path- - name of the new working directory is written to the standard - output. The return value is true if the directory was success- - fully changed; false otherwise. + ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- + tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative + directory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, + i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and + before processing instances of _._. in _d_i_r (see also the --PP option + to the sseett builtin command); the --LL option forces symbolic links + to be followed by resolving the link after processing instances + of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + before the directory change is attempted. If a non-empty direc- + tory name from CCDDPPAATTHH is used, or if -- is the first argument, + and the directory change is successful, the absolute pathname of + the new working directory is written to the standard output. + The return value is true if the directory was successfully + changed; false otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function - lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + lookup. Only builtin commands or commands found in the PPAATTHH are + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv option is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or file name + option causes a single word indicating the command or filename used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a - more verbose description. If the --VV or --vv option is supplied, - the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If neither option is supplied and an error occurred or _c_o_m_m_a_n_d can- - not be found, the exit status is 127. Otherwise, the exit sta- + not be found, the exit status is 127. Otherwise, the exit sta- tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d. ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exception of --pp and --rr, and write the matches - to the standard output. When using the --FF or --CC options, the - various shell variables set by the programmable completion + Generate possible completion matches for _w_o_r_d according to the + _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee + builtin with the exception of --pp and --rr, and write the matches + to the standard output. When using the --FF or --CC options, the + various shell variables set by the programmable completion facilities, while available, will not have useful values. - The matches will be generated in the same way as if the pro- - grammable completion code had generated them directly from a + The matches will be generated in the same way as if the pro- + grammable completion code had generated them directly from a completion specification with the same flags. If _w_o_r_d is speci- fied, only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] - Specify how arguments to each _n_a_m_e should be completed. If the - --pp option is supplied, or if no options are supplied, existing - completion specifications are printed in a way that allows them + Specify how arguments to each _n_a_m_e should be completed. If the + --pp option is supplied, or if no options are supplied, existing + completion specifications are printed in a way that allows them to be reused as input. The --rr option removes a completion spec- - ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- + ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- pletion specifications. The --DD option indicates that the - remaining options and actions should apply to the ``default'' - command completion; that is, completion attempted on a command - for which no completion has previously been defined. The --EE - option indicates that the remaining options and actions should - apply to ``empty'' command completion; that is, completion + remaining options and actions should apply to the ``default'' + command completion; that is, completion attempted on a command + for which no completion has previously been defined. The --EE + option indicates that the remaining options and actions should + apply to ``empty'' command completion; that is, completion attempted on a blank line. - The process of applying these completion specifications when - word completion is attempted is described above under PPrroo-- + The process of applying these completion specifications when + word completion is attempted is described above under PPrroo-- ggrraammmmaabbllee CCoommpplleettiioonn. - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- + Other options, if specified, have the following meanings. The + arguments to the --GG, --WW, and --XX options (and, if necessary, the + --PP and --SS options) should be quoted to protect them from expan- sion before the ccoommpplleettee builtin is invoked. --oo _c_o_m_p_-_o_p_t_i_o_n - The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- - spec's behavior beyond the simple generation of comple- + The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- + spec's behavior beyond the simple generation of comple- tions. _c_o_m_p_-_o_p_t_i_o_n may be one of: bbaasshhddeeffaauulltt Perform the rest of the default bbaasshh completions if the compspec generates no matches. - ddeeffaauulltt Use readline's default filename completion if + ddeeffaauulltt Use readline's default filename completion if the compspec generates no matches. ddiirrnnaammeess - Perform directory name completion if the comp- + Perform directory name completion if the comp- spec generates no matches. ffiilleennaammeess - Tell readline that the compspec generates file- - names, so it can perform any filename-specific - processing (like adding a slash to directory - names, quoting special characters, or suppress- - ing trailing spaces). Intended to be used with + Tell readline that the compspec generates file- + names, so it can perform any filename-specific + processing (like adding a slash to directory + names, quoting special characters, or suppress- + ing trailing spaces). Intended to be used with shell functions. - nnoossppaaccee Tell readline not to append a space (the - default) to words completed at the end of the + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the + default). + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - After any matches defined by the compspec are - generated, directory name completion is - attempted and any matches are added to the + After any matches defined by the compspec are + generated, directory name completion is + attempted and any matches are added to the results of the other actions. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -3988,7 +4143,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ddiissaabblleedd Names of disabled shell builtins. eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be + eexxppoorrtt Names of exported shell variables. May also be specified as --ee. ffiillee File names. May also be specified as --ff. ffuunnccttiioonn @@ -3997,17 +4152,17 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hheellppttooppiicc Help topics as accepted by the hheellpp builtin. hhoossttnnaammee - Hostnames, as taken from the file specified by + Hostnames, as taken from the file specified by the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also + jjoobb Job names, if job control is active. May also be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as + kkeeyywwoorrdd Shell reserved words. May also be specified as --kk. rruunnnniinngg Names of running jobs, if job control is active. sseerrvviiccee Service names. May also be specified as --ss. - sseettoopptt Valid arguments for the --oo option to the sseett + sseettoopptt Valid arguments for the --oo option to the sseett builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt + sshhoopptt Shell option names as accepted by the sshhoopptt builtin. ssiiggnnaall Signal names. ssttooppppeedd Names of stopped jobs, if job control is active. @@ -4016,13 +4171,18 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When it finishes, the possible com- - pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY - array variable. + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) + is the word being completed, and the third argument ($$33) + is the word preceding the word being completed on the + current command line. When it finishes, the possible + completions are retrieved from the value of the CCOOMMPPRREE-- + PPLLYY array variable. --GG _g_l_o_b_p_a_t The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. @@ -4077,27 +4237,27 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS loop) is resumed. The return value is 0 unless _n is not greater than or equal to 1. - ddeeccllaarree [--aaAAffFFggiillrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - ttyyppeesseett [--aaAAffFFggiillrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] Declare variables and/or give them attributes. If no _n_a_m_es are given then display the values of variables. The --pp option will display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options are ignored. When --pp is - supplied without _n_a_m_e arguments, it will display the attributes - and values of all variables having the attributes specified by - the additional options. If no other options are supplied with - --pp, ddeeccllaarree will display the attributes and values of all shell - variables. The --ff option will restrict the display to shell - functions. The --FF option inhibits the display of function defi- - nitions; only the function name and attributes are printed. If - the eexxttddeebbuugg shell option is enabled using sshhoopptt, the source - file name and line number where the function is defined are dis- - played as well. The --FF option implies --ff. The --gg option forces - variables to be created or modified at the global scope, even - when ddeeccllaarree is executed in a shell function. It is ignored in - all other cases. The following options can be used to restrict - output to variables with the specified attribute or to give - variables attributes: + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e arguments, it + will display the attributes and values of all variables having + the attributes specified by the additional options. If no other + options are supplied with --pp, ddeeccllaarree will display the + attributes and values of all shell variables. The --ff option + will restrict the display to shell functions. The --FF option + inhibits the display of function definitions; only the function + name and attributes are printed. If the eexxttddeebbuugg shell option + is enabled using sshhoopptt, the source file name and line number + where the function is defined are displayed as well. The --FF + option implies --ff. The --gg option forces variables to be created + or modified at the global scope, even when ddeeccllaarree is executed + in a shell function. It is ignored in all other cases. The + following options can be used to restrict output to variables + with the specified attribute or to give variables attributes: --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss @@ -4109,6 +4269,13 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --ll When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled. + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references and assign- + ments to _n_a_m_e, except for changing the --nn attribute + itself, are performed on the variable referenced by + _n_a_m_e's value. The --nn attribute cannot be applied to + array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions @@ -4124,66 +4291,68 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Using `+' instead of `-' turns off the attribute instead, with the exceptions that ++aa may not be used to destroy an array vari- able and ++rr will not remove the readonly attribute. When used - in a function, makes each _n_a_m_e local, as with the llooccaall command, - unless the --ggPP ooppttiioonn iiss ssuupppplliieedd,, IIff aa vvaarriiaabbllee nnaammee iiss ffooll-- - lloowweedd bbyy ==_v_a_l_u_e,, tthhee vvaalluuee ooff tthhee vvaarriiaabbllee iiss sseett ttoo _v_a_l_u_e.. TThhee - rreettuurrnn vvaalluuee iiss 00 uunnlleessss aann iinnvvaalliidd ooppttiioonn iiss eennccoouunntteerreedd,, aann - aatttteemmpptt iiss mmaaddee ttoo ddeeffiinnee aa ffuunnccttiioonn uussiinngg ````--ff ffoooo==bbaarr'''',, aann - aatttteemmpptt iiss mmaaddee ttoo aassssiiggnn aa vvaalluuee ttoo aa rreeaaddoonnllyy vvaarriiaabbllee,, aann - aatttteemmpptt iiss mmaaddee ttoo aassssiiggnn aa vvaalluuee ttoo aann aarrrraayy vvaarriiaabbllee wwiitthhoouutt - uussiinngg tthhee ccoommppoouunndd aassssiiggnnmmeenntt ssyynnttaaxx ((sseeee 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 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 [[++_n]] [[--_n]] [[--ccllppvv]] - Without options, displays the list of currently remembered - directories. The default display is on a single line with - directory names separated by spaces. Directories are added to - the list with the ppuusshhdd command; the ppooppdd command removes + 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. 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 + directories. The default display is on a single line with + directory names separated by spaces. Directories are added to + the list with the ppuusshhdd command; the ppooppdd command removes entries from the list. - ++_n Displays the _nth entry counting from the left of the list - shown by ddiirrss when invoked without options, starting with - zero. - --_n Displays the _nth entry counting from the right of the - list shown by ddiirrss when invoked without options, starting - with zero. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a longer listing; the default listing format - uses a tilde to denote the home directory. + --ll Produces a listing using full pathnames; the default + listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. + ++_n Displays the _nth entry counting from the left of the list + shown by ddiirrss when invoked without options, starting with + zero. + --_n Displays the _nth entry counting from the right of the + list shown by ddiirrss when invoked without options, starting + with zero. The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...] - Without options, each _j_o_b_s_p_e_c is removed from the table of - active jobs. If _j_o_b_s_p_e_c is not present, and neither --aa nor --rr - is supplied, the shell's notion of the _c_u_r_r_e_n_t _j_o_b is used. If - the --hh option is given, each _j_o_b_s_p_e_c is not removed from the ta- - ble, but is marked so that SSIIGGHHUUPP is not sent to the job if the - shell receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is present, and neither - the --aa nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. - If no _j_o_b_s_p_e_c is supplied, the --aa option means to remove or mark - all jobs; the --rr option without a _j_o_b_s_p_e_c argument restricts - operation to running jobs. The return value is 0 unless a _j_o_b_- - _s_p_e_c does not specify a valid job. + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell + receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option + means to remove or mark all jobs; the --rr option without a _j_o_b_- + _s_p_e_c argument restricts operation to running jobs. The return + value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job. eecchhoo [--nneeEE] [_a_r_g ...] Output the _a_r_gs, separated by spaces, followed by a newline. - The return status is always 0. If --nn is specified, the trailing - newline is suppressed. If the --ee option is given, interpreta- - tion of the following backslash-escaped characters is enabled. - The --EE option disables the interpretation of these escape char- - acters, even on systems where they are interpreted by default. - The xxppgg__eecchhoo shell option may be used to dynamically determine - whether or not eecchhoo expands these escape characters by default. - eecchhoo does not interpret ---- to mean the end of options. eecchhoo - interprets the following escape sequences: + The return status is 0 unless a write error occurs. If --nn is + specified, the trailing newline is suppressed. If the --ee option + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these + escape characters by default. eecchhoo does not interpret ---- to + mean the end of options. eecchhoo interprets the following escape + sequences: \\aa alert (bell) \\bb backspace \\cc suppress further output @@ -4195,89 +4364,88 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS \\tt horizontal tab \\vv vertical tab \\\\ backslash - \\00_n_n_n the eight-bit character whose value is the octal value + \\00_n_n_n the eight-bit character whose value is the octal value _n_n_n (zero to three octal digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - Enable and disable builtin shell commands. Disabling a builtin + Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin - to be executed without specifying a full pathname, even though - the shell normally searches for builtins before disk commands. - If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are + to be executed without specifying a full pathname, even though + the shell normally searches for builtins before disk commands. + If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are enabled. For example, to use the tteesstt binary found via the PPAATTHH - instead of the shell builtin version, run ``enable -n test''. - The --ff option means to load the new builtin command _n_a_m_e from + instead of the shell builtin version, run ``enable -n test''. + The --ff option means to load the new builtin command _n_a_m_e from shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. + The --dd option will delete a builtin previously loaded with --ff. If no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of shell builtins is printed. With no other option argu- - ments, the list consists of all enabled shell builtins. If --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an + ments, the list consists of all enabled shell builtins. If --nn + is supplied, only disabled builtins are printed. If --aa is sup- + plied, the list printed includes all builtins, with an indica- + tion of whether or not each is enabled. If --ss is supplied, the + output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return + value is 0 unless a _n_a_m_e is not a shell builtin or there is an error loading a new builtin from a shared object. eevvaall [_a_r_g ...] - The _a_r_gs are read and concatenated together into a single com- - mand. This command is then read and executed by the shell, and - its exit status is returned as the value of eevvaall. If there are + The _a_r_gs are read and concatenated together into a single com- + mand. This command is then read and executed by the shell, and + its exit status is returned as the value of eevvaall. If there are no _a_r_g_s, or only null arguments, eevvaall returns 0. eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]] - If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process - is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If + If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process + is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what + ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e + an empty environment. If --aa is supplied, the shell passes _n_a_m_e as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- - not be executed for some reason, a non-interactive shell exits, - unless the shell option eexxeeccffaaiill is enabled, in which case it - returns failure. An interactive shell returns failure if the + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill shell option is enabled. In that case, it + returns failure. An interactive shell returns failure if the file cannot be executed. If _c_o_m_m_a_n_d is not specified, any redi- rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + is 0. If there is a redirection error, the return status is 1. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of all names that are - exported in this shell is printed. The --nn option causes the - export property to be removed from each _n_a_m_e. If a variable - name is followed by =_w_o_r_d, the value of the variable is set to - _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid - option is encountered, one of the _n_a_m_e_s is not a valid shell - variable name, or --ff is supplied with a _n_a_m_e that is not a func- - tion. + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property + to be removed from each _n_a_m_e. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns + an exit status of 0 unless an invalid option is encountered, one + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - Fix Command. In the first form, a range of commands from _f_i_r_s_t - to _l_a_s_t is selected from the history list. _F_i_r_s_t and _l_a_s_t may - be specified as a string (to locate the last command beginning - with that string) or as a number (an index into the history - list, where a negative number is used as an offset from the cur- - rent command number). If _l_a_s_t is not specified it is set to the - current command for listing (so that ``fc -l -10'' prints the - last 10 commands) and to _f_i_r_s_t otherwise. If _f_i_r_s_t is not spec- - ified it is set to the previous command for editing and -16 for - listing. + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). If _l_a_s_t is not + specified it is set to the current command for listing (so that + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + wise. If _f_i_r_s_t is not specified it is set to the previous com- + mand for editing and -16 for listing. The --nn option suppresses the command numbers when listing. The --rr option reverses the order of the commands. If the --ll option @@ -4289,10 +4457,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS plete, the edited commands are echoed and executed. In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. A useful alias to use with this is - ``r="fc -s"'', so that typing ``r cc'' runs the last command - beginning with ``cc'' and typing ``r'' re-executes the last com- - mand. + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is intepreted the same as + _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', + so that typing ``r cc'' runs the last command beginning with + ``cc'' and typing ``r'' re-executes the last command. If the first form is used, the return value is 0 unless an invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history @@ -4338,7 +4506,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ggeettooppttss can report errors in two ways. If the first character of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation diagnostic messages are printed when invalid + normal operation, diagnostic messages are printed when invalid options or missing option arguments are encountered. If the variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. @@ -4363,7 +4531,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS is determined by searching the directories in $$PPAATTHH and remem- bered. Any previously-remembered pathname is discarded. If the --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e - is used as the full file name of the command. The --rr option + is used as the full filename of the command. The --rr option causes the shell to forget all remembered locations. The --dd option causes the shell to forget the remembered location of each _n_a_m_e. If the --tt option is supplied, the full pathname to @@ -4384,7 +4552,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like format --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n - The return status is 0 unless no command matches _p_a_t_t_e_r_n. + + The return status is 0 unless no command matches _p_a_t_t_e_r_n. hhiissttoorryy [[_n]] hhiissttoorryy --cc @@ -4412,10 +4581,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS file into the current history list. These are lines appended to the history file since the beginning of the current bbaasshh session. - --rr Read the contents of the history file and use them as the - current history. - --ww Write the current history to the history file, overwrit- - ing the history file's contents. + --rr Read the contents of the history file and append them to + the current history list. + --ww Write the current history list to the history file, over- + writing the history file's contents. --pp Perform history substitution on the following _a_r_g_s and display the result on the standard output. Does not store the results in the history list. Each _a_r_g must be @@ -4444,8 +4613,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS status since the user was last notified of their status. --pp List only the process ID of the job's process group leader. - --rr Restrict output to running jobs. - --ss Restrict output to stopped jobs. + --rr Display only running jobs. + --ss Display only stopped jobs. If _j_o_b_s_p_e_c is given, output is restricted to information about that job. The return status is 0 unless an invalid option is @@ -4569,37 +4738,41 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The corresponding _a_r_g_u_m_e_n_t is an integer representing the number of seconds since the epoch. Two special argument values may be used: -1 represents the current time, and - -2 represents the time the shell was invoked. + -2 represents the time the shell was invoked. If no + argument is specified, conversion behaves as if -1 had + been given. This is an exception to the usual pprriinnttff + behavior. - Arguments to non-string format specifiers are treated as C con- + Arguments to non-string format specifiers are treated as C con- stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value + if the leading character is a single or double quote, the value is the ASCII value of the following character. - The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied, - the extra format specifications behave as if a zero value or - null string, as appropriate, had been supplied. The return + the extra format specifications behave as if a zero value or + null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - Adds a directory to the top of the directory stack, or rotates - the stack, making the new top of the stack the current working + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working directory. With no arguments, exchanges the top two directories - and returns 0, unless the directory stack is empty. Arguments, + and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when adding - directories to the stack, so that only the stack is + --nn Suppresses the normal change of directory when adding + directories to the stack, so that only the stack is manipulated. - ++_n Rotates the stack so that the _nth directory (counting - from the left of the list shown by ddiirrss, starting with + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with zero) is at the top. - --_n Rotates the stack so that the _nth directory (counting - from the right of the list shown by ddiirrss, starting with + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory. + new current working directory as if it had been supplied + as the argument to the ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r @@ -4626,128 +4799,149 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ing separators assigned to the last _n_a_m_e. If there are fewer words read from the input stream than names, the remaining names are assigned empty values. The characters in IIFFSS are used to - split the line into words. The backslash character (\\) may be - used to remove any special meaning for the next character read - and for line continuation. Options, if supplied, have the fol- - lowing meanings: + split the line into words using the same rules the shell uses + for expansion (described above under WWoorrdd SSpplliittttiinngg). The back- + slash character (\\) may be used to remove any special meaning + for the next character read and for line continuation. Options, + if supplied, have the following meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any new values are assigned. Other _n_a_m_e arguments are ignored. --dd _d_e_l_i_m - The first character of _d_e_l_i_m is used to terminate the + The first character of _d_e_l_i_m is used to terminate the input line, rather than newline. --ee If the standard input is coming from a terminal, rreeaaddlliinnee - (see RREEAADDLLIINNEE above) is used to obtain the line. Read- - line uses the current (or default, if line editing was + (see RREEAADDLLIINNEE above) is used to obtain the line. Read- + line uses the current (or default, if line editing was not previously active) editing settings. --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than - waiting for a complete line of input, but honor a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + rreeaadd returns after reading _n_c_h_a_r_s characters rather than + waiting for a complete line of input, but honor a delim- + iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - EOF is encountered or rreeaadd times out. Delimiter charac- - ters encountered in the input are not treated specially - and do not cause rreeaadd to return until _n_c_h_a_r_s characters + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters are read. --pp _p_r_o_m_p_t Display _p_r_o_m_p_t on standard error, without a trailing new- line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input is not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_- - _o_u_t may be a decimal number with a fractional portion - following the decimal point. This option is only effec- - tive if rreeaadd is reading input from a terminal, pipe, or - other special file; it has no effect when reading from - regular files. If _t_i_m_e_o_u_t is 0, rreeaadd returns success if - input is available on the specified file descriptor, - failure otherwise. The exit status is greater than 128 - if the timeout is exceeded. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. + If rreeaadd times out, rreeaadd saves any partial input read into + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + returns immediately, without trying to read any data. + The exit status is 0 if input is available on the speci- + fied file descriptor, non-zero otherwise. The exit sta- + tus is greater than 128 if the timeout is exceeded. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- able RREEPPLLYY. The return code is zero, unless end-of-file is encountered, rreeaadd times out (in which case the return code is - greater than 128), or an invalid file descriptor is supplied as - the argument to --uu. - - rreeaaddoonnllyy [--aaAAppff] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If no _n_a_m_e arguments are given, or if the --pp option is - supplied, a list of all readonly names is printed. The --pp - option causes output to be displayed in a format that may be - reused as input. If a variable name is followed by =_w_o_r_d, the - value of the variable is set to _w_o_r_d. The return status is 0 - unless an invalid option is encountered, one of the _n_a_m_e_s is not - a valid shell variable name, or --ff is supplied with a _n_a_m_e that - is not a function. + greater than 128), a variable assignment error (such as assign- + ing to a readonly variable) occurs, or an invalid file descrip- + tor is supplied as the argument to --uu. + + rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp option is supplied, a + list of all readonly names is printed. The other options may be + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the + _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with + a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to exit with the return value specified by _n. - If _n is omitted, the return status is that of the last command - executed in the function body. If used outside a function, but - during execution of a script by the .. (ssoouurrccee) command, it - causes the shell to stop executing that script and return either - _n or the exit status of the last command executed within the - script as the exit status of the script. If used outside a - function and not during execution of a script by .., the return - status is false. Any command associated with the RREETTUURRNN trap is - executed before execution resumes after the function or script. + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is used outside a function, but during execution of a + script by the .. (ssoouurrccee) command, it causes the shell to stop + executing that script and return either _n or the exit status of + the last command executed within the script as the exit status + of the script. If _n is supplied, the return value is its least + significant 8 bits. The return status is non-zero if rreettuurrnn is + supplied a non-numeric argument, or is used outside a function + and not during execution of a script by .. or ssoouurrccee. Any com- + mand associated with the RREETTUURRNN trap is executed before execu- + tion resumes after the function or script. sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, the name and value of each shell variable are + Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables can- - not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. - The output is sorted according to the current locale. When - options are specified, they set or unset shell attributes. Any - arguments remaining after option processing are treated as val- + not be reset. In _p_o_s_i_x mode, only shell variables are listed. + The output is sorted according to the current locale. When + options are specified, they set or unset shell attributes. Any + arguments remaining after option processing are treated as val- ues for the positional parameters and are assigned, in order, to - $$11, $$22, ...... $$_n. Options, if specified, have the following + $$11, $$22, ...... $$_n. Options, if specified, have the following meanings: - --aa Automatically mark variables and functions which are - modified or created for export to the environment of + --aa Automatically mark variables and functions which are + modified or created for export to the environment of subsequent commands. - --bb Report the status of terminated background jobs immedi- + --bb Report the status of terminated background jobs immedi- ately, rather than before the next primary prompt. This is effective only when job control is enabled. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _s_u_b_s_h_e_l_l command enclosed in - parentheses, or one of the commands executed as part of - a command list enclosed by braces (see SSHHEELLLL GGRRAAMMMMAARR - above) exits with a non-zero status. The shell does not - exit if the command that fails is part of the command - list immediately following a wwhhiillee or uunnttiill keyword, - part of the test following the iiff or eelliiff reserved - words, part of any command executed in a &&&& or |||| list - except the command following the final &&&& or ||||, any - command in a pipeline but the last, or if the command's - return value is being inverted with !!. A trap on EERRRR, + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero sta- + tus. The shell does not exit if the command that fails + is part of the command list immediately following a + wwhhiillee or uunnttiill keyword, part of the test following the + iiff or eelliiff reserved words, part of any command executed + in a &&&& or |||| list except the command following the + final &&&& or ||||, any command in a pipeline but the last, + or if the command's return value is being inverted with + !!. If a compound command other than a subshell returns + a non-zero status because a command failed while --ee was + being ignored, the shell does not exit. A trap on EERRRR, if set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT above), and may cause subshells to exit before executing all the commands in the subshell. + + If a compound command or shell function executes in a + context where --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command + containing the function call completes. --ff Disable pathname expansion. --hh Remember the location of commands as they are looked up for execution. This is enabled by default. @@ -4756,10 +4950,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS that precede the command name. --mm Monitor mode. Job control is enabled. This option is on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). Background pro- - cesses run in a separate process group and a line con- - taining their exit status is printed upon their comple- - tion. + support it (see JJOOBB CCOONNTTRROOLL above). All processes run + in a separate process group. When a background job com- + pletes, the shell prints a line containing its exit sta- + tus. --nn Read commands but do not execute them. This may be used to check a shell script for syntax errors. This is ignored by interactive shells. @@ -4809,7 +5003,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS is disabled by default. ppoossiixx Change the behavior of bbaasshh where the default operation differs from the POSIX standard to - match the standard (_p_o_s_i_x _m_o_d_e). + match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO + below for a reference to a document that details + how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. @@ -4858,7 +5054,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ited in such cases. --HH Enable !! style history substitution. This option is on by default when the shell is interactive. - --PP If set, the shell does not follow symbolic links when + --PP If set, the shell does not resolve symbolic links when executing commands such as ccdd that change the current working directory. It uses the physical directory structure instead. By default, bbaasshh follows the logical @@ -4894,12 +5090,14 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS zero if _n is greater than $$## or less than zero; otherwise 0. sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - Toggle the values of variables controlling optional shell behav- - ior. With no options, or with the --pp option, a list of all set- - table options is displayed, with an indication of whether or not - each is set. The --pp option causes output to be displayed in a - form that may be reused as input. Other options have the fol- - lowing meanings: + Toggle the values of settings controlling optional shell behav- + ior. The settings can be either those listed below, or, if the + --oo option is used, those available with the --oo option to the sseett + builtin command. With no options, or with the --pp option, a list + of all settable options is displayed, with an indication of + whether or not each is set. The --pp option causes output to be + displayed in a form that may be reused as input. Other options + have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. --qq Suppresses normal output (quiet mode); the return status @@ -4910,10 +5108,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for the --oo option to the sseett builtin. - If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, the dis- - play is limited to those options which are set or unset, respec- - tively. Unless otherwise noted, the sshhoopptt options are disabled - (unset) by default. + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) + by default. The return status when listing options is zero if all _o_p_t_n_a_m_e_s are enabled, non-zero otherwise. When setting or unsetting @@ -4933,7 +5131,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ponent in a ccdd command will be corrected. The errors checked for are transposed characters, a missing charac- ter, and one character too many. If a correction is - found, the corrected file name is printed, and the com- + found, the corrected filename is printed, and the com- mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh @@ -4958,146 +5156,183 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 with respect to quoted arguments to the [[[[ conditional - command's ==~~ operator. + command's ==~~ operator and locale-specific string compar- + ison when using the [[[[ conditional command's << and >> + operators. Bash versions prior to bash-4.1 use ASCII + collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur- + rent locale's collation sequence and _s_t_r_c_o_l_l(3). ccoommppaatt3322 If set, bbaasshh changes its behavior to that of version 3.2 with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators. - Bash versions prior to bash-4.1 use ASCII collation and - _s_t_r_c_m_p(3); bash-4.1 and later use the current locale's - collation sequence and _s_t_r_c_o_l_l(3). + using the [[[[ conditional command's << and >> operators + (see previous item). ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 with respect to locale-specific string comparison when using the [[[[ conditional command's << and >> operators - (see previous item) and the effect of interrupting a - command list. + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command + in the list. ccoommppaatt4411 - @item compat41 If set, bbaasshh, when in posix mode, treats - a single quote in a double-quoted parameter expansion as - a special character. The single quotes must match (an - even number) and the characters between the single - quotes are considered quoted. This is the behavior of - posix mode through version 4.1. The default bash behav- - ior remains as in previous versions. + If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains + as in previous versions. + ccoommppaatt4422 + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote + removal. + ccoommpplleettee__ffuullllqquuoottee + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. + If not set, bbaasshh removes metacharacters such as the dol- + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in + versions through 4.2. + ddiirreexxppaanndd + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing + buffer. If not set, bbaasshh attempts to preserve what the + user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in the results of pathname expansion. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set, behavior intended for use by debuggers is + If set, behavior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), a call to + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), a call to rreettuurrnn is simulated. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. + gglloobbaasscciiiirraannggeess + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- + parisons. That is, the current locale's collating + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case + ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match a files and zero or more directories and - subdirectories. If the pattern is followed by a //, only - directories and subdirectories match. + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, + only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS above). This option is enabled by default. llaassttppiippee - If set, and job control is not active, the shell runs + If set, and job control is not active, the shell runs the last command of a pipeline not executed in the back- ground in the current shell environment. - lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN above). The value may not be changed. mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, the - message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- + If set, and a file that bbaasshh is checking for mail has + been accessed since the last time it was checked, the + message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- played. nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh will not + If set, and rreeaaddlliinnee is being used, bbaasshh will not attempt to search the PPAATTHH for possible completions when completion is attempted on an empty line. nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive + If set, bbaasshh matches filenames in a case-insensitive fashion when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn above). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ conditional commands. nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, + If set, bbaasshh allows patterns which match no files (see + PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, rather than themselves. pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- @@ -5105,48 +5340,50 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS enabled by default. pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- - mand substitution, arithmetic expansion, and quote - removal after being expanded as described in PPRROOMMPPTTIINNGG + mand substitution, arithmetic expansion, and quote + removal after being expanded as described in PPRROOMMPPTTIINNGG above. This option is enabled by default. rreessttrriicctteedd__sshheellll - The shell sets this option if it is started in + The shell sets this option if it is started in restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value - may not be changed. This is not reset when the startup - files are executed, allowing the startup files to dis- + may not be changed. This is not reset when the startup + files are executed, allowing the startup files to dis- cover whether or not a shell is restricted. sshhiifftt__vveerrbboossee - If set, the sshhiifftt builtin prints an error message when + If set, the sshhiifftt builtin prints an error message when the shift count exceeds the number of positional parame- ters. ssoouurrcceeppaatthh If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to - find the directory containing the file supplied as an + find the directory containing the file supplied as an argument. This option is enabled by default. xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape + If set, the eecchhoo builtin expands backslash-escape sequences by default. + ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT signal. A login shell cannot be suspended; the --ff option can be used to override this and force the suspension. The return sta- - tus is 0 unless the shell is a login shell and --ff is not sup- + tus is 0 unless the shell is a login shell and --ff is not sup- plied, or if job control is not enabled. + tteesstt _e_x_p_r [[ _e_x_p_r ]] - Return a status of 0 or 1 depending on the evaluation of the - conditional expression _e_x_p_r. Each operator and operand must be - a separate argument. Expressions are composed of the primaries - described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. tteesstt does not - accept any options, nor does it accept and ignore an argument of - ---- as signifying the end of options. - - Expressions may be combined using the following operators, + Return a status of 0 (true) or 1 (false) depending on the evalu- + ation of the conditional expression _e_x_p_r. Each operator and op- + erand must be a separate argument. Expressions are composed of + the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + tteesstt does not accept any options, nor does it accept and ignore + an argument of ---- as signifying the end of options. + + Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation - depends on the number of arguments; see below. Operator prece- + depends on the number of arguments; see below. Operator prece- dence is used when there are five or more arguments. !! _e_x_p_r True if _e_x_p_r is false. (( _e_x_p_r )) - Returns the value of _e_x_p_r. This may be used to override + Returns the value of _e_x_p_r. This may be used to override the normal precedence of operators. _e_x_p_r_1 -aa _e_x_p_r_2 True if both _e_x_p_r_1 and _e_x_p_r_2 are true. @@ -5163,76 +5400,79 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS null. 2 arguments If the first argument is !!, the expression is true if and - only if the second argument is null. If the first argu- - ment is one of the unary conditional operators listed - above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is + only if the second argument is null. If the first argu- + ment is one of the unary conditional operators listed + above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is true if the unary test is true. If the first argument is not a valid unary conditional operator, the expression is false. 3 arguments The following conditions are applied in the order listed. - If the second argument is one of the binary conditional + If the second argument is one of the binary conditional operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo operators are considered binary operators when - there are three arguments. If the first argument is !!, - the value is the negation of the two-argument test using + using the first and third arguments as operands. The --aa + and --oo operators are considered binary operators when + there are three arguments. If the first argument is !!, + the value is the negation of the two-argument test using the second and third arguments. If the first argument is exactly (( and the third argument is exactly )), the result - is the one-argument test of the second argument. Other- + is the one-argument test of the second argument. Other- wise, the expression is false. 4 arguments If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining + the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed + uated according to precedence using the rules listed above. 5 or more arguments - The expression is parsed and evaluated according to + The expression is parsed and evaluated according to precedence using the rules listed above. - When used with tteesstt or [[, the << and >> operators sort lexico- + When used with tteesstt or [[, the << and >> operators sort lexico- graphically using ASCII ordering. - ttiimmeess Print the accumulated user and system times for the shell and + ttiimmeess Print the accumulated user and system times for the shell and for processes run from the shell. The return status is 0. ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...] - The command _a_r_g is to be read and executed when the shell - receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a - single _s_i_g_s_p_e_c) or --, each specified signal is reset to its - original disposition (the value it had upon entrance to the - shell). If _a_r_g is the null string the signal specified by each - _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. - If _a_r_g is not present and --pp has been supplied, then the trap - commands associated with each _s_i_g_s_p_e_c are displayed. If no - arguments are supplied or if only --pp is given, ttrraapp prints the - list of commands associated with each signal. The --ll option - causes the shell to print a list of signal names and their cor- - responding numbers. Each _s_i_g_s_p_e_c is either a signal name - defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are + The command _a_r_g is to be read and executed when the shell + receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a + single _s_i_g_s_p_e_c) or --, each specified signal is reset to its + original disposition (the value it had upon entrance to the + shell). If _a_r_g is the null string the signal specified by each + _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. + If _a_r_g is not present and --pp has been supplied, then the trap + commands associated with each _s_i_g_s_p_e_c are displayed. If no + arguments are supplied or if only --pp is given, ttrraapp prints the + list of commands associated with each signal. The --ll option + causes the shell to print a list of signal names and their cor- + responding numbers. Each _s_i_g_s_p_e_c is either a signal name + defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are case insensitive and the SSIIGG prefix is optional. - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a sim- - ple command has a non-zero exit status, subject to the following - conditions. The EERRRR trap is not executed if the failed command - is part of the command list immediately following a wwhhiillee or - uunnttiill keyword, part of the test in an _i_f statement, part of a - command executed in a &&&& or |||| list, or if the command's return - value is being inverted via !!. These are the same conditions - obeyed by the eerrrreexxiitt option. + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a a + pipeline (which may consist of a single simple command), a list, + or a compound command returns a non-zero exit status, subject to + the following conditions. The EERRRR trap is not executed if the + failed command is part of the command list immediately following + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + part of a command executed in a &&&& or |||| list except the command + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) + option. Signals ignored upon entry to the shell cannot be trapped or reset. Trapped signals that are not being ignored are reset to @@ -5252,14 +5492,14 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS fied as a command name, or nothing if ``type -t name'' would not return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, even if ``type -t name'' would not return _f_i_l_e. If a command is - hashed, --pp and --PP print the hashed value, not necessarily the - file that appears first in PPAATTHH. If the --aa option is used, ttyyppee - prints all of the places that contain an executable named _n_a_m_e. - This includes aliases and functions, if and only if the --pp - option is not also used. The table of hashed commands is not - consulted when using --aa. The --ff option suppresses shell func- - tion lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if - all of the arguments are found, false if any are not found. + hashed, --pp and --PP print the hashed value, which is not necessar- + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable + named _n_a_m_e. This includes aliases and functions, if and only if + the --pp option is not also used. The table of hashed commands is + not consulted when using --aa. The --ff option suppresses shell + function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true + if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSSTTaabbccddeeffiillmmnnppqqrrssttuuvvxx [_l_i_m_i_t]] Provides control over the resources available to the shell and @@ -5302,13 +5542,13 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --xx The maximum number of file locks --TT The maximum number of threads - If _l_i_m_i_t is given, it is the new value of the specified resource - (the --aa option is display only). If no option is given, then --ff - is assumed. Values are in 1024-byte increments, except for --tt, - which is in seconds, --pp, which is in units of 512-byte blocks, - and --TT, --bb, --nn, and --uu, which are unscaled values. The return - status is 0 unless an invalid option or argument is supplied, or - an error occurs while setting a new limit. + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --pp, which is in units of 512-byte + blocks; and --TT, --bb, --nn, and --uu, which are unscaled values. The + return status is 0 unless an invalid option or argument is sup- + plied, or an error occurs while setting a new limit. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with @@ -5327,33 +5567,40 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. - uunnsseett [-ffvv] [_n_a_m_e ...] + uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] For each _n_a_m_e, remove the corresponding variable or function. - If no options are supplied, or the --vv option is given, each _n_a_m_e - refers to a shell variable. Read-only variables may not be + If the --vv option is given, each _n_a_m_e refers to a shell variable, + and that variable is removed. Read-only variables may not be unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. Each unset vari- - able or function is removed from the environment passed to sub- - sequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANNDDOOMM, SSEECCOONNDDSS, - LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they - lose their special properties, even if they are subsequently - reset. The exit status is true unless a _n_a_m_e is readonly. - - wwaaiitt [_n _._._.] - Wait for each specified process and return its termination sta- - tus. Each _n may be a process ID or a job specification; if a + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, any function with that name is unset. Each + unset variable or function is removed from the environment + passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are + unset, they lose their special properties, even if they are sub- + sequently reset. The exit status is true unless a _n_a_m_e is read- + only. + + wwaaiitt [--nn] [_n _._._.] + Wait for each specified child process and return its termination + status. Each _n may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If _n is not given, all currently active child pro- - cesses are waited for, and the return status is zero. If _n - specifies a non-existent process or job, the return status is - 127. Otherwise, the return status is the exit status of the - last process or job waited for. + cesses are waited for, and the return status is zero. If the --nn + option is supplied, wwaaiitt waits for any job to terminate and + returns its exit status. If _n specifies a non-existent process + or job, the return status is 127. Otherwise, the return status + is the exit status of the last process or job waited for. RREESSTTRRIICCTTEEDD SSHHEELLLL If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at - invocation, the shell becomes restricted. A restricted shell is used - to set up an environment more controlled than the standard shell. It - behaves identically to bbaasshh with the exception that the following are + invocation, the shell becomes restricted. A restricted shell is used + to set up an environment more controlled than the standard shell. It + behaves identically to bbaasshh with the exception that the following are disallowed or not performed: +o changing directories with ccdd @@ -5362,16 +5609,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a file name containing a // as an argument to the .. + +o specifying a filename containing a // as an argument to the .. builtin command - +o specifying a filename containing a slash as an argument to the + +o specifying a filename containing a slash as an argument to the --pp option to the hhaasshh builtin command - +o importing function definitions from the shell environment at + +o importing function definitions from the shell environment at startup - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at + +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at startup +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- @@ -5380,10 +5627,10 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o using the eexxeecc builtin command to replace the shell with another command - +o adding or deleting builtin commands with the --ff and --dd options + +o adding or deleting builtin commands with the --ff and --dd options to the eennaabbllee builtin command - +o using the eennaabbllee builtin command to enable disabled shell + +o using the eennaabbllee builtin command to enable disabled shell builtins +o specifying the --pp option to the ccoommmmaanndd builtin command @@ -5393,15 +5640,17 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL These restrictions are enforced after any startup files are read. When a command that is found to be a shell script is executed (see CCOOMM-- - MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell + MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell spawned to execute the script. SSEEEE AALLSSOO _B_a_s_h _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, Brian Fox and Chet Ramey _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- - _t_i_e_s, IEEE + _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- + _t_i_e_s, IEEE -- + http://pubs.opengroup.org/onlinepubs/9699919799/ + http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode _s_h(1), _k_s_h(1), _c_s_h(1) _e_m_a_c_s(1), _v_i(1) _r_e_a_d_l_i_n_e(3) @@ -5416,7 +5665,7 @@ FFIILLEESS _~_/_._b_a_s_h_r_c The individual per-interactive-shell startup file _~_/_._b_a_s_h___l_o_g_o_u_t - The individual login shell cleanup file, executed when a login + The individual login shell cleanup file, executed when a login shell exits _~_/_._i_n_p_u_t_r_c Individual _r_e_a_d_l_i_n_e initialization file @@ -5430,14 +5679,14 @@ AAUUTTHHOORRSS BBUUGG RREEPPOORRTTSS If you find a bug in bbaasshh,, you should report it. But first, you should - make sure that it really is a bug, and that it appears in the latest - version of bbaasshh. The latest version is always available from + make sure that it really is a bug, and that it appears in the latest + version of bbaasshh. The latest version is always available from _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. - Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g - command to submit a bug report. If you have a fix, you are encouraged - to mail that as well! Suggestions and `philosophical' bug reports may - be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g + command to submit a bug report. If you have a fix, you are encouraged + to mail that as well! Suggestions and `philosophical' bug reports may + be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup ggnnuu..bbaasshh..bbuugg. ALL bug reports should include: @@ -5448,11 +5697,11 @@ BBUUGG RREEPPOORRTTSS A description of the bug behaviour A short script or `recipe' which exercises the bug - _b_a_s_h_b_u_g inserts the first three items automatically into the template + _b_a_s_h_b_u_g inserts the first three items automatically into the template it provides for filing a bug report. Comments and bug reports concerning this manual page should be directed - to _c_h_e_t_@_p_o_._c_w_r_u_._e_d_u. + to _c_h_e_t_._r_a_m_e_y_@_c_a_s_e_._e_d_u. BBUUGGSS It's too big and too slow. @@ -5465,10 +5714,10 @@ BBUUGGSS Shell builtin commands and functions are not stoppable/restartable. Compound commands and command sequences of the form `a ; b ; c' are not - handled gracefully when process suspension is attempted. When a - process is stopped, the shell immediately executes the next command in - the sequence. It suffices to place the sequence of commands between - parentheses to force it into a subshell, which may be stopped as a + handled gracefully when process suspension is attempted. When a + process is stopped, the shell immediately executes the next command in + the sequence. It suffices to place the sequence of commands between + parentheses to force it into a subshell, which may be stopped as a unit. Array variables may not (yet) be exported. @@ -5477,4 +5726,4 @@ BBUUGGSS -GNU Bash-4.2 2010 December 28 BASH(1) +GNU Bash 4.3 2014 February 2 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index 103d27e..ec41462 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -3,14 +3,14 @@ .\" .\" Chet Ramey .\" Case Western Reserve University -.\" chet@po.cwru.edu +.\" chet.ramey@case.edu .\" -.\" Last Change: Tue Dec 28 13:41:43 EST 2010 +.\" Last Change: Sun Feb 2 16:21:40 EST 2014 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2010 December 28" "GNU Bash-4.2" +.TH BASH 1 "2014 February 2" "GNU Bash 4.3" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -48,10 +48,10 @@ bash \- GNU Bourne-Again SHell .SH SYNOPSIS .B bash [options] -[file] +[command_string | file] .SH COPYRIGHT -.if n Bash is Copyright (C) 1989-2011 by the Free Software Foundation, Inc. -.if t Bash is Copyright \(co 1989-2011 by the Free Software Foundation, Inc. +.if n Bash is Copyright (C) 1989-2013 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2013 by the Free Software Foundation, Inc. .SH DESCRIPTION .B Bash is an \fBsh\fR-compatible command language interpreter that @@ -75,13 +75,13 @@ interprets the following options when it is invoked: .PP .PD 0 .TP 10 -.BI \-c "\| string\^" +.B \-c If the .B \-c -option is present, then commands are read from -.IR string . +option is present, then commands are read from the first non-option argument +.IR command_string . If there are arguments after the -.IR string , +.IR command_string , they are assigned to the positional parameters, starting with .BR $0 . .TP @@ -222,6 +222,11 @@ This option is on by default if the shell is invoked as .B \-\-posix Change the behavior of \fBbash\fP where the default operation differs from the POSIX standard to match the standard (\fIposix mode\fP). +See +.SM +.B "SEE ALSO" +below for a reference to a document that details how posix mode affects +bash's behavior. .TP .B \-\-restricted The shell becomes restricted (see @@ -294,7 +299,7 @@ executes its startup files. If any of the files exist but cannot be read, .B bash reports an error. -Tildes are expanded in file names as described below under +Tildes are expanded in filenames as described below under .B "Tilde Expansion" in the .SM @@ -348,7 +353,7 @@ behaves as if the following command were executed: but the value of the .SM .B PATH -variable is not used to search for the file name. +variable is not used to search for the filename. .PP If .B bash @@ -419,8 +424,8 @@ The .B \-\-norc option may be used to inhibit this behavior, and the .B \-\-rcfile -option may be used to force another file to be read, but -\fIrshd\fP does not generally invoke the shell with those options +option may be used to force another file to be read, but neither +\fIrshd\fP nor \fIsshd\fP generally invoke the shell with those options or allow them to be specified. .PP If the shell is started with the effective user (group) id not equal to the @@ -494,8 +499,8 @@ command: .if t .RS .PP .B -.if n ! case do done elif else esac fi for function if in select then until while { } time [[ ]] -.if t ! case do done elif else esac fi for function if in select then until while { } time [[ ]] +.if n ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] +.if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE .SH "SHELL GRAMMAR" .SS Simple Commands @@ -530,11 +535,12 @@ command (see .SM .B REDIRECTION below). -If \fB|&\fP is used, the standard error of \fIcommand\fP is connected to -\fIcommand2\fP's standard input through the pipe; it is shorthand for -\fB2>&1 |\fP. -This implicit redirection of the standard error is performed after any -redirections specified by the command. +If \fB|&\fP is used, \fIcommand\fP's standard error, in addition to its +standard output, is connected to +\fIcommand2\fP's standard input through the pipe; +it is shorthand for \fB2>&1 |\fP. +This implicit redirection of the standard error to the standard output is +performed after any redirections specified by the command. .PP The return status of a pipeline is the exit status of the last command, unless the \fBpipefail\fP option is enabled. @@ -646,7 +652,10 @@ AND and OR lists is the exit status of the last command executed in the list. .SS Compound Commands .PP -A \fIcompound command\fP is one of the following: +A \fIcompound command\fP is one of the following. +In most cases a \fIlist\fP in a command's description may be separated from +the rest of the command by one or more newlines, and may be followed by a +newline in place of a semicolon. .TP (\fIlist\fP) \fIlist\fP is executed in a subshell environment (see @@ -686,8 +695,9 @@ Expressions are composed of the primaries described below under .SM .BR "CONDITIONAL EXPRESSIONS" . Word splitting and pathname expansion are not performed on the words -between the \fB[[\fP and \fB]]\fP; tilde expansion, parameter and -variable expansion, arithmetic expansion, command substitution, process +between the \fB[[\fP and \fB]]\fP; tilde expansion, +parameter and variable expansion, +arithmetic expansion, command substitution, process substitution, and quote removal are performed. Conditional operators such as \fB\-f\fP must be unquoted to be recognized as primaries. @@ -699,15 +709,17 @@ lexicographically using the current locale. .if n .sp 1 When the \fB==\fP and \fB!=\fP operators are used, the string to the right of the operator is considered a pattern and matched according -to the rules described below under \fBPattern Matching\fP. +to the rules described below under \fBPattern Matching\fP, +as if the \fBextglob\fP shell option were enabled. +The \fB=\fP operator is equivalent to \fB==\fP. If the shell option .B nocasematch is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (\fB==\fP) or does not match (\fB!=\fP) the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force it to be matched as a -string. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. .if t .sp 0.5 .if n .sp 1 An additional binary operator, \fB=~\fP, is available, with the same @@ -722,8 +734,12 @@ If the shell option .B nocasematch is enabled, the match is performed without regard to the case of alphabetic characters. -Any part of the pattern may be quoted to force it to be matched as a -string. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +Bracket expressions in regular expressions must be treated carefully, +since normal quoting characters lose their meanings between brackets. +If the pattern is stored in a shell variable, quoting the variable +expansion forces the entire pattern to be matched as a string. Substrings matched by parenthesized subexpressions within the regular expression are saved in the array variable .SM @@ -865,7 +881,7 @@ The exit status is zero if no pattern matches. Otherwise, it is the exit status of the last command executed in \fIlist\fP. .TP -\fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP \ +\fBif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; \ [ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \ [ \fBelse\fP \fIlist\fP; ] \fBfi\fP The @@ -911,11 +927,11 @@ The format for a coprocess is: .RE .PP This creates a coprocess named \fINAME\fP. -If \fINAME\fP is not supplied, the default name is \fICOPROC\fP. +If \fINAME\fP is not supplied, the default name is \fBCOPROC\fP. \fINAME\fP must not be supplied if \fIcommand\fP is a \fIsimple command\fP (see above); otherwise, it is interpreted as the first word of the simple command. -When the coproc is executed, the shell creates an array variable (see +When the coprocess is executed, the shell creates an array variable (see .B Arrays below) named \fINAME\fP in the context of the executing shell. The standard output of @@ -933,11 +949,14 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. +The file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable \fINAME\fP_PID. The \fBwait\fP builtin command may be used to wait for the coprocess to terminate. .PP +Since the coprocess is created as an asynchronous command, +the \fBcoproc\fP command always returns success. The return status of a coprocess is the exit status of \fIcommand\fP. .SS Shell Function Definitions .PP @@ -960,6 +979,8 @@ That command is usually a \fIlist\fP of commands between { and }, but may be any command listed under \fBCompound Commands\fP above. \fIcompound\-command\fP is executed whenever \fIname\fP is specified as the name of a simple command. +When in \fIposix mode\fP, \fIname\fP may not be the name of one of the +POSIX \fIspecial builtins\fP. Any redirections (see .SM .B REDIRECTION @@ -1204,6 +1225,9 @@ Assignment statements may also appear as arguments to the and .B local builtin commands. +When in \fIposix mode\fP, these builtins may appear in a command after +one or more instances of the \fBcommand\fP builtin and retain these +assignment statement properties. .PP In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to @@ -1220,6 +1244,39 @@ appended to the array beginning at one greater than the array's maximum index associative array. When applied to a string-valued variable, \fIvalue\fP is expanded and appended to the variable's value. +.PP +A variable can be assigned the \fInameref\fP attribute using the +\fB\-n\fP option to the \fBdeclare\fP or \fBlocal\fP builtin commands +(see the descriptions of \fBdeclare\fP and \fBlocal\fP below) +to create a \fInameref\fP, or a reference to another variable. +This allows variables to be manipulated indirectly. +Whenever the nameref variable is referenced or assigned to, the operation +is actually performed on the variable specified by the nameref variable's +value. +A nameref is commonly used within shell functions to refer to a variable +whose name is passed as an argument to the function. +For instance, if a variable name is passed to a shell function as its first +argument, running +.sp .5 +.RS +.if t \f(CWdeclare -n ref=$1\fP +.if n declare -n ref=$1 +.RE +.sp .5 +inside the function creates a nameref variable \fBref\fP whose value is +the variable name passed as the first argument. +References and assignments to \fBref\fP are treated as references and +assignments to the variable whose name was passed as \fB$1\fP. +If the control variable in a \fBfor\fP loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. +Array variables cannot be given the \fB\-n\fP attribute. +However, nameref variables can reference array variables and subscripted +array variables. +Namerefs can be unset using the \fB\-n\fP option to the \fBunset\fP builtin. +Otherwise, if \fBunset\fP is executed with the name of a nameref variable +as an argument, the variable referenced by the nameref variable will be unset. .SS Positional Parameters .PP A @@ -1248,8 +1305,12 @@ only be referenced; assignment to them is not allowed. .PD 0 .TP .B * -Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, it expands to a single word +Expands to the positional parameters, starting from one. +When the expansion is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and pathname expansion. +When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the .SM @@ -1304,8 +1365,12 @@ expands to the process ID of the current shell, not the subshell. .TP .B ! -Expands to the process ID of the most recently executed background -(asynchronous) command. +Expands to the process ID of the job most recently placed into the +background, whether executed as an asynchronous command or using +the \fBbg\fP builtin (see +.SM +.B "JOB CONTROL" +below). .TP .B 0 Expands to the name of the shell or shell script. This is set at @@ -1321,7 +1386,7 @@ option, then .B $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set -to the file name used to invoke +to the filename used to invoke .BR bash , as given by argument zero. .TP @@ -1343,7 +1408,7 @@ The following variables are set by the shell: .PD 0 .TP .B BASH -Expands to the full file name used to invoke this instance of +Expands to the full filename used to invoke this instance of .BR bash . .TP .B BASHOPTS @@ -1465,7 +1530,8 @@ The shell function \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP. .TP .B BASH_SUBSHELL -Incremented by one each time a subshell or subshell environment is spawned. +Incremented by one within each subshell or subshell environment when +the shell begins executing in that environment. The initial value is 0. .TP .B BASH_VERSINFO @@ -1812,6 +1878,24 @@ below. .PP .PD 0 .TP +.B BASH_COMPAT +The value is used to set the shell's compatibility level. +See the description of the \fBshopt\fP builtin below under +\fBSHELL BUILTIN COMMANDS\fP +for a description of the various compatibility +levels and their effects. +The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) +corresponding to the desired compatibility level. +If \fBBASH_COMPAT\fP is unset or set to the empty string, the compatibility +level is set to the default for the current version. +If \fBBASH_COMPAT\fP is set to a value that is not one of the valid +compatibility levels, the shell prints an error message and sets the +compatibility level to the default for the current version. +The valid compatibility levels correspond to the compatibility options +accepted by the \fBshopt\fP builtin described below (for example, +\fBcompat42\fP means that 4.2 and 42 are valid values). +The current version is also a valid value. +.TP .B BASH_ENV If this parameter is set when \fBbash\fP is executing a shell script, its value is interpreted as a filename containing commands to @@ -1821,10 +1905,10 @@ The value of .SM .B BASH_ENV is subjected to parameter expansion, command substitution, and arithmetic -expansion before being interpreted as a file name. +expansion before being interpreted as a filename. .SM .B PATH -is not used to search for the resultant file name. +is not used to search for the resultant filename. .TP .B BASH_XTRACEFD If set to an integer corresponding to a valid file descriptor, \fBbash\fP @@ -1860,9 +1944,19 @@ A sample value is .if t \f(CW".:~:/usr"\fP. .if n ".:~:/usr". .TP +.B CHILD_MAX +Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a POSIX-mandated +minimum, and there is a maximum value (currently 8192) that this may +not exceed. +The minimum value is system-dependent. +.TP .B COLUMNS Used by the \fBselect\fP compound command to determine the terminal width -when printing selection lists. Automatically set upon receipt of a +when printing selection lists. +Automatically set if the +.B checkwinsize +option is enabled or in an interactive shell upon receipt of a .SM .BR SIGWINCH . .TP @@ -1870,6 +1964,7 @@ when printing selection lists. Automatically set upon receipt of a An array variable from which \fBbash\fP reads the possible completions generated by a shell function invoked by the programmable completion facility (see \fBProgrammable Completion\fP below). +Each array element contains one possible completion. .TP .B EMACS If \fBbash\fP finds this variable in the environment when the shell starts @@ -1955,15 +2050,19 @@ The name of the file in which command history is saved (see .SM .B HISTORY below). The default value is \fI~/.bash_history\fP. If unset, the -command history is not saved when an interactive shell exits. +command history is not saved when a shell exits. .TP .B HISTFILESIZE The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if -necessary, by removing the oldest entries, -to contain no more than that number of lines. The default -value is 500. The history file is also truncated to this size after -writing it when an interactive shell exits. +necessary, +to contain no more than that number of lines by removing the oldest entries. +The history file is also truncated to this size after +writing it when a shell exits. +If the value is 0, the history file is truncated to zero size. +Non-numeric values and numeric values less than zero inhibit truncation. +The shell sets the default value to the value of \fBHISTSIZE\fP +after reading any startup files. .TP .B HISTIGNORE A colon-separated list of patterns used to decide which command lines @@ -1986,7 +2085,11 @@ not tested, and are added to the history regardless of the value of The number of commands to remember in the command history (see .SM .B HISTORY -below). The default value is 500. +below). +If the value is 0, commands are not saved in the history list. +Numeric values less than zero result in every command being saved +on the history list (there is no limit). +The shell sets the default value to 500 after reading any startup files. .TP .B HISTTIMEFORMAT If this variable is set and not null, its value is used as a format string @@ -2094,7 +2197,10 @@ This variable determines the locale category used for number formatting. .TP .B LINES Used by the \fBselect\fP compound command to determine the column length -for printing selection lists. Automatically set upon receipt of a +for printing selection lists. +Automatically set if the +.B checkwinsize +option is enabled or in an interactive shell upon receipt of a .SM .BR SIGWINCH . .TP @@ -2117,9 +2223,9 @@ If this variable is unset, or set to a value that is not a number greater than or equal to zero, the shell disables mail checking. .TP .B MAILPATH -A colon-separated list of file names to be checked for mail. +A colon-separated list of filenames to be checked for mail. The message to be printed when mail arrives in a particular file -may be specified by separating the file name from the message with a `?'. +may be specified by separating the filename from the message with a `?'. When used in the text of the message, \fB$_\fP expands to the name of the current mailfile. Example: @@ -2163,8 +2269,8 @@ The default path is system-dependent, and is set by the administrator who installs .BR bash . A common value is -.if t \f(CW/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin\fP. -.if n ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin''. +.if t \f(CW/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin\fP. +.if n ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. .TP .B POSIXLY_CORRECT If this variable is in the environment when \fBbash\fP starts, the shell @@ -2271,7 +2377,7 @@ The value of \fIp\fP determines whether or not the fraction is included. .IP If this variable is not set, \fBbash\fP acts as if it had the -value \fB$\(aq\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS\(aq\fP. +value \fB$\(aq\enreal\et%3lR\enuser\et%3lU\ensys\et%3lS\(aq\fP. If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. .PD 0 @@ -2288,10 +2394,11 @@ after .B TMOUT seconds when input is coming from a terminal. In an interactive shell, the value is interpreted as the -number of seconds to wait for input after issuing the primary prompt. +number of seconds to wait for a line of input after issuing the +primary prompt. .B Bash -terminates after waiting for that number of seconds if input does -not arrive. +terminates after waiting for that number of seconds if a complete +line of input does not arrive. .TP .B TMPDIR If set, \fBbash\fP uses its value as the name of a directory in which @@ -2355,16 +2462,12 @@ be indexed or assigned contiguously. Indexed arrays are referenced using integers (including arithmetic expressions) and are zero-based; associative arrays are referenced using arbitrary strings. +Unless otherwise noted, indexed array indices must be non-negative integers. .PP An indexed array is created automatically if any variable is assigned to using the syntax \fIname\fP[\fIsubscript\fP]=\fIvalue\fP. The .I subscript is treated as an arithmetic expression that must evaluate to a number. -If -.I subscript -evaluates to a number less than zero, it is used as -an offset from one greater than the array's maximum index (so a subcript -of -1 refers to the last element of the array). To explicitly declare an indexed array, use .B declare \-a \fIname\fP (see @@ -2387,7 +2490,7 @@ builtins. Each attribute applies to all members of an array. Arrays are assigned to using compound assignments of the form \fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP, where each \fIvalue\fP is of the form [\fIsubscript\fP]=\fIstring\fP. -Indexed array assignments do not require the bracket and subscript. +Indexed array assignments do not require anything but \fIstring\fP. When assigning to indexed arrays, if the optional brackets and subscript are supplied, that index is assigned to; otherwise the index of the element assigned is the last index assigned @@ -2399,6 +2502,12 @@ This syntax is also accepted by the .B declare builtin. Individual array elements may be assigned to using the \fIname\fP[\fIsubscript\fP]=\fIvalue\fP syntax introduced above. +When assigning to an indexed array, if +.I name +is subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +\fIname\fP, so negative indices count back from the end of the +array, and an index of \-1 references the last element. .PP Any element of an array may be referenced using ${\fIname\fP[\fIsubscript\fP]}. The braces are required to avoid @@ -2426,14 +2535,28 @@ ${\fIname\fP[\fIsubscript\fP]}. If \fIsubscript\fP is \fB*\fP or \fB@\fP, the expansion is the number of elements in the array. Referencing an array variable without a subscript is equivalent to referencing the array with a subscript of 0. +If the +.I subscript +used to reference an element of an indexed array +evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the array, +so negative indices count back from the end of the +array, and an index of \-1 references the last element. .PP An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. .PP +It is possible to obtain the keys (indices) of an array as well as the values. +${\fB!\fP\fIname\fP[\fI@\fP]} and ${\fB!\fP\fIname\fP[\fI*\fP]} +expand to the indices assigned in array variable \fIname\fP. +The treatment when in double quotes is similar to the expansion of the +special parameters \fI@\fP and \fI*\fP within double quotes. +.PP The .B unset builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP] destroys the array element at index \fIsubscript\fP. +Negative subscripts to indexed arrays are interpreted as described above. Care must be taken to avoid unwanted side effects caused by pathname expansion. \fBunset\fP \fIname\fP, where \fIname\fP is an array, or @@ -2476,14 +2599,18 @@ words. There are seven kinds of expansion performed: and .IR "pathname expansion" . .PP -The order of expansions is: brace expansion, tilde expansion, -parameter, variable and arithmetic expansion and -command substitution -(done in a left-to-right fashion), word splitting, and pathname -expansion. +The order of expansions is: +brace expansion; +tilde expansion, parameter and variable expansion, arithmetic expansion, +and command substitution (done in a left-to-right fashion); +word splitting; +and pathname expansion. .PP On systems that can support it, there is an additional expansion available: \fIprocess substitution\fP. +This is performed at the +same time as tilde, parameter, variable, and arithmetic expansion and +command substitution. .PP Only brace expansion, word splitting, and pathname expansion can change the number of words of the expansion; other expansions @@ -2521,12 +2648,14 @@ and \fIincr\fP, an optional increment, is an integer. When integers are supplied, the expression expands to each number between \fIx\fP and \fIy\fP, inclusive. Supplied integers may be prefixed with \fI0\fP to force each term to have the -same width. When either \fIx\fP or \fPy\fP begins with a zero, the shell +same width. +When either \fIx\fP or \fPy\fP begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary. When characters are supplied, the expression expands to each character -lexicographically between \fIx\fP and \fIy\fP, inclusive. Note that -both \fIx\fP and \fIy\fP must be of the same type. +lexicographically between \fIx\fP and \fIy\fP, inclusive, +using the default C locale. +Note that both \fIx\fP and \fIy\fP must be of the same type. When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate. .PP @@ -2634,7 +2763,7 @@ following a or the first .BR = . In these cases, tilde expansion is also performed. -Consequently, one may use file names with tildes in assignments to +Consequently, one may use filenames with tildes in assignments to .SM .BR PATH , .SM @@ -2668,10 +2797,12 @@ or when .I parameter is followed by a character which is not to be interpreted as part of its name. +The \fIparameter\fP is a shell parameter as described above +\fBPARAMETERS\fP) or an array reference (\fBArrays\fP). .PD .PP If the first character of \fIparameter\fP is an exclamation point (\fB!\fP), -a level of variable indirection is introduced. +it introduces a level of variable indirection. \fBBash\fP uses the value of the variable formed from the rest of \fIparameter\fP as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather @@ -2685,7 +2816,8 @@ introduce indirection. In each of the cases below, \fIword\fP is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. .PP -When not performing substring expansion, using the forms documented below, +When not performing substring expansion, using the forms documented below +(e.g., \fB:-\fP), \fBbash\fP tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset. .PP @@ -2738,33 +2870,50 @@ ${\fIparameter\fP\fB:\fP\fIoffset\fP} ${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP} .PD \fBSubstring Expansion\fP. -Expands to up to \fIlength\fP characters of \fIparameter\fP +Expands to up to \fIlength\fP characters of the value of \fIparameter\fP starting at the character specified by \fIoffset\fP. -If \fIlength\fP is omitted, expands to the substring of -\fIparameter\fP starting at the character specified by \fIoffset\fP. +If \fIparameter\fP is \fB@\fP, an indexed array subscripted by +\fB@\fP or \fB*\fP, or an associative array name, the results differ as +described below. +If \fIlength\fP is omitted, expands to the substring of the value of +\fIparameter\fP starting at the character specified by \fIoffset\fP +and extending to the end of the value. \fIlength\fP and \fIoffset\fP are arithmetic expressions (see .SM .B ARITHMETIC EVALUATION below). +.sp 1 If \fIoffset\fP evaluates to a number less than zero, the value -is used as an offset from the end of the value of \fIparameter\fP. -If \fIlength\fP evaluates to a number less than zero, and \fIparameter\fP -is not \fB@\fP and not an indexed or associative array, it is interpreted -as an offset from the end of the value of \fIparameter\fP rather than -a number of characters, and the expansion is the characters between the -two offsets. +is used as an offset in characters +from the end of the value of \fIparameter\fP. +If \fIlength\fP evaluates to a number less than zero, +it is interpreted as an offset in characters +from the end of the value of \fIparameter\fP rather than +a number of characters, and the expansion is the characters between +\fIoffset\fP and that result. +Note that a negative offset must be separated from the colon by at least +one space to avoid being confused with the \fB:-\fP expansion. +.sp 1 If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional parameters beginning at \fIoffset\fP. +A negative \fIoffset\fP is taken relative to one greater than the greatest +positional parameter, so an offset of -1 evaluates to the last positional +parameter. +It is an expansion error if \fIlength\fP evaluates to a number less than +zero. +.sp 1 If \fIparameter\fP is an indexed array name subscripted by @ or *, the result is the \fIlength\fP members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}. A negative \fIoffset\fP is taken relative to one greater than the maximum index of the specified array. +It is an expansion error if \fIlength\fP evaluates to a number less than +zero. +.sp 1 Substring expansion applied to an associative array produces undefined results. -Note that a negative offset must be separated from the colon by at least -one space to avoid being confused with the :- expansion. +.sp 1 Substring indexing is zero-based unless the positional parameters are used, in which case the indexing starts at 1 by default. If \fIoffset\fP is 0, and the positional parameters are used, \fB$0\fP is @@ -2814,6 +2963,12 @@ is an array name subscripted by or .BR @ , the value substituted is the number of elements in the array. +If +.I parameter +is an indexed array name subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +\fIparameter\fP, so negative indices count back from the end of the +array, and an index of \-1 references the last element. .TP ${\fIparameter\fP\fB#\fP\fIword\fP} .PD 0 @@ -2923,6 +3078,9 @@ ${\fIparameter\fP\fB,,\fP\fIpattern\fP} This expansion modifies the case of alphabetic characters in \fIparameter\fP. The \fIpattern\fP is expanded to produce a pattern just as in pathname expansion. +Each character in the expanded value of \fIparameter\fP is tested against +\fIpattern\fP, and, if it matches the pattern, its case is converted. +The pattern should not attempt to match more than one character. The \fB^\fP operator converts lowercase letters matching \fIpattern\fP to uppercase; the \fB,\fP operator converts matching uppercase letters to lowercase. @@ -2998,8 +3156,9 @@ The .I expression is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. -All tokens in the expression undergo parameter expansion, string -expansion, command substitution, and quote removal. +All tokens in the expression undergo parameter and variable expansion, +command substitution, and quote removal. +The result is treated as the arithmetic expression to be evaluated. Arithmetic expansions may be nested. .PP The evaluation is performed according to the rules listed below under @@ -3044,7 +3203,8 @@ The shell treats each character of .SM .B IFS as a delimiter, and splits the results of the other -expansions into words on these characters. If +expansions into words using these characters as field terminators. +If .SM .B IFS is unset, or its @@ -3122,8 +3282,12 @@ If one of these characters appears, then the word is regarded as a .IR pattern , and replaced with an alphabetically sorted list of -file names matching the pattern. -If no matching file names are found, +filenames matching the pattern +(see +.SM +.B "Pattern Matching" +below). +If no matching filenames are found, and the shell option .B nullglob is not enabled, the word is left unchanged. @@ -3167,16 +3331,16 @@ shell options. The .SM .B GLOBIGNORE -shell variable may be used to restrict the set of file names matching a +shell variable may be used to restrict the set of filenames matching a .IR pattern . If .SM .B GLOBIGNORE -is set, each matching file name that also matches one of the patterns in +is set, each matching filename that also matches one of the patterns in .SM .B GLOBIGNORE is removed from the list of matches. -The file names +The filenames .B ``.'' and .B ``..'' @@ -3188,10 +3352,10 @@ is set and not null. However, setting .B GLOBIGNORE to a non-null value has the effect of enabling the .B dotglob -shell option, so all other file names beginning with a +shell option, so all other filenames beginning with a .B ``.'' will match. -To get the old behavior of ignoring file names beginning with a +To get the old behavior of ignoring filenames beginning with a .BR ``.'' , make .B ``.*'' @@ -3235,7 +3399,7 @@ Matches any single character. Matches any one of the enclosed characters. A pair of characters separated by a hyphen denotes a \fIrange expression\fP; -any character that sorts between those two characters, inclusive, +any character that falls between those two characters, inclusive, using the current locale's collating sequence and character set, is matched. If the first character following the .B [ @@ -3245,11 +3409,24 @@ or a .B ^ then any character not enclosed is matched. The sorting order of characters in range expressions is determined by -the current locale and the value of the +the current locale and the values of the .SM .B LC_COLLATE -shell variable, -if set. +or +.SM +.B LC_ALL +shell variables, if set. +To obtain the traditional interpretation of range expressions, where +.B [a\-d] +is equivalent to +.BR [abcd] , +set value of the +.B LC_ALL +shell variable to +.BR C , +or enable the +.B globasciiranges +shell option. A .B \- may be matched by including it as the first or last character @@ -3339,8 +3516,13 @@ Before a command is executed, its input and output may be .I redirected using a special notation interpreted by the shell. -Redirection may also be used to open and close files for the -current shell execution environment. The following redirection +Redirection allows commands' file handles to be +duplicated, opened, closed, +made to refer to different files, +and can change the files the command reads from and writes to. +Redirection may also be used to modify file handles in the +current shell execution environment. +The following redirection operators may precede or appear anywhere within a .I simple command or may follow a @@ -3352,7 +3534,8 @@ Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {\fIvarname\fP}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater -than 10 and assign it to \fIvarname\fP. If >&- or <&- is preceded +than or equal to 10 and assign it to \fIvarname\fP. +If >&- or <&- is preceded by {\fIvarname\fP}, the value of \fIvarname\fP defines the file descriptor to close. .PP @@ -3366,9 +3549,10 @@ the redirection refers to the standard output (file descriptor 1). .PP The word following the redirection operator in the following -descriptions, unless otherwise noted, is subjected to brace expansion, -tilde expansion, parameter expansion, command substitution, arithmetic -expansion, quote removal, pathname expansion, and word splitting. +descriptions, unless otherwise noted, is subjected to +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, quote removal, +pathname expansion, and word splitting. If it expands to more than one word, .B bash reports an error. @@ -3415,12 +3599,12 @@ File descriptor 2 is duplicated. .B /dev/tcp/\fIhost\fP/\fIport\fP If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP is an integer port number or service name, \fBbash\fP attempts to open -a TCP connection to the corresponding socket. +the corresponding TCP socket. .TP .B /dev/udp/\fIhost\fP/\fIport\fP If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP is an integer port number or service name, \fBbash\fP attempts to open -a UDP connection to the corresponding socket. +the corresponding UDP socket. .PD .RE .PP @@ -3527,6 +3711,10 @@ This is semantically equivalent to \fB>\fP\fIword\fP 2\fB>&\fP1 .RE .PP +When using the second form, \fIword\fP may not expand to a number or +\fB\-\fP. If it does, other redirection operators apply +(see \fBDuplicating File Descriptors\fP below) for compatibility +reasons. .SS Appending Standard Output and Standard Error .PP This construct allows both the @@ -3547,6 +3735,8 @@ This is semantically equivalent to .PP \fB>>\fP\fIword\fP 2\fB>&\fP1 .RE +.PP +(see \fBDuplicating File Descriptors\fP below). .SS Here Documents .PP This type of redirection instructs the shell to read input from the @@ -3567,8 +3757,8 @@ The format of here-documents is: .fi .RE .PP -No parameter expansion, command substitution, arithmetic expansion, -or pathname expansion is performed on +No parameter and variable expansion, command substitution, +arithmetic expansion, or pathname expansion is performed on .IR word . If any characters in .I word @@ -3578,9 +3768,9 @@ is the result of quote removal on .IR word , and the lines in the here-document are not expanded. If \fIword\fP is unquoted, -all lines of the here-document are subjected to parameter expansion, -command substitution, and arithmetic expansion. In the latter -case, the character sequence +all lines of the here-document are subjected to +parameter expansion, command substitution, and arithmetic expansion, +the character sequence .B \e is ignored, and .B \e @@ -3607,8 +3797,12 @@ A variant of here documents, the format is: .fi .RE .PP -The \fIword\fP is expanded and supplied to the command on its standard -input. +The \fIword\fP undergoes +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. +Pathname expansion and word splitting are not performed. +The result is supplied as a single string to the command on its +standard input. .SS "Duplicating File Descriptors" .PP The redirection operator @@ -3648,8 +3842,15 @@ is not specified, the standard output (file descriptor 1) is used. If the digits in .I word do not specify a file descriptor open for output, a redirection error occurs. +If +.I word +evaluates to +.BR \- , +file descriptor +.I n +is closed. As a special case, if \fIn\fP is omitted, and \fIword\fP does not -expand to one or more digits, the standard output and standard +expand to one or more digits or \fB\-\fP, the standard output and standard error are redirected as described previously. .SS "Moving File Descriptors" .PP @@ -3963,7 +4164,8 @@ Otherwise, numbers take the form [\fIbase#\fP]n, where the optional \fIbase\fP is a decimal number between 2 and 64 representing the arithmetic base, and \fIn\fP is a number in that base. If \fIbase#\fP is omitted, then base 10 is used. -The digits greater than 9 are represented by the lowercase letters, +When specifying \fIn\fP, +the digits greater< than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If \fIbase\fP is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 @@ -4085,6 +4287,11 @@ True if the shell variable .I varname is set (has been assigned a value). .TP +.B \-R \fIvarname\fP +True if the shell variable +.I varname +is set and is a name reference. +.TP .B \-z \fIstring\fP True if the length of \fIstring\fP is zero. .TP @@ -4104,6 +4311,8 @@ is non-zero. .PD True if the strings are equal. \fB=\fP should be used with the \fBtest\fP command for POSIX conformance. +When used with the \fB[[\fP command, this performs pattern matching as +described above (\fBCompound Commands\fP). .TP \fIstring1\fP \fB!=\fP \fIstring2\fP True if the strings are not equal. @@ -4367,7 +4576,7 @@ When .B bash invokes an external command, the variable .B _ -is set to the full file name of the command and passed to that +is set to the full filename of the command and passed to that command in its environment. .SH "EXIT STATUS" .PP @@ -5097,6 +5306,12 @@ If set to \fBOn\fP, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their readline equivalents. .TP +.B colored\-stats (Off) +If set to \fBOn\fP, readline displays possible completions using different +colors to indicate their file type. +The color definitions are taken from the value of the \fBLS_COLORS\fP +environment variable. +.TP .B comment\-begin (``#'') The string that is inserted when the readline .B insert\-comment @@ -5172,8 +5387,12 @@ same location on each history line retrieved with \fBprevious-history\fP or \fBnext-history\fP. .TP .B history\-size (0) -Set the maximum number of history entries saved in the history list. If -set to zero, the number of entries in the history list is not limited. +Set the maximum number of history entries saved in the history list. +If set to zero, any existing history entries are deleted and no new entries +are saved. +If set to a value less than zero, the number of history entries is not +limited. +By default, the number of history entries is not limited. .TP .B horizontal\-scroll\-mode (Off) When set to \fBOn\fP, makes readline use a single line for display, @@ -5205,6 +5424,19 @@ the value of .B editing\-mode also affects the default keymap. .TP +.B keyseq\-timeout (500) +Specifies the duration \fIreadline\fP will wait for a character when reading an +ambiguous key sequence (one that can form a 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, \fIreadline\fP will use the shorter +but complete key sequence. +The value is specified in milliseconds, so a value of 1000 means that +\fIreadline\fP 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, \fIreadline\fP will wait until another key is pressed to +decide which key sequence to complete. +.TP .B mark\-directories (On) If set to \fBOn\fP, completed directory names have a slash appended. @@ -5266,6 +5498,11 @@ possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. .TP +.B show\-mode\-in\-prompt (Off) +If set to \fBOn\fP, add a character to the beginning of the prompt +indicating the editing mode: emacs (@), vi command (:) or vi +insertion (+). +.TP .B skip\-completed\-text (Off) If set to \fBOn\fP, this alters the default completion behavior when inserting a single match into the line. It's only active when @@ -5514,7 +5751,7 @@ the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). -The history expansion facilities are used to extract the last argument, +The history expansion facilities are used to extract the last word, as if the "!$" history expansion had been specified. .TP .B shell\-expand\-line (M\-C\-e) @@ -5571,14 +5808,22 @@ and \fIemacs\fP as the editor, in that order. .PP .PD 0 .TP -.B delete\-char (C\-d) -Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to \fBdelete\-char\fP, -then return +.B \fIend\-of\-file\fP (usually C\-d) +The character indicating end-of-file as set, for example, by +.if t \f(CWstty\fP. +.if n ``stty''. +If this character is read when there are no characters +on the line, and point is at the beginning of the line, Readline +interprets it as the end of input and returns .SM .BR EOF . .TP +.B delete\-char (C\-d) +Delete the character at point. +If this function is bound to the +same character as the tty \fBEOF\fP character, as \fBC\-d\fP +commonly is, see above for the effects. +.TP .B backward\-delete\-char (Rubout) Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring. @@ -5846,6 +6091,10 @@ and store the definition. .B call\-last\-kbd\-macro (C\-x e) Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. +.TP +.B print\-last\-kbd\-macro () +Print the last keyboard macro defined in a format suitable for the +\fIinputrc\fP file. .PD .SS Miscellaneous .PP @@ -5927,11 +6176,11 @@ will be executed by the shell. .B glob\-complete\-word (M\-g) The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to -generate a list of matching file names for possible completions. +generate a list of matching filenames for possible completions. .TP .B glob\-expand\-word (C\-x *) The word before point is treated as a pattern for pathname expansion, -and the list of matching file names is inserted, replacing the word. +and the list of matching filenames is inserted, replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion. .TP @@ -6055,10 +6304,12 @@ and .SM .B COMP_CWORD variables are also set. -When the function or command is invoked, the first argument is the -name of the command whose arguments are being completed, the -second argument is the word being completed, and the third argument -is the word preceding the word being completed on the current command line. +When the function or command is invoked, +the first argument (\fB$1\fP) is the name of the command whose arguments are +being completed, +the second argument (\fB$2\fP) is the word being completed, +and the third argument (\fB$3\fP) is the word preceding the word being +completed on the current command line. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches. @@ -6069,7 +6320,7 @@ The function may use any of the shell facilities, including the It must put the possible completions in the .SM .B COMPREPLY -array variable. +array variable, one per array element. .PP Next, any command specified with the \fB\-C\fP option is invoked in an environment equivalent to command substitution. @@ -6143,7 +6394,7 @@ completion function would load completions dynamically: .br } .br -complete -D -F _completion_loader +complete -D -F _completion_loader -o bashdefault -o default .br \fP .SH HISTORY @@ -6187,6 +6438,8 @@ is truncated, if necessary, to contain no more than the number of lines specified by the value of .SM .BR HISTFILESIZE . +If \fBHISTFILESIZE\fP is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the preceding history line. @@ -6194,7 +6447,7 @@ These timestamps are optionally displayed depending on the value of the .SM .B HISTTIMEFORMAT variable. -When an interactive shell exits, the last +When a shell with history enabled exits, the last .SM .B $HISTSIZE lines are copied from the history list to @@ -6230,7 +6483,8 @@ to contain no more than lines. If .SM .B HISTFILESIZE -is not set, no truncation is performed. +is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. .PP The builtin command .B fc @@ -6278,7 +6532,7 @@ is similar to the history expansion in This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the -.B \+H +.B +H option to the .B set builtin command (see @@ -6393,7 +6647,7 @@ history list starting with .IR string . .TP .B !?\fIstring\fR\fB[?]\fR -Refer to the most recent command preceding the current postition in the +Refer to the most recent command preceding the current position in the history list containing .IR string . The trailing \fB?\fP may be omitted if @@ -6442,7 +6696,8 @@ The \fIn\fRth word. The first argument. That is, word 1. .TP .B $ -The last argument. +The last word. This is usually the last argument, but will expand to the +zeroth word if there is only one word in the line. .TP .B % The word matched by the most recent `?\fIstring\fR?' search. @@ -6475,10 +6730,10 @@ one or more of the following modifiers, each preceded by a `:'. .PP .TP .B h -Remove a trailing file name component, leaving only the head. +Remove a trailing filename component, leaving only the head. .TP .B t -Remove all leading file name components, leaving the tail. +Remove all leading filename components, leaving the tail. .TP .B r Remove a trailing suffix of the form \fI.xxx\fP, leaving the @@ -6582,7 +6837,7 @@ executed from .IR filename . If .I filename -does not contain a slash, file names in +does not contain a slash, filenames in .SM .B PATH are used to find the directory containing @@ -6638,7 +6893,7 @@ returns 0 unless run when job control is disabled or, when run with job control enabled, any specified \fIjobspec\fP was not found or was started without job control. .TP -\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\fP] +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSVX\fP] .PD 0 .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP] @@ -6733,6 +6988,10 @@ or .SM .BR READLINE_POINT , those new values will be reflected in the editing state. +.TP +.B \-X +List all key sequences bound to shell commands and the associated commands +in a format that can be reused as input. .PD .PP The return value is 0 unless an unrecognized option is given or an @@ -6780,18 +7039,22 @@ The return value is 0 unless the shell is not executing a subroutine call or \fIexpr\fP does not correspond to a valid position in the call stack. .TP -\fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]]] [\fIdir\fP] -Change the current directory to \fIdir\fP. The variable +\fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]] [\-@]] [\fIdir\fP] +Change the current directory to \fIdir\fP. +if \fIdir\fP is not supplied, the value of the .SM .B HOME -is the -default -.IR dir . +shell variable is the default. +Any additional arguments following \fIdir\fP are ignored. The variable .SM .B CDPATH defines the search path for the directory containing -.IR dir . +.IR dir : +each directory name in +.SM +.B CDPATH +is searched for \fIdir\fP. Alternative directory names in .SM .B CDPATH @@ -6806,14 +7069,19 @@ then .B CDPATH is not used. The .B \-P -option says to use the physical directory structure instead of -following symbolic links (see also the +option causes \fBcd\fP to use the physical directory structure +by resolving symbolic links while traversing \fIdir\fP and +before processing instances of \fI..\fP in \fIdir\fP (see also the .B \-P option to the .B set builtin command); the .B \-L -option forces symbolic links to be followed. +option forces symbolic links to be followed by resolving the link +after processing instances of \fI..\fP in \fIdir\fP. +If \fI..\fP appears in \fIdir\fP, it is processed by removing the +immediately previous pathname component from \fIdir\fP, back to a slash +or the beginning of \fIdir\fP. If the .B \-e option is supplied with @@ -6821,11 +7089,14 @@ option is supplied with and the current working directory cannot be successfully determined after a successful directory change, \fBcd\fP will return an unsuccessful status. +On systems that support it, the \fB\-@\fP option presents the extended +attributes associated with a file as a directory. An argument of .B \- -is equivalent to +is converted to .SM -.BR $OLDPWD . +.B $OLDPWD +before the directory change is attempted. If a non-empty directory name from .SM .B CDPATH @@ -6861,7 +7132,7 @@ option is supplied, a description of .I command is printed. The .B \-v -option causes a single word indicating the command or file name +option causes a single word indicating the command or filename used to invoke .I command to be displayed; the @@ -6956,6 +7227,10 @@ filename\-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). Intended to be used with shell functions. .TP 8 +.B noquote +Tell readline not to quote the completed words if they are filenames +(quoting filenames is the default). +.TP 8 .B nospace Tell readline not to append a space (the default) to words completed at the end of the line. @@ -7054,6 +7329,12 @@ used as the possible completions. \fB\-F\fP \fIfunction\fP The shell function \fIfunction\fP is executed in the current shell environment. +When the function is executed, +the first argument (\fB$1\fP) is the name of the command whose arguments are +being completed, +the second argument (\fB$2\fP) is the word being completed, +and the third argument (\fB$3\fP) is the word preceding the word being +completed on the current command line. When it finishes, the possible completions are retrieved from the value of the .SM @@ -7133,10 +7414,10 @@ is greater than the number of enclosing loops, the last enclosing loop (the ``top-level'' loop) is resumed. The return value is 0 unless \fIn\fP is not greater than or equal to 1. .TP -\fBdeclare\fP [\fB\-aAfFgilrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +\fBdeclare\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] .PD 0 .TP -\fBtypeset\fP [\fB\-aAfFgilrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +\fBtypeset\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] .PD Declare variables and/or give them attributes. If no \fIname\fPs are given then display the values of variables. @@ -7146,7 +7427,8 @@ option will display the attributes and values of each .IR name . When .B \-p -is used with \fIname\fP arguments, additional options are ignored. +is used with \fIname\fP arguments, additional options, +other than \fB\-f\fP and \fB\-F\fP, are ignored. When .B \-p is supplied without \fIname\fP arguments, it will display the attributes @@ -7200,6 +7482,15 @@ When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled. .TP +.B \-n +Give each \fIname\fP the \fInameref\fP attribute, making +it a name reference to another variable. +That other variable is defined by the value of \fIname\fP. +All references and assignments to \fIname\fP, except for changing the +\fB\-n\fP attribute itself, are performed on the variable referenced by +\fIname\fP's value. +The \fB\-n\fP attribute cannot be applied to array variables. +.TP .B \-r Make \fIname\fPs readonly. These names cannot then be assigned values by subsequent assignment statements or unset. @@ -7224,13 +7515,20 @@ turns off the attribute instead, with the exceptions that \fB+a\fP may not be used to destroy an array variable and \fB+r\fP will not remove the readonly attribute. -When used in a function, makes each +When used in a function, +.B declare +and +.B typeset +make each \fIname\fP local, as with the .B local command, -unless the \fB\-g\fP option is supplied, +unless the \fB\-g\fP option is supplied. If a variable name is followed by =\fIvalue\fP, the value of the variable is set to \fIvalue\fP. +When using \fB\-a\fP or \fB\-A\fP and the compound assignment syntax to +create array variables, additional attributes do not take effect until +subsequent assignments. The return value is 0 unless an invalid option is encountered, an attempt is made to define a function using .if n ``\-f foo=bar'', @@ -7245,7 +7543,7 @@ 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 \fB\-f\fP. .RE .TP -.B dirs [+\fIn\fP] [\-\fIn\fP] [\fB\-clpv\fP] +.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP] Without options, displays the list of currently remembered directories. The default display is on a single line with directory names separated by spaces. @@ -7257,24 +7555,12 @@ command removes entries from the list. .RS .PD 0 .TP -\fB+\fP\fIn\fP -Displays the \fIn\fPth entry counting from the left of the list -shown by -.B dirs -when invoked without options, starting with zero. -.TP -\fB\-\fP\fIn\fP -Displays the \fIn\fPth entry counting from the right of the list -shown by -.B dirs -when invoked without options, starting with zero. -.TP .B \-c Clears the directory stack by deleting all of the entries. .TP .B \-l -Produces a longer listing; the default listing format uses a -tilde to denote the home directory. +Produces a listing using full pathnames; +the default listing format uses a tilde to denote the home directory. .TP .B \-p Print the directory stack with one entry per line. @@ -7282,6 +7568,18 @@ Print the directory stack with one entry per line. .B \-v Print the directory stack with one entry per line, prefixing each entry with its index in the stack. +.TP +\fB+\fP\fIn\fP +Displays the \fIn\fPth entry counting from the left of the list +shown by +.B dirs +when invoked without options, starting with zero. +.TP +\fB\-\fP\fIn\fP +Displays the \fIn\fPth entry counting from the right of the list +shown by +.B dirs +when invoked without options, starting with zero. .PD .PP The return value is 0 unless an @@ -7290,13 +7588,13 @@ of the directory stack. .RE .TP \fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...] -Without options, each +Without options, remove each .I jobspec -is removed from the table of active jobs. +from the table of active jobs. If .I jobspec -is not present, and neither \fB\-a\fP nor \fB\-r\fP is supplied, -the shell's notion of the \fIcurrent job\fP is used. +is not present, and neither the \fB\-a\fP nor the \fB\-r\fP option +is supplied, the \fIcurrent job\fP is used. If the \fB\-h\fP option is given, each .I jobspec is not removed from the table, but is marked so that @@ -7307,13 +7605,6 @@ is not sent to the job if the shell receives a .BR SIGHUP . If no .I jobspec -is present, and neither the -.B \-a -nor the -.B \-r -option is supplied, the \fIcurrent job\fP is used. -If no -.I jobspec is supplied, the .B \-a option means to remove or mark all jobs; the @@ -7327,7 +7618,7 @@ does not specify a valid job. .TP \fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...] Output the \fIarg\fPs, separated by spaces, followed by a newline. -The return status is always 0. +The return status is 0 unless a write error occurs. If \fB\-n\fP is specified, the trailing newline is suppressed. If the \fB\-e\fP option is given, interpretation of the following backslash-escaped characters is enabled. The @@ -7467,12 +7758,14 @@ to be executed with an empty environment. If .B \-a is supplied, the shell passes .I name -as the zeroth argument to the executed command. If +as the zeroth argument to the executed command. +If .I command cannot be executed for some reason, a non-interactive shell exits, -unless the shell option +unless the .B execfail -is enabled, in which case it returns failure. +shell option +is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. If .I command @@ -7510,7 +7803,7 @@ If no are given, or if the .B \-p option is supplied, a list -of all names that are exported in this shell is printed. +of names of all exported variables is printed. The .B \-n option causes the export property to be removed from each @@ -7531,11 +7824,11 @@ that is not a function. .TP \fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] .PD -Fix Command. In the first form, a range of commands from +The first form selects a range of commands from .I first to .I last -is selected from the history list. +from the history list and displays or edits and re-executes them. .I First and .I last @@ -7589,6 +7882,7 @@ echoed and executed. .sp 1 In the second form, \fIcommand\fP is re-executed after each instance of \fIpat\fP is replaced by \fIrep\fP. +\fICommand\fP is intepreted the same as \fIfirst\fP above. A useful alias to use with this is .if n ``r="fc -s"'', .if t \f(CWr='fc \-s'\fP, @@ -7691,7 +7985,7 @@ can report errors in two ways. If the first character of .I optstring is a colon, .I silent -error reporting is used. In normal operation diagnostic messages +error reporting is used. In normal operation, diagnostic messages are printed when invalid options or missing option arguments are encountered. If the variable @@ -7752,7 +8046,7 @@ If the .B \-p option is supplied, no path search is performed, and .I filename -is used as the full file name of the command. +is used as the full filename of the command. The .B \-r option causes the shell to forget all @@ -7856,10 +8150,10 @@ current \fBbash\fP session. .TP .B \-r Read the contents of the history file -and use them as the current history. +and append them to the current history list. .TP .B \-w -Write the current history to the history file, overwriting the +Write the current history list to the history file, overwriting the history file's contents. .TP .B \-p @@ -7915,10 +8209,10 @@ List only the process ID of the job's process group leader. .TP .B \-r -Restrict output to running jobs. +Display only running jobs. .TP .B \-s -Restrict output to stopped jobs. +Display only stopped jobs. .PD .PP If @@ -8178,10 +8472,13 @@ causes \fBprintf\fP to output the corresponding .TP .B %(\fIdatefmt\fP)T causes \fBprintf\fP to output the date-time string resulting from using -\fIdatefmt\fP as a format string for \fIstrftime\fP(3). The corresponding -\fIargument\fP is an integer representing the number of seconds since the -epoch. Two special argument values may be used: -1 represents the current +\fIdatefmt\fP as a format string for \fIstrftime\fP(3). +The corresponding \fIargument\fP is an integer representing the number of +seconds since the epoch. +Two special argument values may be used: -1 represents the current time, and -2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if -1 had been given. +This is an exception to the usual \fBprintf\fP behavior. .PD .PP Arguments to non-string format specifiers are treated as C constants, @@ -8230,7 +8527,8 @@ starting with zero) is at the top. Adds .I dir to the directory stack at the top, making it the -new current working directory. +new current working directory as if it had been supplied as the argument +to the \fBcd\fP builtin. .PD .PP If the @@ -8281,7 +8579,8 @@ the remaining names are assigned empty values. The characters in .SM .B IFS -are used to split the line into words. +are used to split the line into words using the same rules the shell +uses for expansion (described above under \fBWord Splitting\fP). The backslash character (\fB\e\fP) may be used to remove any special meaning for the next character read and for line continuation. Options, if supplied, have the following meanings: @@ -8348,14 +8647,18 @@ not echoed. .TP .B \-t \fItimeout\fP Cause \fBread\fP to time out and return failure if a complete line of -input is not read within \fItimeout\fP seconds. +input (or a specified number of characters) +is not read within \fItimeout\fP seconds. \fItimeout\fP may be a decimal number with a fractional portion following the decimal point. This option is only effective if \fBread\fP is reading input from a terminal, pipe, or other special file; it has no effect when reading from regular files. -If \fItimeout\fP is 0, \fBread\fP returns success if input is available on -the specified file descriptor, failure otherwise. +If \fBread\fP times out, \fBread\fP saves any partial input read into +the specified variable \fIname\fP. +If \fItimeout\fP is 0, \fBread\fP returns immediately, without trying to +read any data. The exit status is 0 if input is available on +the specified file descriptor, non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded. .TP .B \-u \fIfd\fP @@ -8368,8 +8671,9 @@ are supplied, the line read is assigned to the variable .SM .BR REPLY . The return code is zero, unless end-of-file is encountered, \fBread\fP -times out (in which case the return code is greater than 128), or an -invalid file descriptor is supplied as the argument to \fB\-u\fP. +times out (in which case the return code is greater than 128), +a variable assignment error (such as assigning to a readonly variable) occurs, +or an invalid file descriptor is supplied as the argument to \fB\-u\fP. .RE .TP \fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fIname\fP[=\fIword\fP] ...] @@ -8414,21 +8718,29 @@ is supplied with a that is not a function. .TP \fBreturn\fP [\fIn\fP] -Causes a function to exit with the return value specified by -.IR n . +Causes a function to stop executing and return the value specified by +.I n +to its caller. If .I n is omitted, the return status is that of the last command -executed in the function body. If used outside a function, +executed in the function body. If +.B return +is used outside a function, but during execution of a script by the .B . (\fBsource\fP) command, it causes the shell to stop executing that script and return either .I n or the exit status of the last command executed within the -script as the exit status of the script. If used outside a -function and not during execution of a script by \fB.\fP\^, -the return status is false. +script as the exit status of the script. +If \fIn\fP is supplied, the return value is its least significant +8 bits. +The return status is non-zero if +.B return +is supplied a non-numeric argument, or +is used outside a +function and not during execution of a script by \fB.\fP\^ or \fBsource\fP. Any command associated with the \fBRETURN\fP trap is executed before execution resumes after the function or script. .TP @@ -8441,7 +8753,7 @@ Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In \fIposix mode\fP, only shell variables are listed. +In \fIposix\fP mode, only shell variables are listed. The output is sorted according to the current locale. When options are specified, they set or unset shell attributes. Any arguments remaining after option processing are treated @@ -8464,13 +8776,14 @@ immediately, rather than before the next primary prompt. This is effective only when job control is enabled. .TP 8 .B \-e -Exit immediately if a \fIpipeline\fP (which may consist of a single -\fIsimple command\fP), a \fIsubshell\fP command enclosed in parentheses, -or one of the commands executed as part of a command list enclosed -by braces (see +Exit immediately if a +\fIpipeline\fP (which may consist of a single \fIsimple command\fP), +a \fIlist\fP, +or a \fIcompound command\fP +(see .SM .B SHELL GRAMMAR -above) exits with a non-zero status. +above), exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a .B while @@ -8490,6 +8803,9 @@ any command in a pipeline but the last, or if the command's return value is being inverted with .BR ! . +If a compound command other than a subshell +returns a non-zero status because a command failed +while \fB\-e\fP was being ignored, the shell does not exit. A trap on \fBERR\fP, if set, is executed before the shell exits. This option applies to the shell environment and each subshell environment separately (see @@ -8497,6 +8813,17 @@ separately (see .B "COMMAND EXECUTION ENVIRONMENT" above), and may cause subshells to exit before executing all the commands in the subshell. +.if t .sp 0.5 +.if n .sp 1 +If a compound command or shell function executes in a context +where \fB\-e\fP is being ignored, +none of the commands executed within the compound command or function body +will be affected by the \fB\-e\fP setting, even if \fB\-e\fP is set +and a command returns a failure status. +If a compound command or shell function sets \fB\-e\fP while executing in +a context where \fB\-e\fP is ignored, that setting will not have any +effect until the compound command or the command containing the function +call completes. .TP 8 .B \-f Disable pathname expansion. @@ -8516,9 +8843,10 @@ by default for interactive shells on systems that support it (see .SM .B JOB CONTROL -above). Background processes run in a separate process -group and a line containing their exit status is printed -upon their completion. +above). +All processes run in a separate process group. +When a background job completes, the shell prints a line +containing its exit status. .TP 8 .B \-n Read commands but do not execute them. This may be used to @@ -8630,6 +8958,11 @@ Change the behavior of .B bash where the default operation differs from the POSIX standard to match the standard (\fIposix mode\fP). +See +.SM +.B "SEE ALSO" +below for a reference to a document that details how posix mode affects +bash's behavior. .TP 8 .B privileged Same as @@ -8742,7 +9075,7 @@ style history substitution. This option is on by default when the shell is interactive. .TP 8 .B \-P -If set, the shell does not follow symbolic links when executing +If set, the shell does not resolve symbolic links when executing commands such as .B cd that change the current working directory. It uses the @@ -8808,7 +9141,12 @@ is greater than or less than zero; otherwise 0. .TP \fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...] -Toggle the values of variables controlling optional shell behavior. +Toggle the values of settings controlling optional shell behavior. +The settings can be either those listed below, or, if the +.B \-o +option is used, those available with the +.B \-o +option to the \fBset\fP builtin command. With no options, or with the .B \-p option, a list of all settable options is displayed, with @@ -8845,8 +9183,9 @@ If either .B \-s or .B \-u -is used with no \fIoptname\fP arguments, the display is limited to -those options which are set or unset, respectively. +is used with no \fIoptname\fP arguments, +.B shopt +shows only those options which are set or unset, respectively. Unless otherwise noted, the \fBshopt\fP options are disabled (unset) by default. .PP @@ -8878,7 +9217,7 @@ If set, minor errors in the spelling of a directory component in a command will be corrected. The errors checked for are transposed characters, a missing character, and one character too many. -If a correction is found, the corrected file name is printed, +If a correction is found, the corrected filename is printed, and the command proceeds. This option is only used by interactive shells. .TP 8 @@ -8917,37 +9256,66 @@ easy re-editing of multi-line commands. If set, .B bash changes its behavior to that of version 3.1 with respect to quoted -arguments to the \fB[[\fP conditional command's \fB=~\fP operator. -.TP 8 -.B compat32 -If set, -.B bash -changes its behavior to that of version 3.2 with respect to locale-specific -string comparison when using the \fB[[\fP +arguments to the \fB[[\fP conditional command's \fB=~\fP operator +and locale-specific string comparison when using the \fB[[\fP conditional command's \fB<\fP and \fB>\fP operators. Bash versions prior to bash-4.1 use ASCII collation and .IR strcmp (3); -bash-4.1 and later -use the current locale's collation sequence and +bash-4.1 and later use the current locale's collation sequence and .IR strcoll (3). .TP 8 +.B compat32 +If set, +.B bash +changes its behavior to that of version 3.2 with respect to +locale-specific string comparison when using the \fB[[\fP +conditional command's \fB<\fP and \fB>\fP operators (see previous item). +.TP 8 .B compat40 If set, .B bash changes its behavior to that of version 4.0 with respect to locale-specific string comparison when using the \fB[[\fP -conditional command's \fB<\fP and \fB>\fP operators (see previous item) +conditional command's \fB<\fP and \fB>\fP operators (see description of +\fBcompat31\fP) and the effect of interrupting a command list. +Bash versions 4.0 and later interrupt the list as if the shell received the +interrupt; previous versions continue with the next command in the list. .TP 8 .B compat41 If set, .BR bash , -when in posix mode, treats a single quote in a double-quoted +when in \fIposix\fP mode, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. This is the behavior of posix mode through version 4.1. The default bash behavior remains as in previous versions. .TP 8 +.B compat42 +If set, +.B bash +does not process the replacement string in the pattern substitution word +expansion using quote removal. +.TP 8 +.B complete_fullquote +If set, +.B bash +quotes all shell metacharacters in filenames and directory names when +performing completion. +If not set, +.B bash +removes metacharacters such as the dollar sign from the set of +characters that will be quoted in completed filenames +when these metacharacters appear in shell variable references in words to be +completed. +This means that dollar signs in variable names that expand to directories +will not be quoted; +however, any dollar signs appearing in filenames will not be quoted, either. +This is active only when bash is using backslashes to quote completed +filenames. +This variable is set by default, which is the default bash behavior in +versions through 4.2. +.TP 8 .B direxpand If set, .B bash @@ -9050,6 +9418,20 @@ above for a description of .BR FIGNORE . This option is enabled by default. .TP 8 +.B globasciiranges +If set, range expressions used in pattern matching bracket expressions (see +.SM +.B Pattern Matching +above) behave as if in the traditional C locale when performing +comparisons. That is, the current locale's collating sequence +is not taken into account, so +.B b +will not collate between +.B A +and +.BR B , +and upper-case and lower-case ASCII characters will collate together. +.TP 8 .B globstar If set, the pattern \fB**\fP used in a pathname expansion context will match all files and zero or more directories and subdirectories. @@ -9220,7 +9602,7 @@ is not supplied, or if job control is not enabled. .PD 0 .TP \fB[\fP \fIexpr\fP \fB]\fP -Return a status of 0 or 1 depending on +Return a status of 0 (true) or 1 (false) depending on the evaluation of the conditional expression .IR expr . Each operator and operand must be a separate argument. @@ -9408,7 +9790,10 @@ is .BR ERR , the command .I arg -is executed whenever a simple command has a non\-zero exit status, +is executed whenever a +a pipeline (which may consist of a single simple +command), a list, or a compound command returns a +non\-zero exit status, subject to the following conditions. The .SM @@ -9425,10 +9810,12 @@ statement, part of a command executed in a .B && or .B || -list, or if the command's return value is -being inverted via +list except the command following the final \fB&&\fP or \fB||\fP, +any command in a pipeline but the last, +or if the command's return value is +being inverted using .BR ! . -These are the same conditions obeyed by the \fBerrexit\fP option. +These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option. .if t .sp 0.5 .if n .sp 1 Signals ignored upon entry to the shell cannot be trapped or reset. @@ -9491,7 +9878,7 @@ If a command is hashed, .B \-p and .B \-P -print the hashed value, not necessarily the file that appears +print the hashed value, which is not necessarily the file that appears first in .SM .BR PATH . @@ -9606,16 +9993,17 @@ The maximum number of threads .PP If .I limit -is given, it is the new value of the specified resource (the +is given, and the .B \-a -option is display only). +option is not used, +\fIlimit\fP is the new value of the specified resource. If no option is given, then .B \-f is assumed. Values are in 1024-byte increments, except for .BR \-t , -which is in seconds, +which is in seconds; .BR \-p , -which is in units of 512-byte blocks, +which is in units of 512-byte blocks; and .BR \-T , .BR \-b , @@ -9660,15 +10048,15 @@ value is true unless a supplied .I name is not a defined alias. .TP -\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...] +\fBunset\fP [\-\fBfv\fP] [\-\fBn\fP] [\fIname\fP ...] For each .IR name , remove the corresponding variable or function. -If no options are supplied, or the +If the .B \-v option is given, each .I name -refers to a shell variable. +refers to a shell variable, and that variable is removed. Read-only variables may not be unset. If .B \-f @@ -9676,6 +10064,15 @@ is specified, each .I name refers to a shell function, and the function definition is removed. +If the +.B \-n +option is supplied, and \fIname\fP is a variable with the \fInameref\fP +attribute, \fIname\fP will be unset rather than the variable it +references. +\fB\-n\fP has no effect if the \fB\-f\fP option is supplied. +If no options are supplied, each \fIname\fP refers to a variable; if +there is no variable by that name, any function with that name is +unset. Each unset variable or function is removed from the environment passed to subsequent commands. If any of @@ -9701,8 +10098,8 @@ subsequently reset. The exit status is true unless a .I name is readonly. .TP -\fBwait\fP [\fIn ...\fP] -Wait for each specified process and return its termination status. +\fBwait\fP [\fB\-n\fP] [\fIn ...\fP] +Wait for each specified child process and return its termination status. Each .I n may be a process @@ -9710,7 +10107,10 @@ ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If .I n is not given, all currently active child processes -are waited for, and the return status is zero. If +are waited for, and the return status is zero. +If the \fB\-n\fP option is supplied, \fBwait\fP waits for any job to +terminate and returns its exit status. +If .I n specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last @@ -9751,7 +10151,7 @@ or specifying command names containing .B / .IP \(bu -specifying a file name containing a +specifying a filename containing a .B / as an argument to the .B . @@ -9818,7 +10218,10 @@ script. .TP \fIThe Gnu History Library\fP, Brian Fox and Chet Ramey .TP -\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE +\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE -- +http://pubs.opengroup.org/onlinepubs/9699919799/ +.TP +http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode .TP \fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) .TP diff --git a/doc/bash.html b/doc/bash.html index d1b6489..bba7db6 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2010 December 28BASH(1) +BASH(1)2014 February 2BASH(1)

Index @@ -37,12 +37,12 @@ bash - GNU Bourne-Again SHell bash [options] -[file] +[command_string | file]  

-R varname + +
+True if the shell variable +varname + +is set and is a name reference.
-z string
@@ -5283,6 +5515,8 @@ is non-zero. True if the strings are equal. = should be used with the test command for POSIX conformance. +When used with the [[ command, this performs pattern matching as +described above (Compound Commands).
string1 != string2
True if the strings are not equal.
string1 < string2
@@ -5455,7 +5689,6 @@ arguments, if any. The shell has an execution environment, which consists of the following: -
*
open files inherited by the shell at invocation, as modified by @@ -5611,7 +5844,7 @@ When invokes an external command, the variable _ -is set to the full file name of the command and passed to that +is set to the full filename of the command and passed to that command in its environment.  

EXIT STATUS

@@ -6599,6 +6832,13 @@ If set to audible, readline attempts to ring the terminal's bell. If set to On, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their readline equivalents. +
colored-stats (Off) + +
+If set to On, readline displays possible completions using different +colors to indicate their file type. +The color definitions are taken from the value of the LS_COLORS +environment variable.
comment-begin (``#'')
@@ -6694,8 +6934,12 @@ or next-history.
history-size (0)
-Set the maximum number of history entries saved in the history list. If -set to zero, the number of entries in the history list is not limited. +Set the maximum number of history entries saved in the history list. +If set to zero, any existing history entries are deleted and no new entries +are saved. +If set to a value less than zero, the number of history entries is not +limited. +By default, the number of history entries is not limited.
horizontal-scroll-mode (Off)
@@ -6734,6 +6978,20 @@ the value of editing-mode also affects the default keymap. +
keyseq-timeout (500) + +
+Specifies the duration readline will wait for a character when reading an +ambiguous key sequence (one that can form a 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 +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 pressed to +decide which key sequence to complete.
mark-directories (On)
@@ -6808,6 +7066,12 @@ words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. +
show-mode-in-prompt (Off) + +
+If set to On, add a character to the beginning of the prompt +indicating the editing mode: emacs (@), vi command (:) or vi +insertion (+).
skip-completed-text (Off)
@@ -7122,7 +7386,7 @@ the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). -The history expansion facilities are used to extract the last argument, +The history expansion facilities are used to extract the last word, as if the "!$" history expansion had been specified.
shell-expand-line (M-C-e) @@ -7197,16 +7461,25 @@ and emacs as the editor, in that order.
-
delete-char (C-d) +
end-of-file (usually C-d)
-Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to delete-char, -then return +The character indicating end-of-file as set, for example, by +stty. + +If this character is read when there are no characters +on the line, and point is at the beginning of the line, Readline +interprets it as the end of input and returns EOF. +
delete-char (C-d) + +
+Delete the character at point. +If this function is bound to the +same character as the tty EOF character, as C-d +commonly is, see above for the effects.
backward-delete-char (Rubout)
@@ -7552,6 +7825,11 @@ and store the definition.
Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. +
print-last-kbd-macro () + +
+Print the last keyboard macro defined in a format suitable for the +inputrc file.
  @@ -7658,12 +7936,12 @@ will be executed by the shell.
The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to -generate a list of matching file names for possible completions. +generate a list of matching filenames for possible completions.
glob-expand-word (C-x *)
The word before point is treated as a pattern for pathname expansion, -and the list of matching file names is inserted, replacing the word. +and the list of matching filenames is inserted, replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion.
glob-list-expansions (C-x g) @@ -7818,10 +8096,12 @@ and variables are also set. -When the function or command is invoked, the first argument is the -name of the command whose arguments are being completed, the -second argument is the word being completed, and the third argument -is the word preceding the word being completed on the current command line. +When the function or command is invoked, +the first argument ($1) is the name of the command whose arguments are +being completed, +the second argument ($2) is the word being completed, +and the third argument ($3) is the word preceding the word being +completed on the current command line. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches. @@ -7834,7 +8114,7 @@ It must put the possible completions in the COMPREPLY -array variable. +array variable, one per array element.

Next, any command specified with the -C option is invoked @@ -7922,7 +8202,7 @@ completion function would load completions dynamically: }
-complete -D -F _completion_loader +complete -D -F _completion_loader -o bashdefault -o default
@@ -7980,6 +8260,8 @@ the number of lines specified by the value of HISTFILESIZE. +If HISTFILESIZE is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the preceding history line. @@ -7988,7 +8270,7 @@ These timestamps are optionally displayed depending on the value of the variable. -When an interactive shell exits, the last +When a shell with history enabled exits, the last $HISTSIZE @@ -8033,7 +8315,8 @@ lines. If HISTFILESIZE -is not set, no truncation is performed. +is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated.

The builtin command @@ -8248,7 +8531,7 @@ history list starting with

!?string[?]
-Refer to the most recent command preceding the current postition in the +Refer to the most recent command preceding the current position in the history list containing string. @@ -8319,7 +8602,8 @@ The first argument. That is, word 1.
$
-The last argument. +The last word. This is usually the last argument, but will expand to the +zeroth word if there is only one word in the line.
%
@@ -8367,11 +8651,11 @@ one or more of the following modifiers, each preceded by a `:'.
h
-Remove a trailing file name component, leaving only the head. +Remove a trailing filename component, leaving only the head.
t
-Remove all leading file name components, leaving the tail. +Remove all leading filename components, leaving the tail.
r
@@ -8504,7 +8788,7 @@ executed from If filename -does not contain a slash, file names in +does not contain a slash, filenames in PATH @@ -8570,7 +8854,7 @@ is not present, the shell's notion of the current job is used. returns 0 unless run when job control is disabled or, when run with job control enabled, any specified jobspec was not found or was started without job control. -
bind [-m keymap] [-lpsvPSV]
+
bind [-m keymap] [-lpsvPSVX]
bind [-m keymap] [-q function] [-u function] [-r keyseq]
bind [-m keymap] -f filename
@@ -8685,6 +8969,11 @@ or those new values will be reflected in the editing state. +
-X + +
+List all key sequences bound to shell commands and the associated commands +in a format that can be reused as input.

@@ -8739,22 +9028,26 @@ current frame is frame 0. The return value is 0 unless the shell is not executing a subroutine call or expr does not correspond to a valid position in the call stack. -

cd [-L|[-P [-e]]] [dir]
-Change the current directory to dir. The variable +
cd [-L|[-P [-e]] [-@]] [dir]
+Change the current directory to dir. +if dir is not supplied, the value of the HOME -is the -default -dir. - +shell variable is the default. +Any additional arguments following dir are ignored. The variable CDPATH defines the search path for the directory containing -dir. +dir: + +each directory name in +CDPATH + +is searched for dir. Alternative directory names in CDPATH @@ -8774,8 +9067,9 @@ then is not used. The -P -option says to use the physical directory structure instead of -following symbolic links (see also the +option causes cd to use the physical directory structure +by resolving symbolic links while traversing dir and +before processing instances of .. in dir (see also the -P option to the @@ -8784,7 +9078,11 @@ option to the builtin command); the -L -option forces symbolic links to be followed. +option forces symbolic links to be followed by resolving the link +after processing instances of .. in dir. +If .. appears in dir, it is processed by removing the +immediately previous pathname component from dir, back to a slash +or the beginning of dir. If the -e @@ -8794,13 +9092,16 @@ option is supplied with and the current working directory cannot be successfully determined after a successful directory change, cd will return an unsuccessful status. +On systems that support it, the -@ option presents the extended +attributes associated with a file as a directory. An argument of - -is equivalent to -$OLDPWD. +is converted to +$OLDPWD +before the directory change is attempted. If a non-empty directory name from CDPATH @@ -8846,7 +9147,7 @@ option is supplied, a description of is printed. The -v -option causes a single word indicating the command or file name +option causes a single word indicating the command or filename used to invoke command @@ -8953,6 +9254,11 @@ Tell readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). Intended to be used with shell functions. +
noquote + +
+Tell readline not to quote the completed words if they are filenames +(quoting filenames is the default).
nospace
@@ -9079,6 +9385,12 @@ used as the possible completions.
-F function
The shell function function is executed in the current shell environment. +When the function is executed, +the first argument ($1) is the name of the command whose arguments are +being completed, +the second argument ($2) is the word being completed, +and the third argument ($3) is the word preceding the word being +completed on the current command line. When it finishes, the possible completions are retrieved from the value of the COMPREPLY @@ -9162,9 +9474,9 @@ must be >= 1. If is greater than the number of enclosing loops, the last enclosing loop (the ``top-level'' loop) is resumed. The return value is 0 unless n is not greater than or equal to 1. -
declare [-aAfFgilrtux] [-p] [name[=value] ...]
+
declare [-aAfFgilnrtux] [-p] [name[=value] ...]
-
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
+
typeset [-aAfFgilnrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes. If no names are given then display the values of variables. @@ -9177,7 +9489,8 @@ option will display the attributes and values of each When -p -is used with name arguments, additional options are ignored. +is used with name arguments, additional options, +other than -f and -F, are ignored. When -p @@ -9244,6 +9557,16 @@ above) is performed when the variable is assigned a value. When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled. +
-n + +
+Give each name the nameref attribute, making +it a name reference to another variable. +That other variable is defined by the value of name. +All references and assignments to name, except for changing the +-n attribute itself, are performed on the variable referenced by +name's value. +The -n attribute cannot be applied to array variables.
-r
@@ -9275,14 +9598,23 @@ turns off the attribute instead, with the exceptions that +a may not be used to destroy an array variable and +r will not remove the readonly attribute. -When used in a function, makes each -name local, as with the +When used in a function, +declare + +and +typeset + +make each +name local, as with the local command, -unless the -gP option is supplied, -If a variable name is followed by =value, the value of +unless the -g option is supplied. +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 value is 0 unless an invalid option is encountered, an attempt is made to define a function using @@ -9298,7 +9630,7 @@ 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 -f. -
dirs [+n] [-n] [-clpv] +
dirs [-clpv] [+n] [-n]
Without options, displays the list of currently remembered directories. @@ -9314,18 +9646,6 @@ command removes entries from the list.
-
+n
-Displays the nth entry counting from the left of the list -shown by -dirs - -when invoked without options, starting with zero. -
-n
-Displays the nth entry counting from the right of the list -shown by -dirs - -when invoked without options, starting with zero.
-c
@@ -9333,8 +9653,8 @@ Clears the directory stack by deleting all of the entries.
-l
-Produces a longer listing; the default listing format uses a -tilde to denote the home directory. +Produces a listing using full pathnames; +the default listing format uses a tilde to denote the home directory.
-p
@@ -9344,6 +9664,18 @@ Print the directory stack with one entry per line.
Print the directory stack with one entry per line, prefixing each entry with its index in the stack. +
+n
+Displays the nth entry counting from the left of the list +shown by +dirs + +when invoked without options, starting with zero. +
-n
+Displays the nth entry counting from the right of the list +shown by +dirs + +when invoked without options, starting with zero.

@@ -9354,15 +9686,15 @@ of the directory stack.

disown [-ar] [-h] [jobspec ...]
-Without options, each +Without options, remove each jobspec -is removed from the table of active jobs. +from the table of active jobs. If jobspec -is not present, and neither -a nor -r is supplied, -the shell's notion of the current job is used. +is not present, and neither the -a nor the -r option +is supplied, the current job is used. If the -h option is given, each jobspec @@ -9377,16 +9709,6 @@ is not sent to the job if the shell receives a If no jobspec -is present, and neither the --a - -nor the --r - -option is supplied, the current job is used. -If no -jobspec - is supplied, the -a @@ -9403,7 +9725,7 @@ The return value is 0 unless a does not specify a valid job.
echo [-neE] [arg ...]
Output the args, separated by spaces, followed by a newline. -The return status is always 0. +The return status is 0 unless a write error occurs. If -n is specified, the trailing newline is suppressed. If the -e option is given, interpretation of the following backslash-escaped characters is enabled. The @@ -9581,14 +9903,16 @@ to be executed with an empty environment. If is supplied, the shell passes name -as the zeroth argument to the executed command. If +as the zeroth argument to the executed command. +If command cannot be executed for some reason, a non-interactive shell exits, -unless the shell option +unless the execfail -is enabled, in which case it returns failure. +shell option +is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. If command @@ -9633,7 +9957,7 @@ are given, or if the -p option is supplied, a list -of all names that are exported in this shell is printed. +of names of all exported variables is printed. The -n @@ -9656,13 +9980,13 @@ that is not a function.
fc -s [pat=rep] [cmd]
-Fix Command. In the first form, a range of commands from +The first form selects a range of commands from first to last -is selected from the history list. +from the history list and displays or edits and re-executes them. First and @@ -9731,6 +10055,7 @@ echoed and executed.

In the second form, command is re-executed after each instance of pat is replaced by rep. +Command is intepreted the same as first above. A useful alias to use with this is r='fc -s', @@ -9858,7 +10183,7 @@ can report errors in two ways. If the first character of is a colon, silent -error reporting is used. In normal operation diagnostic messages +error reporting is used. In normal operation, diagnostic messages are printed when invalid options or missing option arguments are encountered. If the variable @@ -9936,7 +10261,7 @@ If the option is supplied, no path search is performed, and filename -is used as the full file name of the command. +is used as the full filename of the command. The -r @@ -9990,11 +10315,14 @@ Display the description of each pattern in a manpage-like format

Display only a short usage synopsis for each pattern - + +

The return status is 0 unless no command matches pattern. + +

history [n]
history -c
@@ -10055,11 +10383,11 @@ current bash session.
Read the contents of the history file -and use them as the current history. +and append them to the current history list.
-w
-Write the current history to the history file, overwriting the +Write the current history list to the history file, overwriting the history file's contents.
-p @@ -10126,11 +10454,11 @@ leader.
-r
-Restrict output to running jobs. +Display only running jobs.
-s
-Restrict output to stopped jobs. +Display only stopped jobs.

@@ -10460,10 +10788,13 @@ causes printf to output the corresponding

causes printf to output the date-time string resulting from using -datefmt as a format string for strftime(3). The corresponding -argument is an integer representing the number of seconds since the -epoch. Two special argument values may be used: -1 represents the current +datefmt as a format string for strftime(3). +The corresponding argument is an integer representing the number of +seconds since the epoch. +Two special argument values may be used: -1 represents the current time, and -2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if -1 had been given. +This is an exception to the usual printf behavior.

@@ -10518,7 +10849,8 @@ Adds dir to the directory stack at the top, making it the -new current working directory. +new current working directory as if it had been supplied as the argument +to the cd builtin.

@@ -10583,7 +10915,8 @@ The characters in IFS -are used to split the line into words. +are used to split the line into words using the same rules the shell +uses for expansion (described above under Word Splitting). The backslash character (\) may be used to remove any special meaning for the next character read and for line continuation. Options, if supplied, have the following meanings: @@ -10666,14 +10999,18 @@ not echoed.

Cause read to time out and return failure if a complete line of -input is not read within timeout seconds. +input (or a specified number of characters) +is not read within timeout seconds. timeout may be a decimal number with a fractional portion following the decimal point. This option is only effective if read is reading input from a terminal, pipe, or other special file; it has no effect when reading from regular files. -If timeout is 0, read returns success if input is available on -the specified file descriptor, failure otherwise. +If read times out, read saves any partial input read into +the specified variable name. +If timeout is 0, read returns immediately, without trying to +read any data. The exit status is 0 if input is available on +the specified file descriptor, non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded.
-u fd @@ -10691,11 +11028,12 @@ are supplied, the line read is assigned to the variable The return code is zero, unless end-of-file is encountered, read -times out (in which case the return code is greater than 128), or an -invalid file descriptor is supplied as the argument to -u. +times out (in which case the return code is greater than 128), +a variable assignment error (such as assigning to a readonly variable) occurs, +or an invalid file descriptor is supplied as the argument to -u. -
readonly [-aApf] [name[=word] ...]
+
readonly [-aAf] [-p] [name[=word] ...]
The given names are marked readonly; the values of these @@ -10715,6 +11053,10 @@ option restricts the variables to indexed arrays; the -A option restricts the variables to associative arrays. +If both options are supplied, +-A + +takes precedence. If no name @@ -10722,6 +11064,8 @@ arguments are given, or if the -p option is supplied, a list of all readonly names is printed. +The other options may be used to restrict the output to a subset of +the set of readonly names. The -p @@ -10741,14 +11085,18 @@ is supplied with a that is not a function.
return [n]
-Causes a function to exit with the return value specified by -n. +Causes a function to stop executing and return the value specified by +n +to its caller. If n is omitted, the return status is that of the last command -executed in the function body. If used outside a function, +executed in the function body. If +return + +is used outside a function, but during execution of a script by the . @@ -10757,9 +11105,15 @@ that script and return either n or the exit status of the last command executed within the -script as the exit status of the script. If used outside a -function and not during execution of a script by ., -the return status is false. +script as the exit status of the script. +If n is supplied, the return value is its least significant +8 bits. +The return status is non-zero if +return + +is supplied a non-numeric argument, or +is used outside a +function and not during execution of a script by . or source. Any command associated with the RETURN trap is executed before execution resumes after the function or script.
set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
@@ -10770,7 +11124,7 @@ Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In posix mode, only shell variables are listed. +In posix mode, only shell variables are listed. The output is sorted according to the current locale. When options are specified, they set or unset shell attributes. Any arguments remaining after option processing are treated @@ -10801,14 +11155,15 @@ effective only when job control is enabled.
-e
-Exit immediately if a pipeline (which may consist of a single -simple command), a subshell command enclosed in parentheses, -or one of the commands executed as part of a command list enclosed -by braces (see +Exit immediately if a +pipeline (which may consist of a single simple command), +a list, +or a compound command +(see SHELL GRAMMAR -above) exits with a non-zero status. +above), exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a while @@ -10835,6 +11190,9 @@ or if the command's return value is being inverted with !. +If a compound command other than a subshell +returns a non-zero status because a command failed +while -e was being ignored, the shell does not exit. A trap on ERR, if set, is executed before the shell exits. This option applies to the shell environment and each subshell environment separately (see @@ -10843,6 +11201,18 @@ separately (see above), and may cause subshells to exit before executing all the commands in the subshell. +

+ + +If a compound command or shell function executes in a context +where -e is being ignored, +none of the commands executed within the compound command or function body +will be affected by the -e setting, even if -e is set +and a command returns a failure status. +If a compound command or shell function sets -e while executing in +a context where -e is ignored, that setting will not have any +effect until the compound command or the command containing the function +call completes.

-f
@@ -10867,9 +11237,10 @@ it (see JOB CONTROL -above). Background processes run in a separate process -group and a line containing their exit status is printed -upon their completion. +above). +All processes run in a separate process group. +When a background job completes, the shell prints a line +containing its exit status.
-n
@@ -11026,6 +11397,12 @@ Change the behavior of where the default operation differs from the POSIX standard to match the standard (posix mode). +See +SEE ALSO + + +below for a reference to a document that details how posix mode affects +bash's behavior.
privileged
@@ -11177,7 +11554,7 @@ default when the shell is interactive.
-P
-If set, the shell does not follow symbolic links when executing +If set, the shell does not resolve symbolic links when executing commands such as cd @@ -11261,7 +11638,14 @@ is greater than or less than zero; otherwise 0.
shopt [-pqsu] [-o] [optname ...]
-Toggle the values of variables controlling optional shell behavior. +Toggle the values of settings controlling optional shell behavior. +The settings can be either those listed below, or, if the +-o + +option is used, those available with the +-o + +option to the set builtin command. With no options, or with the -p @@ -11311,8 +11695,10 @@ If either or -u -is used with no optname arguments, the display is limited to -those options which are set or unset, respectively. +is used with no optname arguments, +shopt + +shows only those options which are set or unset, respectively. Unless otherwise noted, the shopt options are disabled (unset) by default.

@@ -11353,7 +11739,7 @@ If set, minor errors in the spelling of a directory component in a command will be corrected. The errors checked for are transposed characters, a missing character, and one character too many. -If a correction is found, the corrected file name is printed, +If a correction is found, the corrected filename is printed, and the command proceeds. This option is only used by interactive shells.

checkhash @@ -11402,23 +11788,24 @@ If set, bash changes its behavior to that of version 3.1 with respect to quoted -arguments to the [[ conditional command's =~ operator. -
compat32 - -
-If set, -bash - -changes its behavior to that of version 3.2 with respect to locale-specific -string comparison when using the [[ +arguments to the [[ conditional command's =~ operator +and locale-specific string comparison when using the [[ conditional command's < and > operators. Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); -bash-4.1 and later -use the current locale's collation sequence and +bash-4.1 and later use the current locale's collation sequence and strcoll(3). +
compat32 + +
+If set, +bash + +changes its behavior to that of version 3.2 with respect to +locale-specific string comparison when using the [[ +conditional command's < and > operators (see previous item).
compat40
@@ -11427,20 +11814,65 @@ If set, changes its behavior to that of version 4.0 with respect to locale-specific string comparison when using the [[ -conditional command's < and > operators (see previous item) +conditional command's < and > operators (see description of +compat31) and the effect of interrupting a command list. +Bash versions 4.0 and later interrupt the list as if the shell received the +interrupt; previous versions continue with the next command in the list.
compat41
-@item compat41 If set, bash, -when in posix mode, treats a single quote in a double-quoted +when in posix mode, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. This is the behavior of posix mode through version 4.1. The default bash behavior remains as in previous versions. +
compat42 + +
+If set, +bash + +does not process the replacement string in the pattern substitution word +expansion using quote removal. +
complete_fullquote + +
+If set, +bash + +quotes all shell metacharacters in filenames and directory names when +performing completion. +If not set, +bash + +removes metacharacters such as the dollar sign from the set of +characters that will be quoted in completed filenames +when these metacharacters appear in shell variable references in words to be +completed. +This means that dollar signs in variable names that expand to directories +will not be quoted; +however, any dollar signs appearing in filenames will not be quoted, either. +This is active only when bash is using backslashes to quote completed +filenames. +This variable is set by default, which is the default bash behavior in +versions through 4.2. +
direxpand + +
+If set, +bash + +replaces directory names with the results of word expansion when performing +filename completion. This changes the contents of the readline editing +buffer. +If not set, +bash + +attempts to preserve what the user typed.
dirspell
@@ -11558,11 +11990,30 @@ above for a description of This option is enabled by default. +
globasciiranges + +
+If set, range expressions used in pattern matching bracket expressions (see +Pattern Matching + + +above) behave as if in the traditional C locale when performing +comparisons. That is, the current locale's collating sequence +is not taken into account, so +b + +will not collate between +A + +and +B, + +and upper-case and lower-case ASCII characters will collate together.
globstar
If set, the pattern ** used in a pathname expansion context will -match a files and zero or more directories and subdirectories. +match all files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match.
gnu_errfmt @@ -11758,6 +12209,7 @@ If set, the echo builtin expands backslash-escape sequences by default. +
suspend [-f]
Suspend the execution of this shell until it receives a SIGCONT @@ -11774,7 +12226,7 @@ is not supplied, or if job control is not enabled.
test expr
[ expr ]
-Return a status of 0 or 1 depending on +Return a status of 0 (true) or 1 (false) depending on the evaluation of the conditional expression expr. @@ -12004,7 +12456,10 @@ is the command arg -is executed whenever a simple command has a non-zero exit status, +is executed whenever a +a pipeline (which may consist of a single simple +command), a list, or a compound command returns a +non-zero exit status, subject to the following conditions. The ERR @@ -12027,11 +12482,13 @@ statement, part of a command executed in a or || -list, or if the command's return value is -being inverted via +list except the command following the final && or ||, +any command in a pipeline but the last, +or if the command's return value is +being inverted using !. -These are the same conditions obeyed by the errexit option. +These are the same conditions obeyed by the errexit (-e) option.

@@ -12115,7 +12572,7 @@ If a command is hashed, and -P -print the hashed value, not necessarily the file that appears +print the hashed value, which is not necessarily the file that appears first in PATH. @@ -12265,20 +12722,21 @@ The maximum number of threads If limit -is given, it is the new value of the specified resource (the +is given, and the -a -option is display only). +option is not used, +limit is the new value of the specified resource. If no option is given, then -f is assumed. Values are in 1024-byte increments, except for -t, -which is in seconds, +which is in seconds; -p, -which is in units of 512-byte blocks, +which is in units of 512-byte blocks; and -T, @@ -12334,18 +12792,18 @@ value is true unless a supplied name is not a defined alias. -

unset [-fv] [name ...]
+
unset [-fv] [-n] [name ...]
For each name, remove the corresponding variable or function. -If no options are supplied, or the +If the -v option is given, each name -refers to a shell variable. +refers to a shell variable, and that variable is removed. Read-only variables may not be unset. If -f @@ -12355,6 +12813,16 @@ is specified, each refers to a shell function, and the function definition is removed. +If the +-n + +option is supplied, and name is a variable with the nameref +attribute, name will be unset rather than the variable it +references. +-n has no effect if the -f option is supplied. +If no options are supplied, each name refers to a variable; if +there is no variable by that name, any function with that name is +unset. Each unset variable or function is removed from the environment passed to subsequent commands. If any of @@ -12388,8 +12856,8 @@ subsequently reset. The exit status is true unless a name is readonly. -
wait [n ...]
-Wait for each specified process and return its termination status. +
wait [-n] [n ...]
+Wait for each specified child process and return its termination status. Each n @@ -12399,7 +12867,10 @@ in that job's pipeline are waited for. If n is not given, all currently active child processes -are waited for, and the return status is zero. If +are waited for, and the return status is zero. +If the -n option is supplied, wait waits for any job to +terminate and returns its exit status. +If n specifies a non-existent process or job, the return status is @@ -12455,7 +12926,7 @@ specifying command names containing /
*
-specifying a file name containing a +specifying a filename containing a / as an argument to the @@ -12538,7 +13009,9 @@ script.
Bash Reference Manual, Brian Fox and Chet Ramey
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
-
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE
+
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE --
+http://pubs.opengroup.org/onlinepubs/9699919799/ +
http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)
@@ -12643,7 +13116,7 @@ it provides for filing a bug report. Comments and bug reports concerning this manual page should be directed to -chet@po.cwru.edu. +chet.ramey@case.edu.  

BUGS

@@ -12691,7 +13164,7 @@ There may be only one active coprocess at a time.
-
GNU Bash-4.22010 December 28BASH(1) +GNU Bash 4.32014 February 2BASH(1)

@@ -12797,6 +13270,6 @@ There may be only one active coprocess at a time.
This document was created by man2html from bash.1.
-Time: 28 December 2010 14:30:29 EST +Time: 24 February 2014 08:28:34 EST diff --git a/doc/bash.pdf b/doc/bash.pdf index 5bcb0c55dad1dbf6bc874e41be45faeee51908dc..fbc1fde7ac49b5a18dbaa8a5272fbf725b47e592 100644 GIT binary patch literal 312770 zcma&NQ;;UWwr=~EZFP0A%eGxzwr$(CZQHhO+qP}H>h{`k&Usl6cSk;C#(d708Dq>Z ziDd^DY{yjD~u2Y7tdP$Dol6G+vT-P2a%4d%)$<*KP; zLCGumeTRqYo8{kte?)O#W6rWE=?V=~D3!{nYbJn=i%V!vGObSu?=;1^K4reU*0a7I zSx7dXCkbiyW}Yt(Fpp>v-&V{;vS((BvoAsnyZu{GJQ;Q}!{ErmFv9|TCtXaYA0Ea& zT~@)i3%ar1&46ttS4_O)+y8Xh`y6k6+F#6WK)FTRfJe67qn&8-^yLhgMHcV3qDDI` zAj)Kddmp|7rM)BR*fX=yI1VhPXmoWC=3q&roq%gg7ANi*AY7@kO;mOfLfqe< zczVXx>F;rkY@k!OmA;^?ju+^ib1@A)R}=pHVUn6Be<+nnMkwr<7@LvGPRMXy*czCS zUhb74QG6XP`!LVS8=D!eRBzL9n2ngoh-hhGeOP;1D&TSVzAOOrW6JIkuChJ5-S>jk zn|H!JXwkwdoJo1)EW-VLGljn13fP-qAe~<*oGiD>v2u`C)Y`tx!2U*nALWRjU@GJ~ z>tnSRT$0Xl$Z{^5h-ZR23{cuRs#@RV zD54YrEPe#*X}Zp%L% zi)d|H3w_K$ddqLY1L8W)CA$HB7JgKbAvNson_S@5h=>&UU)Y+&nG9*cNMMN(ndrHV zlO+`$m1D}P+guf)f?D;}D%>16u;8O2F4YgtOQ;`yArLJ03FL}h({r5)fkt%(yTire z$zK2lMQ1c42onk_Wcb63H@}-<4u4teuw7}gUFI=$tIsbj8cTGSeJGa3U~pd_MVyy1 z7DUkx_pe_0a{BRvjZY@HV$eMxFF# zLM1J!qxH(YI1n)OLGumj88?_TFFc%LZ9kM^0!%{iAXHOQ1R`i2gss(x;W9k;Sax?p zm*AQ=8k8C!-oWnT3n|t|o+wmn4}F!%$PVo4)H_}j=t?m)s;iI<8&JIpWM(Q5D#XEK zisZTV-v*ALFtD^-jLyW?vA*bW2!eD^@AN;shQUObpzQKId>0$dtIEI_^pYR#)PVtN zz-(Ax2ED_xM#O6%=2x;wjWe=*fNKHvO^mH9uq9YEDct7(6Qjfu0zG0TsaFcLRRKGW z3>i}T`@-nDF4VqFF7B+s-;I`jfTJS|^}W{KCeqk+5J+uL`99?ku;P$fn^FH>W{L^+ z#1flUTWu3Ok}{ZiLUC-Yn>_6^z*tZINuOZgseS;T6GTwkBvPaBXd-~=Oz{Vrq3>8^ zwb6DN)0Z&iPC6ruB&Y<(l#m+ng1R=s_MZAS5ngwEVGAp?HHfj}eFW4qiKI7m1>+Q?of{3yv~?sL1??;e-#arXYB!3dr# zwq<_7+tNa-)zh+EDa8&p35w!x95(>cG_BGV4P*;0|eD91I3J1_nVdhhuMpctrIP%JIjSE?X)8N>CQdDFf*+U)n-c zx%&`Bl_Aqvu$YRjFQ%3|RBJ&OPaASMUrbk_DZM*!U<^(P3Wz6hy#b&EWdExZBE2ny z#QnXlMvetW`3SRayskx!NA)m~523K)F~rWF*fyD5FIyE%<-my<-hRu4V;pESV3ZXd z8e!@NpIDAu6mDuWHH~Eyu3wOjaz|-(Qp0PqvRUUl8^m5<^hq+;qQ0D3XreIbx!mUW zsFnP3Mdf52a(R0L5uLzQ-t5-7tskaYCRuGM)`U`NC|WZ|dkK~T^b|bthIV+=G)*XNz+hurd}2$F@+4&?yO(vQ&7=Ie2%q z{gQLc$Ean~_zTX=w?T+Pr0gX^6z>+3J!Xm9X;|@Hs*$JVld8F8^kFNSsW7YtQk%X2 z?Tv8_3Ay+Os@b=AKW%7uAf|X*tM}LY=XubQhrmXXxiTVGkWmwQd zB{IIEe)-2BDIpS(q=6pxIe)HxZe4}nhyWuzm!`%V4p2SAmA`URMh*$=Pz(l#+S&vp z2*c=Oi)+f?pPbX`_mPrl+jr<0M5Ev4%K&+!{05qKg>F4r1ewG3XQ^Ehz0#0E#j7!T zD157!ryg{QQeb(DH|#T%7_?Vj*eP+pJJ+}8iZ?5nFn~$I;Ix$iu_iXC>>(BrJonlo z;k`H9O^IG8C32aTtk{F35@9r(Gg@-izJ|zjXQO>xE@BvyVS(zqCj%$$G2ky|Hx6?M z6;u+BAg9ohUsk_2QK-}0^~5E=WGchl{Se$8Y!|(3OD{BOI!NuuP{b{G`@}0 zZHS2AQyUs}?OZ6g1rnZGTAl}TSY>ZFGo?`8VJu%P9tY)aj%^q0A)f?`7f4MeqWh+` zFRrPSqI`}@{{qip&}lMv!d-rpu({abz~Dm@+YWrDjDSHUAb3xgFA;}ML^plYz*2ax zCWgm8tOi^=TR9JBbXGd>NFptxA2|Sh{FQ4S#fgSO{#-95)FLEK!fD{NOdfF{Dt5f3 zZwmdI52p}B!V0G-{ucwy&nl(R*x(Bc+gxd-%v!GWsc*IfS4&0JH$JYkLo_z%wpZcX zbHbq1K?&*6u6A)y=FJ;&@M{VTH{zt|(oJ%z8dm*<-w*hLW?C4*5Wd1^X!@1EAB`e; z#|8hW@rPG7Gql6wN^U-Ke()PoPFwW3Lz+O)F>v8!TK&4FBP@R4g_Y8$9g$NYsdm=X zPa{C2`r!z)6m(N2%ey1U6Nhzu0LleXVwB5tcYg-avdl zzZgGY?{9J@&Bt1hkrVHVPc22B9q$TLcIWsLlTefJ#cLh~1XlU6^<7(oP~TC<0Z~v( zYvtMtHS`0Cs|{;P=}p=(pZN%FzH(e3^IV zNdW(FUTOF>pu2_10WfR+&hxeD*^)H#L@S65-`h%`Z*y3A>vaL+j|blqdJUZn&-d6+oipQ|L8w$B8)Zg#u5piKeW<`cMFS%IogU7(WJcm^+gioD6(j9?skK9~PqG;C1qWo2*>561j6> zkh)JorXZkPnqW=$#{r|F8)j#&y97ggwQQ7TN>MIt7WDJZ8&Tp>lJ-E8v3!v9o^@5}`wz`WrFTN4aD7>3*LgTJSfO$}j4(vHQKh zGQIwp5N`3H6I(*B@9uS<7{+~UB>9S{$b`ukFn=P*hGI)1Zl60|{&@62YA=iiK8(Ub z)l8whe^s~ysU1>;)!8F!hDk=fKbmcLmtt{`s{5O$L{^-z_TZYkLwdB;r;L#~I0wcQ zG1i8rQW@ss4URWkEy4E9N>lH;B~GNKLGf6XNKBB$*;$sv7!Nc4!o#4W8DMF8lhUZV z$g}3j-0Ekwnr#%YJ+07PRqSiA@nOKym&fzX(k79c*0)~1rf6ZtJUUJ}a@Sy8awLb3 zsm-S&Y<}`mah_Rqo>e;HP;KhaTB`(cuR+LWQ7WiBWnFT{TJ(}-6fmYfU~n-;5kd{8EB* z;Iw*h;8pCXC~=R<38}|||L`SI6s}zjrXMmk?{vlJE)QO!OpPUy`?GME2qlI)l!j=m zV12y$1C!;fFgZdK~k0M`@F+M}(ZVwfW%A^f!jCLJX#qa$>-_m5JuQUaMWq^rvBSPY(Cw*sXHPBY%@} zg?k9wK6zT=M2h<~u+FtGQqL^$1U_0lLx@A|^2Vo(gp+cyZjDMk<$D>?Y`Lc^?6153 zWRJxl%HrwA)Mj|vuuLCP95x_tg zFi12zpSRBFwyunEK@))=<`QkWT|bZBNK=^z_@ntmw8xnGIxG9w%9-m10= zvABo{eF7`jixRxwwjalMid*SUYgJ*Lr3QMv^nJtP!%5gHJu11c~tDS zizHU1nW&fRPmw~olZJJ41-<)|z@q27&cS&2*kPhDFzL(58yOk9?;jg@#t+7&iJNUP zhyq|y>VUa8p`d~M+q1rtjQ%c>2wOPI(rEw)Ta~#oT3sfCYD>j{v|N`Id+(KinvIjT z?H@h^WQg<(XXLuJsOplg9Njhp1(vwV3IBQCmZez;R0JP7A;lRAf{>jTZ)Dlrj(p~b zb|G^TZok|!q@sCGaS}DvCjph3U~{iz#UP24qZhPRd~>yvZ4NoCR8gGkpc`xJl$&kO zuFf}-*01a1j~kPFYmBM0oG#>CqkwdyhhzH_R4$WgzXqmJ_caf1dTs z3HzESX9UpX)>rwJHYDQ;xM4pAbjzs-*TWD$AeR^Llq)}$BHJUt?@w(>>U3(d97K4&0>PCF&_3SJ! zz00$|@oMp!ic;9i60qO14dpvf7)y5w(+7g)WjzBgoz&mlF`|J^RvTN6L_V*j-a79^@Y_1w?b#H(bvRC z?^Ezsi;)js?h)LfPSEoUtDV4;=@5-}!C+1Z@4_`*`3=UnCl%c)8SelyO|tsR>RBsW z@J5Q6bdktURFCJgq-%ZVAqb<`39ISNxNVjJ7v^EZb02}ZsVkU(3US0ETZ@LVu4f)L zUqY;(CmB!s|4N4tA&3iB!+DD*G++31nC?{A)+7{TYOij0=M{{oK$TA+Lf5S}6VXvv zR801`a8f0?Q@AG%F`gBI16n{I;qyGhu;eg+@Z?$=S=KdZ zvQJb8{;5Gry0KZbecw?q zm{2OApI`e|D|Up@xlH#WFO`m!xDkziylEEvY=XgC+|=W8&t3S0)cl7gv)Q3h=lH8C z(7nsJQ$9fHw$aQ(E6IPUn8-=|$*Ho}e`EhaW2vbec*;rc58+5Ym-oR_ELBo_0WPx4 zL9GSpE=|yZUXVXsTfMT?5K*YOH34M^5P*jhW%egp&x~XX%SwXl$!4pZPjlw z>VbtDcrhHoV1ytZ1h{x&LH|hvewnGLbFf4sa_OaV)8YI7Gy0qxa=TAG|0`m zIl0VW=TC{rrw`4FG9Sc1x5sZ}u}wfu2co(waht$=TP7{w)T4`tP+`UC4rdq(=AbCQU(d zm$E~lAP`V8LB4LS&k+q42a?pZ0{lX3=p3?Mi3VV4&$;ICff^p12KW`8fC80`f%bGK zK|$f9xu`Vh*!aJ-rkKl&xTJ)xa_Y%0?Q3eSRoPaOf2hJWrLh!T6P$Ty`BCs^-dbC# zlHaJF8{s=kvR(>BHElZs;PV( z;oT%&dzp^GBVP)QKh_Vf@HifM3(!kg1W4I1QPd?05x%*nI~;Nu32{7BJ**{C#bh?U zv+XgKp=29Yn2DI(gV7w_^ptSGAy0%$LJ@A1$^;#6((l{b|KS&iu_3x2L<^5HGZI+G z4Dqbo+ws^6?foIRP%#piTJ{hS1wHIEESLy0oK9tFrrh5zik;9G8Q;&RGj!TECoM zCI2(5s>gVIMrYO#y#$)z{M>5d;_Qn@AO37~<B zB&!n_#W5$qvsHTcq3E(V#p|tkn9D*xF>uk+G7<^gNs6O!#O=F@HVWIxBHcAD{OU4W zxyEiH$1`7$0HHOgEmLdje=bUeF7{kx9(O$`T{>hBRLZY=q*vo3Sp=Ek4(o-eNrR1? z-MuF$+<}e^ok;(R1l$+n-*2#JJnGt#Z;lFFskrpTl+JJ{%TgV`uJmq~L=|pD8m~Mj zfXbF#?Y5YK7jut|1zgd5z37AxsosKL3wj=_@@fU4GS}xI&LChL3Had^A3I+}g9$NA zfFGLHUWC3KG=#379h>JTUp4CLH5+gm0|fwC)?I8z5+tM#D(WS2leGjbI2scZV|kcv z?53|vLuZvP8H7YB#MP9R!x~S|4T-i;C1g9!+rv6`eFZH}eqJl)x;mUWKMuY0xY~bz zr;tX&dmewY%7kOOi13(HOR%F^)`v2NM2dujw~?ewH*oHvSjaWIzr?Xg!IM$07Gi*Y zB}MONd~P{|CojcQT*a9mNR3RIikO|!70RWV6yQ`xIox^tCJojo!2R$_@1)a`-hfry zR33_=8AZLPI8UT^s-dF1X-T?nn3tk(5b5H|?}NmHs92bx$vu<~f@dIWVh)*{h^kjH z*Hht9$hezDx#4*?9AvQHQtR0Vo|vr0y)ahTSxN6YlVHL1V8wxAyfV-?SF{A=Y1~Y& zw-V`+DiR6Y(Zk(PQjEh_e3_k8(zCO0Z-Bpt{g_ zQgaM{!zYbg%JZ@_D`S>P^s=Gb7x%Eaw$n*lPs@I1o*SL7+XcCqsTbRq3Ps2s44!u? zVjmQSaY@VA!=_-`75dU>a|orPo*bCJO;|}|+I@E{Ed8L05Eb4>^A6Fw{KThq_~h?5 z7!>AbM5lNBzJP z-*{^8xHGhxExcMD>lltl+u~?bnHu8ql>$9 zZPGsMQyu4{%qXfl$0eomaKVU36jYqgvL)d5zP;MW z0dB{I-fbE}lTg(TK2o^h?9m3 zp8>L4+#|bTBOn`1+8NhB2e8`gnL;WxJ3^0Jk)6G)3d8yj;*XnLeLFJ?pvMwpnJ}Ko zrL-CL8gb4-;`c@hae2gAN;G0?RANQle#GQ3X7YpNtOeecnL-T4K~(Y&x^;NvzjC;{ z5{>z(qRK>5-S&jmYMvZAbcYT2ibN)-r*PC7H>hcTWS!7n0ld${ zbiW%O>7`Y@OH{^6)s8b2fEp6msTU=l!Z%}U;NGrow0m*CE{-yKev&^wBVjMf|Jc25 zm>4Qy#njrB?((efS-%jDtX|=Pn;0OG666u6enQyFXU<9r9~sy91B_c>(EpyU5yi2k z<<@EK$nbNK*rmgCw5`-sR(I5vs(otNR^-rUNL1>Fu1Kmy66;Us!d?I=l$1!F}M!or(Mj3#W?WS=_Y`4R_i? zuu`ENhYN&V%_b^~EU&KFC=NL>Pp8{yn~5vyAjeO5F<7%u{R=s&hmf`n27TeD)f$GL z(OkolBf6HLwei9XI>OFgX%QMHw86(`Nw25(r!_EVTU+ZB1!JCS!a8gRyL^fydx|kM zF7kMem##@yL&~?p>u47v;3k9B1o4o(z^dL*)HB5LZ3X^4@(ig_G6-4fRf?M0&0;I}>$U@Cky%C?}^ zG`Z+^s(#i0dF`Jx_f63{^nNOqIgn3q*7?rd7)i%4kSs|@u>*hcq|;jinjyA11yK?j zAEEq{;X|{2Vj%QX72!AMeAPp+)QRgpEgi!A2eE2>{x}3wQCkRy?2X2&kL{#=1d4k6 zcZQZz`4wBvkbHP-^qUZXw1J7NjNh)98fu=?vj4P^7+A;r;MW$sLd7K43Mn5 z711IQ4OK9CyFo3ZLg1ze(kyS`n=Zt}2Y7M3EmS!Th~UWpY(Bi$ZtoX-c-L7O5VHea@hyg{4c zVv(MC8nrMG(+hh+Ou80ZVa_3S294N23_!|9Vn%QSr3}c3+$e$4tz~guQ%?Vtet#?L z1UNlTzTlBu)RMzj1=6LOsz;6j_}cobaq>3h!AoRP@S`LJ)t+P($k!fyz1dk&fyVj; zx|1!jsoyfGV;_*^Ha+f-^`5NXlF;~V*#8c+$&2eT6Du;M3y^Bk5r|D4sW7J>6pV9) zuXY}!YtJF^O{HK+F)+@gH#O?LOnnGtKFWrCKs(JStk6YpFdOAO$%QCo5`cf^8N{FBoJINRUeNd6ZKs`&k8RohB{xmZ7OSY$LY{MDqSBJl!@IF|VxVY?9tA;S% zU#ED2*pSn8F&|(NPQIhG1@<|v?I?=NTsyNdl0QOdO6 z!R!6|(?!^xuf)UTFiR=PLhtG#oFbk~l~fJLQwCMO0I!^sgI4^n*i_itNk8aQF)fs& z%KmxY=zTYEo!wB3C}Uf9eq51Z9MoL$Nf_%q2;O7fUb`#KX~1ASZUk+!1+s#t)=a+( zg)bzOwOVT)7HK*%?4$Ia{&{yX=yXlqq$8=VvrQORwx!d+j*1E_*$$k^es z147$sbu*z@LDCG@poP#>Vs*mczt(E}{~8<#0`xX&S9_IgpUa2vKWW5VvU_3Nf+u^* zDqGVi4A2_Yx^o} zE~;pzrh_VK9jg!g;UB*G@M>H0g!XeM0+Y*7pS|?FJz2e$v{bB40iTWGFb_isN?o`W zUJQz_4Gn@^#6GJS>c+}o9 z%;kWrAT$B{8WHXsAVsdc2}mcCak|%4eG>VjgvF;mRST6`i`wjIHHQe ^l2Fy#m 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 cIru!} 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 literal 296259 zcma&NLv$rj*RC5U6{?k!ml(4dO1vnEiO4u5^ z0>l8O4rTxW0azDTXMnLCtY_}1&b0H^1jf!Ktv53qlc~u90vo}kOgcsas;)B~Pa5@9 z8klh65H^G*ADs{8JJ>%d%&+n7Ek+P|8FzVkbs6$$)WDmqSEsp7tS>3P3{<54m3do_ zm*uTU+b!0Fp3vLtjd4~Qd!h@;Hqv=43zzw4Zf!G1k62C29M(<{auibK!)_-L%x>1x z_jlWSS~`e!mAzws)M5FU=PW`>2Be9@gPG3n_qieu)(5;>cx)FS{aj~Pa6kkCj{H&l zud6c(JkC65|FaL!tj{9PBkvY`53j?TG6TcIJ!sRcQz!$mlhgwM(zO;(O-nB&^uxmk zzL&wPeA@hcJL`?N!4WGZJ&p6Hi$QwxYfQhk#K4IQZtzYA@S1Ur)4{&M{y02pQ)!!o z18qxdl_^6tfm%1?xsUdu+D|dvaQf@JF@86G{NcrTJ|>5=zo*yx{n4cBrty5qD?Wl& z$65K-qA^v{>(JLK`r1$ON7fRR(&a>1M#E6bqadZ9!%M;bQvMZ$lh+D7AWQiiw&JG7 zEgDmRR8#%Lf0~ey!GUqtpjTUOM^Eq~`E;D&7m+t;8beSRso@bU9#LKSG}GQQmtyMU zl^ZJO{>2hsjfW4DulfnZPq%ChJN2^lR>f8>x_SoZCq+cSAgGn3bDEo4DfinLLY2X} zi+vNFlXmV%P*>u!{_e%7?$XhDwr#dIrSGQu-FS<3Oqe!y2?}*oQh@GoXH(b4ntXKlvt8f0Y}4d&y~DnTT{e$3(R7S=SMi`k zx#p)2zZ#~Swq=`Dbrp&uMzro46P~sKLEQxf6jUx8uO7OFIYp+D1AV7UZREJ4oGJsM zE#rcvp8Qzg(b3Pw;xdSS$h!wCEy&}*<2I9w#4mpqFDqmU9xv_~*9Vhq^-Ev*uIyT8 z7$*(QoUS0(bE!XD8Se}YJj!~dyOFh>;)KXEKo5OoOnp$N5YKpr&aR#wG6#G6h97cO z*=qsmI`;yL(KR^+ztc!bdv%duVE*k=NwW%Ky~$pNoh+p+Egvf0*(GL^ETQr`J0U(A zvU#2ZMC}v616BaL1GB^U?k-L!VQYK<0ZfEExFDpaRMp&tKt-r?!79dD_vG-{gfa#RoD;X&446P9YN4s@ z-dHh4axU~Ilkm;nj0ENwQ?@!3%pj$OeN1rsbjjR{BFV_q#uDUB^4Yz>I?hU!RUr0Y z<`p3~2!R>vvtB>YyC=$NZD8749|p5giQlQ0X+gGNpNCJo5OXla35N%KppI*yoMGB~ ztm6^nASb^)P{m4I>LgaO9_e(MkApm)>lL54K$^RfMUf&csV-Pm(A*6X6T#uInxNFg z83g8y6UzNyE&-N;>EmWAJTFV7)!v~k-@+IrX0ZtoKd0q5K0Hr8M0WG-QzJQ=J`40; zN#t`Hsifp5VMty^h$Qp`S-?oi(!DfWX;`W94`OaS%u5zK^ zX;QhP%`J9+>c~J$Xl^ex&}DRz`HdD3*(E;Vk3kB#$X-PkcXWfGt1xONcmzE)w)wAJ zX!%jtpa}7!&rS6N-C33spZI!9zNtta9iLr;aUhz&!CMc1$0Lg~gpx6(f;;N@F6~!y z!a;pI5GFzf@k&vgD&-3tEP3VmXOc6VMKZbD-h~$zlWP5hV?v{$IK&_n&+((r(nvyN z56HoDv6ikZGnukjL$JwOfmWxN zUZDry3w`9R{#)oI2=s_z&lru)QJa~CPs_q926eg^=hwDCp*4EbAEg+w9Yrn6B?6R1 z$WE1kFsCEB8@M`8spx8u4D&)QFJ#;drAdFJ>%WOL5Y#XnMWm$~8q>c0ftfN~zdi_& z$ChO{k|M2Bc9}!X@U(`~;;tx}%=oHdBDx0P+lvyQl6bYeJc&2b$9__GVk|2hPWxB%n!J-Q5#I=6IU?fZlkGT)X+s1l{NhcCM>7MEK#1cY!{m3 z)oVm%>8>xoum4nl=7aJ=79Ak|t&B~1tjx5!?CB_rTH@GZGf!+o zS$D+*r8fwJ1Y{1aPAQfMeMGOm;xG8&|JbM;+j|@mwMNjJL4HHVY*`LQhy+%#Ulj%} zceUi_yVWL8@t`MMi0Kpf`v!=nr&HV&)k8TjxbO)4iy#Cku?coL z_NaKm49roCQJDxV=Z7cHmyefN8n5tiswU+n!8!XZ z@e*=IfzX|yux7N*t$)6d4#{vko~U1;N#CM6aE`2&vbwM;bCCY_49BG{5gSpnmTq3S z-!I1&?cR5!r1wVCfCNu@#aL56-7+I5Z6A)O=vKz~h3QTl9+?}!vrURUpudju$#g@v9D;aoe>+y1+Ls#>5LRKy%6{6`_9-yemzZlw^k{iTs!eT> zwe@ATC`7P=sDl5E-yFcEM5U-36!1bWjc{AMnSP4FLoZVi5F5DO&OVG5)}%yp% z3`Vw`EO*#XMwDn;xtJEYVF9HnXL$MWyZ#I=)FjGGKE*9Pixrf#sY3569p}U$>7T_G!>G{FgWeixAA~6 zZxkkQ!}NTv^AX4Ika>GAAl$I?BTDHqDshqR@?{1Y$W;5c4~1?f>LcZHW{*`vq-H_l z97ZfQ<~E=sUkK+_brYo8bnTs5l_-z*%u>@-nPn1o*@5MjGxsKK}j~1lwPrCJGgQf-kt6Fwwx7Km<7Qq*jfhpi5l4$4Jw_R!RVh>4u z>>)~uG3pdHpixbQ;#i^!1!D#88gId|r)1TPWMdKNG=gOINfsD?6>zr7wf;?_1@8=5 zNWsS9e9neJL&+3N@>e9_O}lq#Af@mRvzyefSDWj@d>*3c5Xt&10i|*VMLLv52)C>)Nu}3tPQ^F?|7@}dQ*pAZY{{+sc-(kx zGM%t>4CZ6)+dg1@4H~$jg)mH1!)WI_P&7gqio~c8FJHtYx&CbH7M$^^5bCfm`^ynX3O%s)STnYmJnx{F|U5QNQ7wC7AIrEsmIsfkdXKvRlWyeAFHT4Y3mu%tvSq( znDes}7Fv;poLUu*Oo+T;x}kZI%=2G9!Z-#*adlVdyI%5a@W9og4c4`Y*ZPaDccI|}kksGA zAK?n&uha4o3@Lw~PArA5K@@v>%xoifErkCO%)!XFPYjO3sBwdxFK`xkx+Q~rN-mmq z3m1u+5+Y5HU4#W}9U#lex?kV=?Y5YBht1I}HNDA4@0zwVBaNt92EP{+=;2v$vI+(h zh5bp{$c2Ek@lF{UxZH+T9FtGLDtIWr>pMeTiH#I{B8S`SIwF}u z)b}_5VC|SoSvW>~G>XIWN{5RZHF5eNTG`_!rpl4^*~jj00eA_P+t?Kd1jf z)qhdyzm=7hof-Cj_n6uK2XQg~7sCF3k*iK;%YIt|)o)D`Svc^Rjx2j;R@UW_j8f!K ze05SM#TJAcrV?lB&^$ah5pQy8*k9Ox^j}BChm5ninL{HJ9<51pch|>Cl`8OyK9Ur3 z$aNw(X6N)jz0?UbP$*6P4Qd%+H!@?U3^N4Q( z4rP)=%YJ?+BO~UxpBW{b1*NPw5xYgN;Fq?T6)GL!{LrPtZur$TiKjFv+8ik>Sr41y z*(>8Nx_Mp<+1R19BQXp6#c)J<-RiRv=k1e_4RXFAlY*&9>ztDF?(s>&~&Z~(PbGm-LsTWLG0OfABiX_rPo z`*uJx;#seNXHNqzKs>XRtjOA4KC z%IX!zHwu(1HIYziWv}~KD@24^|gWod^!AM@b|Rn zD*T(F@K+iNU7KeinnE0w!w?p*(Hj&knT*CP8;_NEvV;q5$hP`AxT%QSD>a$l5vqs8 z+1$d{8jBC0OflRoJX^{)tUZ!E0$*Gw)ryhXThrBNC*#=-sxu}3?ZdrdCtCi>y2a?3 z4?Z|Y&Up}EAl42D_y>1QG+KMEOj*u?igATJ)ascIaTS?1}~1Re`I?*!&*DOcx_*w&Abq zMeq*QF6+`AsN|Xx*Sg^x?z~SNrHC-xA#3^8hQFsuaIsQU%zBk#)~fdzA~4B_mmOE+ zKO1018BSxSi*x1`ep}eIToN`7_-6y~NWX-3wdTlPJ@&LAa58pSkWxf8^&HC-m(sGA z7|aTRp0TpJv2tpnSltWvQ{M=rU*R5nnL!zi7Z z+RQ}SD>$qH`Y+&p$w|#^KoA^E(z$kpfdED}P`YENoSc;R{9u8>tdJI?p*F0&*Wi8n z-l1ek=$(F-eHz%E$Wp|?SSepFXl=Z$+**PEb_F19FlcGyf<=D=Gr=kU2f zM?!h%cdIk{{o8r2DWE!MziiSa?YvYqDP#}wlYbg(!_#>EP`iF>KY(9FEp#a&q=|ss za_3jYoZ!kQ5{bU7denxZku6uQOX-zsYP^W3H$VV>n2jN2AbPiBgu=qKxj5hx(^05k z#UA9;Tps6W8ZtEW!PfV8e!Ohqm^t$4O(>dEYuI!DvUk(kPUF&Q;c4^RlAK+{1HH@_raF@r#`Lgj2dDWQ){x+&C zNJ0l2*(Jqz{RCEDe0G1EKekNFgxtSNh+DU$ji4lC9zM*j34Z;(cz*aO_1Cm5EMqB+(l7`zTh_G>|Xcv?%UXAE+bD*ToT}3-6j{c!bEp z%7In=CZmvklmc_sJ<9AiWbXI+CY9Z%A%V^;@i$fpT$|CDu^(d91DSMy1v|ym0G&$O_WifrbC>VFTY@T{K7`@1 zWSsFgzIjYbkP4?b%q3Va>AfEBxP@jZNi67_{@gt8IU}G~+3i+e)?KO7uvCsw*85st z^XBGPa|_4HQ?EIBdecNq!+58}oT^4C>mE;m{Akl!E$}lcUt0e_y3IMSu=OoC9rw1s zf)4>@I$91xqRlH8wyx83-+76?qA23}fzK)GaQ8`5c@rn1r{Q343zGKfAIXI#KooyK zmsAR3%8T1NGD2pI2uv#&fP8MK&bWwkeK5dm=l%ewN>IStj$f`-4!0TLT zkJhf$JNOItTkHWEBHgRDOhxwNl^3Ea-4ud$=}Aq#a~axL9k;eo&0Hryc=TZg%=mUq z^85x)KyE9q!@PL=gmxOhui=;_yGzW0td|s29l%t^kdz{p{|m9MmEvm@AHLrI!#_!M zXM_%k(a?}E8dj=crQOlTv2!}ftBCNO?46OSZbR8Z`37T2*_+y=VL<%Ax;n)Bk5rQ) zJ@$F^iPWGL!vKde=BaT*fLs|&&SnWAZU&rW__)J9@=AS7C>{XbUnq{rehQsb*)IGo zzh6c*P_+v6%Si+PQ!>+#ys7TpFM~Pib)hLeJBs;s@3~o$|3`32H5g`SvrDx?Akum# zYyeeCykwhEuD2BZpvr^=oQrS#Ujop~t@e3dxm7x1KLsl)(kDsI3$v`r)fP5Lo6&L8 zQJ>{N$WiwSm#c5ChY@-dYKp*YdnnD#oLrszg~}mB_JWVvyVyPf|D=M%P}u}$CUkxfVvY!00G;`8pq`Bh2YL+5~ z%Z1I;u`*M3YO%Pvdy>>fxh4K)(lHxPO`}no7lvHx;?m*4V+#jSL$aA6JHog~Wp-I|H35faq+~ehGcn39tHlQ|vZNMh89O18h~&nz?*t5(qFn3dVE zL{|qpPpTCwFk1)bpnb1xVN+L5u7YC}R5j1epz)N4sV>G#s$E_Y29?kFyOGI}|86dX zK{oR{EsiRrHhUV~Qi~Az=0t_;VCpeRF|bt2R>x`aIQkTVJToKX-pp>Ibargtu(E-N_?nmhkKvGeMS3KdvZSQ@b$S7kD9iNr-!>gp za1%wLC=>hmJLg}E__X+XEh!P*2@hKrZ24Wm_>oDLIb1XI93cGHB#|c!@If~Dsurb((Td! zScwDA^(nQ#{;$Ea!$tSOCDJv1wZLjU`l0+c13wbZ>yd@ilKT!c)(g3NJ&*D$&C z(r@BKwtp>fMg2Gu6M7t?cr|TVZ1ThV6mJU<1%5vdDj}E6`=^XgqcUti*I0vjpJyi7 zM^CNc`8V!@PO*SwV@D2>G_#u+!q#`_=d4KUdNj4C-rSwLuOSN4q@6uUdz1;V~OF8?UYNi^Rxn?31F?6iVj7dn*)`iDwTgfeT#}}S}UNJNoyMgnA zWT&n+^$YbE2e_K=fO1e%qoXac1yzANq}nJkuW7 zPMd-=7}h9zlC2mfj=!ay@25XQ`wSB^-pY;WS{uk1uh72ys97>q63H2#nwx)rJ->Il zHd|O}q`wSbdaq}W&vA{Z4qpAGOKVwSxB6QSBZ$w&qH6HZRxl7)Jp6ww1E0NT;TUB-4DFt_Kz?%L!IE-pWt;wA!eC6>a z*z*8`9(j!&XXQ1e3X<6#f~ZTcdc~3dvMq+T+qL}KZT1T$R{7JbRhteO#ioqt3E^OA|4_=&-vjtt@PU(DqWjsUE8qxvEl&B{SdzM|P9K zvtYPfy;Ikfx4O?DE-ptlVbVHy|y>GdYS#nnW+l&`sbk*$4is7ExjU8)RurT6dH_`zf^!mjoH88AY1O#$^-D?oq5-fm>pHtKYKQHV+6^VoS8Z44*WZsF zVVll2cQeS;ohe`Rp>)0qZxb;NMnd?Uv_WJzW&oJaf{9uZmjJl?x zTTJq3wrL!X#hrQ!aFS?8!To>yicTGTu_G$f8*H7OndY1+jY1PQ9CP+r=D|M5Xk1YC zO8i4N4eALRM<*6AV|?^*Cqm@CvBNQ4Qc@?puwK8lf1Yi&g3cT9sJVGhqH@c;=B$_| zuYxx$n`#6>mlB5yS35@KyRGVtZzVx+Lxh+(XKPjx9LxS#Cc%NrRZSX$hKWW8{tnjg z#>_ZF@elcJrM-A7=Nbi$FYhY794(V~b~mqrxh#g2D5v)$RGhJTWCK%jNB28Y_t~U`*Qbd<>gnrE5a^Hyv0(r0|y>T@YemeGFblY12S++;4GR4Lu z4EOwgxwVJ-PSrpbSI5vj?Zqg=Ts6NiS0+q2^)as|^|VRwLJVZVCM}}4A2QZbaX^|f zv8eA1Y2Z^zbvw4QM~)@JTf300S*^egA~JyPwJ)n70?@rjJ_@1l(PNKMq`z0NmdK|8odNwoxrRE4c{d^Eam+giILCM1 zP%P%i>MiDI9PIFLH&1A|f(aAiR+^BH-nMTKN+4rJH|F{n>5UZ=I%?wwg+6doXH?MM zj8cgOl_c}4iM)(3VgK4>veGY5Zj+0H>Gi*J{RY4AVDeh412uIpDva_JZbRIZkfoh4Jcc)Zp5i|gjH6ATfeQWGejVhos)e(vi4LKi{S=3 zA5QpN(t_;|idItY|~+#cnqqyV=x+iFqr18eO&Z`-mD+JL?y=_E9-wz85z1xHN* z&-YRS<+rjfPFL6Zs8H^iIe^2vuVsgyqodlNC|v@D11I#Z*U20td?4KKxWRV-F_{b; z#Zn<~-bFXOX08xoF9I=`hr7}0DEpl$$tp7_bgL#%ek0;9CAAr;;%Hnr!}MF<&Ue;v zQG#yc^-_=J7rB(TBh(aXH8KaE$aAC4Yv7+!8{``})bLM)2}4nm>|giD;$nP`*XXe7 z2Tr?|l4K;*UNuR<;41Qza$V4YZ1Q=?L9$SwdFsljy?m<@RXq|Tbj-NSn9eqkpnrxl zd)DsC&w;HXkb8tWXx|fSJ;4r}-^OA^dm_CoGN7roxa==3pgiFb@3nnrf*nXq7xY6i zl};#=)0u7yMs!&!(D9AuMQ73%jTCDIPi;@uYoI9$(K)p?Z-NsY!;Y2hTZ+s|ils!> zs?gbfF#hWkG}C%&_N$l+r-L;)_7dnO3d6sp31x?9=%b}(lZ5LKzgI?ZtS9-#_KlfT zPsj9As-|0>22)Edh-;I`j&25Pkuv_W_SgSa4?Z<8xv4hR}ar{KId5Cx6dCjglN-p@z4jY z=_s10D&WR~HxNyg9oepIIgnM0ihQp6feVMiTkYT=mFQ(Jq`?;Eb)NlT>Mo`Tj%sR6 zg=l3ir?G%Jp{aE;KY1p&ES!!kOorq~6s$h+1y*Y|0?M|UEGs}3vk1>4Ht`bg z!e}+Rrcpj2+8W`v&)Mpg)iGChcs4M|*1$f;pIPJLM0*Vbh5uLT3LUXyx9$k~|i8fd$m)>=S_uJ)VW` z6a$wRe}%8J2Lv9=WjF4|3^M+Pt26)2qO=v3>Fhmy(^&kQ60wUtCY4Uf9o7)Gee2aU z7ql~BDew8FQM2YG##s(4BrA*rAu}aQV`3xDcv2!7a`(bVT7p)E%s=dr*m|T2BGhQI zDz#7DRucNe9md^6vhnV=apvq0wD{1^dCMc>`xDY?)!Su-P>E3gk$?mcbHL^|-=a?- z#`2Iv;vsbJCKv}f0R~c6xqIr1+8q}achI=!@Z0t}P)9%}M4@il9`Sn07F%G@fjC8d zPwp*S8KY;U-t}M$Y`g6~r_aWt(3j#HL|!A~1}&oWVp>T*KiSBs4IKbfh|%ARiHFQb!O!E$)nwmwrN8H6Rsj*XedCD{cq<-Shd$wV zF!lvtAzbCBu@G5mkEcZYpy*lE1Z>KaHlw>%Jl29?11dEx7ue|*wqu{&q_5pEL0?=ZUPEE07g42 zYrx9B=&UjknnQh>1w+Kwqq>PsFuOVoy>F6&Rkn-?I;VB)7rTJmym?%-A{dX1eGXp>&|5T|Kh6(l@u)FPLT zbv#Ey3xTMqQDtyGV$n-S_BdG=dftq#1IU{|=){POMmU-!Dg0M^B+(!!fV2#fW-pSS zqTJ*Xc-f!d%iqoC^ZH_PF$IFFIZ3XC_ryO-zVh2>aJ|)LV_{BJfw;x6@g0ymj8QY4K4|1ynMF` zaRM(?_OT9p^i$d=?qglSyCT7SDPPk2^;bzDRF!*~&r^+j+%+taG{Ygnyw1B!G0BD{ zkTz%;Zy-(K{(LGhD-kdmbG?v+ROiOOQ1z)1!1+jAft+f8_~)}w{8wN7CeAC^rRWuz z3;P_oL8xQ?ue`YkALbNdbhjo!*`C{2kfKhhRV0MFD}0U$rn{mYmRM{}eYjj$B#yRE z`5lpor&*epLIHZK!LVW2I~%4qH@h+1nCB8 zYp6;I3!h(3?EjhXxn#TQ?vD>_N=D9Skwx`zXs#={-JkiU>qjypHN)MpqXN$iz|aou zQ03h1M0pZY?y*ewLOBblehpw*>|1FwtGzwZlz}`MrNW4xc*(=ou}uzP_Jn zACRt*h&>-}zJOuu3*C&KnCb}!&!@3i#ZLc|125@L_2= zs83VQ^o*&vb9*ERp1rzMDLhFZrK4WdD1>ei)lO><-8`Mc{1LLh7A*l%LSnddm$;Jj05kPIm&eh zSSnAqHJ_G>Lpo1h1djqH*RRk!yGZ)~{UC$LaLE3c2BBnnDP>V?|DfteMk7fOKq%fkZc0b1N*csofv6{&Xyoduj38ELD5lASBM2>O#=J7 za0D&ta)S!CSHgSd<`2YB*7ujx)#1Ho=gjO6iu84hDDGi z^IIi7e{`EQC(`_37Bl;)TiOfe*8>O)2D@W_pa$Tlbm$#Dhy;h6lmgMU{KN?HXI=F? z+-nE#4--fO3r-1&nkLGhU7cH_KcU=A&dls%^YaN0@oUEGgHD!NQTVi^9;wBp5}DRY z`jC~-PPx|a3*;t-x42omozr@}J_{g_;xY!ZF=eM*v`f8)SQ?MhbgFjP8%Z_JLC}Ag zLjMZ=M^XKN|9lB56IgNo4^Q*I{LBCHG;A!K|Hsq(&x}0F|5ZpnPiHH6YYfG2uK~MX zYJJ5y76;y5c}hLG*D1BBRID6dvrY|zj$4m}1QZs;qqXe|`X|j-*PnRDWf)$n-Yi3= zbqOp}_Vs+Z!smoPikg)9hglG7tC`X8^r&1gX0rY6_2lXsN0kxz(ew}b{E0<#CIxjC z@F2oBR}*K{n%ja&c)D(PMY>*=K)m z)OwD~1N~#@7pdCy8NV`-eE@mNZLtnR%*s_m0La>fXMq2{j7C$&|LG zo{F?KX7fzXgR~h0tIi>AgKNB`Gu;Erv}sI=>ZJMqox8i zkR#LSPA8d_#T3UA=~}E)Dz)y!M*0IZyt<3r>UG#&Fwvbos~cS{HJ5O6E(h0~3hgf> zw!Ue_&1A71ZYTCp^7bl5)kOWSG)s%w9c6t^$zv0$o|D;lRX&lUj)-jcZD+zcn2;So z?T)iKZnJnaB51Q?@6`-8pmHmGV48QMZqpvlra%1-NxB+JP>yOC%h(gb(D>SUFYb|r z#@QlH&XK)VZxufi4C+?8KPBda6Yt$1YsfaCC(4_e-dY9_%2)EIF{P*P>*W1%y5V%* zuooUb@pvD^xZRtclU@KiB17BCKjw0kw$sN&Ve(NuQo$fF1ClpvF4Ua6`R`h9Q{g_f zyr(feO!q3(_N%iON|%%sANdDJDuE6(`!EfF>nSC_n>Pl5(HZHC_~+fdwF0N5$ytoj<2<7&45C&e?2h

4oA7cB+Fl?BojVUI-yFsI@Od3Kg=C@85FTVVwfvXZ;`m z>63u7Xak_iiHemlJmHeQ#5I?427cw`i&kJ)?ceyQm+04=)cbMvb^Ueg|8c-!wZC6e zy&L)_7Z`^pP~vVeDarwSmbkzd(t%JhbDv&hdy4v-BvqA+kJDc_FAyi$I8C z7B^`o3(7@8u}>lwe3NC!-CU@R@ccDgh>K`qzP!53mU^iHK6n!rbWDd@qFd!x-pR8*6}p$H8Zbrwtpg@?GpCKG z{=7h|p}tJE|4M?ObxH#ZqRuG{L7hg@ZMUNq(gG{wqOh|as7pi;`^ZdCnGH46qeceF zT;KD&KHr!q<~*GtsqUDLwK@W2h&>9{=J1H7pp=cRU+o9h&m1pBT0tawRKEFa`Ix_5 z5DYsf0^J%e#&O2~3luvFg1scVJl@Kt)Tk*cM>r1se4tVV(K=Ps}?) zun@J%Ta=enjVOcjy1l@IDyq%B+472@f#1I`%2pF5xm=6*>=dnN+V|7>M0&oVQK=EOf5Jj)zLhba;&C;+P4*K#> zai9NOsu-I^iQRi8EX9Klc@Vt7BjF1h1}IX}y4-hgB@vIyJ>qEf!;ZCwkm9{a2!F{t zbe7X34SyIpDTXRmJWVQ&w6{*2=SfNom?yYw1eXR)QpGbVXG@%nSxI{RdXJgz@ALjX zJokz+JrQSXmpVnWg5gPyW8bKo_nt8=tsjGzYXkDvraq}0R5h(%L?HeeK7a#RNpY)r zL|hBwf!;sSu-r!Q*BkuJL5ck`PQy2wn;YnzQc>=>aVY0jVj(dR(zor<7)U(bwP#oD z)9DLFn>r<#9p@3=44&fz;zr!0xIsrH#9}TRXSqjrEH>vHS;6AMlJh9{ilyfGRarY2 z#C7#sxvXw8A~IJPQeOMY8d38i@RcQ{vL~Cet7I;n^>d^qB<87ElwFlU5Vu3G7}cQma<(ZY?!;rimTppUltv6w zFp*3Z~Rx_Y~KAY9SK_hv+2gltydDf&;n}-Yq zKv|`zgp)V`2kIJ!C1j|I0>L}gEbd^3JT%>?WZd;*aIua&VH7lxAQU^2uARd|9b7!sB;DFlfqLE{a`vqqlDlNzzNjxvn~_ zQUeNOhApHSX;l>D>*zL_h*R4i%`l;f#tE@wQ%aUUJ^ zZdo}$O$*jW0wC>siEWwv2As4;#$NVjM)@sy;L}<3Y(G;7`os6n6nWzRp1h=?x*_^O zOX!g6>q#3)+3CzkbySp-Er0d-k8(p4TG#L317nd-rO1-Q#TV)}+Cfv8vowfrJzu1c zXMZN8w_{2ZJi6gEJPsTm6QEZ*9l@*~99_4BbKk}$&siU04ZHpj8Rc{LBLxs$46=G} zg7a><0qD5&K-j%=CyD4y(^t*HrOP(2&4AQ09N`3tB!}yH#dt-^pi67U2rD;4HD&e= z&(6Axn+TQc6H>B9b9UD{T3w#mPL1ej0t==Fo53x(tSW+0-aD=~;q^NmRGCWlxmB1l z*b6zWZ&@RS=PqS{<{)vqcFobK_9rc)}$ko->ULMPN zaLZZN!nFz`wNzFVu%}?6W1aOOlt9^IwVNWLB*u&%tZU`2lO+89#AD+~)$?+NxKU%O9&OmBHxGd=OT z8ZWpM89noQ5jmLt5+@;?tc=A*XypHxYXj!;Vb#7dcJxg?9Z)N3=9SFOd{3Rn8$7Dw zNb#Ew0kIEUy0a4^y#b9U-*n7Cl!m-oARx#NlldAm>{>}b88g_gxLxk3bRM#*az+sP zu-pq?OZef{MYA}kU(wLNr03s7tBhgqMT=G)kT+U~pQ(JMub<3Sg)zWcFpXL4jMkI zHOvke2aEFtHKEQ(wfU$-J(SX|Uw37Zj8dL!Vfk4bfh)o4LZs{k4Qa1bN@_4bVm9je z?^0U4wq|dQ8bvAB-*phi9-4vuRCy6zF1a?UyE*gTIUCQRF_ZEeFgZ#tzPh&f>Q8FU zLT|^CfMSYj&1~>3s1~}f)5dWQZWuFYI2;de3@ZYVc1~yn+ek9L=)x0-5<07F&rjb? ztp&cLK(f!gwsvKNEIAW z9gMQT6{Hr>bKo#nXxl51dm8+m$6L%N_#Pgc6rWSAqZ1l9IexJ3vyhEAmq0{mRv3*?v|L}rH4)^ERS2Nt3igFlMvv+RE_>K65K6ICe zqo?@$dRlc(j^L%8sPNo!pysZa>JjwjUF5^Fu2E8-Hu{7)&33W^jK#rIz|8tDE%5eO z=`+R%SJ0K-bp?bWfKsgW=EH zSL=mW$l)wKra`Z-)4Q|4FF1wASYBt99R>BVw6Lx*Rx zAJlW9P(A0t!Y0)YEB4+PV{4~!RaI=8YdN5{`-qcjSlv43B}T~ev{JJrus*fvDGO|> zuP$6vJNG0)4&Owv8VqAw2(xvkP&S+v2LKyH<~EF4@ymOh2)f*n4YJ^4nH*@fW}WQ5 zj(s?bk#C9W<#KJ@aY;*(4!%I32=W^=P%o<+BLH^!gd=c3ARLRjUoJ7f+eXoSAY@gV z>n6o8@BIre4u3J?w|il<9trZFm`sA(sBJ|s=v%G0wE=;IMa<87QKYUr;hEu0NSBLQ z?<|E_5O%FAmZ8(yd>aVc*MZ5kr3QytCzRDQsJ3b)$`{*AQ|dEkVG-`-u$-FqKd#H1 zUd~j761^~?*4CU%o89GZT{rd0b(_>0DoknJ_9#1*u-!_v=5=c~9s5xY{t%gocFbHA&8Uf7tqkKHmvK_36dFk~%#Y^ncB{Xi0yZt|H#51OdB>Odc3p8-LYsPf zRYZ}FxaelgF;3{nLaJuu8Uh@urbJi%H= zN#D$D{d@NBT00Rd7HV)S6?%DIv1#WuO=X;&S?sVdFVuFTzv`N4|9A+l>p2UP$)a|A z|8gc8DRc|>Ttcr@H?#pXgVU$XMVOMC__A5+4Z3c0p1(CMVsRUsBw$ZdJ@sEh{0F_* ziL(l4DvQ)Ryd!VyFN-eP$un!Ni<_*3uNW>IYMyyE)kHgcAeqxefwQF$7_2C0Wk9~a zWb%X3F6qGqPV=&FtOO@K#kr2uJ+j)?p*1&oH{8-LGI1+d_iZ^*@NJXYde43c1_Ql4 zs9+@X;u5~xti+HEQ>s&WUYJH7-@%Q!Ot21qO+?g1IL)hMYAk7>$ocjbRx0Gi42QdE z_Wi+)Jrj0pwH{{|m3j=sffpxGqQCJ_+`8R>k~P(a?#~!Kj_P%~_$?~`4`c5TBwDbb z>y~ZXuG(eWwvAo3ZQHhO+qP}n_TBG9bjOQ0lOC=48f4_JFCDPwL7PLmH{bJsTurBJ zwyOI4sc<67u-|Mn|9Aivm7tZYoD@F^mDS7KV<~ zC6M3J2wUW#;#De#qaYf>ZV9)EP%FghXTBx15n`7#{=u}J|zw6$>%8u|HrfdEhhcHAX)yD%d; zP1hkHF!t|g!Cul|oXrmbiNcBY7{qI=m&>vODHi5gB=>NHo*>B?iI!;7MlhntWK;jp zMDZnAc2f!EHS8V!ef1khDhq(C;~QxIWJo;o0CLvRq_!Vm(&>}SmiAV5DeE)YeDUKF z&9_#wov7J?mIz}58a{;7r?24;Xs1Gv*y%RSuvsz zM(`srxkZ`3_$SPl#BjinVT@@;eJpm!uwE8l7HVui9(CmS;~gO=CnyUYu4ZwF;K;++ z05iD`3SUh8ub-%Lc0+WCSS+C| zTboaB=SAoS3RxL^(U?OlC;%0eUC4Hx@#O}oaOeBPPsC-{b~Erws0`OgK$RcrF$4@j ztV0Xi4fM9~6*y zQ&en(dKW{N!z#rwUZUyR$Z6{Y+}Qr`YaB=`LO7SOKbPIWl?H)0)P54zOnD*V!kc%$ z(^a6vGJB+9eTkKS0x|DrX?+YwJ;ew6(BfSuAO0KMStpyrChYu15%uiBCzjPh^5&+8 zMooUxt;g^f!knv4=&{H4K;i^~0a)7rraIT^K6UvBxpAvO1zG{8v(fKmEq?q{5S}XR z6s&c!`&a0BYnFV!HIhUHX0{q~KlpapxdNXP;cS(y4S3|k3-S?%{J;lR9@ZgnzKo$Y zTzYb-O3LL2p!-f4$VSrO!^4dFaTIXj|&Qsq|RhmAQYIuYHeHFNorx|X1rPCD|((k z*dEOwnmmpfklIkh34~ycA z8S(r{8YJym%}hBG1UyJd%9jeb6MZ=8nH0+172g{*9ZGOKidoaX4vFN+06Y!NE=$2Sn!)XyO#$_ zE^yjW%=#hVReU`d0#SeZRRSrc;RHNHHs;MU8jLv<1hJcr!wmufxT)0yYA;Hz@Ng2$ zZ(z^&u?`OF-$|IZE6Y1ZQ{KVa^#J}3v#WA~#eGRS@fcCxwC4V_}@S+Aa)SrAGGX#{KvdWg{( zV% zAYX8H9`P9T3{ykfZ-I&WgUlj>3-9m|Y68&3_Ec%pM;?bbc>hz9A#`k#&eEcFmQLG4 zq|mquqRFcF^+{`V%INF}*|Zn-FbfLc2~=;T@E}j6RQ5H3IC6y}CMsXbXcvrWdR|{q zzMa?sJQ85>4mh0IPWW7!WF=8VOcg50dQr4pXwfSBM57WkQXJ>^*PLo7X8;ehSu4K| zfb}>ARGM(*jn z8Th4n4uT)8dtaS6p?0RYNNL5-y|1cn45~k+GG|a`rbu@SJgamONR0G{eX#2-$v8gh zXx+4qCQc#f;(TvA6XW8u`+WpnyuUWZi*=D89*>xBD#-&-Z%66kbSH7Scp18A6C8wW zwmTj6697oX?Ih#)VSa8IV7*}*ATap(>ukS6=TbKPm{LM##-ttWjEkkOrTfP|=+yU) z$8WYm(?z9x1<*pt*$ha8-kI7qrSVv%euhuhtuO~zVDiCgH%s%c3y1cHcA>X-1A5F0 zGEux`n{vE1Na6QR7CIp{Alj4?ALM=qDkHf#c**r#hf=&(9nzse=Tc^rDBxlF=Rm1w zKz0u4eDh;_Mx8)=1F;zJNBA`p?7`xw*{*Y6YVrpxig%ufz_0$(u^^Ev{0KOiVhK6t zK>XnwJUGp>`Ol8yE&w?zySqJkm`)xA>{*x%MP3cQ0};H#3o@LvB7twPC$6>=k0HuI zX)AH>DAz0|l0@y`Ej@JRk-)$J_uIoHa0jDv(aS#hx~!JZ7`)?}2H8Ht2cVc4zOdRH zJPv1P0R{=ay~{9J4+i#NQ`2V^L&nFCjb#+u6ZHO+)0qn@N8NRnQkl~)cLJQQd3s`pr2_;%XvEVzB3fEf zWhAby2UA}4c6W@OIH1Y}K+Rw3I|k!-1@Yhq3h7(dRU65#Tw`k+gEK9HIyAZkNKBo5 zh7&L|4L5fqM)MYQWoBypSgN#kK9=I(71u>7E8?3D*rt;Ha1FNnDlDMt`a2lTv?VaY z^q^oN{Ehi~0GL^ZE$Zi>pNg)>QXgc>k*7Ub(^^Czau!}SRT4AdKMF*i#xGt!)0wBX zFXB@i<6l?$%d+d-L(OVu;gk0Fk79%SeHWE2<^$7yNS#VsFoy#;_vFF6 z2diFqz!78W`H7@TZ1ZrOm~wA|5?fQMntx~7F1O(8t|Q&r2WKQD*q1UT zW#09T&*YzzY!z3byBzjozN2H0K32BdZ`wCYA%+_!;A zC~0oyz9@0-yWIe}=`j*YO|bNBHKL|dirBL}C#)tczJ*=qDE>UWYHK93>p0a%n`Tyk z{WWylcG&>mY-z=~q|1b9Jw`}Z?~MAKh^RVA?*|A}DwmyT2H^t*h7k?Q#mvs`;?>E@ z$&MXPbbDUVyOI}M-`etP@61B<}E+v!NbARQDk1l-j)d>Y^w{IT_HX4a}HW) zXiyRE3?v82qwyZVl~3m%^VLa+8dN+2be7Ch4w(S zOgcQNC>m%Ht4al3y7W#CxsY&LzFh&vn<_iZpLTJR@3Vuk8p9IZbxt#K9T^W5IhVu_ zx#|_NsF|HdN%>RYF6tcL6W05=e|jdezB_|FVCqO_6pw@n>|He9Iu~tQLqO$T(=_@i z1LgY*?5lwZ@L$UPKZ^W6d;|`r|6N5e{g0gg|0#F2|BG^;*4j+i5_Ry- zt?f%J9A$tll&3(kco!bu(&20(l8Ii~$9Mo-jGphi$pmN$DZC@U68kjT_V1C@<-&mi z#RQR0PF{6vXz-P7NFv4jHvQGEvi&(vl=iu>Z8(y9`z_7PwN3LOtoNl^8E1QCd!#ug zYS-Jlj>y^K+fD;jCwdg7%2B0i*V~=yargB6#aD-@Wz2!9q3Uw#?b=V46p7#J-J0@w zdpyPb^vd)SvPE;x*-$gFy+;0UwMyHBP2RTCHHs?`Kj~Vk<+J`)Rmo7%I9WMA+YQV! zt{@OK!1o#PwE=GAoxF;qGBzHO{QUdKqS+Ibvg>Ts1xT%gGt1-S_}4l9WS+=Wb@o?H z?eyQL$(wg~fZcY=Queh<9NKnr-N7>FW82`OYRci$ZTV%;D3vIg+wdN9V8d`ebyJ4v z$8E+T1qZuZi|3_bh@YiESxy=fk?y)&f+m01!jm}A)gVi^OmN-Ur~LZ^p#dtVePdOqQTk%|@8+M)X}R&b zWz)--$`ZL0nclMvv97zds-_fB)(hxsTMc z*soq;eN0}ktlNgT6sI1fi%0IAtSPMHhL-aY8WY*-u3hzCtt4W9Z#Zo}xzGj$q*=Vw z=yH<_b=uhUZv9R&MAySWp{ZHWNG{i3P?75+ON0scQ{Pq!^l`3Ru{k0!y^D;}aWf6s zc5kq`CME@T#78n=iWPC2PH4&1n_DrWXQto9yfueArHh4VT{)ZCq!4aSMK9YaYmDhP zbJsq}#Yw-yudWL%aFu5blQMhIi>b(<7b|FSdofne@=W!IeKh{YUu5rFv=}g z*-q=FrSYWqs#avd_Mgifsg^4W>Y}!9sAyQg&|%nta?yVU%Bt%yU3J2GaiEJkkuK6^ zrELKQ_Hi+htzS{YZNfj-jlSnTHL7gGkN@q|O{{Ik{$qLdoK>utRJz^6Ka&uTE?#}U z-;S36ygRB1O1%cU>q|f5n`+g0be>{tBSX|68BV|R34|;A*a`>dCwRK z3-(>I0|2U%KKIKIqjU$WJdVH!Ix93bXM+Mt*BTKK`j@FM zkJo*p2Eg^K3ku3$$Apew{P5e}Yxpsov(oNPyTjv7e}M>83Uv0XL#Qr3^moZBqXrMc zb6GdX#caj9f>fWhpca9)18OGl&AV`ywLZIiqB`QyY@ZU8G1cVEh%6EyK%zWAvLc|f ztNU^TRt5J+YyxHsIn#LiPh!bsOE#ci*O-h?a4KiJiL1ha2!S%*fO0S(it;xiOJvB9 zr&sYoryd`c6UCI)Q+bflOvd@=eF%W7ZYIh)VGWf36Ft<`*k>GMMR{<*qk+OJ^TTUH z(+?g8CxcY4tTLClT&MMJ$41maP9%khDHte>IQlcy`Z6w&i&+OAYWMxePn5bVW;w{8 zIzS^kYO(g$(@%_e9ewE>j%Y6r=(n$%MR-Ge6r7EFg86>80ZCplg$icI95j4vP%$gnxHsz@cj75Jg5eM=?#p{n(8?WQimk(36FNA$SrW&U z)M)deYW#I%S_8~rJ9cI=CL(ndh+AXWWBbH%bLGm2l@(dUP@e+ZHd_V&Moe;@W)ebf zyWVfa*@0U_L3x98Z;q{ke$OLPK|!3jN=_voZ)5gweRiO%5fwSSpqX+e~B+@QYuJE|aJkCCPT5 z@OFQ`ZC3-Cs5E4KcgmH0sH`<7eW75ca+H}994=PDQVe$yh!Fs@q&-l9%me-cLES}X zK!07D)2l$8VPAxgJD6OtT9&n8R*4P?E?OoY31U{15mTfuP8qsR?vdtYzJ2hO7K?`L z0ABx9tN=e-JcIzOe~@xQYUm7p$hK8m+2yb7{Hqs#rjLf>SAgHhb&J#o_P=C;5zt@gm5Ws~}<3sT6>`7rg^SU*; zWsseu=u7Lk<&mM6Pi7uTC6pis0;;JRe3sOrBZC3Q#Y@hy6Fdnt@+QomBF+Y9*Z5(FD9)TM3j-Hid0XAVm7yR ztTb`1Jo{NizyNshYfIP(*!h8oWbgb7Wh|MSvGLe7Jf`+-le4drn$ zo@0(=ryuB03bz_T6t8S(pbL_F75e>jX1!k=K6Yby&?av4n>-}}6$SAV@Ru0x+ENaA``f?})KZPbQZti5Wn|klhzY56EtQza>-7!(=io|llx^6~*C3+G zXMqOl1gcEktB7ORdwp8(T$)Aj$7_#_vH0VYsvk`Wtwt1#h=vQn9ZW(qAR_s%T!>Hz z1ipMR`>8}glX=dncdt&9)2UH7UKGwEx99l5izKUp4YoG=N=9F^wZN_9t?1~IUWv## zISt$r9U>i|bM69X5CxRW0;a+4#3p@WOR(`D1V-FrKQP&&7|{|s6x`|dsP=m)w&x!^RAhxm@bU_^Mx}=>he@I z3Qx<-9z(g00P3YiDHXXlZS0JjyfQ1Hlp6YRsVjV*p29p^lnQwELYm$g8x?O47c^Yf zs^9}m-y@i6A6(GB6@iGhNQnAJbBqY^2z%r2BTuawxKEhkT#Gnf_P)K}<=8{LGLQ|z zJ_`OOTlh;?P~{`eQ}8+v0NScoSL$La61if~N^mg)aH!GRSwXlHwDcjkZW1Z)M#v!V zbDf{vUF-=2H(tIpH;{MAD5pGyRI@`xVc-Tox~DLd;k^8m5QC`ERM&R%V-tb3dy;SaSetVED8){> zj2G&;v>k_Vb~zrk?6!0~q>q+c>LIz9c`(YW^0wByI8zw_^_Jt>#@_BWYD&we9V0^( zxpE^4j#!FM>F)z}BL=TdjBgCHzu=Xb^RXP<^np9xEO&!3hjB<&U5~%7jw0o-+MMWa z`%c}CJ9z6$wmPEAtWwtG^dOBTDx2QD9y}*;t8a$3bbFuYdkF~4v%aF#B3q|bpGM8a z`Ds6EQ5)qvCmeK2XiknxEged@C(DcmlGW+Cg`Za7<01?K6DB3g%o*wzKwDBGrBHazy>Ej(kF-7c#y76eqwqI+`w^l;61tB@6(vc=?X()8i z-^ihJ_o@bdu}@XwghrcDp3=oYtgfVAMzN5PXVdXfcq0O_9YArWd8eb`W^~0)eggn} z36D2Uev|p}jpu+5!2mBYhu{%n3o{&5*^oZ<@ObY9ubeWd28nH85w+2Yx5)!ruOsxLZy>=0io%=%U{u1j#KOk98BB1kW`UiQ)U@!rFCN?YH@OhW}!+^ z_JTcLk)H@P_H4{>h2YBPANje8rwJHw9dNF=TStloP^cdUFV`-nBVZVDAvQ*z=ZSW^ zY~2(vvf053A`QqZR92rlwJaLtdj>1GprP-2L`yA}M+M|L7hKZn17Ckhc2IkYsdV-K zku`C|Q|)gGD{MJ=TmuFW^dTM#bvEdWkSoiD- z1c8)N)i7ZpkDU#*o>7-HR27JlTRM1MH>1nTtIffAEKqk8SS@lz52a>VzSlxR#xrcT zZJy-VMtEdPHFHq0qOc80zJ*fIG}@j}7W`kP=d90d2APYRJ>(Uhx~(N7W?N})bq{*d zp457okV<61zSDraKB-!=xkxV%Xq}K=osC}<#qvkhqx^JT?{$e{u3SQK0-El_&b(Ln zgt2t7xGdQyp&*hDGR)yS3K(gxe6;p;`lHqx1&cq><_rucx}A0dJj7qSosm9g@X1Ul z5946rVxR2J?(Rm~oP|?^9Uc~8crygwey+up0BOIEw*jdm6nC9&{%)l^P`Wh%eEU)A z`;z1F(dnWu#W01=!)34+Y8|Cx#%G*h)s)dq{WUn1h6JENOA3EV&LnaAjSACoivDpH zwu0%v)XPyMVU(JvSt_LW{3A=XG(~2*l02xgxmdm})rAt0RLe%psDLR0b@Eb>Jhz7S z?9{tit?8QGW|bpIxls#N4exf=KL--0pYo{?W6S6DgY@{ zVOUAqBZRmdf0RFVF|5t?P*1ivZ?@Go;kt=W&TtP`vV6G0NVa1Q+jvRagn8-$`NHgP z@_XRH^FoJ2tCPB=7wh(B9$W?^dK)2R#$R?k8kOXp5RP08Z*bBr>URW@`OA)vNIyCr3KJQ<{2bpcYS$_xx}4*@ zF+s>^}n)c1Fhk8K^M-ciDyc z|5SFF*1EPi8ma&OS9VE&)`rV7SlcGaWDWqh)LB>6pR89CMG_a~pO&W{VLEbSZ)}u| zW4o*E65C-Y{m9IUZ>qQVhaOyO7Isln%jR^h$oOH9L`ExqihXyi=l#5HW%OXnDxN=m zd);1-HI?Q;NasVlJX^eMbk7Lm?$F&kPw;W{_ANozk3afH?om{ofBvBPd0M{uuvLeM zWsE;6pt_%XevnR5Nidy%-ly^T9JZdaF`X}cG8%FJix;k!zB@O2suA(0(To=AxwF$` zd2v=FURgxtoNa-`RJ+=}&qJr%CgozAd0!EGQqj=n1>+7Hr`a{G{ zG~KBE+jvu?Gn7p8X}dX$&-(I59%tv*odgv5>7*m}%T8!oSgjU0|?C zvyp2yEH;R6+0Mxcu3E8RjLg`+gd(0FYjc=y{sdWBrg%TQk7jQ0c|DvtX-lW8r|09% z@*+f-C@CIUlsH9ECvTEI@2{35p_+yq$1uUhc8?(lptar4fjC!Z@f%~f3~}KCMq5SI zf9U$@ym$>Jm@6o0l*diMn9*1uxghw)G+8mXIhWp=zxxsxkU5<>7*#Bhp=!K!*o)PS zLoJ+;u5Scc>r~;rwzSPJ)s|?Wlwv%ECvyRAdobOi$2^Fj(^FqnWsS%B4CAlbiOZ}$ z9Rui18R{dvz}!?v7|KZ5en**Lj!(Q@O`1f=O1H$jCR)_Ked>*SH8?OZSL3%85+E?@ z#&?KWmuzbP&;5I`yKP?V^AXf6TG>p|^`b(LU#ddtr9c&UJW2EYK0L-oM-FJ-XMwz+ zzS0cs*w(NdNeE!FqiwBe+XSznuol&dZJ~}!9@cHD!ACU;jdR85=0rD7AM2`P=zl3p zqP@aY>b{}{qE2IOVE|@#nReNBd9IOII(U)k!!0R)lMmiu?fh;b7QcM~1}%;ejbB}o z?laUt^zAdbnK!3AHIL`k8;_qhPS?Z|AEC{CED(>F!p7)T>HD?XEx(G~VditLo)Gdt zY%Wh&)Mroa#u8LeD_H;w1Oz%_X@2U~$spJf`QF}*JL?FN2dz}21~Fa!(SN00_5e** z%9NJDy;3H7D_*9&oUX8+FYz5kg}Y#Me*g7qfTNv@m42wC8<7kH0&jX#-xV{N#y7Am@IuOHK&U zI=S#c*u%h!B!-j7&sFqNUmXi48L@jwCTg7qiFx^KK9|v?OPh8(t zhaG)*m8BqXvc_X8&ijg;?KIXzM7$9}r_#@?+hjRtfS|hE7+FXtf;iDOn85)S4~`N+ zY;>iV*2t>5ImaNe*;ioDyI!?n;$C9`)CQ1o0Z4t`^!k$EFJA&FWi8rqaZ#vDw)M{5 zbD0{8to}Hp=1_-`>DqSW3{cj$0@zce{X>fl< zY8`|`iVx1TY91=vJOI3eN$1HqHxXd2cT%3%059|Q+jEx3KZI`Lzu0*5heQrDQEn9n z1qE@&P@By>iMP9;_$W^~ZbrUHkJRDPC0-s7l0HMYR$40(O-w^iU}lp(s#BAY3j8@M zhc{|-^N_chKl1ADhj!)!^p90$#fi&J-_c_o(K=%@iR{v-XtspZ`Df+UR4MB;T7$PW zdOG742t-**RxfjUz@;Qxx?vmY}hqhVS zQmUhl5#u!xDqzWSQ?V4Q_FU&E`7c*^tnzRdH)rpkTCwtVE)|87D2K+}?gO{voMfMl+4zs+oHrbaB9(iRSPS}&D^toyJokHe& z=RY@t`@?WSpzHg+tcI?(sss%MKUT5i*d`^pQ*(P_9a>W&Y9u zUs<;K=Slpo#(sLBv*psvt?c8aKFl;qs9VGJ+hieuRO6LMKnwvGDn3+19~>fK2O)cHZZcNcdM=9sg(;UZN?r%^pca7`I6iX6#L zR#$Qr8!8_&U8@vCTT$X$>pWOAf1<*i~I9?ldZIH29&EW zns4Ln`HH!s?t}0NtrSzCoAPe4>GN2VeXc^^WQ~De219KhaOXS?5p~6Qg9TbXvsrh< zicIxGYDT?DXQlZNPSL}Pu3{b{FeOY#?X`8a#i+v(;_IOWvH!n8#&$&cBZMoOHd>wH zX*thP1Mbq;E>>%x(I(=+QrO1N(x$5{opnoMXK$4}$-UrafXFw2P@V`Z`^c7Nx_%a)WcP8+~fz=m?r1WfFQ+H=*VB+fo^?BWY0} zeJZy<9)uH2gmF2sy+YxPr7?T338WmPT40?=cNznet#=+ZeFd*ODzz&x#63Ocpud=d z8of*;&vlpxapLP{1)=$Q%NrD`uXS^oqu}|m*AFhm?>rul>;+OLl%G44ZGkt zI37Lip6->^^swXA-3rtBHf70a;LmnD;E`VKAd%(O(ag75->h*MJBmX!HQVx6Tw?zX zs2n-c4~0ihAD|G5Y@Vc8TbKB0Jr5E7)17iveRv>A%%nlZmK5Jdht^dFd6B>&e*23UF5(w^ly zW0>UJny*$T<4)@)(4Z`5U_R&TIy_zuL`2o2@MIYQw`tTS|R=5`}ckBhs1LQYr&!Z zNYtU~3@oyNXs~ny-AB1|FamxaQ#BD zFV46y?F9F4H6FC7``{x*C#Bb3xOnD3Qi?6f`}I%8fuG5HIlSR+ybXtY?<8iTtsh-?C+u>BhYZ6_Wv&S7ig}s5;9KZXFc-nEZnhlSiA4 z-^!*@>@+poyq+Oh9AlLBP9y5-{3M~jd2M-ozPYCDo}0PgR;0qABcJRgYyG15dJ3;LPA{qFRpGH2ye zH1BX-Q>vorrX`o_ECJt25GTeoejov#>g0Bc;HrndwI{{aoX(Cld9twEm7?8xzbV>$ z&?kL~r6C1moZ9%Xp_1i8u=Y5&A4*a2VR z%LAKnw|YE#YkpiL{b<@)h;JNvdU9Q_(f+9l>8zz@4(rLg4cych0Dlr-i)%b*J?Eoo z9Gq64dLzo4D~KA515yzQE|}QY1d#T^Sg)a|O$dtuD@&P`Kjo;)E}VRVoiOQ{`haXg z;eMRHKNsL_P|^$EoEp9zMA^0{fc0}>COz}jdZC$4S$Q4Lk~dFfM41r#a~hGS^!;_w zd8UM826xY$$rN9BbIc%D|ALKD`;2SBLYK^=VZg_e+;lYjyw3J^%GXPT0`y-V%YVF+ z|9C7+EFAyqvHW)}iTVFjODfj1wB1xi`qq3?+k%Bk+R&uAjf@3_T9Sw!5y>#J1pkBZ z3jAjt&6QM+(nM^cfppbRKw-viGR{jjrLckUg|eh&a`oYFk9t>uV{--b6LvUQC)?J z@75R0Da90rI+dY0_Zzm&b!^&b7J0Zcyo>dQzteJw3Z5X0ig-|%qvc+`!zkU~6!dm_ zJsQL2kVYC>M#fUgEG#}TzEA7svPqWp6rJ|+kc!J@?3F>mA#)pG%x~{2!;>t!%wsoP zE5$bGFdvNC!lhwvm6#de7{^m~?SPIZF}uaxDv(eliyZmgOk%5whJJd!>WYvhSdEs> zPG^y+?rl+TmGtff=H++gIKlVCeoE-W`A>pK3f+M3gVjhqT3cG*ZoFKPhcpSBuXl`X zl}ncqqbw2;Jf7{Dzs`qsrZHfrU2zP?+-*U-8}#N%=#3;MN#%#mlQ~VVX*@?g*Q|%^ zrQEVcCWY_MLu`-tY9EFfYj2%*uR`F2gS8r2`#uKA3~-~au5T*mIMauM3xXbEUODwMf~mwCu}+v1 zB{!$SX*4Mn)$(3fm?%7-7WIg=omZN$lap$XHfT0YN+zFdWi;NHD+BA@Y&K7?M~TUO z^N|sNQkbm>x3(U$5AJaR16)>M=Zz8ku40LF`@fG3Y$HNbt!Y8bl@DJ?eXU}DtsY-x z2KF$sGP~(eeUw`5;M+q)MsKMtKP(-bj2)CLoSVu=gV}vG!70tGm~BhL(=x$!`!wE+ znM5{RUOeOnpkTY`I8N;DhlQ(bF8j7j1F&-@xt7v!#{hi#l^1%KVP6ajdnck~^CVX53#T|jf2P;UINq(gY+Z3}Zf`|4q`Yoc*`*q|xyQHW zeCy87C7OJB5f_&h8pmPFfN=E$CIs=GQ*Zo3TkF<<;f2Aas&fKy#SjuW5COg{hSt8( z=Vm)xcydqvqV35&al-|SfMkvn|In9)B@H;f#!3pLSHuOAmG+(c`CqR9@6_0^J1*0w zoQi*0$Q-5iwNJqH_?nGXXj9p{s`=Y6JjqOgp_LBwNz_ox4kKa2@=`$X`D!pMODjE- zH{#CItewfpuuRU6w9X4R9%D+LCn_EclcW*J0+qcEePZnT0IJ+8*RC2V+~g6^qm9Uo zHE^LI7z2Ofe$$~t6a0?sWZBEh=5&t~#FYSP85`GMazfx}wDvJjDIWkS`zDB~y@L1r zdl95g8w#pG{E9(OMiVpw$6$6&_KbuKw~>0cx3lL%hum60ni5Gh51Ic|h@ec}1Xj8M zxB=qFtWz=)NO)rj2`MT7$ih<`S#k(9s*uvlFDjtK(29l7CPg+SiyHbw4;uzGO(O&o zH4`mOsWOL<)=hNMx2nXO@85!`9kiJkDT5)5*3}hTN171!iOM*J-bx@~JzJXwHg2{@w0!Ou=W+cUZnG>onEjKFxBNO+BxOzonEy~!wkp?n`S zEqLhZ8jDhrS!0 zvnC!jGJ>|mKhPi^6~QV4hv5i0+@;4VEj>ido)LqyIWuV-!ePYpqeb^|{ z5^~Xd((_<-oj!ot2O%cJrKkbT-wWLq6Mo}|@n(EGC$H-bg)&;Q>FLuLdY+H@Np(q! z-u%EPPn#)sxIY0w>S#7#lS5R?ucPniLPed=Eb6iz2To#G!}L=}h@7*r{#2HWt`jqM0AAHql(@mv zDMMTm%$2eTih|)gpsBbJv6TzX3_5ggf)dVp2QiaZt_p3(iFB^(S8bWicg6+2E6*j; zf;_2_$b;zqZfr1ifd@yx4=Qm+z+soJbc@LL3JApQde{!62|-Z*G>Y18&|$&#y_@Q>1^G z7Bi^PMH2+fktKY58`bT0nkcNRo25g*ZtcpyV?4|YhW)k0S8DsXI<<3%ZpR!e(vISK zF8PYuHeS_F+A#UX6gX8s8T?0{Q=+CRlgF!G48msq3deJR4WI*vQ0$OE5EtLxwv`UnSU$M?ge{Agrzd|iv!^f!XTX<+9I zcwI{DzU8|q_pCC%z2{|*UHQ$YWenw}PC9D+)ZLc5LW>iiDJ8!GIy0@=WxN?fw1^A! zU_RNSL5sP=!M|e3;JO&_huK>&}AtQ zu%Yj5bON4SA3uqm2Q~}w=w3RIIdAE)*+;4A&+GzzkraX>DM!RrM;4tDnr#flmJ+aD zP?hiPy!3a!0ehyb!ceVK>h2R6iP8&#Mmb%v{jwTda1D53b*B54lo>$s&|m0Uftp1E zFI6aMhS4>R`SgjR_4VbOTF%~8P5M$RK8)UQYZy_)-)6JPnLEnIhdP> zCMTGFLiUI$0M3xw2a34P!z)qzGl}48t-3NT&!fCJ&u(>->3)s@8n+Pu*3drpjZ+p3 z_Sdd3-6*T5-p)29W(nCBOm7a?&;h^jS(ciSRPkkjSdLyspi18dLCj!^ z9*M&CVfeh0b5*;JUkDv?d7e!vyw?hj&#o2MpddfLvP8B< z`%Oq&6Zvq?{{#usIq6a!=^g{JP^w^88g4wGU5aK3_^qUFx8~A-z8cSaTNM|GeN1cH z09jsHgPy54U80ZNYoG1R9d4!Y-z}(M<8Qklc^Xbro_$I&nz63e_ux@9pdSHAd+Atr zFxZ~%EJ5An2o*)sWIyR}5>u9LyE2v(MVmw^C7d~h!6>p@iI<)bVND0*h`3O(M?WO& zGcSo__#;C5FBG;OMx%WV2F`GNrmqmtDNCb_D;Gn%ybd6CEuJHPkj90qQI6|$JNa7g zr1NfqLud7bENYAo3$%9*I5i6h&(#wn&mSx?I?((fCN>%E)#IX4zZOI^u32)+`PQu8 zSm9jaFZLX_31w!l9o3ND=!c5C#offq%2Vr2nN(oAlEZ66VF$jMc?*!1`?Vc+{_(@9 ze-CR*Kdo7QsN11l(KbragEXsG=5Jnjn+3O~BsNqVeEc z=0u&)9L;ute|OXk{+2IaG`$ z{DOgxN7+;tjV$b#Cz^Q?ocN`KKii{Z;rWmB&3@HeJ9p*cWrw z#TVecKf9qG(FnG)#51StA_yYtZ#&vafp$CJG47Rr8A18MXq$AayzW1L;I7H`2{Y@Q z4FG0cRzm96K>@U$e#D;58Zn^w`ZtVLoImWpd{ahM00TUM` zK7oAO@pacf0k2b%C>twTOv#isRH!~3T5I#4clxSZ^Ul>=~Q-76Kli|CCuREvGz>Xq-&3( z$xb3g5y?Ns)$Z}j!DKFb`!yZW1MXLMx0|oPF+jnuhRt~7`!EgEVbWA8J?ALh<8!d4 zAJPm2x_ufnkE(ue_8Bo5fL8oE9005jp^XXM_+XQtnd^cXZwIz8G2 zVZY-ys4t%s(HbLRBm1B&fo;zCy2!3t>vW6N%MsbxBoesqd*Ym+u|}F5)l`6v8uyb$ z5F(d}!3fj;W9*!o1cBBpo3?G+wr$(CZQHhO+cqn0+phFfbkFoW+?W0nCt{!V?Y+vx zX{NeH?^vKk$!2;!vnNxo*-1Nx?H#ekf-*5h)ls9ne8Th%Ds`+vBNdKMD+K+|Tm*(Q zN-y6$!c=k#`BF+QC6{g|3ooR3q!yE{;`@8{QeZisRh^}Of}BuhqgYN1xS^(EJgiDy z+N6hQWGfL-+b$#*CnuXVOboNiOvEt#KnI;HG#t>n8eA%jpzsO%&xUu*4AK zgSVSejgk$|yq75JMNJ-W6=& zwUq*Kl+MgDS;AD6iof951GOVUW5~qLuG*TD2Q@2mV%pq<`C!!12!WGHKaQ&IzgIVD z67WFgHr>=BCCySHup2cd`-MP*5D&tw^jl>Wlih(0A4yPn*y+^x*1yAod{S0R_P^!| zOZu;)s(|q=2M7)F`*hVt`>?JFoEXrV=h7@DZwL5pZ7@e1WqOAX%2jZMvB(+8;r$(( zJupmVG}yxo65@jMpyrg-r`)0b+;QJ0Z|sB&8j4Dl9#caQyTDEfxW6;Rlu>b59v3mk z#kSr#yfS#1Lt2rctpZ3PKw#gituxD8+#9M(*pCfhcC$%<@yRC7j50=z38AWEiqCMO zjq@55bH_{R|c~Pc- zw<=;3vY!is&x>mTzcbk>hKW;^xYh0$sY|@c0-o@ABzVUzBp$k4rYRLbf6zK0vWC`3 z3D7BA9ts`;hU~W8NHta2Rr~Uj(pqc^gNHO}`G<}W2P3dr9eY4K&7qtQ*C&re(|y6; z-o+K7hE#~DPyukR{!?~p+fH?@F3=>27@8t!VNl8R9B zP>L5f16@`<t2NN{%st_2YuFt>;VB-&5<<&3guNq;=&I& zf>X{1QN!L$Pzj^6@`WT`qA+p1ADNs@e9|BkSG@zYOS^G{E|TmP^kGP2WLLO2y%|`F ziM*%DI6%uQC4jlB{told?Aa4$N}N)yLp%vs(CX{tBH;iN05<`=!f4#}bayg$fzxna zb3-_J0j_XXN0(mL)2dgn6Iu;7i*$|@fybA?yw9}BV2ew{3RUpZ!ehVyvk@t%O2!aa zSBkaw_xpbNdYrwgHXJE6U~4{ZJtT%uOq@sz3qgVmfC+T>YydJus_gYwB?^YwE3U0y(E8*k|{z`nBF*zksqFQy}60P6E^Rk?8(pc!~17)Fp4%WG{JEKm(?IudDIu+)0D7YmB)4^8>5I!(NX#lbk@t-Zsk+cS)etwLyX{Fik zC5|RQbq_%C-hk@V_IOc{q-68V#DuuXlr$O*ICE0N!;`D>>;5dXu!99A9u}X^Nt7jJ z^*Bt%j5xF5)*TbDDziDNNJDF3eqmstn(m=>cjn9O7;_=@ki2|L`1w#*2NynIaG~5> zpf`!IUGvxz%v^4BZtGSK6RDU1j)N1g^Q(bk-4UEmE;}LH#v#H)>(U7&ZPZudCWeSb zzi>}!Lj{!XYn+(l3`2QfZIrCU+_3B-ggE#MQ=us)s5q8^me z4z!kAFXEQ;rdHg<^XkM_zrR6qDR}~Ch!vMs@sWf|*33X^(^YT~&9*NSY5_cK1MR?V zAPod(XzLWdFzZg*AmH--e{eCmz}U3yC@iK6CJ-huwve#@{2E&rCv4lG7B$?YB!JcA z@ibm}lZRF`)?$OY#MdEyFhP-ZfO5k!AO% z@gjqXi!sK;#UT=|es^rv#`v#vhf-GdDjfcRzBaxyT^bNjaXiVqr@8 z;b18}1Fjj^Wq14rbES@H@WLz%TZB+Mrv3v7Ts%6>CN3V@|TOT|^AR#9MRa(}Et>Q_sB&#KbF zc5UDN3V_&N?PjWL_y@~W8f;{Wdve@)l4*XU(gd<#nGmF%dqe22yW^Jeo4V80UZZXE z@Yqm+@Cb$jL$GF-FiNa8J*O&dC{TLtWs;%Azcq95XUtfpL0SXl#3v z9=&KdPl`9lU6pepvDD#}KKd)xw7=n`Y_4&kr2;(v?22__Ae2H4>`YXuc%SUi4PuRH zUS4xbGxuSP^%q+E&b*ypV;wmtd^rHdNw#tONXXN&4$Oq#hJ^edCj?$M#g21+~> zGW9{GE!&Fq*i%98Diq%bPeZRBcaC3w3xqub$Thzg=)0}j)n$+ymuf{^#lf%}dY>nZ?0Xsk zai}jZ*)e&Xm}E6Dvh&i!_iKMoC|lhFMf)-H050*+HttmG4}mrLomspwj(K99EKrWm zHU}65u=y9E`tYB9M9i!+Q>t-jxhsy}w5;T}%JSjn$vWJlUtCPEs@mG7H<2J;JWX&F z7_Lj7C;uco9tBC4@Ry?u^v*mh)QN8<)F4V(W`VaqQU#z`yMk+7YSZI%Qp6);tPig4 z#D^0E%xURW46Jt7T^piTx)2r&Fu5MP-h;ibg@{&3)rYsI#-SFJ|*l=)%6B(6ViL!>iAvj$65U%ha4FFFoFzUrfa%7K-vUN0b9t&G@dn3>^ryzSAUtb8^Fhz`Na3gG z!26~-TdBds@VVCAw><72JA>^mQdb9yLSjqSsE|JFhC+&6=AJ0oDqB zQLPsujuqrHBk2jE(eC4)kf{JjgR0U;WHA4!^hY2d=q#-r{vv^u@~*OWlMOjDJ5 z*tYVmxRUQgiFF3x`k~A}^m=h8b^I8@PF>C%l?a%{^sNj0ogt_Pbn7gj{#;-A)3yE!uKxr_i<*De&08e3ftc!4+6|NTXxx< z-;>gv-l}lbzLI9hf)emr$H-?}zv!ywEV=S$%D{+E(3X0V;@kB)-53L#S$QkwnHw50 z`kS#LiT-7hG%56Islpv=N!Nf^zwXq^Cd-IZnC`1Ak`etk@i!mF>=#cEYg0k)n#i|#~xcjPM?9*@-VgEVZzOu z#*COkjR>!2#Bq6xEPd>n3P;o#%}d6XUJxRFQ3Pei4*5D6ls4?jq`ac*+_7@Sfao>h*q^>Jk3IDM{EDuaY$YZC$j-N`Me; zqw#x5L_GYO{Du&AwHDv4t0~cT0ThL8pDG@rBF>zR=&KGoJ(|ejq#8eT?3b1jPhqmL zmx^T=?dQUo3as8T!(x$LOcku?t=R0rVYLl8H*OX#GVwlf+ei~H6Qfu47s(2P4cs=^ zqW8@Qhziz9*|dnN+&U6XJbqx=8ZX&w;YgH7AHgDk>0K<7Ojal!Y!@FD6G6lCSwayK zObWMA5@kvAplGBGy$?fck~}Mxj1N+kUX!T)N7ddi zmR)2OTLC6@0##Y`@9jVTNxfOKqg#$O>*Z@ixmb#E*d08XCf4~HwMX)->*L4m%lt9u zxd|9lp1`f_gQ^vPs+&k3WqRqgWRuREG*d7$kfo~el&d1CtxW(C zxef|Q2O#C9G>Lv)e~iDx%dX>r*t1cdVlA!X#KFAd`|*4M=1)dvIx_12Vc*61c@&=6g8gXZ$mU*omMjWYP5foz=w8NVKypkH!;3X)(#YwomotyX zKP1+W;<@~G2!TecX0C^#te-G?lvbF(f-1gs9u>($8t^a=PUD6T>l|%dW!nl9xQ1XqcWl z>at>N8)lJ=veWjVU7==CwULu+iF`=;hnRXvBL8l&YjI^W6MLEYvU)P+36`dC>vl% zqIMV_%gr5EbZIqenQctq)+OFaH*C^Y4VqbW^&~exVb@b+)`nN!y-d_hp=x9Rzz-0$ zk2XnU-DJ%_Oaq%L!4XU)IL2GS&j=dDHAeu1hDeWf&pb1jL!7WmN0zmeG`1+N1=3UlLP##p2P(V5< zKO*MNdv655navz-p1DFFT@sqEpr0w2ovtLFiQT%HQ?b=qES9}HQI+Y=vMrsJ4+Ed0H?rrRkv}#>(#8l9Pbzxf~5cQub5w5IFjABngNoUSZ)Av7s&p^k)sf z1qg`jcq-Eu38DgdKgj8NP@$=6`Tzn21RS3b06EV`7i_;K-#H-Yr2gXuM6&fwCo$b~ zw?BB49?G>QP^M8FYMD~Fnc_$^NQ%5x4v1D@;TvaY?Z%Bo)jPdj1R6rVMn=qonk8NgeDfh9Yx@#f==yFShPxEL@8Zb zaeUH3agd6k^@l?-Z+mFA+O`H#0k=RMJjO3>73cuiS)POG58C$zuy)_HO%QH05b#Ut zIinc^fr2x71hDhTk}(j7B8sFbY1CvDOUi`F?y8V|wv3wyiLl{+!hqSC5!eyoap!}F zlsrBYP*)BJn6FJMlfuC-tPpSt#bw0*HSvyGa7Jo^8^G>ms4+?~&F9PD@bt12@W6&w_D#?GS^igb4QEh1cmiRauqFwMZqx zqiNo>-9k9ya8V5Q-3-9DO9k@1I8>u}=(gL}y_u9RYwld7sCa`I(VlPASV!0ue)uLm ztSpLAh7jHUg2gJiZyfpZ_MpoJUwyjY&DG1ndtjUlHRF`su!JINm}L_B!lY6?4Rj>P z8#&qFC6S_l-gNQKQuF*)=HAEkz8-LfG!ASiTWh+@%P^x;NXm2+E<;qkf>q=P6Jo^( zBe`Oktkx+cgZ){ZeB}(fcFYw<&JZG&eMGDO^UA~7g9h&t@ORnzg6bbxAs@hd`}=gAPjAMf=EvJU*tvLaR7c6F01dOlH!Y478paFa`&*CrDiGr3SpP+( z?6UeAWI7cdmCk}(4x~{4<2v*kT2&fi5!8hRo5L$%#lG7t!(h4b@)?h>r+2Ll_Ce;t zYrTcPKB3>3W%^nh9Aa`n@rUqafgsajcMi{%hl3-6xfz(q!Nnesa-!Rs+5$5Ye0{Uq z8RBBCvWN0vU7U<086gKgf%4`Mydl$V44`24lL=1;{tk+Qx81wBsFQr*qvNQ}QG*Qd z-_5azA#({^ByLB)%!>pJLV5~nKpojI87v=lgYVGz z*qAJ=4bc>k;kHl2a!-O-o8_1}DbJgv6q(%kVD7Q zCG#Du(p`A8`&lyvX%{|sbh^FR&M+Qy_if^7#IDI@BFU1p{<=k4_;{-xJ_%V06F211~9JkG&Z zRdKkM!;@{$Me7`vPg*!IN++?)X=7-vQ}h@}2;5}LaEKRBBww?y~0 zE$(G_Z5xitm6;^bjtu|)|p~W$Tmu5>E#YGQ}o0BLQA}|g>1JuRq<o3g-Ms{VY?}W~JZtX{HzQ+So72LtSQlGX2cgGhIxwO?sq0llB>3c$7DCqC1 zyox{extH-dzNVyKgi)?h!bbpLFDNCKi71{xBLE#);hQGzn=EtcLInU&XCJS>ZnG}*^tM<;}&X&to z#W6wLW4bJd!t_e|g#=VY9F)3_xF~yGtv__*97$4hy#Pc}vm6%QYFQ`%2U>GMlusZP ze|tMV&7!(CJ6O120A}MfdMeQB~b|IWrd2P6aF5qFl z)q7460>TDa8W&089q8X7UL?>`Nh!gEhXM)OMvn|PS{gcjk+UMAE|HBU$2|GjcB~vd z^bj*qjTeLRRu2b2%w@Y-i(xFKRBiSGq04k()et`X54OmF-&D6y` zgUm>Grkg1eFx$6rKI-GkoADbE!I&y0h-8iwY&=pVX(o*9Uf)jq-mj47`(}C6Tbj&x z8if5FKgIsYL0i5uHS4t`IV6bU{Zc6wr$^Q}k9n=WIyuXW2)uZDj%HTDK%RAgn%0cIT}HO zbfQXHpR?}%mJG88`EjEDvb4QoicLRtbt_s|7u{5vKfCI+O|{wT;Msr))D=WBjo@)!q~AO_OCu?UcLhtbOsLn5&Wk;g65t zKuqm)`jaGy$$-Woe~Z=D6i*%qjTxMt!%kaW-IY(X;wx>{teb9v>~1O_O$VKR&8maB z;PW!dD1}vd4&WXHD7O5^^6m=q2ainYUiR?S~qK<&liG;#Ujx0RDtecbNtfIBYSwY_Nh`VJE-W z@;WyZQT+{CG%(|)6TWuuIzu2g86llU!s9`skF%Sf*SU_yfN)JBB~BM+&G5oYN|G((<1y~!tI9s**cON1llNacxH6VVc#AJTQ2PCi)o zqm4}_BnJ5#!D;vT4*cujyL=}I&L28mUg$TxBvqN-ZVv8zTqr6MvP7;xQ)Vp`hC*g7 zAd1Zxw~IaXWQcQ+$Paa2e4>-_#!*}|l=yuH8P<~HM>p0HR{4Y4b-AQWNjuon2@*qr zx#AJeh8yw?8Z=|-Wy!f{$bBjEQ~i3WR0!FB(y9ojf&nnbdl}dTje{8BDEAuJ*jm$< z!f(VGtyTd*gKPb()I>fJA4(uzSDWO7Yx1So^Cc|{`iwz)0aTPxj`<8sTN0n2Cw$z& zFCpomHz7tEx`EK9qag#febs3M9sY8h>ewJ-()m0C43kxc#4pUS!pMJZ_Yu~Ke@Xzw zn!qQic*0DJ{wdS zcc0{U+eXc{l=}JrW6(OMc0BDPnDS}f!$d?%n8RZcvOMEf9$&gNeq0~Tx%8FAyQvh5 z+K>xP6E*860%2|-K3W&w6uCm80=6M_|M<9`;H8h0*DReVT8%1bu3+OBvu+ z!gtBCMhZ8`rG1>Vf$Jw2Vm;Ye+MT!CsdF?rGOpkjfF(KuK@aj&#zytS(_HWXWY_T4 zYnj5E&(yE-dKY9LP7va6;p3c4t$MVb5;O~Ro33QJqzVMPW&v_bwJhwWW?OZBvnF&l!gu#47f)uq)`vw{`kwgeVn;_!r6m?i7C~F-?B6BAFYl3s9kYk`P)2)7{{_wJWw|;gR zut*9hC2oJ72fIC#vRc`4y;<;2lss<$S_;5}VoSVN;Gw`@+&CT%vGx`EO4y7w*B^sY zxfCw6E$}uPsKYqIxQj_MlE!^Jb!p4L3MvpNB66t!;>%0cGI}g0pi%6pn9Vd2CTmzI zS)cUZTPsdyO_&oYMbQ{G`nE=o5LPa$w%O~l>_RH_gV~lgg1ioB-3IB2hJIKgD!Vp= zd?m2ehEqfx8fpF@a$<@@`e1U>jlASxf;sEucU5wu_j=h=d$sAS93roEf%M=AMY{?>ZC9H;6vb;N$vkNA&y>NlG=buV?7R>hYes*(IFi-Af4fW%~L zuBUZ0PqKnaIN)+GF&oSGYM@kH&bigdFskNb3RzX=QD(;y5vL*My0Oe4Bn6}0WzV*Y z!xH#0r(BK>u@phKTr>X8uRp^xGdbs{USS`zx~jPO&v#oU?Z^K-(*{!U-M5tJpYVD7 z$?*XLyPKbId~n+*Q^^|^cd*EOWAkHW6(?16XdIv5T|>HG6?X)VM7`c>VL_5_tGgM4 zAd^1bw2zx))GrO+z?mSSwTqsJQSBP3Bt+^jL%vC0{igsRE56QJ+FLsmZq z>V!0L~Y<~doR(%--H|K7;vJua6QH-M{A{%JVJ*oIr=ZGgihfw z9^t?QD`e}kjhV>{t*}FV2#V^8r~B-GUGzGj5vTy`@wPQ7-s%9?PKF2i>w7w((kM;> zYriZVbAjA$jPYe>6|gV2be)@hT)Js@RLkuz8~ui%A;%YI+BWInIj~0NcUV4gV#SRX zIlCU%xK$Q;>5r#NiE_HuV*>G9OUW3py7``)pou7e(-{yk-6+o#y&EWeQL{}c-bnDX z%eV}v#Fft<32wVMPOn`+2{|s~k*-c4;SbHwxjZTtEX5qLj#4 z>=03GhU>8>sjGOTR2=+Ozr;`wUkg9*s9oW&`MVOg)x(ZObXMkk4jr@cHB zzl^Q@9o}MXO+w&NZ0Eiupzk8s0I`dSxK%ApEamOB+=lKEAk@CZJ0e-aNFD@1JNZRk z*G2bD&zF~>`RV5Ez%<>6laTJ~lI^+Ie(C?HdI+gkML zz8`dIr}kr|xP(C%yc7rn;q;eNkp*gPh``KH=3u$vUnf?)#YPBam37Bj&$dQ)eGl z=6Y+q5Tg0k6tp~aj2C2XYJ!BUdn<3-c<$dOcyz5sKYAgTmd~_1h)C z=UI4e?{ZQ4A?`U(tK94?cPDtis~X!`+oGOad_?emLbnEw3x2ob`N#5^Ip+~nS6Mu+ zqsu*qNtX{4FI%}yCc5*A6@2N+?}ySZ>GkUptJVVd6XuT6n^}2`IXY6Mynu&bh&RT=oo>%m#E_h~Li?3(7#B)k zUqi$oEIr$C>RqI^0&KK?~=2rIr^UiIoQ`szG4WrgmAHn_+a;1|5z zqp`$aQq<`jCDIo5Sa008`g#7(dS|n~u%?%x zo6DPv{SWv20h1AI`TrwN|5r}_FYd_k|D}0s|H&QM{#V>_R%^p;|% z{a}8eB)$Rr&5=Y1XMuqH8c~Jc{rs$MS2w;@&KIq8_wr=>vHe)fGi;Oxl@HxT!7;sD zHdRa3)KqQSO&R5(&x_ERY^BM{ItI;)ptFL%nT#18oWW>6(J;aVcK>m7^mBD{t)0Eq zM9f0fWaM`UDDZoR{oK>t+w0@q+RR_dD6Q07PBEdo(oE%-a#cZaoFXJe9(&*nHV_pW zE!31^npUG$V&AxSw}LUI>P#pmdAP~DllGb5h`q07-X<~OW0$Y)X=X2Uq`3|TVxu#A zG|3ocDDuO|uEp=k|0!*rP|7OPF+jtY!OFDnBO=hN6Mz@Iv%7^8-_5@=aV^fd$s0{O5O;FX7P-?jn*Mwz{0aQ0! zC>_wi44smKJ=CQJ#uDF44A#j0BOg@26GoG5>aqz)UNU6RzTO3_G);>^PzRJ!pVdR~)U#XDl&*y?4G{>)E(7#kC#SU^U39SmZE0N+ zXO>B9OEYDa%j&7QfID@$aDU*2^LO{N?a%@fhO|iyNLp z-Z_f8=W7Sh)l|{sqtF&H;f<^C6sTv_l$-KV`I#x7c2Xa)EiE-rnYjrqEuT^EgAIxR zZ^LpD+RcNa$kKvYXWdh|QPB|@M^iN{cI+Pw%nHp`N?Qe`lUjftC$mLxMZx=0nsxLn zguhgd3;JfjX;PHoZAe;v@=CHc`T)-za0#f0P&;3f9D=;MA=k36IGL^KSCx1VU94E&br3YUl53lhO#^E`8-7V zP6@NHJfNQ#BYVm|HP)uQPOy30T^Y-oi*l zjB~~yizJe@;i<&HpS6?2#sGxs_d@_7e;rav6q0+0m*dymm1}WSf_E1EagBPG+9(qX z69@Dmu3>9Rl$1=YJ9G0)HScnEwxHv4f4)zz8F)C?XwB{_F%?8hJF&c6w2$|hd0MM# z)yi1tu}xRGvS}Nm(?iJ~3RMLGe3>0?=&I9&vjvo*1IW>Ea=_7Wv?oJX^VVH=)i{+ zV?(B>32wQ<>F$Y^u{X}|lGne%us*st^Gw$tohIro7qe@EWZ1i|RGkP3mzX*E6&LH$ zkv_Qq8YZ*b64%ks6cDW`AZ4lVQ(=voEM(GGc;w5_5!Ch1iD~^{Vj2s)kYaou3&d5d zg3o$1k#KzPfh!OOKuG+7ZM%u0+cGREAD$@g37Lmp2=px+@2`~5N+<{eg6l80GwNM* zE}(J!x*K2Lp;buIETNj(QhCqLFbKE5Dnm0+V?*`;Z171XLSaP5igYh%0FM?~q~I0R zG2FAf>{pR4xeub;#<-VPTsd#Bm%TDZX?%8JdXd+VN4d zaSrKF*e2WmKpvZgOS?p3N^Q&&E2Q$k!9Pg=n3CeelURBMh!?2g;>9gOta}@k-w+_J z`@4&>$HhO@WF^C^zisB(5ryP!1X{OQk}oK+Yd$b7&cV&f8)0>n`A* zNXb7i${@+z@dAU+Qf0DsjisMh)osN`K~6~C-r6oG?eO)n0X*2q;px*Lx~Yi@d`8Yr zb8Tf{db%qG&!LWet(TaAwV2Pk0?)z)W0gDZVP zOQWQq_^sG_`99p9t_2f43r5OYKp881LJ{ddHq}lx2f;ua*Vp)scjcU+&cIZFHfy2Q zMs6|W!e~`Br~@>=uSUcdu*Q4+X^iKJ8&)vidYN^}(J*xRJeU~3e3Fx@)*Xi9tEaD*r`NlMx3#Z;=I$%Hk|zq8vJGd>K(QiGg8OLqPlz=UoFlS*Lc zj_thF{j}k)jx1i|uI|h-9mC1SnQ?mlOEc>}J{~c!3);K;7LJP_s!$eEcJU3q*$0m( z7as>N8UGtRycB$HR|((hyFFcTT*glUkPeM88J=$E-}Lqx){^~{-P~Q-$gJuH27yG5 zC0FhXQZgrh_hW|<3Tf=YdDn#0{QZqZbz;#E_mO03-w#K@y;_U!(tS(!$>hFLE{#s_ z&>v*6s;)Rj_eHAYzN4$Ng{4N%voHk-4J>mP2ckVp!V~yf8ggSIts1=>;?8gbpJCs_ zN?$!E(UTd%wR?TSwhKgFia;m#)Kj$8)oXv5g zLwcDw5=o2sS!0l;7u0$+V^vo>^39}aoyO)nh8c;R2s$H;fH9hQtKDy{G zdy5(P-~yL12VJYqd5J)Mup&!g_Xe`(lQP>3f_qV2y%i9xv2Q2eBv6#{N(NUSPc;K={aEl;$|Y+z6%O;xt;rRD>CP0um5TatRb+TgC%fuwP|a{;Q;x)32Ox5HDuL^ z&l)zYh2@I-_x1W2S5LOWT`&Aa4aE%$^Ifucb>YiUS0;?!WrelbTUE*RI70zD$R=*P z-Ie0{Sg+u)^CLHyXi^-tF@UVMz5HhA1+M}c6?M6Ls3!(>r#m=VG(HGvpA5UHX((Or zl4uHMqcQhnAmEnto)|)w>AedS18~vh(Mvtu@qRqB+BMT}3%^9g!FuSsQ^|V5hNyv& zxocX7BZzhzy|)r;Wu3vLz;Re^p^s_|Wa-Miz`@zqkCm5bO5?ntf$~acR-i2XSOFvT zW3&uJY3QnR7{Sm{MmRm+J`6%$pvJ|$3lO@EFvuT%AYKrp1Oqxw2xM=pqd$iO2ywz6 zX!DLjgrM3kXB!x?f$$sbBJT^}f-jI%t6|)1C%oGG5zOV0q{Iiti%-fJ%X2$ib}vv$ zX|0E6(G^3JggFi@Usl{d*#8$)a}s9gKa;`#kTwQ}{~>Mc|4G`||JS7Lzb_ICzK|NE zLKvAb0GdBZq+8M{HQj8ynkhM3K?8*$u@UwUjWj*i>F@vVK_Z2vJ2hqcG!iF3+{Tv&9&}N0ekz^18hlFTi4u>(!uLFRf%&&ED|%}8>>8$=5mID z7~#t`T^BpWLt36U=%(r_dU|(nnyoLlcP1yQt?8`LNgza~iT+!6rYo)YiO-uq4iwOx zurZBu)GRT;hcvJJb#r^Vx<1Qw-Xp|-S)RMU4ob?ed${T98#t0vwXlVid9Se?nS zHBOzps&>^M->^Qwan`1K>RYSU(0^C0?@TmS3kfb7DvAT|?gTw+6By09;YVSXQGge;NYrk5<2Vm`N9$bQnRUy(z zhKw5rcOl{ePH{Rh^OxHQ@p^|=BLJM<&BRl_bsvnksp6?M7)uIhPRzE^v7G>m zfY0I2aD*}3pC-ug*U-`L_3lxqHw28?WSt1>y_>%exC6jV;Yb*V9$NR)U0H2N$+W-? zD52SgW0F>1mxb)P(yf5c#IkA7cp`z*#Qdv%(J$!9Rp_&8OK=FAH2@Fo0wp0scsIJD zBrypS{#!3WnV#(!&RO2P&-cP|`kO^MhJchHQeMngWVl@U>49@k!m9B+*ejnv43ANK z!F-1j)Q*X!%;7V<&@ z`6rOk&ZH7Y_)uVENMk%`z31uYiRhkf6IFqZD4m!rEo;ljVK!r1NLV*KcqXf;iH$ zdPgs>2!|i7R1EimIyChOu#f6J_gEyd{ytPdAxa#K0KK+2C`#@xG022pE(?Ov{KR^$ zVM?@cX-r%iazIK-oDni2LJldEkkLp(Z452WGa{4(6(A(W)`Pgw2NqKB0izz`5tg>g z6B?L#*AfkqRC~NE-b)A-JO`Y6+QJ4-F;|?HGxPkb7Qg$`342V0xCWu&X=JrIwFfLw zTQ~Jx@0)Zmqp(lu2nkZ+i$H^nPV`bhNm#rOuRrt-d7&t6J5|vRRIK9YV`{HJMTGSh z!i;jo5n4D)*S-b5$H|8N{;6@I%V%e~AfWL7>*@M(glI%8Qd8`W=TvPPf5O&u&Pa)v zWVDd~;2|;QWkXfIA7hkYtslN?N>p}l&mC(NWAaqSLE*_hSf#iLdhFp0a8O+Z z%>%-s5-2FPF*Z<6Y&hM)hR0%?j*8khrs9?w6e^twm|osdOB-2dr+5ya4BoV-2X>xj z28cxubF@6aawVu^5X`w~sX(cF@)|tLk+e^0lsnilNk#ss3Rbu%pgF~cz#JJGb&E^z zTj)=ow|M0Ayu2zGwG=oH_B8=|!1t&Lt$MaB zNoFJ5RdmJuLg@ztxx6#TEE+eDv2`8XMzSMOE2`s>y5bQeoovdsjW@=v@g+*Ch9mET z6np_}*pL4Xf|VlZVdIwp37T9p!<3g39PH&9w_NC}KQzqM4(YB*bW#k0o@${Y(%*;*Ba=nViQ*Gf0p zkoA^3Cv1C4YK?mc;8;xkLpoNJ;t1>Ca)!BVuxYCdMRlNciU(&2%e!0?{!M+RpQ7x|a(&6yPM(^K(;?wv5)7%-Q z21Uw__yAHh7=I%pfeiTI>l|LrWGoF+Jrk|{%rb%$Nx>vrZfH@+DNTGOdn^l;>eDtUZ?i`d?wgrv=Max>u#b?|p426{xvPl)v+1&z2 z{j*UW`S_CW_fhX7{K6B^mP_E_eA_WTMBytQVvjK1+6|;Rvn`p2oryUd}*4#ID z&^DH_(F7bo>7zhQWJGIrYE;$Lmwqi%1QEodQu6#G+?A2*Y@GSRabHUu5gyMei-m;Bo-a3xC|JJwvms^WXnVv1^=$|rr0z3n}dm%Jbx^HWN& zvPx(S=}=_v0WT{l7ytx><%s$lE)A?Vw5$Jzv2$t?EL^f^* z`z)0_l+3Gs$|Ul?JQp?PubjZ9-vs{2SL-iv4y)WonUxYh@

p(G1eX%8!gR!i-G9 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

bU)L-J7Q`xJ)&cn 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ⅆ^E{#nn^Z>7h$A*|835G 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%0D=bBgRfhj@kb2hR!G+j1Iy_G=9WhD=2 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

+There are ways to run commands in parallel that are not built into Bash. +GNU Parallel is a tool to do just that. +

+ GNU Parallel, as its name suggests, can be used to build and run commands in parallel. You may run the same command with different arguments, whether -they are filenames, usernames, hostnames, or lines read from files. +they are filenames, usernames, hostnames, or lines read from files. GNU +Parallel provides shorthand references to many of the most common operations +(input lines, various portions of the input line, different ways to specify +the input source, and so on). Parallel can replace xargs or feed +commands from its input sources to several different instances of Bash.

For a complete description, refer to the GNU Parallel documentation. A few examples should provide a brief introduction to its use.

-For example, it is easy to prefix each line in a text file with a specified -string: -
 
cat file | parallel -k echo prefix_string
-
The `-k' option is required to preserve the lines' order. +For example, it is easy to replace xargs to gzip all html files in the +current directory and its subdirectories: +
 
find . -type f -name '*.html' -print | parallel gzip
+
If you need to protect special characters such as newlines in file names, +use find's `-print0' option and parallel's `-0' option.

-Similarly, you can append a specified string to each line in a text file: -
 
cat file | parallel -k echo {} append_string
-

- You can use Parallel to move files from the current directory when the number of files is too large to process with one mv invocation:
 
ls | parallel mv {} destdir
 

As you can see, the {} is replaced with each line read from standard input. +While using ls will work in most instances, it is not sufficient to +deal with all filenames. +If you need to accommodate special characters in filenames, you can use +

+ +
 
find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
+

+ +as alluded to above. +

+ This will run as many mv commands as there are files in the current -directory. You can emulate a parallel xargs by adding the `-X' -option: - - +
 
ls | parallel -X mv {} destdir
+directory.
+You can emulate a parallel xargs by adding the `-X' option:
+
 
find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
 

GNU Parallel can replace certain common idioms that operate on lines read -from a file (in this case, filenames): -
 
	for x in $(cat list); do
-		do-something1 $x config-$x
-		do-something2 < $x
-	done | process-output
+from a file (in this case, filenames listed one per line):
+
 
	while IFS= read -r x; do
+		do-something1 "$x" "config-$x"
+		do-something2 < "$x"
+	done < file | process-output
 

with a more compact syntax reminiscent of lambdas: @@ -1592,18 +1686,40 @@ Parallel provides a built-in mechanism to remove filename extensions, which lends itself to batch file transformations or renaming:
 
ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
 
This will recompress all files in the current directory with names ending -in .gz using bzip2, running one job per CPU (-j+0) in parallel. +in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use ls for brevity here; using find as above is more +robust in the face of filenames containing unexpected characters.) +Parallel can take arguments from the command line; the above can also be +written as

+
 
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
+

+ If a command generates output, you may want to preserve the input order in the output. For instance, the following command
 
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
-
will display as output the traceroute invocation that finishes first. Using -the `-k' option, as we saw above +

will display as output the traceroute invocation that finishes first. +Adding the `-k' option
 
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
 
will ensure that the output of traceroute foss.org.my is displayed first.

+Finally, Parallel can be used to run a sequence of shell commands in parallel, +similar to `cat file | bash'. +It is not uncommon to take a list of filenames, create a series of shell +commands to operate on them, and feed that list of commnds to a shell. +Parallel can speed this up. Assuming that `file' contains a list of +shell commands, one per line, +

+ +
 
parallel -j 10 < file
+

+ +will evaluate the commands using the shell (since no explicit command is +supplied as an argument), in blocks of ten shell jobs at a time. +

+


@@ -1615,7 +1731,7 @@ the `-k' option, as we saw above
[ >> ]         [Top] [Contents][Index][Index] [ ? ]

3.3 Shell Functions

@@ -1633,8 +1749,13 @@ shell context; no new process is created to interpret them. Functions are declared using this syntax: - - +
 
name () compound-command [ redirections ]
or
-function name [()] compound-command [ redirections ] +
 
name () compound-command [ redirections ]
+

+ +or +

+ +
 
function name [()] compound-command [ redirections ]
 

This defines a shell function named name. The reserved @@ -1647,6 +1768,9 @@ That command is usually a list enclosed between { and }, but may be any compound command listed above. compound-command is executed whenever name is specified as the name of a command. +When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), +name may not be the same as one of the special builtins +(see section 4.4 Special Builtins). Any redirections (see section 3.6 Redirections) associated with the shell function are performed when the function is executed.

@@ -1723,8 +1847,8 @@ the function and the commands it invokes.

Function names and definitions may be listed with the -`-f' option to the declare or typeset -builtin commands (see section 4.2 Bash Builtin Commands). +`-f' option to the declare (typeset) +builtin command (see section 4.2 Bash Builtin Commands). The `-F' option to declare or typeset will list the function names only (and optionally the source file and line number, if the extdebug @@ -1756,7 +1880,7 @@ By default, no limit is placed on the number of recursive calls.

[ >> ]         [Top] [Contents][Index][Index] [ ? ]

3.4 Shell Parameters

@@ -1800,6 +1924,9 @@ Assignment statements may also appear as arguments to the alias, declare, typeset, export, readonly, and local builtin commands. +When in POSIX mode (see section 6.11 Bash POSIX Mode), these builtins may appear +in a command after one or more instances of the command builtin +and retain these assignment statement properties.

In the context where an assignment statement is assigning a value @@ -1819,6 +1946,38 @@ When applied to a string-valued variable, value is expanded and appended to the variable's value.

+A variable can be assigned the nameref attribute using the +`-n' option to the \fBdeclare\fP or \fBlocal\fP builtin commands +(see section 4.2 Bash Builtin Commands) +to create a nameref, or a reference to another variable. +This allows variables to be manipulated indirectly. +Whenever the nameref variable is referenced or assigned to, the operation +is actually performed on the variable specified by the nameref variable's +value. +A nameref is commonly used within shell functions to refer to a variable +whose name is passed as an argument to the function. +For instance, if a variable name is passed to a shell function as its first +argument, running +
 
declare -n ref=$1
+
inside the function creates a nameref variable ref whose value is +the variable name passed as the first argument. +References and assignments to ref are treated as references and +assignments to the variable whose name was passed as $1. +

+ +If the control variable in a for loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. +Array variables cannot be given the `-n' attribute. +However, nameref variables can reference array variables and subscripted +array variables. +Namerefs can be unset using the `-n' option to the unset builtin +(see section 4.1 Bourne Shell Builtins). +Otherwise, if unset is executed with the name of a nameref variable +as an argument, the variable referenced by the nameref variable will be unset. +

+


@@ -1830,7 +1989,7 @@ appended to the variable's value. [ >> ]         [Top] [Contents] -[Index] +[Index] [ ? ]

3.4.1 Positional Parameters

@@ -1866,7 +2025,7 @@ digit is expanded, it must be enclosed in braces. [ >> ]         [Top] [Contents] -[Index] +[Index] [ ? ]

3.4.2 Special Parameters

@@ -1882,8 +2041,13 @@ only be referenced; assignment to them is not allowed.

tSPcUz>n^#gXGvqtxQhN#CiUyeY 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 I*N?CM1L*OZ@c;k- diff --git a/doc/bash.ps b/doc/bash.ps index fb9aa8c..27ff580 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,15 +1,15 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.2 -%%CreationDate: Fri Jan 28 22:07:07 2011 +%%CreationDate: Tue Feb 11 10:59:21 2014 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol %%DocumentSuppliedResources: procset grops 1.19 2 -%%Pages: 72 +%%Pages: 75 %%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () +%%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait %%EndComments %%BeginDefaults @@ -191,7 +191,7 @@ setpacking %%EndProlog %%BeginSetup %%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice +<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice %%EndFeature %%IncludeResource: font Times-Roman %%IncludeResource: font Times-Bold @@ -199,11 +199,11 @@ setpacking %%IncludeResource: font Courier %%IncludeResource: font Symbol grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron -/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent /ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen /period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O @@ -236,11 +236,11 @@ BP /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 (bash \255 GNU Bourne-Ag)108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 -Q/F2 10/Times-Bold@0 SF(bash)108 124.8 Q F0([options] [\214le])2.5 E F1 -(COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q -(yright \251 1989-2011 by the Free Softw)-.1 E(are F)-.1 E -(oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash)108 182.4 Q F0 -.973(is an)3.474 F F2(sh)3.473 E F0 .973 +Q/F2 10/Times-Bold@0 SF(bash)108 124.8 Q F0 +([options] [command_string | \214le])2.5 E F1(COPYRIGHT)72 141.6 Q F0 +(Bash is Cop)108 153.6 Q(yright \251 1989-2013 by the Free Softw)-.1 E +(are F)-.1 E(oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash) +108 182.4 Q F0 .973(is an)3.474 F F2(sh)3.473 E F0 .973 (-compatible command language interpreter that e)B -.15(xe)-.15 G .973 (cutes commands read from the standard).15 F(input or from a \214le.)108 194.4 Q F2(Bash)5 E F0(also incorporates useful features from the)2.5 E @@ -256,2152 +256,2338 @@ ell and Utilities portion of the IEEE POSIX)3.027 F 1.284(used as options when the shell is in)108 264 R -.2(vo)-.4 G -.1 (ke).2 G 3.785(d. In).1 F(addition,)3.785 E F2(bash)3.785 E F0 1.285 (interprets the follo)3.785 F 1.285(wing options when it is)-.25 F(in) -108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 292.8 Q F3 -(string)4.166 E F0 .797(If the)12.354 F F23.297 E F0 .796 -(option is present, then commands are read from)3.297 F F3(string)3.296 -E F0 5.796(.I).22 G 3.296(ft)-5.796 G .796(here are ar)-3.296 F .796 -(guments after)-.18 F(the)158 304.8 Q F3(string)2.5 E F0 2.5(,t).22 G -(he)-2.5 E 2.5(ya)-.15 G -(re assigned to the positional parameters, starting with)-2.5 E F2($0) -2.5 E F0(.)A F2108 316.8 Q F0(If the)41.52 E F22.5 E F0 -(option is present, the shell is)2.5 E F3(inter)2.5 E(active)-.15 E F0 -(.).18 E F2108 328.8 Q F0(Mak)41.52 E(e)-.1 E F2(bash)2.5 E F0 -(act as if it had been in)2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(da).1 G 2.5 -(sal)-2.5 G(ogin shell \(see)-2.5 E/F4 9/Times-Bold@0 SF(INV)2.5 E(OCA) --.405 E(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E F2108 340.8 Q F0 -(If the)39.86 E F22.5 E F0(option is present, the shell becomes) -2.5 E F3 -.37(re)2.5 G(stricted).37 E F0(\(see)3.27 E F4 -(RESTRICTED SHELL)2.5 E F0(belo)2.25 E(w\).)-.25 E F2108 352.8 Q -F0 .602(If the)40.41 F F23.102 E F0 .602 +108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 292.8 Q F0 .881 +(If the)39.86 F F23.381 E F0 .881(option is present, then command\ +s are read from the \214rst non-option ar)3.381 F(gument)-.18 E F3(com-) +3.38 E(mand_string)158 304.8 Q F0 5.706(.I).22 G 3.206(ft)-5.706 G .706 +(here are ar)-3.206 F .706(guments after the)-.18 F F3(command_string) +3.206 E F0 3.206(,t).22 G(he)-3.206 E 3.206(ya)-.15 G .706 +(re assigned to the posi-)-3.206 F(tional parameters, starting with)158 +316.8 Q F2($0)2.5 E F0(.)A F2108 328.8 Q F0(If the)41.52 E F2 +2.5 E F0(option is present, the shell is)2.5 E F3(inter)2.5 E +(active)-.15 E F0(.).18 E F2108 340.8 Q F0(Mak)41.52 E(e)-.1 E F2 +(bash)2.5 E F0(act as if it had been in)2.5 E -.2(vo)-.4 G -.1(ke).2 G +2.5(da).1 G 2.5(sal)-2.5 G(ogin shell \(see)-2.5 E/F4 9/Times-Bold@0 SF +(INV)2.5 E(OCA)-.405 E(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E F2 +108 352.8 Q F0(If the)39.86 E F22.5 E F0 +(option is present, the shell becomes)2.5 E F3 -.37(re)2.5 G(stricted) +.37 E F0(\(see)3.27 E F4(RESTRICTED SHELL)2.5 E F0(belo)2.25 E(w\).)-.25 +E F2108 364.8 Q F0 .602(If the)40.41 F F23.102 E F0 .602 (option is present, or if no ar)3.102 F .602 -(guments remain after option processing, then commands)-.18 F .617 -(are read from the standard input.)158 364.8 R .617(This option allo) -5.617 F .616(ws the positional parameters to be set when)-.25 F(in)158 -376.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) -.15 E F2108 388.8 Q F0 3.183(Al)37.08 G .683 -(ist of all double-quoted strings preceded by)-3.183 F F2($)3.184 E F0 -.684(is printed on the standard output.)3.184 F .684(These are)5.684 F +(guments remain after option processing, then commands)-.18 F .616 +(are read from the standard input.)158 376.8 R .617(This option allo) +5.617 F .617(ws the positional parameters to be set when)-.25 F(in)158 +388.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) +.15 E F2108 400.8 Q F0 3.184(Al)37.08 G .684 +(ist of all double-quoted strings preceded by)-3.184 F F2($)3.184 E F0 +.684(is printed on the standard output.)3.184 F .683(These are)5.683 F .458(the strings that are subject to language translation when the curr\ -ent locale is not)158 400.8 R F2(C)2.958 E F0(or)2.958 E F2(POSIX)2.958 -E F0(.)A(This implies the)158 412.8 Q F22.5 E F0 +ent locale is not)158 412.8 R F2(C)2.958 E F0(or)2.959 E F2(POSIX)2.959 +E F0(.)A(This implies the)158 424.8 Q F22.5 E F0 (option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2 -([\255+]O [)108 424.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 -436.8 Q F0 1.097(is one of the shell options accepted by the)3.596 F F2 -(shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.097 -(SHELL B)3.597 F(UIL)-.09 E(TIN)-.828 E(COMMANDS)158 448.8 Q F0(belo) -3.003 E 3.253(w\). If)-.25 F F3(shopt_option)3.253 E F0 .753 +([\255+]O [)108 436.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 +448.8 Q F0 1.097(is one of the shell options accepted by the)3.597 F F2 +(shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.096 +(SHELL B)3.596 F(UIL)-.09 E(TIN)-.828 E(COMMANDS)158 460.8 Q F0(belo) +3.002 E 3.252(w\). If)-.25 F F3(shopt_option)3.253 E F0 .753 (is present,)3.253 F F23.253 E F0 .753(sets the v)3.253 F .753 -(alue of that option;)-.25 F F2(+O)3.252 E F0(unsets)3.252 E 2.624 -(it. If)158 460.8 R F3(shopt_option)2.624 E F0 .124 -(is not supplied, the names and v)2.624 F .125 -(alues of the shell options accepted by)-.25 F F2(shopt)2.625 E F0 .506 -(are printed on the standard output.)158 472.8 R .505(If the in)5.505 F --.2(vo)-.4 G .505(cation option is).2 F F2(+O)3.005 E F0 3.005(,t)C .505 +(alue of that option;)-.25 F F2(+O)3.253 E F0(unsets)3.253 E 2.625 +(it. If)158 472.8 R F3(shopt_option)2.625 E F0 .125 +(is not supplied, the names and v)2.625 F .124 +(alues of the shell options accepted by)-.25 F F2(shopt)2.624 E F0 .505 +(are printed on the standard output.)158 484.8 R .505(If the in)5.505 F +-.2(vo)-.4 G .505(cation option is).2 F F2(+O)3.005 E F0 3.005(,t)C .506 (he output is displayed in a)-3.005 F -(format that may be reused as input.)158 484.8 Q F2108 496.8 Q F0 -(A)38.6 E F23.363 E F0 .864 +(format that may be reused as input.)158 496.8 Q F2108 508.8 Q F0 +(A)38.6 E F23.364 E F0 .864 (signals the end of options and disables further option processing.) -3.363 F(An)5.864 E 3.364(ya)-.15 G -.18(rg)-3.364 G .864(uments after) -.18 F(the)158 508.8 Q F22.5 E F0 +3.364 F(An)5.863 E 3.363(ya)-.15 G -.18(rg)-3.363 G .863(uments after) +.18 F(the)158 520.8 Q F22.5 E F0 (are treated as \214lenames and ar)2.5 E 2.5(guments. An)-.18 F(ar)2.5 E (gument of)-.18 E F22.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to) -.25 E F22.5 E F0(.)A F2(Bash)108 525.6 Q F0 .304 -(also interprets a number of multi-character options.)2.804 F .303 +.25 E F22.5 E F0(.)A F2(Bash)108 537.6 Q F0 .303 +(also interprets a number of multi-character options.)2.803 F .304 (These options must appear on the command line)5.303 F -(before the single-character options to be recognized.)108 537.6 Q F2 -108 554.4 Q(ugger)-.2 E F0 .474(Arrange for the deb)144 -566.4 R .474(ugger pro\214le to be e)-.2 F -.15(xe)-.15 G .475 -(cuted before the shell starts.).15 F -.45(Tu)5.475 G .475(rns on e).45 -F .475(xtended deb)-.15 F(ug-)-.2 E -(ging mode \(see the description of the)144 578.4 Q F2(extdeb)2.5 E(ug) +(before the single-character options to be recognized.)108 549.6 Q F2 +108 566.4 Q(ugger)-.2 E F0 .475(Arrange for the deb)144 +578.4 R .475(ugger pro\214le to be e)-.2 F -.15(xe)-.15 G .475 +(cuted before the shell starts.).15 F -.45(Tu)5.474 G .474(rns on e).45 +F .474(xtended deb)-.15 F(ug-)-.2 E +(ging mode \(see the description of the)144 590.4 Q F2(extdeb)2.5 E(ug) -.2 E F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo) -.2 E(w\).)-.25 E F2(\255\255dump\255po\255strings)108 590.4 Q F0(Equi) -144 602.4 Q -.25(va)-.25 G(lent to).25 E F22.5 E F0 2.5(,b)C +.2 E(w\).)-.25 E F2(\255\255dump\255po\255strings)108 602.4 Q F0(Equi) +144 614.4 Q -.25(va)-.25 G(lent to).25 E F22.5 E F0 2.5(,b)C (ut the output is in the GNU)-2.7 E F3 -.1(ge)2.5 G(tte).1 E(xt)-.2 E F2 (po)2.5 E F0(\(portable object\) \214le format.)2.5 E F2 -(\255\255dump\255strings)108 614.4 Q F0(Equi)144 626.4 Q -.25(va)-.25 G -(lent to).25 E F22.5 E F0(.)A F2(\255\255help)108 638.4 Q F0 +(\255\255dump\255strings)108 626.4 Q F0(Equi)144 638.4 Q -.25(va)-.25 G +(lent to).25 E F22.5 E F0(.)A F2(\255\255help)108 650.4 Q F0 (Display a usage message on standard output and e)6.26 E -(xit successfully)-.15 E(.)-.65 E F2108 650.4 Q F3 -(\214le)2.5 E F2108 662.4 Q(c\214le)-.18 E F3(\214le)2.5 E F0 -(Ex)144 674.4 Q 1.599(ecute commands from)-.15 F F3(\214le)6.009 E F0 -1.598(instead of the standard personal initialization \214le)4.279 F F3 -(~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) -144 686.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E -(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E F2(\255\255login)108 703.2 Q F0 -(Equi)144 715.2 Q -.25(va)-.25 G(lent to).25 E F22.5 E F0(.)A -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(1)190.955 E 0 Cg EP +(xit successfully)-.15 E(.)-.65 E F2108 662.4 Q F3 +(\214le)2.5 E F2108 674.4 Q(c\214le)-.18 E F3(\214le)2.5 E F0 +(Ex)144 686.4 Q 1.598(ecute commands from)-.15 F F3(\214le)6.008 E F0 +1.598(instead of the standard personal initialization \214le)4.278 F F3 +(~/.bashr)3.599 E(c)-.37 E F0 1.599(if the)4.409 F(shell is interacti) +144 698.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(1)195.95 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(\255\255noediting)108 84 Q F0 -(Do not use the GNU)144 96 Q F1 -.18(re)2.5 G(adline).18 E F0 -(library to read command lines when the shell is interacti)2.5 E -.15 -(ve)-.25 G(.).15 E F1(\255\255nopr)108 112.8 Q(o\214le)-.18 E F0 .017 -(Do not read either the system-wide startup \214le)144 124.8 R/F2 10 +-.35 E/F1 10/Times-Bold@0 SF(\255\255login)108 84 Q F0(Equi)144 96 Q +-.25(va)-.25 G(lent to).25 E F12.5 E F0(.)A F1(\255\255noediting) +108 112.8 Q F0(Do not use the GNU)144 124.8 Q F1 -.18(re)2.5 G(adline) +.18 E F0(library to read command lines when the shell is interacti)2.5 E +-.15(ve)-.25 G(.).15 E F1(\255\255nopr)108 141.6 Q(o\214le)-.18 E F0 +.017(Do not read either the system-wide startup \214le)144 153.6 R/F2 10 /Times-Italic@0 SF(/etc/pr)4.183 E(o\214le)-.45 E F0 .017(or an)4.183 F -2.517(yo)-.15 G 2.517(ft)-2.517 G .018 -(he personal initialization \214les)-2.517 F F2(~/.bash_pr)144 136.8 Q -(o\214le)-.45 E F0(,).18 E F2(~/.bash_lo)2.698 E(gin)-.1 E F0 2.698(,o) -.24 G(r)-2.698 E F2(~/.pr)2.698 E(o\214le)-.45 E F0 5.198(.B).18 G 2.698 +2.517(yo)-.15 G 2.517(ft)-2.517 G .017 +(he personal initialization \214les)-2.517 F F2(~/.bash_pr)144 165.6 Q +(o\214le)-.45 E F0(,).18 E F2(~/.bash_lo)2.697 E(gin)-.1 E F0 2.697(,o) +.24 G(r)-2.697 E F2(~/.pr)2.698 E(o\214le)-.45 E F0 5.198(.B).18 G 2.698 (yd)-5.198 G(ef)-2.698 E(ault,)-.1 E F1(bash)2.698 E F0 .198 (reads these \214les when it is in)2.698 F -.2(vo)-.4 G -.1(ke).2 G -2.697(da).1 G(s)-2.697 E 2.5(al)144 148.8 S(ogin shell \(see)-2.5 E/F3 9 +2.698(da).1 G(s)-2.698 E 2.5(al)144 177.6 S(ogin shell \(see)-2.5 E/F3 9 /Times-Bold@0 SF(INV)2.5 E(OCA)-.405 E(TION)-.855 E F0(belo)2.25 E(w\).) --.25 E F1108 165.6 Q(c)-.18 E F0 1.228(Do not read and e) +-.25 E F1108 194.4 Q(c)-.18 E F0 1.228(Do not read and e) 5.34 F -.15(xe)-.15 G 1.228(cute the personal initialization \214le).15 F F2(~/.bashr)3.228 E(c)-.37 E F0 1.228(if the shell is interacti)4.038 F -.15(ve)-.25 G 6.228(.T).15 G(his)-6.228 E(option is on by def)144 -177.6 Q(ault if the shell is in)-.1 E -.2(vo)-.4 G -.1(ke).2 G 2.5(da).1 -G(s)-2.5 E F1(sh)2.5 E F0(.)A F1(\255\255posix)108 194.4 Q F0 1.783 -(Change the beha)144 206.4 R 1.782(vior of)-.2 F F1(bash)4.282 E F0 +206.4 Q(ault if the shell is in)-.1 E -.2(vo)-.4 G -.1(ke).2 G 2.5(da).1 +G(s)-2.5 E F1(sh)2.5 E F0(.)A F1(\255\255posix)108 223.2 Q F0 1.782 +(Change the beha)144 235.2 R 1.782(vior of)-.2 F F1(bash)4.282 E F0 1.782(where the def)4.282 F 1.782(ault operation dif)-.1 F 1.782 -(fers from the POSIX standard to)-.25 F(match the standard \()144 218.4 -Q F2(posix mode)A F0(\).)A F1108 235.2 Q(estricted)-.18 E F0 -(The shell becomes restricted \(see)144 247.2 Q F3(RESTRICTED SHELL)2.5 -E F0(belo)2.25 E(w\).)-.25 E F1108 264 Q(erbose)-.1 E F0(Equi) -144 276 Q -.25(va)-.25 G(lent to).25 E F15 E F0(.)A F1108 -292.8 Q(ersion)-.1 E F0(Sho)144 304.8 Q 2.5(wv)-.25 G +(fers from the POSIX standard to)-.25 F .333(match the standard \()144 +247.2 R F2 .333(posix mode)B F0 2.833(\). See)B F3 .333(SEE ALSO)2.833 F +F0(belo)2.583 E 2.833(wf)-.25 G .332 +(or a reference to a document that details)-2.833 F(ho)144 259.2 Q 2.5 +(wp)-.25 G(osix mode af)-2.5 E(fects bash')-.25 E 2.5(sb)-.55 G(eha)-2.5 +E(vior)-.2 E(.)-.55 E F1108 276 Q(estricted)-.18 E F0 +(The shell becomes restricted \(see)144 288 Q F3(RESTRICTED SHELL)2.5 E +F0(belo)2.25 E(w\).)-.25 E F1108 304.8 Q(erbose)-.1 E F0(Equi) +144 316.8 Q -.25(va)-.25 G(lent to).25 E F15 E F0(.)A F1 +108 333.6 Q(ersion)-.1 E F0(Sho)144 345.6 Q 2.5(wv)-.25 G (ersion information for this instance of)-2.65 E F1(bash)2.5 E F0 (on the standard output and e)2.5 E(xit successfully)-.15 E(.)-.65 E/F4 -10.95/Times-Bold@0 SF(ARGUMENTS)72 321.6 Q F0 .016(If ar)108 333.6 R +10.95/Times-Bold@0 SF(ARGUMENTS)72 362.4 Q F0 .016(If ar)108 374.4 R .016(guments remain after option processing, and neither the)-.18 F F1 2.516 E F0 .016(nor the)2.516 F F12.516 E F0 .016 -(option has been supplied, the \214rst)2.516 F(ar)108 345.6 Q .041(gume\ +(option has been supplied, the \214rst)2.516 F(ar)108 386.4 Q .041(gume\ nt is assumed to be the name of a \214le containing shell commands.)-.18 F(If)5.041 E F1(bash)2.541 E F0 .041(is in)2.541 F -.2(vo)-.4 G -.1(ke) .2 G 2.541(di).1 G 2.541(nt)-2.541 G .041(his f)-2.541 F(ashion,)-.1 E -F1($0)108 357.6 Q F0 .936(is set to the name of the \214le, and the pos\ +F1($0)108 398.4 Q F0 .936(is set to the name of the \214le, and the pos\ itional parameters are set to the remaining ar)3.435 F(guments.)-.18 E -F1(Bash)5.936 E F0 .234(reads and e)108 369.6 R -.15(xe)-.15 G .234 +F1(Bash)5.936 E F0 .234(reads and e)108 410.4 R -.15(xe)-.15 G .234 (cutes commands from this \214le, then e).15 F(xits.)-.15 E F1(Bash) 5.234 E F0 1.334 -.55('s e)D .234(xit status is the e).4 F .233 -(xit status of the last com-)-.15 F .348(mand e)108 381.6 R -.15(xe)-.15 +(xit status of the last com-)-.15 F .348(mand e)108 422.4 R -.15(xe)-.15 G .348(cuted in the script.).15 F .348(If no commands are e)5.348 F -.15 (xe)-.15 G .348(cuted, the e).15 F .349(xit status is 0.)-.15 F .349 (An attempt is \214rst made to)5.349 F .254 -(open the \214le in the current directory)108 393.6 R 2.754(,a)-.65 G +(open the \214le in the current directory)108 434.4 R 2.754(,a)-.65 G .253 (nd, if no \214le is found, then the shell searches the directories in) --2.754 F F3 -.666(PA)2.753 G(TH)-.189 E F0(for the script.)108 405.6 Q -F4(INV)72 422.4 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 434.4 Q F2(lo)2.5 E +-2.754 F F3 -.666(PA)2.753 G(TH)-.189 E F0(for the script.)108 446.4 Q +F4(INV)72 463.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 475.2 Q F2(lo)2.5 E (gin shell)-.1 E F0(is one whose \214rst character of ar)2.5 E (gument zero is a)-.18 E F12.5 E F0 2.5(,o)C 2.5(ro)-2.5 G (ne started with the)-2.5 E F1(\255\255login)2.5 E F0(option.)2.5 E(An) -108 451.2 Q F2(inter)2.814 E(active)-.15 E F0 .314 +108 492 Q F2(inter)2.814 E(active)-.15 E F0 .314 (shell is one started without non-option ar)2.814 F .315 (guments and without the)-.18 F F12.815 E F0 .315 (option whose standard)2.815 F 1.5 (input and error are both connected to terminals \(as determined by)108 -463.2 R F2(isatty)4 E F0 1.5(\(3\)\), or one started with the).32 F F1 -4 E F0(option.)108 475.2 Q F3(PS1)5.289 E F0 .289(is set and)2.539 -F F1<24ad>2.789 E F0(includes)2.789 E F1(i)2.789 E F0(if)2.789 E F1 -(bash)2.789 E F0 .289(is interacti)2.789 F -.15(ve)-.25 G 2.789(,a).15 G -(llo)-2.789 E .29(wing a shell script or a startup \214le to test this) --.25 F(state.)108 487.2 Q .033(The follo)108 504 R .033 +504 R F2(isatty)4 E F0 1.5(\(3\)\), or one started with the).32 F F1 +4 E F0(option.)108 516 Q F3(PS1)5.289 E F0 .289(is set and)2.539 F +F1<24ad>2.789 E F0(includes)2.789 E F1(i)2.789 E F0(if)2.789 E F1(bash) +2.789 E F0 .289(is interacti)2.789 F -.15(ve)-.25 G 2.789(,a).15 G(llo) +-2.789 E .29(wing a shell script or a startup \214le to test this)-.25 F +(state.)108 528 Q .033(The follo)108 544.8 R .033 (wing paragraphs describe ho)-.25 F(w)-.25 E F1(bash)2.532 E F0 -.15 (exe)2.532 G .032(cutes its startup \214les.).15 F .032(If an)5.032 F 2.532(yo)-.15 G 2.532(ft)-2.532 G .032(he \214les e)-2.532 F .032 -(xist b)-.15 F .032(ut cannot be)-.2 F(read,)108 516 Q F1(bash)3.085 E -F0 .585(reports an error)3.085 F 5.585(.T)-.55 G .585(ildes are e)-5.935 -F .586(xpanded in \214le names as described belo)-.15 F 3.086(wu)-.25 G -(nder)-3.086 E F1 -.18(Ti)3.086 G .586(lde Expansion).18 F F0(in the)108 -528 Q F3(EXP)2.5 E(ANSION)-.666 E F0(section.)2.25 E(When)108 544.8 Q F1 -(bash)2.896 E F0 .396(is in)2.896 F -.2(vo)-.4 G -.1(ke).2 G 2.896(da).1 -G 2.896(sa)-2.896 G 2.896(ni)-2.896 G(nteracti)-2.896 E .696 -.15(ve l) --.25 H .396(ogin shell, or as a non-interacti).15 F .695 -.15(ve s)-.25 -H .395(hell with the).15 F F1(\255\255login)2.895 E F0 .395(option, it) -2.895 F 1.333(\214rst reads and e)108 556.8 R -.15(xe)-.15 G 1.333 -(cutes commands from the \214le).15 F F2(/etc/pr)3.833 E(o\214le)-.45 E -F0 3.834(,i)C 3.834(ft)-3.834 G 1.334(hat \214le e)-3.834 F 3.834 +(xist b)-.15 F .032(ut cannot be)-.2 F(read,)108 556.8 Q F1(bash)2.599 E +F0 .099(reports an error)2.599 F 5.099(.T)-.55 G .099(ildes are e)-5.449 +F .099(xpanded in \214lenames as described belo)-.15 F 2.6(wu)-.25 G +(nder)-2.6 E F1 -.18(Ti)2.6 G .1(lde Expansion).18 F F0(in)2.6 E(the)108 +568.8 Q F3(EXP)2.5 E(ANSION)-.666 E F0(section.)2.25 E(When)108 585.6 Q +F1(bash)2.896 E F0 .396(is in)2.896 F -.2(vo)-.4 G -.1(ke).2 G 2.896(da) +.1 G 2.896(sa)-2.896 G 2.896(ni)-2.896 G(nteracti)-2.896 E .696 -.15 +(ve l)-.25 H .396(ogin shell, or as a non-interacti).15 F .695 -.15 +(ve s)-.25 H .395(hell with the).15 F F1(\255\255login)2.895 E F0 .395 +(option, it)2.895 F 1.333(\214rst reads and e)108 597.6 R -.15(xe)-.15 G +1.333(cutes commands from the \214le).15 F F2(/etc/pr)3.833 E(o\214le) +-.45 E F0 3.834(,i)C 3.834(ft)-3.834 G 1.334(hat \214le e)-3.834 F 3.834 (xists. After)-.15 F 1.334(reading that \214le, it)3.834 F .249 -(looks for)108 568.8 R F2(~/.bash_pr)2.749 E(o\214le)-.45 E F0(,)A F2 +(looks for)108 609.6 R F2(~/.bash_pr)2.749 E(o\214le)-.45 E F0(,)A F2 (~/.bash_lo)2.749 E(gin)-.1 E F0 2.749(,a)C(nd)-2.749 E F2(~/.pr)2.749 E (o\214le)-.45 E F0 2.749(,i)C 2.749(nt)-2.749 G .249(hat order)-2.749 F 2.748(,a)-.4 G .248(nd reads and e)-2.748 F -.15(xe)-.15 G .248 -(cutes commands from).15 F .796(the \214rst one that e)108 580.8 R .796 +(cutes commands from).15 F .796(the \214rst one that e)108 621.6 R .796 (xists and is readable.)-.15 F(The)5.796 E F1(\255\255nopr)3.296 E (o\214le)-.18 E F0 .797(option may be used when the shell is started to) -3.296 F(inhibit this beha)108 592.8 Q(vior)-.2 E(.)-.55 E -(When a login shell e)108 609.6 Q(xits,)-.15 E F1(bash)2.5 E F0 +3.296 F(inhibit this beha)108 633.6 Q(vior)-.2 E(.)-.55 E +(When a login shell e)108 650.4 Q(xits,)-.15 E F1(bash)2.5 E F0 (reads and e)2.5 E -.15(xe)-.15 G(cutes commands from the \214le).15 E F2(~/.bash_lo)2.5 E(gout)-.1 E F0 2.5(,i)C 2.5(fi)-2.5 G 2.5(te)-2.5 G -(xists.)-2.65 E 1.698(When an interacti)108 626.4 R 1.998 -.15(ve s)-.25 +(xists.)-2.65 E 1.698(When an interacti)108 667.2 R 1.998 -.15(ve s)-.25 H 1.698(hell that is not a login shell is started,).15 F F1(bash)4.197 E F0 1.697(reads and e)4.197 F -.15(xe)-.15 G 1.697(cutes commands from) -.15 F F2(~/.bashr)108 638.4 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G +.15 F F2(~/.bashr)108 679.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035(hat \214le e)-2.535 F 2.535(xists. This)-.15 F .036 (may be inhibited by using the)2.535 F F12.536 E(c)-.18 E F0 2.536(option. The)2.536 F F12.536 E(c\214le)-.18 E F2(\214le) -2.536 E F0 .036(option will)2.536 F(force)108 650.4 Q F1(bash)2.5 E F0 +2.536 E F0 .036(option will)2.536 F(force)108 691.2 Q F1(bash)2.5 E F0 (to read and e)2.5 E -.15(xe)-.15 G(cute commands from).15 E F2(\214le) -2.5 E F0(instead of)2.5 E F2(~/.bashr)2.5 E(c)-.37 E F0(.)A(When)108 -667.2 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15 -(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 +2.5 E F0(instead of)2.5 E F2(~/.bashr)2.5 E(c)-.37 E F0(.)A(When)108 708 +Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 +G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E F3 -.27(BA)108 679.2 S(SH_ENV).27 E F0 1.01(in the en) +F(ariable)-.25 E F3 -.27(BA)108 720 S(SH_ENV).27 E F0 1.01(in the en) 3.26 F 1.01(vironment, e)-.4 F 1.01(xpands its v)-.15 F 1.01 (alue if it appears there, and uses the e)-.25 F 1.011(xpanded v)-.15 F -1.011(alue as the)-.25 F(name of a \214le to read and e)108 691.2 Q -.15 -(xe)-.15 G(cute.).15 E F1(Bash)5 E F0(beha)2.5 E -.15(ve)-.2 G 2.5(sa) -.15 G 2.5(si)-2.5 G 2.5(ft)-2.5 G(he follo)-2.5 E(wing command were e) --.25 E -.15(xe)-.15 G(cuted:).15 E/F5 10/Courier@0 SF -(if [ \255n "$BASH_ENV" ]; then . "$BASH_ENV"; fi)144 709.2 Q F0 -.2(bu) -108 727.2 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E F3 -.666(PA)2.5 G -(TH)-.189 E F0 -.25(va)2.25 G -(riable is not used to search for the \214le name.).25 E(GNU Bash-4.2)72 -768 Q(2010 December 28)135.965 E(2)190.955 E 0 Cg EP +1.011(alue as the)-.25 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E +(2)195.95 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(If)108 84 Q/F1 10/Times-Bold@0 SF(bash)3.417 E F0 .917(is in) -3.417 F -.2(vo)-.4 G -.1(ke).2 G 3.417(dw).1 G .917(ith the name)-3.417 -F F1(sh)3.417 E F0 3.417(,i)C 3.417(tt)-3.417 G .917 -(ries to mimic the startup beha)-3.417 F .917(vior of historical v)-.2 F -.917(ersions of)-.15 F F1(sh)3.417 E F0(as)3.417 E .145 +-.35 E(name of a \214le to read and e)108 84 Q -.15(xe)-.15 G(cute.).15 +E/F1 10/Times-Bold@0 SF(Bash)5 E F0(beha)2.5 E -.15(ve)-.2 G 2.5(sa).15 +G 2.5(si)-2.5 G 2.5(ft)-2.5 G(he follo)-2.5 E(wing command were e)-.25 E +-.15(xe)-.15 G(cuted:).15 E/F2 10/Courier@0 SF +(if [ \255n "$BASH_ENV" ]; then . "$BASH_ENV"; fi)144 102 Q F0 -.2(bu) +108 120 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E/F3 9/Times-Bold@0 +SF -.666(PA)2.5 G(TH)-.189 E F0 -.25(va)2.25 G +(riable is not used to search for the \214lename.).25 E(If)108 136.8 Q +F1(bash)3.417 E F0 .917(is in)3.417 F -.2(vo)-.4 G -.1(ke).2 G 3.417(dw) +.1 G .917(ith the name)-3.417 F F1(sh)3.417 E F0 3.417(,i)C 3.417(tt) +-3.417 G .917(ries to mimic the startup beha)-3.417 F .917 +(vior of historical v)-.2 F .917(ersions of)-.15 F F1(sh)3.417 E F0(as) +3.417 E .145 (closely as possible, while conforming to the POSIX standard as well.) -108 96 R .145(When in)5.145 F -.2(vo)-.4 G -.1(ke).2 G 2.645(da).1 G +108 148.8 R .145(When in)5.145 F -.2(vo)-.4 G -.1(ke).2 G 2.645(da).1 G 2.645(sa)-2.645 G 2.645(ni)-2.645 G(nteracti)-2.645 E .445 -.15(ve l) --.25 H(ogin).15 E 1.264(shell, or a non-interacti)108 108 R 1.564 -.15 +-.25 H(ogin).15 E 1.264(shell, or a non-interacti)108 160.8 R 1.564 -.15 (ve s)-.25 H 1.264(hell with the).15 F F1(\255\255login)3.764 E F0 1.264 (option, it \214rst attempts to read and e)3.764 F -.15(xe)-.15 G 1.263 -(cute commands).15 F(from)108 120 Q/F2 10/Times-Italic@0 SF(/etc/pr) -4.142 E(o\214le)-.45 E F0(and)3.172 E F2(~/.pr)2.992 E(o\214le)-.45 E F0 +(cute commands).15 F(from)108 172.8 Q/F4 10/Times-Italic@0 SF(/etc/pr) +4.142 E(o\214le)-.45 E F0(and)3.172 E F4(~/.pr)2.992 E(o\214le)-.45 E F0 2.992(,i).18 G 2.992(nt)-2.992 G .492(hat order)-2.992 F 5.492(.T)-.55 G (he)-5.492 E F1(\255\255nopr)2.992 E(o\214le)-.18 E F0 .493 (option may be used to inhibit this beha)2.993 F(vior)-.2 E(.)-.55 E -.418(When in)108 132 R -.2(vo)-.4 G -.1(ke).2 G 2.918(da).1 G 2.918(sa) --2.918 G 2.918(ni)-2.918 G(nteracti)-2.918 E .718 -.15(ve s)-.25 H .418 -(hell with the name).15 F F1(sh)2.918 E F0(,)A F1(bash)2.918 E F0 .418 -(looks for the v)2.918 F(ariable)-.25 E/F3 9/Times-Bold@0 SF(ENV)2.918 E -/F4 9/Times-Roman@0 SF(,)A F0 -.15(ex)2.667 G .417(pands its v).15 F -(alue)-.25 E .171(if it is de\214ned, and uses the e)108 144 R .171 +.418(When in)108 184.8 R -.2(vo)-.4 G -.1(ke).2 G 2.918(da).1 G 2.918 +(sa)-2.918 G 2.918(ni)-2.918 G(nteracti)-2.918 E .718 -.15(ve s)-.25 H +.418(hell with the name).15 F F1(sh)2.918 E F0(,)A F1(bash)2.918 E F0 +.418(looks for the v)2.918 F(ariable)-.25 E F3(ENV)2.918 E/F5 9 +/Times-Roman@0 SF(,)A F0 -.15(ex)2.667 G .417(pands its v).15 F(alue) +-.25 E .171(if it is de\214ned, and uses the e)108 196.8 R .171 (xpanded v)-.15 F .171(alue as the name of a \214le to read and e)-.25 F -.15(xe)-.15 G 2.671(cute. Since).15 F 2.671(as)2.671 G .171(hell in) --2.671 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(as)108 156 Q F1(sh)3.081 E F0 +-2.671 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(as)108 208.8 Q F1(sh)3.081 E F0 .581(does not attempt to read and e)3.081 F -.15(xe)-.15 G .581 (cute commands from an).15 F 3.08(yo)-.15 G .58 (ther startup \214les, the)-3.08 F F13.08 E(c\214le)-.18 E F0 -.58(option has)3.08 F .182(no ef)108 168 R 2.682(fect. A)-.25 F +.58(option has)3.08 F .182(no ef)108 220.8 R 2.682(fect. A)-.25 F (non-interacti)2.682 E .482 -.15(ve s)-.25 H .182(hell in).15 F -.2(vo) -.4 G -.1(ke).2 G 2.682(dw).1 G .182(ith the name)-2.682 F F1(sh)2.682 E F0 .182(does not attempt to read an)2.682 F 2.683(yo)-.15 G .183 -(ther startup \214les.)-2.683 F(When in)108 180 Q -.2(vo)-.4 G -.1(ke).2 -G 2.5(da).1 G(s)-2.5 E F1(sh)2.5 E F0(,)A F1(bash)2.5 E F0(enters)2.5 E -F2(posix)3.75 E F0(mode after the startup \214les are read.)3.03 E(When) -108 196.8 Q F1(bash)2.727 E F0 .226(is started in)2.727 F F2(posix)3.976 -E F0 .226(mode, as with the)3.256 F F1(\255\255posix)2.726 E F0 .226 -(command line option, it follo)2.726 F .226(ws the POSIX stan-)-.25 F -.341(dard for startup \214les.)108 208.8 R .341(In this mode, interacti) -5.341 F .641 -.15(ve s)-.25 H .341(hells e).15 F .341(xpand the)-.15 F -F3(ENV)2.841 E F0 -.25(va)2.591 G .342(riable and commands are read and) -.25 F -.15(exe)108 220.8 S(cuted from the \214le whose name is the e).15 -E(xpanded v)-.15 E 2.5(alue. No)-.25 F(other startup \214les are read.) -2.5 E F1(Bash)108 237.6 Q F0 .224(attempts to determine when it is bein\ -g run with its standard input connected to a netw)2.724 F .223 -(ork connection,)-.1 F .025(as when e)108 249.6 R -.15(xe)-.15 G .025 -(cuted by the remote shell daemon, usually).15 F F2 -.1(rs)2.525 G(hd).1 +(ther startup \214les.)-2.683 F(When in)108 232.8 Q -.2(vo)-.4 G -.1(ke) +.2 G 2.5(da).1 G(s)-2.5 E F1(sh)2.5 E F0(,)A F1(bash)2.5 E F0(enters)2.5 +E F4(posix)3.75 E F0(mode after the startup \214les are read.)3.03 E +(When)108 249.6 Q F1(bash)2.727 E F0 .226(is started in)2.727 F F4 +(posix)3.976 E F0 .226(mode, as with the)3.256 F F1(\255\255posix)2.726 +E F0 .226(command line option, it follo)2.726 F .226(ws the POSIX stan-) +-.25 F .341(dard for startup \214les.)108 261.6 R .341 +(In this mode, interacti)5.341 F .641 -.15(ve s)-.25 H .341(hells e).15 +F .341(xpand the)-.15 F F3(ENV)2.841 E F0 -.25(va)2.591 G .342 +(riable and commands are read and).25 F -.15(exe)108 273.6 S +(cuted from the \214le whose name is the e).15 E(xpanded v)-.15 E 2.5 +(alue. No)-.25 F(other startup \214les are read.)2.5 E F1(Bash)108 290.4 +Q F0 .224(attempts to determine when it is being run with its standard \ +input connected to a netw)2.724 F .223(ork connection,)-.1 F .025 +(as when e)108 302.4 R -.15(xe)-.15 G .025 +(cuted by the remote shell daemon, usually).15 F F4 -.1(rs)2.525 G(hd).1 E F0 2.525(,o)C 2.525(rt)-2.525 G .025(he secure shell daemon)-2.525 F -F2(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F1(bash)2.525 E F0(deter)2.525 -E(-)-.2 E .134(mines it is being run in this f)108 261.6 R .134 +F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F1(bash)2.525 E F0(deter)2.525 +E(-)-.2 E .134(mines it is being run in this f)108 314.4 R .134 (ashion, it reads and e)-.1 F -.15(xe)-.15 G .133(cutes commands from) -.15 F F2(~/.bashr)2.633 E(c)-.37 E F0 2.633(,i)C 2.633(ft)-2.633 G .133 +.15 F F4(~/.bashr)2.633 E(c)-.37 E F0 2.633(,i)C 2.633(ft)-2.633 G .133 (hat \214le e)-2.633 F .133(xists and is)-.15 F 2.869(readable. It)108 -273.6 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G +326.4 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G 2.869(da).1 G(s)-2.869 E F1(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F1 2.869 E(c)-.18 E F0 .369 (option may be used to inhibit this beha)2.869 F(vior)-.2 E 2.869(,a)-.4 -G(nd)-2.869 E(the)108 285.6 Q F12.606 E(c\214le)-.18 E F0 .106 -(option may be used to force another \214le to be read, b)2.606 F(ut)-.2 -E F2 -.1(rs)2.606 G(hd).1 E F0 .106(does not generally in)2.606 F -.2 -(vo)-.4 G .306 -.1(ke t).2 H .106(he shell).1 F -(with those options or allo)108 297.6 Q 2.5(wt)-.25 G +G(nd)-2.869 E(the)108 338.4 Q F12.919 E(c\214le)-.18 E F0 .419 +(option may be used to force another \214le to be read, b)2.919 F .419 +(ut neither)-.2 F F4 -.1(rs)2.919 G(hd).1 E F0(nor)2.919 E F4(sshd)2.919 +E F0 .418(generally in)2.919 F -.2(vo)-.4 G -.1(ke).2 G +(the shell with those options or allo)108 350.4 Q 2.5(wt)-.25 G (hem to be speci\214ed.)-2.5 E 1.207 -(If the shell is started with the ef)108 314.4 R(fecti)-.25 E 1.507 -.15 +(If the shell is started with the ef)108 367.2 R(fecti)-.25 E 1.507 -.15 (ve u)-.25 H 1.208 (ser \(group\) id not equal to the real user \(group\) id, and the).15 F F13.708 E F0 .536(option is not supplied, no startup \214les are \ -read, shell functions are not inherited from the en)108 326.4 R .535 -(vironment, the)-.4 F F3(SHELLOPTS)108 338.4 Q F4(,)A F3 -.27(BA)2.959 G -(SHOPTS).27 E F4(,)A F3(CDP)2.959 E -.855(AT)-.666 G(H).855 E F4(,)A F0 +read, shell functions are not inherited from the en)108 379.2 R .535 +(vironment, the)-.4 F F3(SHELLOPTS)108 391.2 Q F5(,)A F3 -.27(BA)2.959 G +(SHOPTS).27 E F5(,)A F3(CDP)2.959 E -.855(AT)-.666 G(H).855 E F5(,)A F0 (and)2.959 E F3(GLOBIGNORE)3.209 E F0 -.25(va)2.959 G .709 (riables, if the).25 F 3.209(ya)-.15 G .71(ppear in the en)-3.209 F .71 -(vironment, are)-.4 F .905(ignored, and the ef)108 350.4 R(fecti)-.25 E +(vironment, are)-.4 F .905(ignored, and the ef)108 403.2 R(fecti)-.25 E 1.205 -.15(ve u)-.25 H .904(ser id is set to the real user id.).15 F .904(If the)5.904 F F13.404 E F0 .904(option is supplied at in) -3.404 F -.2(vo)-.4 G .904(cation, the).2 F(startup beha)108 362.4 Q +3.404 F -.2(vo)-.4 G .904(cation, the).2 F(startup beha)108 415.2 Q (vior is the same, b)-.2 E(ut the ef)-.2 E(fecti)-.25 E .3 -.15(ve u) --.25 H(ser id is not reset.).15 E/F5 10.95/Times-Bold@0 SF(DEFINITIONS) -72 379.2 Q F0(The follo)108 391.2 Q +-.25 H(ser id is not reset.).15 E/F6 10.95/Times-Bold@0 SF(DEFINITIONS) +72 432 Q F0(The follo)108 444 Q (wing de\214nitions are used throughout the rest of this document.)-.25 -E F1(blank)108 403.2 Q F0 2.5(As)11.54 G(pace or tab)-2.5 E(.)-.4 E F1 --.1(wo)108 415.2 S(rd).1 E F0 2.5(As)13.88 G +E F1(blank)108 456 Q F0 2.5(As)11.54 G(pace or tab)-2.5 E(.)-.4 E F1 -.1 +(wo)108 468 S(rd).1 E F0 2.5(As)13.88 G (equence of characters considered as a single unit by the shell.)-2.5 E (Also kno)5 E(wn as a)-.25 E F1(tok)2.5 E(en)-.1 E F0(.)A F1(name)108 -427.2 Q F0(A)12.67 E F2(wor)3.005 E(d)-.37 E F0 .165 +480 Q F0(A)12.67 E F4(wor)3.005 E(d)-.37 E F0 .165 (consisting only of alphanumeric characters and underscores, and be) 3.435 F .166(ginning with an alpha-)-.15 F -(betic character or an underscore.)144 439.2 Q(Also referred to as an)5 -E F1(identi\214er)2.5 E F0(.)A F1(metacharacter)108 451.2 Q F0 2.5(Ac) -144 463.2 S(haracter that, when unquoted, separates w)-2.5 E 2.5 -(ords. One)-.1 F(of the follo)2.5 E(wing:)-.25 E F1 5(|&;\(\)<>s)144 -475.2 S 2.5(pace tab)-5 F(contr)108 487.2 Q(ol operator)-.18 E F0(A)144 -499.2 Q F2(tok)2.5 E(en)-.1 E F0(that performs a control function.)2.5 E +(betic character or an underscore.)144 492 Q(Also referred to as an)5 E +F1(identi\214er)2.5 E F0(.)A F1(metacharacter)108 504 Q F0 2.5(Ac)144 +516 S(haracter that, when unquoted, separates w)-2.5 E 2.5(ords. One)-.1 +F(of the follo)2.5 E(wing:)-.25 E F1 5(|&;\(\)<>s)144 528 S 2.5 +(pace tab)-5 F(contr)108 540 Q(ol operator)-.18 E F0(A)144 552 Q F4(tok) +2.5 E(en)-.1 E F0(that performs a control function.)2.5 E (It is one of the follo)5 E(wing symbols:)-.25 E F1 2.5 -(|| & && ; ;; \( \) | |&)144 511.2 R()10 E F5(RESER)72 528 Q -(VED W)-.602 E(ORDS)-.11 E F2 .307(Reserved wor)108 540 R(ds)-.37 E F0 +(|| & && ; ;; \( \) | |&)144 564 R()10 E F6(RESER)72 580.8 Q +(VED W)-.602 E(ORDS)-.11 E F4 .307(Reserved wor)108 592.8 R(ds)-.37 E F0 .307(are w)2.807 F .307(ords that ha)-.1 F .607 -.15(ve a s)-.2 H .306 (pecial meaning to the shell.).15 F .306(The follo)5.306 F .306(wing w) --.25 F .306(ords are recognized as)-.1 F(reserv)108 552 Q .227 +-.25 F .306(ords are recognized as)-.1 F(reserv)108 604.8 Q .227 (ed when unquoted and either the \214rst w)-.15 F .227 (ord of a simple command \(see)-.1 F F3 .227(SHELL GRAMMAR)2.727 F F0 -(belo)2.477 E .227(w\) or)-.25 F(the third w)108 564 Q(ord of a)-.1 E F1 -(case)2.5 E F0(or)2.5 E F1 -.25(fo)2.5 G(r).25 E F0(command:)2.5 E F1 -11.916(!c)144 580.8 S 9.416(ase do done elif else esac \214 f)-11.916 F -9.415(or function if in select then until)-.25 F 7.5 -(while { } time [[ ]])144 592.8 R F5(SHELL GRAMMAR)72 609.6 Q F1 -(Simple Commands)87 621.6 Q F0(A)108 633.6 Q F2 .388(simple command) -2.888 F F0 .388(is a sequence of optional v)2.888 F .389 -(ariable assignments follo)-.25 F .389(wed by)-.25 F F1(blank)2.889 E F0 -.389(-separated w)B .389(ords and)-.1 F .816 -(redirections, and terminated by a)108 645.6 R F2(contr)3.316 E .815 -(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815(he \214rst w)-5.815 F -.815(ord speci\214es the command to be e)-.1 F -.15(xe)-.15 G(cuted,).15 -E(and is passed as ar)108 657.6 Q(gument zero.)-.18 E(The remaining w)5 -E(ords are passed as ar)-.1 E(guments to the in)-.18 E -.2(vo)-.4 G -.1 -(ke).2 G 2.5(dc).1 G(ommand.)-2.5 E .175(The return v)108 674.4 R .175 -(alue of a)-.25 F F2 .175(simple command)2.675 F F0 .175(is its e)2.675 -F .175(xit status, or 128+)-.15 F F2(n)A F0 .176 -(if the command is terminated by signal)3.508 F F2(n)2.676 E F0(.).24 E -F1(Pipelines)87 691.2 Q F0(A)108 703.2 Q F2(pipeline)2.996 E F0 .496(is\ - a sequence of one or more commands separated by one of the control ope\ -rators)2.996 F F1(|)2.996 E F0(or)2.996 E F1(|&)2.996 E F0 5.496(.T)C -(he)-5.496 E(format for a pipeline is:)108 715.2 Q(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(3)190.955 E 0 Cg EP +(belo)2.477 E .227(w\) or)-.25 F(the third w)108 616.8 Q(ord of a)-.1 E +F1(case)2.5 E F0(or)2.5 E F1 -.25(fo)2.5 G(r).25 E F0(command:)2.5 E F1 +11.295(!c)144 633.6 S 8.795(ase copr)-11.295 F 8.795 +(oc do done elif else esac \214 f)-.18 F 8.795 +(or function if in select then)-.25 F 7.5(until while { } time [[ ]])144 +645.6 R F6(SHELL GRAMMAR)72 662.4 Q F1(Simple Commands)87 674.4 Q F0(A) +108 686.4 Q F4 .388(simple command)2.888 F F0 .388 +(is a sequence of optional v)2.888 F .389(ariable assignments follo)-.25 +F .389(wed by)-.25 F F1(blank)2.889 E F0 .389(-separated w)B .389 +(ords and)-.1 F .816(redirections, and terminated by a)108 698.4 R F4 +(contr)3.316 E .815(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815 +(he \214rst w)-5.815 F .815(ord speci\214es the command to be e)-.1 F +-.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 710.4 Q +(gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E +(guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.) +-2.5 E .175(The return v)108 727.2 R .175(alue of a)-.25 F F4 .175 +(simple command)2.675 F F0 .175(is its e)2.675 F .175 +(xit status, or 128+)-.15 F F4(n)A F0 .176 +(if the command is terminated by signal)3.508 F F4(n)2.676 E F0(.).24 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(3)195.95 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E([)144 84 Q/F1 10/Times-Bold@0 SF(time)A F0([)2.5 E F1A F0 -(]] [ ! ])A/F2 10/Times-Italic@0 SF(command)2.5 E F0 2.5([[)2.5 G F1(|) --2.5 E/F3 10/Symbol SFA F1(|&)A F0(])A F2(command2)2.5 E F0(... ]) -2.5 E .243(The standard output of)108 100.8 R F2(command)2.943 E F0 .244 +-.35 E/F1 10/Times-Bold@0 SF(Pipelines)87 84 Q F0(A)108 96 Q/F2 10 +/Times-Italic@0 SF(pipeline)2.996 E F0 .496(is a sequence of one or mor\ +e commands separated by one of the control operators)2.996 F F1(|)2.996 +E F0(or)2.996 E F1(|&)2.996 E F0 5.496(.T)C(he)-5.496 E +(format for a pipeline is:)108 108 Q([)144 124.8 Q F1(time)A F0([)2.5 E +F1A F0(]] [ ! ])A F2(command)2.5 E F0 2.5([[)2.5 G F1(|)-2.5 E/F3 +10/Symbol SFA F1(|&)A F0(])A F2(command2)2.5 E F0(... ])2.5 E .243 +(The standard output of)108 141.6 R F2(command)2.943 E F0 .244 (is connected via a pipe to the standard input of)3.513 F F2(command2) 2.744 E F0 5.244(.T).02 G .244(his connec-)-5.244 F .643 -(tion is performed before an)108 112.8 R 3.143(yr)-.15 G .642 +(tion is performed before an)108 153.6 R 3.143(yr)-.15 G .642 (edirections speci\214ed by the command \(see)-3.143 F/F4 9/Times-Bold@0 SF(REDIRECTION)3.142 E F0(belo)2.892 E 3.142(w\). If)-.25 F F1(|&)3.142 -E F0(is)3.142 E 1.43(used, the standard error of)108 124.8 R F2(command) -3.93 E F0 1.431(is connected to)3.93 F F2(command2)3.931 E F0 2.531 -.55 -('s s)D 1.431(tandard input through the pipe; it is).55 F 1.197 -(shorthand for)108 136.8 R F1 1.197(2>&1 |)3.697 F F0 6.197(.T)C 1.197 -(his implicit redirection of the standard error is performed after an) --6.197 F 3.696(yr)-.15 G(edirections)-3.696 E -(speci\214ed by the command.)108 148.8 Q .48 -(The return status of a pipeline is the e)108 165.6 R .48 +E F0(is)3.142 E(used,)108 165.6 Q F2(command)3.647 E F0 2.247 -.55('s s) +D 1.147(tandard error).55 F 3.647(,i)-.4 G 3.647(na)-3.647 G 1.147 +(ddition to its standard output, is connected to)-3.647 F F2(command2) +3.648 E F0 2.248 -.55('s s)D(tandard).55 E .028 +(input through the pipe; it is shorthand for)108 177.6 R F1 .028(2>&1 |) +2.528 F F0 5.028(.T)C .028 +(his implicit redirection of the standard error to the stan-)-5.028 F +(dard output is performed after an)108 189.6 Q 2.5(yr)-.15 G +(edirections speci\214ed by the command.)-2.5 E .48 +(The return status of a pipeline is the e)108 206.4 R .48 (xit status of the last command, unless the)-.15 F F1(pipefail)2.98 E F0 -.48(option is enabled.)2.98 F(If)108 177.6 Q F1(pipefail)2.687 E F0 .187 +.48(option is enabled.)2.98 F(If)108 218.4 Q F1(pipefail)2.687 E F0 .187 (is enabled, the pipeline')2.687 F 2.687(sr)-.55 G .186 (eturn status is the v)-2.687 F .186 (alue of the last \(rightmost\) command to e)-.25 F .186(xit with a)-.15 -F .61(non-zero status, or zero if all commands e)108 189.6 R .611 +F .61(non-zero status, or zero if all commands e)108 230.4 R .611 (xit successfully)-.15 F 5.611(.I)-.65 G 3.111(ft)-5.611 G .611 (he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F1(!)3.111 E F0 .611 -(precedes a pipeline, the)5.611 F -.15(ex)108 201.6 S .55 +(precedes a pipeline, the)5.611 F -.15(ex)108 242.4 S .55 (it status of that pipeline is the logical ne).15 F -.05(ga)-.15 G .55 (tion of the e).05 F .55(xit status as described abo)-.15 F -.15(ve)-.15 G 5.55(.T).15 G .55(he shell w)-5.55 F .55(aits for)-.1 F (all commands in the pipeline to terminate before returning a v)108 -213.6 Q(alue.)-.25 E .298(If the)108 230.4 R F1(time)2.799 E F0(reserv) +254.4 Q(alue.)-.25 E .298(If the)108 271.2 R F1(time)2.799 E F0(reserv) 2.799 E .299(ed w)-.15 F .299(ord precedes a pipeline, the elapsed as w\ -ell as user and system time consumed by its)-.1 F -.15(exe)108 242.4 S +ell as user and system time consumed by its)-.1 F -.15(exe)108 283.2 S .14(cution are reported when the pipeline terminates.).15 F(The)5.139 E F12.639 E F0 .139(option changes the output format to that spec-) -2.639 F .302(i\214ed by POSIX.)108 254.4 R .303(When the shell is in) +2.639 F .302(i\214ed by POSIX.)108 295.2 R .303(When the shell is in) 5.302 F F2 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 (oes not recognize)-2.803 F F1(time)2.803 E F0 .303(as a reserv)2.803 F -.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 266.4 Q .736 +.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 307.2 Q .736 (en be)-.1 F .736(gins with a `-'.)-.15 F(The)5.736 E F4(TIMEFORMA)3.236 E(T)-.855 E F0 -.25(va)2.986 G .736 (riable may be set to a format string that speci\214es ho).25 F 3.235 (wt)-.25 G(he)-3.235 E 2.225 (timing information should be displayed; see the description of)108 -278.4 R F4(TIMEFORMA)4.726 E(T)-.855 E F0(under)4.476 E F1 2.226 -(Shell V)4.726 F(ariables)-.92 E F0(belo)108 290.4 Q -.65(w.)-.25 G .85 -(When the shell is in)108 307.2 R F2 .85(posix mode)3.35 F F0(,)A F1 -(time)3.35 E F0 .85(may be follo)3.35 F .85(wed by a ne)-.25 F 3.35 -(wline. In)-.25 F .85(this case, the shell displays the)3.35 F 1.073 +319.2 R F4(TIMEFORMA)4.726 E(T)-.855 E F0(under)4.476 E F1 2.226 +(Shell V)4.726 F(ariables)-.92 E F0(belo)108 331.2 Q -.65(w.)-.25 G .85 +(When the shell is in)108 348 R F2 .85(posix mode)3.35 F F0(,)A F1(time) +3.35 E F0 .85(may be follo)3.35 F .85(wed by a ne)-.25 F 3.35(wline. In) +-.25 F .85(this case, the shell displays the)3.35 F 1.073 (total user and system time consumed by the shell and its children.)108 -319.2 R(The)6.074 E F4(TIMEFORMA)3.574 E(T)-.855 E F0 -.25(va)3.324 G +360 R(The)6.074 E F4(TIMEFORMA)3.574 E(T)-.855 E F0 -.25(va)3.324 G 1.074(riable may be).25 F -(used to specify the format of the time information.)108 331.2 Q -(Each command in a pipeline is e)108 348 Q -.15(xe)-.15 G +(used to specify the format of the time information.)108 372 Q +(Each command in a pipeline is e)108 388.8 Q -.15(xe)-.15 G (cuted as a separate process \(i.e., in a subshell\).).15 E F1(Lists)87 -364.8 Q F0(A)108 376.8 Q F2(list)2.85 E F0 .35(is a sequence of one or \ +405.6 Q F0(A)108 417.6 Q F2(list)2.85 E F0 .35(is a sequence of one or \ more pipelines separated by one of the operators)2.85 F F1(;)2.849 E F0 (,)A F1(&)2.849 E F0(,)A F1(&&)2.849 E F0 2.849(,o)C(r)-2.849 E F1(||) 2.849 E F0 2.849(,a)C .349(nd option-)-2.849 F -(ally terminated by one of)108 388.8 Q F1(;)2.5 E F0(,)A F1(&)2.5 E F0 +(ally terminated by one of)108 429.6 Q F1(;)2.5 E F0(,)A F1(&)2.5 E F0 2.5(,o)C(r)-2.5 E F1()2.5 E F0(.)A .96 -(Of these list operators,)108 405.6 R F1(&&)3.46 E F0(and)3.46 E F1(||) +(Of these list operators,)108 446.4 R F1(&&)3.46 E F0(and)3.46 E F1(||) 3.46 E F0(ha)3.46 E 1.26 -.15(ve e)-.2 H .961(qual precedence, follo).15 F .961(wed by)-.25 F F1(;)3.461 E F0(and)3.461 E F1(&)3.461 E F0 3.461 (,w)C .961(hich ha)-3.461 F 1.261 -.15(ve e)-.2 H .961(qual prece-).15 F -(dence.)108 417.6 Q 2.5(As)108 434.4 S(equence of one or more ne)-2.5 E +(dence.)108 458.4 Q 2.5(As)108 475.2 S(equence of one or more ne)-2.5 E (wlines may appear in a)-.25 E F2(list)2.5 E F0 (instead of a semicolon to delimit commands.)2.5 E .029 -(If a command is terminated by the control operator)108 451.2 R F1(&) -2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 +(If a command is terminated by the control operator)108 492 R F1(&)2.529 +E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 (cutes the command in the).15 F F2(bac)2.528 E(kgr)-.2 E(ound)-.45 E F0 -(in)2.528 E 2.875(as)108 463.2 S 2.875(ubshell. The)-2.875 F .375 +(in)2.528 E 2.875(as)108 504 S 2.875(ubshell. The)-2.875 F .375 (shell does not w)2.875 F .375 (ait for the command to \214nish, and the return status is 0.)-.1 F .376 -(Commands sepa-)5.376 F .849(rated by a)108 475.2 R F1(;)3.349 E F0 .849 +(Commands sepa-)5.376 F .849(rated by a)108 516 R F1(;)3.349 E F0 .849 (are e)3.349 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F .848(aits for each command to terminate in turn.)-.1 F .848(The return) -5.848 F(status is the e)108 487.2 Q(xit status of the last command e) --.15 E -.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences \ -of one of more pipelines separated by the)108 504 R F1(&&)3.437 E F0 -(and)3.437 E F1(||)3.437 E F0 .937(control operators,)3.437 F(respecti) -108 516 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E +5.848 F(status is the e)108 528 Q(xit status of the last command e)-.15 +E -.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences of on\ +e of more pipelines separated by the)108 544.8 R F1(&&)3.437 E F0(and) +3.437 E F1(||)3.437 E F0 .937(control operators,)3.437 F(respecti)108 +556.8 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G -2.5(nA)-5 G(ND list has the form)-2.5 E F2(command1)144 532.8 Q F1(&&) -2.5 E F2(command2)2.5 E(command2)108.2 549.6 Q F0(is e)2.52 E -.15(xe) +2.5(nA)-5 G(ND list has the form)-2.5 E F2(command1)144 573.6 Q F1(&&) +2.5 E F2(command2)2.5 E(command2)108.2 590.4 Q F0(is e)2.52 E -.15(xe) -.15 G(cuted if, and only if,).15 E F2(command1)2.7 E F0(returns an e) -2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 566.4 Q F2 -(command1)144 583.2 Q F1(||)2.5 E F2(command2)2.5 E(command2)108.2 604.8 -Q F0 .729(is e)3.249 F -.15(xe)-.15 G .729(cuted if and only if).15 F F2 +2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 607.2 Q F2 +(command1)144 624 Q F1(||)2.5 E F2(command2)2.5 E(command2)108.2 645.6 Q +F0 .729(is e)3.249 F -.15(xe)-.15 G .729(cuted if and only if).15 F F2 (command1)3.429 E F0 .729(returns a non-zero e)3.229 F .729(xit status.) -.15 F .728(The return status of AND)5.729 F(and OR lists is the e)108 -616.8 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G -(cuted in the list.).15 E F1(Compound Commands)87 633.6 Q F0(A)108 645.6 -Q F2(compound command)2.5 E F0(is one of the follo)2.5 E(wing:)-.25 E -(\()108 662.4 Q F2(list)A F0(\))A F2(list)17.11 E F0 .011(is e)2.511 F --.15(xe)-.15 G .011(cuted in a subshell en).15 F .011(vironment \(see) --.4 F F4 .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0(belo) -2.262 E(w\).)-.25 E -1.11(Va)144 674.4 S 1.064(riable assignments and b) -1.11 F 1.064(uiltin commands that af)-.2 F 1.064(fect the shell')-.25 F -3.564(se)-.55 G -.4(nv)-3.564 G 1.064(ironment do not remain in).4 F(ef) -144 686.4 Q(fect after the command completes.)-.25 E -(The return status is the e)5 E(xit status of)-.15 E F2(list)2.5 E F0(.) -A({)108 703.2 Q F2(list)2.5 E F0 2.5(;})C F2(list)3.89 E F0 .401 -(is simply e)2.901 F -.15(xe)-.15 G .401(cuted in the current shell en) -.15 F(vironment.)-.4 E F2(list)5.401 E F0 .402 -(must be terminated with a ne)2.901 F .402(wline or)-.25 F 3.215 -(semicolon. This)144 715.2 R .715(is kno)3.215 F .715(wn as a)-.25 F F2 -(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 -(he return status is the e)-5.715 F .714(xit status of)-.15 F F2(list) -3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 727.2 R 2.719(et) --.1 G .219(he metacharacters)-2.719 F F1(\()2.719 E F0(and)2.719 E F1 -(\))2.719 E F0(,)A F1({)2.719 E F0(and)2.719 E F1(})2.719 E F0(are)2.719 -E F2 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22 -(and must occur where a reserv)2.72 F(ed)-.15 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(4)190.955 E 0 Cg EP +657.6 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E F1(Compound Commands)87 674.4 Q F0(A)108 686.4 +Q F2 1.053(compound command)3.553 F F0 1.053(is one of the follo)3.553 F +3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 +1.054(in a command')3.554 F 3.554(sd)-.55 G 1.054(escription may be) +-3.554 F 1.027(separated from the rest of the command by one or more ne) +108 698.4 R 1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 +F 1.026(wline in)-.25 F(place of a semicolon.)108 710.4 Q(GNU Bash 4.3) +72 768 Q(2014 February 2)141.79 E(4)195.95 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E -.1(wo)144 84 S .257(rd is permitted to be recognized.).1 F .257 -(Since the)5.257 F 2.757(yd)-.15 G 2.756(on)-2.757 G .256(ot cause a w) --2.756 F .256(ord break, the)-.1 F 2.756(ym)-.15 G .256 -(ust be separated)-2.756 F(from)144 96 Q/F1 10/Times-Italic@0 SF(list) -2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55 E -(\(\()108 112.8 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 -124.8 Q F1 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F --.25(va)-.25 G .051(luated according to the rules described belo).25 F -2.552(wu)-.25 G(nder)-2.552 E/F2 9/Times-Bold@0 SF .052(ARITHMETIC EV) -2.552 F(ALU)-1.215 E(A-)-.54 E(TION)144 136.8 Q/F3 9/Times-Roman@0 SF(.) -A F0 .411(If the v)4.911 F .411(alue of the e)-.25 F .411(xpression is \ -non-zero, the return status is 0; otherwise the return status)-.15 F -(is 1.)144 148.8 Q(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G -(lent to).25 E/F4 10/Times-Bold@0 SF(let ")2.5 E F1 -.2(ex)C(pr).2 E -(ession)-.37 E F4(")A F0(.)A F4([[)108 165.6 Q F1 -.2(ex)2.5 G(pr).2 E -(ession)-.37 E F4(]])2.5 E F0 1.299 -(Return a status of 0 or 1 depending on the e)144 177.6 R -.25(va)-.25 G +-.35 E(\()108 84 Q/F1 10/Times-Italic@0 SF(list)A F0(\))A F1(list)17.11 +E F0 .011(is e)2.511 F -.15(xe)-.15 G .011(cuted in a subshell en).15 F +.011(vironment \(see)-.4 F/F2 9/Times-Bold@0 SF .011 +(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0(belo)2.262 E(w\).)-.25 +E -1.11(Va)144 96 S 1.064(riable assignments and b)1.11 F 1.064 +(uiltin commands that af)-.2 F 1.064(fect the shell')-.25 F 3.564(se) +-.55 G -.4(nv)-3.564 G 1.064(ironment do not remain in).4 F(ef)144 108 Q +(fect after the command completes.)-.25 E(The return status is the e)5 E +(xit status of)-.15 E F1(list)2.5 E F0(.)A({)108 124.8 Q F1(list)2.5 E +F0 2.5(;})C F1(list)3.89 E F0 .401(is simply e)2.901 F -.15(xe)-.15 G +.401(cuted in the current shell en).15 F(vironment.)-.4 E F1(list)5.401 +E F0 .402(must be terminated with a ne)2.901 F .402(wline or)-.25 F +3.215(semicolon. This)144 136.8 R .715(is kno)3.215 F .715(wn as a)-.25 +F F1(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 +(he return status is the e)-5.715 F .714(xit status of)-.15 F F1(list) +3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 148.8 R 2.719(et) +-.1 G .219(he metacharacters)-2.719 F/F3 10/Times-Bold@0 SF(\()2.719 E +F0(and)2.719 E F3(\))2.719 E F0(,)A F3({)2.719 E F0(and)2.719 E F3(}) +2.719 E F0(are)2.719 E F1 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E +F0 .22(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 160.8 S +.257(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757 +(yd)-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256 +(ord break, the)-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F +(from)144 172.8 Q F1(list)2.5 E F0 +(by whitespace or another shell metacharacter)2.5 E(.)-.55 E(\(\()108 +189.6 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 201.6 Q F1 +-.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F -.25(va)-.25 G +.051(luated according to the rules described belo).25 F 2.552(wu)-.25 G +(nder)-2.552 E F2 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E(A-)-.54 E +(TION)144 213.6 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)4.911 F +.411(alue of the e)-.25 F .411(xpression is non-zero, the return status\ + is 0; otherwise the return status)-.15 F(is 1.)144 225.6 Q(This is e)5 +E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F3(let ")2.5 E F1 -.2 +(ex)C(pr).2 E(ession)-.37 E F3(")A F0(.)A F3([[)108 242.4 Q F1 -.2(ex) +2.5 G(pr).2 E(ession)-.37 E F3(]])2.5 E F0 1.299 +(Return a status of 0 or 1 depending on the e)144 254.4 R -.25(va)-.25 G 1.3(luation of the conditional e).25 F(xpression)-.15 E F1 -.2(ex)3.8 G (pr).2 E(ession)-.37 E F0(.)A 2.274 -(Expressions are composed of the primaries described belo)144 189.6 R +(Expressions are composed of the primaries described belo)144 266.4 R 4.773(wu)-.25 G(nder)-4.773 E F2(CONDITION)4.773 E 2.273(AL EXPRES-)-.18 -F(SIONS)144 201.6 Q F3(.)A F0 -.8(Wo)5.632 G 1.133 +F(SIONS)144 278.4 Q F4(.)A F0 -.8(Wo)5.632 G 1.133 (rd splitting and pathname e).8 F 1.133 (xpansion are not performed on the w)-.15 F 1.133(ords between the)-.1 F -F4([[)3.633 E F0(and)144 213.6 Q F4(]])2.964 E F0 2.964(;t)C .464 +F3([[)3.633 E F0(and)144 290.4 Q F3(]])2.964 E F0 2.964(;t)C .464 (ilde e)-2.964 F .464(xpansion, parameter and v)-.15 F .464(ariable e) -.25 F .463(xpansion, arithmetic e)-.15 F .463 (xpansion, command substi-)-.15 F 1.081 -(tution, process substitution, and quote remo)144 225.6 R -.25(va)-.15 G +(tution, process substitution, and quote remo)144 302.4 R -.25(va)-.15 G 3.581(la).25 G 1.081(re performed.)-3.581 F 1.081 -(Conditional operators such as)6.081 F F43.581 E F0 -(must be unquoted to be recognized as primaries.)144 237.6 Q -(When used with)144 255.6 Q F4([[)2.5 E F0 2.5(,t)C(he)-2.5 E F4(<)2.5 E -F0(and)2.5 E F4(>)2.5 E F0(operators sort le)2.5 E +(Conditional operators such as)6.081 F F33.581 E F0 +(must be unquoted to be recognized as primaries.)144 314.4 Q +(When used with)144 332.4 Q F3([[)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E +F0(and)2.5 E F3(>)2.5 E F0(operators sort le)2.5 E (xicographically using the current locale.)-.15 E .503(When the)144 -273.6 R F4(==)3.003 E F0(and)3.002 E F4(!=)3.002 E F0 .502(operators ar\ +350.4 R F3(==)3.003 E F0(and)3.002 E F3(!=)3.002 E F0 .502(operators ar\ e used, the string to the right of the operator is considered a pat-) -3.002 F 1.224(tern and matched according to the rules described belo)144 -285.6 R 3.724(wu)-.25 G(nder)-3.724 E F4 -.1(Pa)3.724 G(tter).1 E 3.725 -(nM)-.15 G(atching)-3.725 E F0 6.225(.I)C 3.725(ft)-6.225 G 1.225 -(he shell)-3.725 F(option)144 297.6 Q F4(nocasematch)3.405 E F0 .904 -(is enabled, the match is performed without re)3.405 F -.05(ga)-.15 G -.904(rd to the case of alphabetic).05 F 2.751(characters. The)144 309.6 -R .251(return v)2.751 F .251(alue is 0 if the string matches \()-.25 F -F4(==)A F0 2.751(\)o)C 2.751(rd)-2.751 G .251(oes not match \()-2.751 F -F4(!=)A F0 2.751(\)t)C .252(he pattern, and)-2.751 F 2.5(1o)144 321.6 S -2.5(therwise. An)-2.5 F 2.5(yp)-.15 G(art of the pattern may be quoted \ -to force it to be matched as a string.)-2.5 E .243 -(An additional binary operator)144 339.6 R(,)-.4 E F4(=~)2.743 E F0 +3.002 F .81(tern and matched according to the rules described belo)144 +362.4 R 3.31(wu)-.25 G(nder)-3.31 E F3 -.1(Pa)3.31 G(tter).1 E 3.31(nM) +-.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he) +-3.31 E F3(ext-)3.31 E(glob)144 374.4 Q F0 1.007 +(shell option were enabled.)3.507 F(The)6.007 E F3(=)3.507 E F0 1.007 +(operator is equi)3.507 F -.25(va)-.25 G 1.007(lent to).25 F F3(==)3.507 +E F0 6.007(.I)C 3.507(ft)-6.007 G 1.007(he shell option)-3.507 F F3 +(nocase-)3.506 E(match)144 386.4 Q F0 .198 +(is enabled, the match is performed without re)2.698 F -.05(ga)-.15 G +.198(rd to the case of alphabetic characters.).05 F(The)5.198 E 1.068 +(return v)144 398.4 R 1.068(alue is 0 if the string matches \()-.25 F F3 +(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()-3.568 F +F3(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.)-3.568 F(An) +144 410.4 Q 2.5(yp)-.15 G(art of the pattern may be quoted to force the\ + quoted portion to be matched as a string.)-2.5 E .243 +(An additional binary operator)144 428.4 R(,)-.4 E F3(=~)2.743 E F0 2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 -(ilable, with the same precedence as).25 F F4(==)2.743 E F0(and)2.743 E -F4(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 +(ilable, with the same precedence as).25 F F3(==)2.743 E F0(and)2.743 E +F3(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 (used, the string to the right of the operator is considered an e)144 -351.6 R 1.954(xtended re)-.15 F 1.954(gular e)-.15 F 1.954 -(xpression and)-.15 F .207(matched accordingly \(as in)144 363.6 R F1 +440.4 R 1.953(xtended re)-.15 F 1.953(gular e)-.15 F 1.953 +(xpression and)-.15 F .207(matched accordingly \(as in)144 452.4 R F1 -.37(re)2.707 G -.1(ge)-.03 G(x)-.1 E F0 2.707(\(3\)\). The)B .207 (return v)2.707 F .207 -(alue is 0 if the string matches the pattern, and 1)-.25 F 3.345 -(otherwise. If)144 375.6 R .845(the re)3.345 F .845(gular e)-.15 F .846 +(alue is 0 if the string matches the pattern, and 1)-.25 F 3.346 +(otherwise. If)144 464.4 R .846(the re)3.346 F .846(gular e)-.15 F .845 (xpression is syntactically incorrect, the conditional e)-.15 F -(xpression')-.15 E 3.346(sr)-.55 G(eturn)-3.346 E -.25(va)144 387.6 S -.667(lue is 2.).25 F .667(If the shell option)5.667 F F4(nocasematch) +(xpression')-.15 E 3.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 476.4 S +.666(lue is 2.).25 F .667(If the shell option)5.667 F F3(nocasematch) 3.167 E F0 .667(is enabled, the match is performed without re)3.167 F --.05(ga)-.15 G .666(rd to).05 F .378(the case of alphabetic characters.) -144 399.6 R(An)5.378 E 2.878(yp)-.15 G .378 -(art of the pattern may be quoted to force it to be matched)-2.878 F -.265(as a string.)144 411.6 R .265 -(Substrings matched by parenthesized sube)5.265 F .265 -(xpressions within the re)-.15 F .265(gular e)-.15 F .265(xpression are) --.15 F(sa)144 423.6 Q -.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G -.597(he array v)-3.097 F(ariable)-.25 E F2 -.27(BA)3.097 G(SH_REMA).27 E -(TCH)-.855 E F3(.)A F0 .597(The element of)5.097 F F2 -.27(BA)3.097 G -(SH_REMA).27 E(TCH)-.855 E F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s) --3.097 E .049(the portion of the string matching the entire re)144 435.6 -R .049(gular e)-.15 F 2.549(xpression. The)-.15 F .049(element of)2.549 -F F2 -.27(BA)2.549 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 447.6 Q -(x)-.15 E F1(n)2.5 E F0(is the portion of the string matching the)2.5 E -F1(n)2.5 E F0(th parenthesized sube)A(xpression.)-.15 E .785 -(Expressions may be combined using the follo)144 465.6 R .786 +-.05(ga)-.15 G .667(rd to).05 F .593(the case of alphabetic characters.) +144 488.4 R(An)5.593 E 3.093(yp)-.15 G .592 +(art of the pattern may be quoted to force the quoted por)-3.093 F(-)-.2 +E 1.016(tion to be matched as a string.)144 500.4 R(Brack)6.016 E 1.016 +(et e)-.1 F 1.016(xpressions in re)-.15 F 1.016(gular e)-.15 F 1.016 +(xpressions must be treated care-)-.15 F(fully)144 512.4 Q 4.436(,s)-.65 +G 1.936 +(ince normal quoting characters lose their meanings between brack)-4.436 +F 4.435(ets. If)-.1 F 1.935(the pattern is)4.435 F .264 +(stored in a shell v)144 524.4 R .264(ariable, quoting the v)-.25 F .264 +(ariable e)-.25 F .265 +(xpansion forces the entire pattern to be matched as)-.15 F 3.774(as)144 +536.4 S 3.774(tring. Substrings)-3.774 F 1.274 +(matched by parenthesized sube)3.774 F 1.273(xpressions within the re) +-.15 F 1.273(gular e)-.15 F 1.273(xpression are)-.15 F(sa)144 548.4 Q +-.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G .597(he array v)-3.097 F +(ariable)-.25 E F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0 +.597(The element of)5.097 F F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E +F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 +(the portion of the string matching the entire re)144 560.4 R .049 +(gular e)-.15 F 2.549(xpression. The)-.15 F .049(element of)2.549 F F2 +-.27(BA)2.549 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 572.4 Q(x) +-.15 E F1(n)2.5 E F0(is the portion of the string matching the)2.5 E F1 +(n)2.5 E F0(th parenthesized sube)A(xpression.)-.15 E .785 +(Expressions may be combined using the follo)144 590.4 R .786 (wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 -477.6 Q F4(\()144 495.6 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F4(\)) -2.5 E F0 .523(Returns the v)180 507.6 R .522(alue of)-.25 F F1 -.2(ex) +602.4 Q F3(\()144 620.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F3(\)) +2.5 E F0 .523(Returns the v)180 632.4 R .522(alue of)-.25 F F1 -.2(ex) 3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522(his may be used to o) -5.522 F -.15(ve)-.15 G .522(rride the normal precedence of).15 F -(operators.)180 519.6 Q F4(!)144 531.6 Q F1 -.2(ex)2.5 G(pr).2 E(ession) --.37 E F0 -.35(Tr)180 543.6 S(ue if).35 E F1 -.2(ex)2.5 G(pr).2 E -(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F1 -.2(ex)144 555.6 S(pr).2 E -(ession1)-.37 E F4(&&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 --.35(Tr)180 567.6 S(ue if both).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1) +(operators.)180 644.4 Q F3(!)144 656.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession) +-.37 E F0 -.35(Tr)180 668.4 S(ue if).35 E F1 -.2(ex)2.5 G(pr).2 E +(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F1 -.2(ex)144 680.4 S(pr).2 E +(ession1)-.37 E F3(&&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 +-.35(Tr)180 692.4 S(ue if both).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1) -.37 E F0(and)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.) -2.52 E F1 -.2(ex)144 579.6 S(pr).2 E(ession1)-.37 E F4(||)2.5 E F1 -.2 -(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 591.6 S(ue if either).35 +2.52 E F1 -.2(ex)144 704.4 S(pr).2 E(ession1)-.37 E F3(||)2.5 E F1 -.2 +(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 716.4 S(ue if either).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr) -.2 E(ession2)-.37 E F0(is true.)2.52 E(The)144 608.4 Q F4(&&)3.64 E F0 -(and)3.64 E F4(||)3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 -G(luate).25 E F1 -.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141 -(if the v)3.641 F 1.141(alue of)-.25 F F1 -.2(ex)3.641 G(pr).2 E +.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(5)195.95 E 0 Cg EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E(The)144 84 Q/F1 10/Times-Bold@0 SF(&&)3.64 E F0(and)3.64 E F1(||) +3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 G(luate).25 E/F2 +10/Times-Italic@0 SF -.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141 +(if the v)3.641 F 1.141(alue of)-.25 F F2 -.2(ex)3.641 G(pr).2 E (ession1)-.37 E F0 1.141(is suf)3.641 F 1.141(\214cient to)-.25 F -(determine the return v)144 620.4 Q(alue of the entire conditional e) --.25 E(xpression.)-.15 E F4 -.25(fo)108 637.2 S(r).25 E F1(name)2.5 E F0 -2.5([[)2.5 G F4(in)A F0([)2.5 E F1(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 -2.5(]];])2.5 G F4(do)A F1(list)2.5 E F0(;)2.5 E F4(done)2.5 E F0 .424 -(The list of w)144 649.2 R .424(ords follo)-.1 F(wing)-.25 E F4(in)2.924 +(determine the return v)144 96 Q(alue of the entire conditional e)-.25 E +(xpression.)-.15 E F1 -.25(fo)108 112.8 S(r).25 E F2(name)2.5 E F0 2.5 +([[)2.5 G F1(in)A F0([)2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5 +(]];])2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .424 +(The list of w)144 124.8 R .424(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F .423(xpanded, generating a list of items.)-.15 F -.423(The v)5.423 F(ariable)-.25 E F1(name)2.923 E F0 .423(is set to) -2.923 F .653(each element of this list in turn, and)144 661.2 R F1(list) +.423(The v)5.423 F(ariable)-.25 E F2(name)2.923 E F0 .423(is set to) +2.923 F .653(each element of this list in turn, and)144 136.8 R F2(list) 3.153 E F0 .653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F -.653(If the)5.653 F F4(in)3.153 E F1(wor)3.153 E(d)-.37 E F0 .653 -(is omitted, the)3.153 F F4 -.25(fo)3.153 G(r).25 E F0 .649(command e) -144 673.2 R -.15(xe)-.15 G(cutes).15 E F1(list)3.149 E F0 .648 -(once for each positional parameter that is set \(see)3.148 F F2 -.666 -(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).)-.25 E .153 -(The return status is the e)144 685.2 R .153 +.653(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 +(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e) +144 148.8 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648 +(once for each positional parameter that is set \(see)3.148 F/F3 9 +/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).) +-.25 E .153(The return status is the e)144 160.8 R .153 (xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654 (cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F -(follo)144 697.2 Q(wing)-.25 E F4(in)2.5 E F0 +(follo)144 172.8 Q(wing)-.25 E F1(in)2.5 E F0 (results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G -(cuted, and the return status is 0.).15 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(5)190.955 E 0 Cg EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.25(fo)108 84 S(r).25 E F0(\(\()2.5 E/F2 -10/Times-Italic@0 SF -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G -(pr2).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 -E F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236 -(First, the arithmetic e)144 96 R(xpression)-.15 E F2 -.2(ex)3.736 G -(pr1).2 E F0 1.235(is e)3.736 F -.25(va)-.25 G 1.235 +(cuted, and the return status is 0.).15 E F1 -.25(fo)108 189.6 S(r).25 E +F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2 +E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2 +(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e) +144 201.6 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e) +3.736 F -.25(va)-.25 G 1.235 (luated according to the rules described belo).25 F 3.735(wu)-.25 G -(nder)-3.735 E/F3 9/Times-Bold@0 SF .561(ARITHMETIC EV)144 108 R(ALU) --1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561 -(The arithmetic e)5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 -.562(is then e)3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F -.592(it e)144 120 R -.25(va)-.25 G .592(luates to zero.).25 F .592 -(Each time)5.592 F F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592 +(nder)-3.735 E F3 .561(ARITHMETIC EV)144 213.6 R(ALU)-1.215 E -.855(AT) +-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e) +5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e) +3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144 +225.6 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F +F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592 (luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e) 3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144 -132 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F +237.6 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F -.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229 (xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G 2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G -.229(luates to 1.).25 F .228(The return v)144 144 R .228(alue is the e) --.25 F .228(xit status of the last command in)-.15 F F2(list)2.728 E F0 -.227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f).15 F .227 -(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 E -.15(ex) -144 156 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1(select)108 -172.8 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d)-.37 E F0 -2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .432 -(The list of w)144 184.8 R .432(ords follo)-.1 F(wing)-.25 E F1(in)2.932 -E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.)-.15 F -.433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 -(is printed on the standard error)144 196.8 R 3.342(,e)-.4 G .842 +.229(luates to 1.).25 F .228(The return v)144 249.6 R .228 +(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2 +(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f) +.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 +E -.15(ex)144 261.6 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 +(select)108 278.4 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d) +-.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 +.432(The list of w)144 290.4 R .432(ords follo)-.1 F(wing)-.25 E F1(in) +2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.) +-.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 +(is printed on the standard error)144 302.4 R 3.342(,e)-.4 G .842 (ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he) -3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842 (is omitted, the posi-)3.342 F .201(tional parameters are printed \(see) -144 208.8 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 +144 314.4 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 (w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a) -2.451 F .214(line read from the standard input.)144 220.8 R .213 +2.451 F .214(line read from the standard input.)144 326.4 R .213 (If the line consists of a number corresponding to one of the dis-)5.214 -F 1.537(played w)144 232.8 R 1.537(ords, then the v)-.1 F 1.537(alue of) +F 1.537(played w)144 338.4 R 1.537(ords, then the v)-.1 F 1.537(alue of) -.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If) -.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038 -F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 244.8 R 2.566 +F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 350.4 R 2.566 (ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An) 5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25 -F F2(name)144 256.8 Q F0 .972(to be set to null.)3.652 F .972 +F F2(name)144 362.4 Q F0 .972(to be set to null.)3.652 F .972 (The line read is sa)5.972 F -.15(ve)-.2 G 3.473(di).15 G 3.473(nt) -3.473 G .973(he v)-3.473 F(ariable)-.25 E F3(REPL)3.473 E(Y)-.828 E F4 (.)A F0(The)5.473 E F2(list)3.563 E F0 .973(is e)4.153 F -.15(xe)-.15 G -.973(cuted after).15 F .072(each selection until a)144 268.8 R F1(br) +.973(cuted after).15 F .072(each selection until a)144 374.4 R F1(br) 2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571 (cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select) 2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F -(last command e)144 280.8 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E +(last command e)144 386.4 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe) --.15 G(cuted.).15 E F1(case)108 297.6 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 +-.15 G(cuted.).15 E F1(case)108 403.2 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 (pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...) -2.5 E F1(esac)2.5 E F0(A)144 309.6 Q F1(case)3.264 E F0 .764 +2.5 E F1(esac)2.5 E F0(A)144 415.2 Q F1(case)3.264 E F0 .764 (command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F .596 -(same matching rules as for pathname e)144 321.6 R .595(xpansion \(see) +(same matching rules as for pathname e)144 427.2 R .595(xpansion \(see) -.15 F F1 -.1(Pa)3.095 G .595(thname Expansion).1 F F0(belo)3.095 E 3.095(w\). The)-.25 F F2(wor)3.095 E(d)-.37 E F0(is)3.095 E -.15(ex)144 -333.6 S 1.092(panded using tilde e).15 F 1.092 +439.2 S 1.092(panded using tilde e).15 F 1.092 (xpansion, parameter and v)-.15 F 1.092(ariable e)-.25 F 1.092 (xpansion, arithmetic substitution, com-)-.15 F 1.268 -(mand substitution, process substitution and quote remo)144 345.6 R -.25 +(mand substitution, process substitution and quote remo)144 451.2 R -.25 (va)-.15 G 3.768(l. Each).25 F F2(pattern)3.768 E F0 -.15(ex)3.768 G -1.268(amined is e).15 F(xpanded)-.15 E .353(using tilde e)144 357.6 R +1.268(amined is e).15 F(xpanded)-.15 E .353(using tilde e)144 463.2 R .353(xpansion, parameter and v)-.15 F .353(ariable e)-.25 F .353 (xpansion, arithmetic substitution, command substi-)-.15 F 1.517 -(tution, and process substitution.)144 369.6 R 1.517 +(tution, and process substitution.)144 475.2 R 1.517 (If the shell option)6.517 F F1(nocasematch)4.016 E F0 1.516 (is enabled, the match is per)4.016 F(-)-.2 E 1.346(formed without re) -144 381.6 R -.05(ga)-.15 G 1.346 +144 487.2 R -.05(ga)-.15 G 1.346 (rd to the case of alphabetic characters.).05 F 1.347 -(When a match is found, the corre-)6.347 F(sponding)144 393.6 Q F2(list) +(When a match is found, the corre-)6.347 F(sponding)144 499.2 Q F2(list) 2.777 E F0 .277(is e)2.777 F -.15(xe)-.15 G 2.777(cuted. If).15 F(the) 2.777 E F1(;;)2.777 E F0 .277 (operator is used, no subsequent matches are attempted after the)2.777 F -.848(\214rst pattern match.)144 405.6 R(Using)5.848 E F1(;&)3.348 E F0 +.848(\214rst pattern match.)144 511.2 R(Using)5.848 E F1(;&)3.348 E F0 .849(in place of)3.349 F F1(;;)3.349 E F0 .849(causes e)3.349 F -.15(xe) -.15 G .849(cution to continue with the).15 F F2(list)3.349 E F0 -(associated)3.349 E .078(with the ne)144 417.6 R .078 +(associated)3.349 E .078(with the ne)144 523.2 R .078 (xt set of patterns.)-.15 F(Using)5.078 E F1(;;&)2.578 E F0 .078 (in place of)2.578 F F1(;;)2.578 E F0 .077 (causes the shell to test the ne)2.578 F .077(xt pattern list in)-.15 F -.227(the statement, if an)144 429.6 R 1.527 -.65(y, a)-.15 H .227(nd e) +.227(the statement, if an)144 535.2 R 1.527 -.65(y, a)-.15 H .227(nd e) .65 F -.15(xe)-.15 G .227(cute an).15 F 2.727(ya)-.15 G(ssociated)-2.727 E F2(list)2.727 E F0 .227(on a successful match.)2.727 F .227(The e) -5.227 F .227(xit status is zero)-.15 F(if no pattern matches.)144 441.6 +5.227 F .227(xit status is zero)-.15 F(if no pattern matches.)144 547.2 Q(Otherwise, it is the e)5 E(xit status of the last command e)-.15 E --.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 458.4 Q F2 -(list)2.5 E F0(;)A F1(then)2.5 E F2(list;)2.5 E F0([)2.5 E F1(elif)2.5 E -F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 -E F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 470.4 Q F1 -(if)2.978 E F2(list)3.068 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 +-.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 564 Q F2 +(list)2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2 +(list)2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E +F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if) +2.978 E F2(list)3.068 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 (cuted. If).15 F .478(its e)2.978 F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 .478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)2.978 E F1(elif)2.977 E F2(list)2.977 -E F0 1.087(is e)144 482.4 R -.15(xe)-.15 G 1.087 +E F0 1.087(is e)144 588 R -.15(xe)-.15 G 1.087 (cuted in turn, and if its e).15 F 1.087 (xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list) 3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F -.104(command completes.)144 494.4 R .103(Otherwise, the)5.104 F F1(else) +.104(command completes.)144 600 R .103(Otherwise, the)5.104 F F1(else) 2.603 E F2(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103 (cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e) --.15 F .103(xit sta-)-.15 F(tus of the last command e)144 506.4 Q -.15 -(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F1(while) -108 523.2 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 -(done)2.5 E(until)108 535.2 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2 -(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 547.2 Q F1(while)3.45 E F0 +-.15 F .103(xit sta-)-.15 F(tus of the last command e)144 612 Q -.15(xe) +-.15 G(cuted, or zero if no condition tested true.).15 E F1(while)108 +628.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 +(done)2.5 E(until)108 640.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2 +(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 652.8 Q F1(while)3.45 E F0 .95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list).15 F F2(list-2)3.45 E F0 .95(as long as the last command in the list)3.45 F -F2(list-1)144 559.2 Q F0 .205(returns an e)2.705 F .205 +F2(list-1)144 664.8 Q F0 .205(returns an e)2.705 F .205 (xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205 (command is identical to the)2.705 F F1(while)2.705 E F0 .205 -(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 571.2 R +(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 676.8 R -.05(ga)-.15 G(ted;).05 E F2(list-2)3.189 E F0 .599(is e)3.119 F -.15 (xe)-.15 G .6(cuted as long as the last command in).15 F F2(list-1)3.19 -E F0 .6(returns a non-zero)3.1 F -.15(ex)144 583.2 S .205(it status.).15 +E F0 .6(returns a non-zero)3.1 F -.15(ex)144 688.8 S .205(it status.).15 F .205(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0 (and)2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204 -(xit status of the last command)-.15 F -.15(exe)144 595.2 S(cuted in).15 +(xit status of the last command)-.15 F -.15(exe)144 700.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e) --.1 E -.15(xe)-.15 G(cuted.).15 E F1(Copr)87 612 Q(ocesses)-.18 E F0(A) -108 624 Q F2(copr)3.712 E(ocess)-.45 E F0 1.212 +-.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(6)195.95 E 0 Cg EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(Copr)87 84 Q(ocesses)-.18 E F0(A)108 96 Q +/F2 10/Times-Italic@0 SF(copr)3.712 E(ocess)-.45 E F0 1.212 (is a shell command preceded by the)3.712 F F1(copr)3.713 E(oc)-.18 E F0 (reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213 (coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\ onously in a subshell, as if the command had been terminated with the) -108 636 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G -.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 648 S 2.5(yp).1 G +108 108 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G +.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 120 S 2.5(yp).1 G (ipe established between the e)-2.5 E -.15(xe)-.15 G (cuting shell and the coprocess.).15 E(The format for a coprocess is:) -108 664.8 Q F1(copr)144 681.6 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27 +108 136.8 Q F1(copr)144 153.6 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27 E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37 -E F0(])A .922(This creates a coprocess named)108 698.4 R F2 -.27(NA) -3.422 G(ME).27 E F0 5.922(.I)C(f)-5.922 E F2 -.27(NA)3.422 G(ME).27 E F0 -.923(is not supplied, the def)3.422 F .923(ault name is)-.1 F F2(COPR) -3.423 E(OC)-.4 E F0(.)A F2 -.27(NA)5.923 G(ME).27 E F0 .64 -(must not be supplied if)108 710.4 R F2(command)3.14 E F0 .64(is a)3.14 +E F0(])A .708(This creates a coprocess named)108 170.4 R F2 -.27(NA) +3.208 G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 +.708(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR) +3.209 E(OC)-.3 E F0(.)A F2 -.27(NA)5.709 G(ME).27 E F0 .64 +(must not be supplied if)108 182.4 R F2(command)3.14 E F0 .64(is a)3.14 F F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 -722.4 S .163(rd of the simple command.).1 F .163(When the coproc is e) -5.163 F -.15(xe)-.15 G .163(cuted, the shell creates an array v).15 F -.163(ariable \(see)-.25 F F1(Arrays)2.663 E F0(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(6)190.955 E 0 Cg EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(belo)108 84 Q .512(w\) named)-.25 F/F1 10/Times-Italic@0 SF -.27 -(NA)3.012 G(ME).27 E F0 .512(in the conte)3.012 F .511(xt of the e)-.15 -F -.15(xe)-.15 G .511(cuting shell.).15 F .511(The standard output of) -5.511 F F1(command)3.211 E F0 .511(is connected)3.781 F .81 -(via a pipe to a \214le descriptor in the e)108 96 R -.15(xe)-.15 G .811 -(cuting shell, and that \214le descriptor is assigned to).15 F F1 -.27 -(NA)3.311 G(ME).27 E F0 3.311([0]. The)B .717(standard input of)108 108 -R F1(command)3.417 E F0 .716 -(is connected via a pipe to a \214le descriptor in the e)3.987 F -.15 -(xe)-.15 G .716(cuting shell, and that \214le).15 F .702 -(descriptor is assigned to)108 120 R F1 -.27(NA)3.202 G(ME).27 E F0 -3.202([1]. This)B .703(pipe is established before an)3.203 F 3.203(yr) --.15 G .703(edirections speci\214ed by the com-)-3.203 F 1.184 -(mand \(see)108 132 R/F2 9/Times-Bold@0 SF(REDIRECTION)3.684 E F0(belo) -3.434 E 3.684(w\). The)-.25 F 1.183 -(\214le descriptors can be utilized as ar)3.684 F 1.183 -(guments to shell commands)-.18 F 1.796 -(and redirections using standard w)108 144 R 1.796(ord e)-.1 F 4.297 -(xpansions. The)-.15 F 1.797(process ID of the shell spa)4.297 F 1.797 -(wned to e)-.15 F -.15(xe)-.15 G 1.797(cute the).15 F .483 -(coprocess is a)108 156 R -.25(va)-.2 G .483(ilable as the v).25 F .483 -(alue of the v)-.25 F(ariable)-.25 E F1 -.27(NA)2.983 G(ME).27 E F0 -2.983(_PID. The)B/F3 10/Times-Bold@0 SF(wait)2.983 E F0 -.2(bu)2.983 G -.483(iltin command may be used to).2 F -.1(wa)108 168 S -(it for the coprocess to terminate.).1 E -(The return status of a coprocess is the e)108 184.8 Q(xit status of) --.15 E F1(command)2.5 E F0(.)A F3(Shell Function De\214nitions)87 201.6 -Q F0 2.697(As)108 213.6 S .198 -(hell function is an object that is called lik)-2.697 F 2.698(eas)-.1 G -.198(imple command and e)-2.698 F -.15(xe)-.15 G .198 -(cutes a compound command with).15 F 2.5(an)108 225.6 S .5 -.25(ew s) --2.5 H(et of positional parameters.).25 E -(Shell functions are declared as follo)5 E(ws:)-.25 E F1(name)108 242.4 -Q F0(\(\))2.5 E F1(compound\255command)2.5 E F0([)2.5 E F1 -.37(re)C -(dir).37 E(ection)-.37 E F0(])A F3(function)108 254.4 Q F1(name)2.5 E F0 -([\(\)])2.5 E F1(compound\255command)2.5 E F0([)2.5 E F1 -.37(re)C(dir) -.37 E(ection)-.37 E F0(])A 1.403(This de\214nes a function named)144 -266.4 R F1(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402 -(ed w)-.15 F(ord)-.1 E F3(function)3.902 E F0 1.402(is optional.)3.902 F -1.402(If the)6.402 F F3(function)3.902 E F0(reserv)144 278.4 Q .162 +194.4 S 1.44(rd of the simple command.).1 F 1.44 +(When the coprocess is e)6.44 F -.15(xe)-.15 G 1.44 +(cuted, the shell creates an array v).15 F 1.44(ariable \(see)-.25 F F1 +(Arrays)108 206.4 Q F0(belo)3.671 E 1.171(w\) named)-.25 F F2 -.27(NA) +3.671 G(ME).27 E F0 1.171(in the conte)3.671 F 1.171(xt of the e)-.15 F +-.15(xe)-.15 G 1.171(cuting shell.).15 F 1.17(The standard output of) +6.17 F F2(command)3.87 E F0(is)4.44 E 2.029 +(connected via a pipe to a \214le descriptor in the e)108 218.4 R -.15 +(xe)-.15 G 2.029 +(cuting shell, and that \214le descriptor is assigned to).15 F F2 -.27 +(NA)108 230.4 S(ME).27 E F0 3.857([0]. The)B 1.357(standard input of) +3.857 F F2(command)4.057 E F0 1.356 +(is connected via a pipe to a \214le descriptor in the e)4.627 F -.15 +(xe)-.15 G(cuting).15 E .103 +(shell, and that \214le descriptor is assigned to)108 242.4 R F2 -.27 +(NA)2.603 G(ME).27 E F0 2.603([1]. This)B .103 +(pipe is established before an)2.603 F 2.604(yr)-.15 G .104 +(edirections spec-)-2.604 F 1.272(i\214ed by the command \(see)108 254.4 +R/F3 9/Times-Bold@0 SF(REDIRECTION)3.771 E F0(belo)3.521 E 3.771 +(w\). The)-.25 F 1.271(\214le descriptors can be utilized as ar)3.771 F +1.271(guments to)-.18 F .515 +(shell commands and redirections using standard w)108 266.4 R .515 +(ord e)-.1 F 3.015(xpansions. The)-.15 F .515 +(\214le descriptors are not a)3.015 F -.25(va)-.2 G .515(ilable in).25 F +3.637(subshells. The)108 278.4 R 1.137(process ID of the shell spa)3.637 +F 1.137(wned to e)-.15 F -.15(xe)-.15 G 1.137(cute the coprocess is a) +.15 F -.25(va)-.2 G 1.136(ilable as the v).25 F 1.136(alue of the)-.25 F +-.25(va)108 290.4 S(riable).25 E F2 -.27(NA)2.5 G(ME).27 E F0 2.5 +(_PID. The)B F1(wait)2.5 E F0 -.2(bu)2.5 G +(iltin command may be used to w).2 E +(ait for the coprocess to terminate.)-.1 E .336 +(Since the coprocess is created as an asynchronous command, the)108 +307.2 R F1(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1 +G .336(ys returns success.).1 F +(The return status of a coprocess is the e)108 319.2 Q(xit status of) +-.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 336 Q +F0 2.698(As)108 348 S .198 +(hell function is an object that is called lik)-2.698 F 2.698(eas)-.1 G +.198(imple command and e)-2.698 F -.15(xe)-.15 G .197 +(cutes a compound command with).15 F 2.5(an)108 360 S .5 -.25(ew s)-2.5 +H(et of positional parameters.).25 E +(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 376.8 +Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C +(dir).37 E(ection)-.37 E F0(])A F1(function)108 388.8 Q F2(name)2.5 E F0 +([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C(dir) +.37 E(ection)-.37 E F0(])A 1.402(This de\214nes a function named)144 +400.8 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402 +(ed w)-.15 F(ord)-.1 E F1(function)3.902 E F0 1.402(is optional.)3.902 F +1.403(If the)6.402 F F1(function)3.903 E F0(reserv)144 412.8 Q .162 (ed w)-.15 F .162(ord is supplied, the parentheses are optional.)-.1 F -(The)5.162 E F1(body)2.662 E F0 .162(of the function is the compound) -2.662 F(command)144 290.4 Q F1(compound\255command)2.784 E F0(\(see) -3.354 E F3 .084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G -2.584(\). That).15 F .084(command is usually a)2.584 F F1(list)144 302.4 +(The)5.162 E F2(body)2.662 E F0 .162(of the function is the compound) +2.662 F(command)144 424.8 Q F2(compound\255command)2.784 E F0(\(see) +3.354 E F1 .084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G +2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 436.8 Q F0 .044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F -2.544(yc)-.15 G .044(ommand listed under)-2.544 F F3 .044 -(Compound Commands)2.544 F F0(abo)144 314.4 Q -.15(ve)-.15 G(.).15 E F1 -(compound\255command)6.671 E F0 1.671(is e)4.171 F -.15(xe)-.15 G 1.671 -(cuted whene).15 F -.15(ve)-.25 G(r).15 E F1(name)4.171 E F0 1.671 -(is speci\214ed as the name of a simple)4.171 F 3.008(command. An)144 -326.4 R 3.009(yr)-.15 G .509(edirections \(see)-3.009 F F2(REDIRECTION) -3.009 E F0(belo)2.759 E .509 -(w\) speci\214ed when a function is de\214ned are)-.25 F .581 -(performed when the function is e)144 338.4 R -.15(xe)-.15 G 3.081 -(cuted. The).15 F -.15(ex)3.081 G .58 -(it status of a function de\214nition is zero unless a).15 F .177(synta\ -x error occurs or a readonly function with the same name already e)144 -350.4 R 2.678(xists. When)-.15 F -.15(exe)2.678 G .178(cuted, the).15 F --.15(ex)144 362.4 S .64(it status of a function is the e).15 F .64 -(xit status of the last command e)-.15 F -.15(xe)-.15 G .64 -(cuted in the body).15 F 5.64(.\()-.65 G(See)-5.64 E F2(FUNC-)3.14 E -(TIONS)144 374.4 Q F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95 -/Times-Bold@0 SF(COMMENTS)72 391.2 Q F0 .982(In a non-interacti)108 -403.2 R 1.282 -.15(ve s)-.25 H .982(hell, or an interacti).15 F 1.282 --.15(ve s)-.25 H .982(hell in which the).15 F F3(interacti)3.482 E -.1 -(ve)-.1 G(_comments).1 E F0 .982(option to the)3.482 F F3(shopt)3.482 E -F0 -.2(bu)108 415.2 S .952(iltin is enabled \(see).2 F F2 .952(SHELL B) +2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044 +(Compound Commands)2.544 F F0(abo)144 448.8 Q -.15(ve)-.15 G(.).15 E F2 +(compound\255command)6.67 E F0 1.67(is e)4.17 F -.15(xe)-.15 G 1.671 +(cuted whene).15 F -.15(ve)-.25 G(r).15 E F2(name)4.171 E F0 1.671 +(is speci\214ed as the name of a simple)4.171 F 2.753(command. When)144 +460.8 R(in)2.753 E F2 .253(posix mode)2.753 F F0(,)A F2(name)2.753 E F0 +.253(may not be the name of one of the POSIX)2.753 F F2 .252(special b) +2.753 F(uiltins)-.2 E F0(.)A(An)144 472.8 Q 3.241(yr)-.15 G .741 +(edirections \(see)-3.241 F F3(REDIRECTION)3.241 E F0(belo)2.991 E .742 +(w\) speci\214ed when a function is de\214ned are performed)-.25 F .171 +(when the function is e)144 484.8 R -.15(xe)-.15 G 2.671(cuted. The).15 +F -.15(ex)2.671 G .17 +(it status of a function de\214nition is zero unless a syntax error).15 +F .704(occurs or a readonly function with the same name already e)144 +496.8 R 3.205(xists. When)-.15 F -.15(exe)3.205 G .705(cuted, the e).15 +F .705(xit status)-.15 F 1.822(of a function is the e)144 508.8 R 1.821 +(xit status of the last command e)-.15 F -.15(xe)-.15 G 1.821 +(cuted in the body).15 F 6.821(.\()-.65 G(See)-6.821 E F3(FUNCTIONS) +4.321 E F0(belo)144 520.8 Q -.65(w.)-.25 G(\)).65 E/F4 10.95 +/Times-Bold@0 SF(COMMENTS)72 537.6 Q F0 .982(In a non-interacti)108 +549.6 R 1.282 -.15(ve s)-.25 H .982(hell, or an interacti).15 F 1.282 +-.15(ve s)-.25 H .982(hell in which the).15 F F1(interacti)3.482 E -.1 +(ve)-.1 G(_comments).1 E F0 .982(option to the)3.482 F F1(shopt)3.482 E +F0 -.2(bu)108 561.6 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B) 3.452 F(UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952 -(w\), a w)-.25 F .952(ord be)-.1 F .952(ginning with)-.15 F F3(#)3.451 E +(w\), a w)-.25 F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951(causes that w)3.451 F(ord)-.1 E .604 -(and all remaining characters on that line to be ignored.)108 427.2 R +(and all remaining characters on that line to be ignored.)108 573.6 R .605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the) -.15 F F3(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 439.2 Q F0 +.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 585.6 Q F0 1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836 -(omments. The)-3.837 F F3(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E +(omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 -451.2 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 468 S -.438(OT) -.11 G(ING).438 E F1(Quoting)108 480 Q F0 .477(is used to remo)2.977 F +597.6 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 614.4 S -.438(OT) +.11 G(ING).438 E F2(Quoting)108 626.4 Q F0 .477(is used to remo)2.977 F .777 -.15(ve t)-.15 H .477 (he special meaning of certain characters or w).15 F .477 (ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 (used to disable special treatment for special characters, to pre)108 -492 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 -(ords from being recognized as)-.1 F(such, and to pre)108 504 Q -.15(ve) --.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 520.8 -R F1(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288(listed abo) -2.788 F .588 -.15(ve u)-.15 H(nder).15 E F2(DEFINITIONS)2.788 E F0 .288 -(has special meaning to the shell and must be)2.538 F -(quoted if it is to represent itself.)108 532.8 Q 1.345 -(When the command history e)108 549.6 R 1.344(xpansion f)-.15 F 1.344 -(acilities are being used \(see)-.1 F F2(HIST)3.844 E(OR)-.162 E 3.594 +638.4 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 +(ords from being recognized as)-.1 F(such, and to pre)108 650.4 Q -.15 +(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 +667.2 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 +(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS) +2.788 E F0 .288(has special meaning to the shell and must be)2.538 F +(quoted if it is to represent itself.)108 679.2 Q 1.345 +(When the command history e)108 696 R 1.344(xpansion f)-.15 F 1.344 +(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594 (YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the) --.25 F F1(history e)108 561.6 Q(xpansion)-.2 E F0(character)2.5 E 2.5 -(,u)-.4 G(sually)-2.5 E F3(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 -E -.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E -(There are three quoting mechanisms: the)108 578.4 Q F1(escape c)2.5 E +-.25 F F2(history e)108 708 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u) +-.4 G(sually)-2.5 E F1(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 E +-.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E +(There are three quoting mechanisms: the)108 724.8 Q F2(escape c)2.5 E (har)-.15 E(acter)-.15 E F0 2.5(,s).73 G -(ingle quotes, and double quotes.)-2.5 E 2.974(An)108 595.2 S .474 -(on-quoted backslash \()-2.974 F F3(\\)A F0 2.974(\)i)C 2.974(st)-2.974 -G(he)-2.974 E F1 .474(escape c)2.974 F(har)-.15 E(acter)-.15 E F0 5.474 -(.I).73 G 2.974(tp)-5.474 G(reserv)-2.974 E .474(es the literal v)-.15 F -.474(alue of the ne)-.25 F .475(xt character that)-.15 F(follo)108 607.2 -Q 1.554(ws, with the e)-.25 F 1.553(xception of . If)-.25 F(a)4.053 E F3(\\)4.053 E F0(. If)-.25 F(a)4.053 E F1(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F 1.122 -(quoted, the)108 619.2 R F3(\\)3.622 E F0( is treated as a line continuation \(that is, it is remo)-.25 F -.15(ve)-.15 G 3.622(df).15 G 1.123(rom the input stream and)-3.622 F -(ef)108 631.2 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 -(Enclosing characters in single quotes preserv)108 648 R .295 +(ef)108 120 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 136.8 R .295 (es the literal v)-.15 F .295(alue of each character within the quotes.) -.25 F 2.795(As)5.295 G(in-)-2.795 E -(gle quote may not occur between single quotes, e)108 660 Q -.15(ve)-.25 -G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 -(Enclosing characters in double quotes preserv)108 676.8 R .034 +(gle quote may not occur between single quotes, e)108 148.8 Q -.15(ve) +-.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 +(Enclosing characters in double quotes preserv)108 165.6 R .034 (es the literal v)-.15 F .034 (alue of all characters within the quotes, with the)-.25 F -.15(ex)108 -688.8 S .828(ception of).15 F F3($)3.328 E F0(,)A F3<92>3.328 E F0(,)A -F3(\\)3.328 E F0 3.328(,a)C .828(nd, when history e)-3.328 F .828 -(xpansion is enabled,)-.15 F F3(!)3.328 E F0 5.828(.T)C .828 -(he characters)-5.828 F F3($)3.328 E F0(and)3.328 E F3<92>3.328 E F0 +177.6 S .828(ception of).15 F F1($)3.328 E F0(,)A F1<92>3.328 E F0(,)A +F1(\\)3.328 E F0 3.328(,a)C .828(nd, when history e)-3.328 F .828 +(xpansion is enabled,)-.15 F F1(!)3.328 E F0 5.828(.T)C .828 +(he characters)-5.828 F F1($)3.328 E F0(and)3.328 E F1<92>3.328 E F0 .827(retain their special)3.328 F .074(meaning within double quotes.)108 -700.8 R .074(The backslash retains its special meaning only when follo) -5.074 F .075(wed by one of the)-.25 F(follo)108 712.8 Q .205 -(wing characters:)-.25 F F3($)2.705 E F0(,)A F3<92>2.705 E F0(,)A F3(") -3.538 E F0(,).833 E F3(\\)2.705 E F0 2.705(,o)C(r)-2.705 E F3() +189.6 R .074(The backslash retains its special meaning only when follo) +5.074 F .075(wed by one of the)-.25 F(follo)108 201.6 Q .205 +(wing characters:)-.25 F F1($)2.705 E F0(,)A F1<92>2.705 E F0(,)A F1(") +3.538 E F0(,).833 E F1(\\)2.705 E F0 2.705(,o)C(r)-2.705 E F1() 2.705 E F0 5.205(.A)C .204 (double quote may be quoted within double quotes by pre-)-2.5 F .081 -(ceding it with a backslash.)108 724.8 R .082(If enabled, history e) -5.082 F .082(xpansion will be performed unless an)-.15 F F3(!)2.582 E F0 -.082(appearing in double)5.082 F(GNU Bash-4.2)72 768 Q(2010 December 28) -135.965 E(7)190.955 E 0 Cg EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(quotes is escaped using a backslash.)108 84 Q -(The backslash preceding the)5 E/F1 10/Times-Bold@0 SF(!)2.5 E F0 -(is not remo)5 E -.15(ve)-.15 G(d.).15 E(The special parameters)108 -100.8 Q F1(*)2.5 E F0(and)2.5 E F1(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 -H(pecial meaning when in double quotes \(see).15 E/F2 9/Times-Bold@0 SF +(ceding it with a backslash.)108 213.6 R .082(If enabled, history e) +5.082 F .082(xpansion will be performed unless an)-.15 F F1(!)2.582 E F0 +.082(appearing in double)5.082 F(quotes is escaped using a backslash.) +108 225.6 Q(The backslash preceding the)5 E F1(!)2.5 E F0(is not remo)5 +E -.15(ve)-.15 G(d.).15 E(The special parameters)108 242.4 Q F1(*)2.5 E +F0(and)2.5 E F1(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +(pecial meaning when in double quotes \(see).15 E/F3 9/Times-Bold@0 SF -.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 -117.6 S .212(rds of the form).8 F F1($)2.712 E F0<08>A/F3 10 -/Times-Italic@0 SF(string)A F0 2.712<0861>C .211(re treated specially) --2.712 F 5.211(.T)-.65 G .211(he w)-5.211 F .211(ord e)-.1 F .211 -(xpands to)-.15 F F3(string)2.711 E F0 2.711(,w)C .211 -(ith backslash-escaped char)-2.711 F(-)-.2 E .604 -(acters replaced as speci\214ed by the ANSI C standard.)108 129.6 R .605 +259.2 S .212(rds of the form).8 F F1($)2.712 E F0<08>A F2(string)A F0 +2.712<0861>C .211(re treated specially)-2.712 F 5.211(.T)-.65 G .211 +(he w)-5.211 F .211(ord e)-.1 F .211(xpands to)-.15 F F2(string)2.711 E +F0 2.711(,w)C .211(ith backslash-escaped char)-2.711 F(-)-.2 E .604 +(acters replaced as speci\214ed by the ANSI C standard.)108 271.2 R .605 (Backslash escape sequences, if present, are decoded)5.605 F(as follo) -108 141.6 Q(ws:)-.25 E F1(\\a)144 153.6 Q F0(alert \(bell\))28.22 E F1 -(\\b)144 165.6 Q F0(backspace)27.66 E F1(\\e)144 177.6 Q(\\E)144 189.6 Q -F0(an escape character)26.55 E F1(\\f)144 201.6 Q F0(form feed)29.89 E -F1(\\n)144 213.6 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 -225.6 Q F0(carriage return)28.78 E F1(\\t)144 237.6 Q F0(horizontal tab) -29.89 E F1(\\v)144 249.6 Q F0 -.15(ve)28.22 G(rtical tab).15 E F1(\\\\) -144 261.6 Q F0(backslash)30.44 E F1<5c08>144 273.6 Q F0(single quote) -30.44 E F1(\\")144 285.6 Q F0(double quote)27.67 E F1(\\)144 297.6 Q F3 +108 283.2 Q(ws:)-.25 E F1(\\a)144 295.2 Q F0(alert \(bell\))28.22 E F1 +(\\b)144 307.2 Q F0(backspace)27.66 E F1(\\e)144 319.2 Q(\\E)144 331.2 Q +F0(an escape character)26.55 E F1(\\f)144 343.2 Q F0(form feed)29.89 E +F1(\\n)144 355.2 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 +367.2 Q F0(carriage return)28.78 E F1(\\t)144 379.2 Q F0(horizontal tab) +29.89 E F1(\\v)144 391.2 Q F0 -.15(ve)28.22 G(rtical tab).15 E F1(\\\\) +144 403.2 Q F0(backslash)30.44 E F1<5c08>144 415.2 Q F0(single quote) +30.44 E F1(\\")144 427.2 Q F0(double quote)27.67 E F1(\\)144 439.2 Q F2 (nnn)A F0(the eight-bit character whose v)18.22 E(alue is the octal v) --.25 E(alue)-.25 E F3(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x) -144 309.6 Q F3(HH)A F0(the eight-bit character whose v)13.78 E -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F3(HH)2.5 E F0 +-.25 E(alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x) +144 451.2 Q F2(HH)A F0(the eight-bit character whose v)13.78 E +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 321.6 Q F3(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 333.6 R 1.506 -(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F3(HHHH) -4.006 E F0(\(one to four he)180 345.6 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 357.6 Q F3(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 369.6 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F3(HHHHH-) -3.048 E(HHH)180 381.6 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(\\c)144 393.6 Q F3(x)A F0 2.5(ac)24.34 G(ontrol-)-2.5 -E F3(x)A F0(character)2.5 E(The e)108 410.4 Q(xpanded result is single-\ -quoted, as if the dollar sign had not been present.)-.15 E 2.64(Ad)108 -427.2 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F F1 -($)A F0(")A F3(string)A F0 .14 +(\\u)144 463.2 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 475.2 R 1.506 +(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.006 E F0(\(one to four he)180 487.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 499.2 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 511.2 R .547 +(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.048 E(HHH)180 523.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(\\c)144 535.2 Q F2(x)A F0 2.5(ac)24.34 G(ontrol-)-2.5 +E F2(x)A F0(character)2.5 E(The e)108 552 Q(xpanded result is single-qu\ +oted, as if the dollar sign had not been present.)-.15 E 2.64(Ad)108 +568.8 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F F1 +($)A F0(")A F2(string)A F0 .14 ("\) will cause the string to be translated according)B .495 -(to the current locale.)108 439.2 R .495(If the current locale is)5.495 +(to the current locale.)108 580.8 R .495(If the current locale is)5.495 F F1(C)2.995 E F0(or)2.995 E F1(POSIX)2.995 E F0 2.995(,t)C .495 (he dollar sign is ignored.)-2.995 F .496(If the string is trans-)5.496 -F(lated and replaced, the replacement is double-quoted.)108 451.2 Q/F4 -10.95/Times-Bold@0 SF -.81(PA)72 468 S(RAMETERS).81 E F0(A)108 480 Q F3 -(par)4.593 E(ameter)-.15 E F0 .843(is an entity that stores v)4.073 F -3.343(alues. It)-.25 F .843(can be a)3.343 F F3(name)3.342 E F0 3.342 +F(lated and replaced, the replacement is double-quoted.)108 592.8 Q/F4 +10.95/Times-Bold@0 SF -.81(PA)72 609.6 S(RAMETERS).81 E F0(A)108 621.6 Q +F2(par)4.593 E(ameter)-.15 E F0 .843(is an entity that stores v)4.073 F +3.343(alues. It)-.25 F .843(can be a)3.343 F F2(name)3.342 E F0 3.342 (,an).18 G(umber)-3.342 E 3.342(,o)-.4 G 3.342(ro)-3.342 G .842 -(ne of the special characters)-3.342 F .822(listed belo)108 492 R 3.323 -(wu)-.25 G(nder)-3.323 E F1 .823(Special P)3.323 F(arameters)-.1 E F0 -5.823(.A)C F3(variable)-2.21 E F0 .823(is a parameter denoted by a)3.503 -F F3(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823(riable has a).25 -F F3(value)108 504 Q F0 .369(and zero or more)2.869 F F3(attrib)2.869 E -(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 +(ne of the special characters)-3.342 F .822(listed belo)108 633.6 R +3.323(wu)-.25 G(nder)-3.323 E F1 .823(Special P)3.323 F(arameters)-.1 E +F0 5.823(.A)C F2(variable)-2.21 E F0 .823(is a parameter denoted by a) +3.503 F F2(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823 +(riable has a).25 F F2(value)108 645.6 Q F0 .369(and zero or more)2.869 +F F2(attrib)2.869 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 (utes are assigned using the)-.2 F F1(declar)2.868 E(e)-.18 E F0 -.2(bu) 2.868 G .368(iltin command \(see).2 F F1(declar)2.868 E(e)-.18 E F0 -(belo)108 516 Q 2.5(wi)-.25 G(n)-2.5 E F2(SHELL B)2.5 E(UIL)-.09 E -(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.754(Ap)108 532.8 +(belo)108 657.6 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.754(Ap)108 674.4 S .254(arameter is set if it has been assigned a v)-2.754 F 2.754 (alue. The)-.25 F .254(null string is a v)2.754 F .255(alid v)-.25 F 2.755(alue. Once)-.25 F 2.755(av)2.755 G .255(ariable is set, it)-3.005 -F(may be unset only by using the)108 544.8 Q F1(unset)2.5 E F0 -.2(bu) -2.5 G(iltin command \(see).2 E F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 561.6 Q F3(variable)2.79 E F0 -(may be assigned to by a statement of the form)2.68 E F3(name)144 578.4 -Q F0(=[)A F3(value)A F0(])A(If)108 595.2 Q F3(value)3.023 E F0 .233 +F(may be unset only by using the)108 686.4 Q F1(unset)2.5 E F0 -.2(bu) +2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 703.2 Q F2(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F2(name)144 720 Q +F0(=[)A F2(value)A F0(])A(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E +(8)195.95 E 0 Cg EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E(If)108 84 Q/F1 10/Times-Italic@0 SF(value)3.023 E F0 .233 (is not gi)2.913 F -.15(ve)-.25 G .233(n, the v).15 F .232 -(ariable is assigned the null string.)-.25 F(All)5.232 E F3(values)3.022 +(ariable is assigned the null string.)-.25 F(All)5.232 E F1(values)3.022 E F0(under)3.002 E .232(go tilde e)-.18 F .232(xpansion, parameter)-.15 -F .515(and v)108 607.2 R .515(ariable e)-.25 F .515 +F .515(and v)108 96 R .515(ariable e)-.25 F .515 (xpansion, command substitution, arithmetic e)-.15 F .515 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see) --3.015 E F2(EXP)3.015 E(ANSION)-.666 E F0(belo)108 619.2 Q 2.699 -(w\). If)-.25 F .199(the v)2.699 F .199(ariable has its)-.25 F F1 -(integer)2.698 E F0(attrib)2.698 E .198(ute set, then)-.2 F F3(value) -2.988 E F0 .198(is e)2.878 F -.25(va)-.25 G .198 +-3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108 108 +Q 2.699(w\). If)-.25 F .199(the v)2.699 F .199(ariable has its)-.25 F/F3 +10/Times-Bold@0 SF(integer)2.698 E F0(attrib)2.698 E .198(ute set, then) +-.2 F F1(value)2.988 E F0 .198(is e)2.878 F -.25(va)-.25 G .198 (luated as an arithmetic e).25 F .198(xpression e)-.15 F -.15(ve)-.25 G -(n).15 E .901(if the $\(\(...\)\) e)108 631.2 R .901 -(xpansion is not used \(see)-.15 F F1 .901(Arithmetic Expansion)3.401 F +(n).15 E .901(if the $\(\(...\)\) e)108 120 R .901 +(xpansion is not used \(see)-.15 F F3 .901(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.402(w\). W)-.25 F .902 -(ord splitting is not performed,)-.8 F 1.179(with the e)108 643.2 R -1.179(xception of)-.15 F F1("$@")3.679 E F0 1.179(as e)3.679 F 1.179 -(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.178(Special P) +(ord splitting is not performed,)-.8 F 1.179(with the e)108 132 R 1.179 +(xception of)-.15 F F3("$@")3.679 E F0 1.179(as e)3.679 F 1.179 +(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.178(Special P) 3.678 F(arameters)-.1 E F0 6.178(.P)C 1.178(athname e)-6.328 F 1.178 -(xpansion is not)-.15 F 3.648(performed. Assignment)108 655.2 R 1.148 -(statements may also appear as ar)3.648 F 1.149(guments to the)-.18 F F1 -(alias)3.649 E F0(,)A F1(declar)3.649 E(e)-.18 E F0(,)A F1(typeset)3.649 -E F0(,)A F1(export)3.649 E F0(,)A F1 -.18(re)108 667.2 S(adonly).18 E F0 -2.5(,a)C(nd)-2.5 E F1(local)2.5 E F0 -.2(bu)2.5 G(iltin commands.).2 E -.377(In the conte)108 684 R .377 +(xpansion is not)-.15 F 3.648(performed. Assignment)108 144 R 1.148 +(statements may also appear as ar)3.648 F 1.149(guments to the)-.18 F F3 +(alias)3.649 E F0(,)A F3(declar)3.649 E(e)-.18 E F0(,)A F3(typeset)3.649 +E F0(,)A F3(export)3.649 E F0(,)A F3 -.18(re)108 156 S(adonly).18 E F0 +2.63(,a)C(nd)-2.63 E F3(local)2.63 E F0 -.2(bu)2.63 G .13 +(iltin commands.).2 F .13(When in)5.13 F F1 .129(posix mode)2.629 F F0 +2.629(,t)C .129(hese b)-2.629 F .129 +(uiltins may appear in a command after)-.2 F +(one or more instances of the)108 168 Q F3(command)2.5 E F0 -.2(bu)2.5 G +(iltin and retain these assignment statement properties.).2 E .376 +(In the conte)108 184.8 R .376 (xt where an assignment statement is assigning a v)-.15 F .376 -(alue to a shell v)-.25 F .376(ariable or array inde)-.25 F .376 +(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 (x, the +=)-.15 F .257 -(operator can be used to append to or add to the v)108 696 R(ariable') +(operator can be used to append to or add to the v)108 196.8 R(ariable') -.25 E 2.757(sp)-.55 G(re)-2.757 E .257(vious v)-.25 F 2.757(alue. When) --.25 F .257(+= is applied to a v)2.757 F(ariable)-.25 E .361 -(for which the)108 708 R F3(inte)2.861 E -.1(ge)-.4 G(r).1 E F0(attrib) -2.861 E .361(ute has been set,)-.2 F F3(value)2.861 E F0 .361(is e)2.861 -F -.25(va)-.25 G .36(luated as an arithmetic e).25 F .36 -(xpression and added to the)-.15 F -.25(va)108 720 S(riable').25 E 2.888 -(sc)-.55 G .388(urrent v)-2.888 F .388(alue, which is also e)-.25 F -.25 -(va)-.25 G 2.889(luated. When).25 F .389(+= is applied to an array v) -2.889 F .389(ariable using compound)-.25 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(8)190.955 E 0 Cg EP -%%Page: 9 9 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .186(assignment \(see)108 84 R/F1 10/Times-Bold@0 SF(Arrays)2.686 -E F0(belo)2.686 E .186(w\), the v)-.25 F(ariable')-.25 E 2.685(sv)-.55 G -.185(alue is not unset \(as it is when using =\), and ne)-2.935 F 2.685 -(wv)-.25 G .185(alues are)-2.935 F 1.384(appended to the array be)108 96 -R 1.384(ginning at one greater than the array')-.15 F 3.885(sm)-.55 G -1.385(aximum inde)-3.885 F 3.885(x\()-.15 G 1.385(for inde)-3.885 F -.15 -(xe)-.15 G 3.885(da).15 G 1.385(rrays\) or)-3.885 F .123 -(added as additional k)108 108 R -.15(ey)-.1 G.15 E .123 +-.25 F .257(+= is applied to a v)2.757 F(ariable)-.25 E .36 +(for which the)108 208.8 R F1(inte)2.86 E -.1(ge)-.4 G(r).1 E F0(attrib) +2.86 E .36(ute has been set,)-.2 F F1(value)2.86 E F0 .361(is e)2.861 F +-.25(va)-.25 G .361(luated as an arithmetic e).25 F .361 +(xpression and added to the)-.15 F -.25(va)108 220.8 S(riable').25 E +2.889(sc)-.55 G .389(urrent v)-2.889 F .389(alue, which is also e)-.25 F +-.25(va)-.25 G 2.889(luated. When).25 F .389 +(+= is applied to an array v)2.889 F .388(ariable using compound)-.25 F +.185(assignment \(see)108 232.8 R F3(Arrays)2.685 E F0(belo)2.685 E .185 +(w\), the v)-.25 F(ariable')-.25 E 2.685(sv)-.55 G .185 +(alue is not unset \(as it is when using =\), and ne)-2.935 F 2.686(wv) +-.25 G .186(alues are)-2.936 F 1.385(appended to the array be)108 244.8 +R 1.384(ginning at one greater than the array')-.15 F 3.884(sm)-.55 G +1.384(aximum inde)-3.884 F 3.884(x\()-.15 G 1.384(for inde)-3.884 F -.15 +(xe)-.15 G 3.884(da).15 G 1.384(rrays\) or)-3.884 F .122 +(added as additional k)108 256.8 R -.15(ey)-.1 G.15 E .122 (alue pairs in an associati)-.25 F .423 -.15(ve a)-.25 H(rray).15 E -5.123(.W)-.65 G .122(hen applied to a string-v)-5.123 F .122(alued v) --.25 F(ariable,)-.25 E/F2 10/Times-Italic@0 SF(value)2.622 E F0(is e)108 -120 Q(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E F1 -.2(Po)87 136.8 S(sitional P).2 E(arameters)-.1 E F0 -(A)108 148.8 Q F2 .705(positional par)4.455 F(ameter)-.15 E F0 .706(is \ -a parameter denoted by one or more digits, other than the single digit \ -0.)3.935 F(Posi-)5.706 E .445 -(tional parameters are assigned from the shell')108 160.8 R 2.944(sa) --.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1 -(ke).2 G .444(d, and may be reassigned using).1 F(the)108 172.8 Q F1 -(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\ - parameters may not be assigned to with assignment statements.)5.833 F -(The)5.834 E .334(positional parameters are temporarily replaced when a\ - shell function is e)108 184.8 R -.15(xe)-.15 G .333(cuted \(see).15 F -/F3 9/Times-Bold@0 SF(FUNCTIONS)2.833 E F0(belo)2.583 E(w\).)-.25 E +5.123(.W)-.65 G .123(hen applied to a string-v)-5.123 F .123(alued v) +-.25 F(ariable,)-.25 E F1(value)2.623 E F0(is e)108 268.8 Q +(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G +(alue.)-2.75 E 3.383(Av)108 285.6 S .883(ariable can be assigned the) +-3.633 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 +(ute using the)-.2 F F33.382 E F0 .882(option to the)3.382 F F3 +(declar)3.382 E(e)-.18 E F0(or)3.382 E F3(local)3.382 E F0 -.2(bu)3.382 +G .882(iltin com-).2 F .315(mands \(see the descriptions of)108 297.6 R +F3(declar)2.815 E(e)-.18 E F0(and)2.815 E F3(local)2.815 E F0(belo)2.815 +E .316(w\) to create a)-.25 F F1(namer)2.816 E(ef)-.37 E F0 2.816(,o)C +2.816(rar)-2.816 G .316(eference to another v)-2.816 F(ari-)-.25 E 3.335 +(able. This)108 309.6 R(allo)3.335 E .835(ws v)-.25 F .835 +(ariables to be manipulated indirectly)-.25 F 5.835(.W)-.65 G(hene) +-5.835 E -.15(ve)-.25 G 3.335(rt).15 G .835(he nameref v)-3.335 F .835 +(ariable is referenced or)-.25 F .021 +(assigned to, the operation is actually performed on the v)108 321.6 R +.021(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.522 +(sv)-.55 G 2.522(alue. A)-2.772 F .819 +(nameref is commonly used within shell functions to refer to a v)108 +333.6 R .818(ariable whose name is passed as an ar)-.25 F(gu-)-.18 E +.131(ment to the function.)108 345.6 R -.15(Fo)5.131 G 2.631(ri).15 G +.131(nstance, if a v)-2.631 F .132 +(ariable name is passed to a shell function as its \214rst ar)-.25 F +.132(gument, run-)-.18 F(ning)108 357.6 Q/F4 10/Courier@0 SF +(declare -n ref=$1)144 375.6 Q F0 .303 +(inside the function creates a nameref v)108 393.6 R(ariable)-.25 E F3 +-.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v)-.25 +F .302(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E 3.318 +(ment. References)108 405.6 R .818(and assignments to)3.318 F F3 -.18 +(re)3.318 G(f).18 E F0 .818 +(are treated as references and assignments to the v)3.318 F .818 +(ariable whose)-.25 F .275(name w)108 417.6 R .275(as passed as)-.1 F F3 +($1)2.775 E F0 5.275(.I)C 2.775(ft)-5.275 G .275(he control v)-2.775 F +.275(ariable in a)-.25 F F3 -.25(fo)2.775 G(r).25 E F0 .275 +(loop has the nameref attrib)2.775 F .274(ute, the list of w)-.2 F .274 +(ords can)-.1 F .354(be a list of shell v)108 429.6 R .354 +(ariables, and a name reference will be established for each w)-.25 F +.355(ord in the list, in turn, when)-.1 F .086(the loop is e)108 441.6 R +-.15(xe)-.15 G 2.586(cuted. Array).15 F -.25(va)2.586 G .086 +(riables cannot be gi).25 F -.15(ve)-.25 G 2.586(nt).15 G(he)-2.586 E F3 +2.586 E F0(attrib)2.585 E 2.585(ute. Ho)-.2 F(we)-.25 E -.15(ve) +-.25 G .885 -.4(r, n).15 H .085(ameref v).4 F .085(ariables can ref-) +-.25 F .883(erence array v)108 453.6 R .883 +(ariables and subscripted array v)-.25 F 3.383(ariables. Namerefs)-.25 F +.883(can be unset using the)3.383 F F33.383 E F0 .884 +(option to the)3.383 F F3(unset)108 465.6 Q F0 -.2(bu)2.558 G 2.558 +(iltin. Otherwise,).2 F(if)2.558 E F3(unset)2.558 E F0 .058(is e)2.558 F +-.15(xe)-.15 G .058(cuted with the name of a nameref v).15 F .057 +(ariable as an ar)-.25 F .057(gument, the v)-.18 F(ari-)-.25 E +(able referenced by the nameref v)108 477.6 Q(ariable will be unset.) +-.25 E F3 -.2(Po)87 494.4 S(sitional P).2 E(arameters)-.1 E F0(A)108 +506.4 Q F1 .705(positional par)4.455 F(ameter)-.15 E F0 .706(is a param\ +eter denoted by one or more digits, other than the single digit 0.)3.935 +F(Posi-)5.706 E .445(tional parameters are assigned from the shell')108 +518.4 R 2.944(sa)-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F +-.2(vo)-.4 G -.1(ke).2 G .444(d, and may be reassigned using).1 F(the) +108 530.4 Q F3(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F +.834(Positional parameters may not be assigned to with assignment state\ +ments.)5.833 F(The)5.834 E .334(positional parameters are temporarily r\ +eplaced when a shell function is e)108 542.4 R -.15(xe)-.15 G .333 +(cuted \(see).15 F F2(FUNCTIONS)2.833 E F0(belo)2.583 E(w\).)-.25 E 1.403(When a positional parameter consisting of more than a single digi\ -t is e)108 201.6 R 1.404(xpanded, it must be enclosed in)-.15 F -(braces \(see)108 213.6 Q F3(EXP)2.5 E(ANSION)-.666 E F0(belo)2.25 E -(w\).)-.25 E F1(Special P)87 230.4 Q(arameters)-.1 E F0 1.675 -(The shell treats se)108 242.4 R -.15(ve)-.25 G 1.675 +t is e)108 559.2 R 1.404(xpanded, it must be enclosed in)-.15 F +(braces \(see)108 571.2 Q F2(EXP)2.5 E(ANSION)-.666 E F0(belo)2.25 E +(w\).)-.25 E F3(Special P)87 588 Q(arameters)-.1 E F0 1.675 +(The shell treats se)108 600 R -.15(ve)-.25 G 1.675 (ral parameters specially).15 F 6.675(.T)-.65 G 1.674 (hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 254.4 Q(wed.)-.25 E F1(*)108 266.4 Q F0 .605 -(Expands to the positional parameters, starting from one.)31 F .606 -(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .084 -(ble quotes, it e)144 278.4 R .084(xpands to a single w)-.15 F .084 -(ord with the v)-.1 F .084 -(alue of each parameter separated by the \214rst char)-.25 F(-)-.2 E -.003(acter of the)144 290.4 R F3(IFS)2.503 E F0 .003(special v)2.253 F -2.503(ariable. That)-.25 F .003(is, ")2.503 F F1($*)A F0 2.503("i)C -2.503(se)-2.503 G(qui)-2.503 E -.25(va)-.25 G .003(lent to ").25 F F1 -($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0 .003(", where)B F2(c)2.703 E F0 -.004(is the \214rst char)2.813 F(-)-.2 E .769(acter of the v)144 302.4 R -.769(alue of the)-.25 F F3(IFS)3.269 E F0 -.25(va)3.019 G 3.269 -(riable. If).25 F F3(IFS)3.268 E F0 .768 -(is unset, the parameters are separated by spaces.)3.018 F(If)5.768 E F3 -(IFS)144 314.4 Q F0(is null, the parameters are joined without interv) -2.25 E(ening separators.)-.15 E F1(@)108 326.4 Q F0 .605 +(them is not allo)108 612 Q(wed.)-.25 E F3(*)108 624 Q F0 .223 +(Expands to the positional parameters, starting from one.)31 F .224 +(When the e)5.224 F .224(xpansion is not within double)-.15 F .663 +(quotes, each positional parameter e)144 636 R .662 +(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 +(xts where it is performed,)-.15 F 1.081(those w)144 648 R 1.081 +(ords are subject to further w)-.1 F 1.082(ord splitting and pathname e) +-.1 F 3.582(xpansion. When)-.15 F 1.082(the e)3.582 F(xpansion)-.15 E +.915(occurs within double quotes, it e)144 660 R .914 +(xpands to a single w)-.15 F .914(ord with the v)-.1 F .914 +(alue of each parameter sepa-)-.25 F .89 +(rated by the \214rst character of the)144 672 R F2(IFS)3.39 E F0 .89 +(special v)3.14 F 3.39(ariable. That)-.25 F .891(is, ")3.391 F F3($*)A +F0 3.391("i)C 3.391(se)-3.391 G(qui)-3.391 E -.25(va)-.25 G .891 +(lent to ").25 F F3($1)A F1(c)A F3($2)A F1(c)A F3(...)A F0(",)A(where) +144 684 Q F1(c)3.533 E F0 .832(is the \214rst character of the v)3.643 F +.832(alue of the)-.25 F F2(IFS)3.332 E F0 -.25(va)3.082 G 3.332 +(riable. If).25 F F2(IFS)3.332 E F0 .832(is unset, the parameters are) +3.082 F(separated by spaces.)144 696 Q(If)5 E F2(IFS)2.5 E F0 +(is null, the parameters are joined without interv)2.25 E +(ening separators.)-.15 E F3(@)108 708 Q F0 .605 (Expands to the positional parameters, starting from one.)26.7 F .606 (When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 -(ble quotes, each parameter e)144 338.4 R .114(xpands to a separate w) --.15 F 2.614(ord. That)-.1 F .113(is, ")2.613 F F1($@)A F0 2.613("i)C -2.613(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F1 -($1)A F0 2.613("")C F1($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134 -(If the double-quoted e)144 350.4 R .134(xpansion occurs within a w)-.15 -F .135(ord, the e)-.1 F .135 +(ble quotes, each parameter e)144 720 R .114(xpands to a separate w)-.15 +F 2.614(ord. That)-.1 F .113(is, ")2.613 F F3($@)A F0 2.613("i)C 2.613 +(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F3($1)A F0 +2.613("")C F3($2)-2.613 E F0 2.613(".)C(..)-2.613 E(GNU Bash 4.3)72 768 +Q(2014 February 2)141.79 E(9)195.95 E 0 Cg EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .134(If the double-quoted e)144 84 R .134 +(xpansion occurs within a w)-.15 F .135(ord, the e)-.1 F .135 (xpansion of the \214rst parameter is joined)-.15 F .151(with the be)144 -362.4 R .151(ginning part of the original w)-.15 F .151(ord, and the e) --.1 F .15(xpansion of the last parameter is joined with)-.15 F .337 -(the last part of the original w)144 374.4 R 2.837(ord. When)-.1 F .338 -(there are no positional parameters, ")2.837 F F1($@)A F0 2.838("a)C(nd) --2.838 E F1($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E -(to nothing \(i.e., the)144 386.4 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 -(ve)-.15 G(d\).).15 E F1(#)108 398.4 Q F0 +96 R .151(ginning part of the original w)-.15 F .151(ord, and the e)-.1 +F .15(xpansion of the last parameter is joined with)-.15 F .337 +(the last part of the original w)144 108 R 2.837(ord. When)-.1 F .338 +(there are no positional parameters, ")2.837 F/F1 10/Times-Bold@0 SF($@) +A F0 2.838("a)C(nd)-2.838 E F1($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E +(to nothing \(i.e., the)144 120 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) +-.15 G(d\).).15 E F1(#)108 132 Q F0 (Expands to the number of positional parameters in decimal.)31 E F1(?) -108 410.4 Q F0(Expands to the e)31 E(xit status of the most recently e) +108 144 Q F0(Expands to the e)31 E(xit status of the most recently e) -.15 E -.15(xe)-.15 G(cuted fore).15 E(ground pipeline.)-.15 E F1108 -422.4 Q F0 .882 +156 Q F0 .882 (Expands to the current option \215ags as speci\214ed upon in)30.3 F -.2 (vo)-.4 G .881(cation, by the).2 F F1(set)3.381 E F0 -.2(bu)3.381 G .881 (iltin command, or).2 F(those set by the shell itself \(such as the)144 -434.4 Q F12.5 E F0(option\).)2.5 E F1($)108 446.4 Q F0 .214 +168 Q F12.5 E F0(option\).)2.5 E F1($)108 180 Q F0 .214 (Expands to the process ID of the shell.)31 F .214 (In a \(\) subshell, it e)5.214 F .214 (xpands to the process ID of the current)-.15 F -(shell, not the subshell.)144 458.4 Q F1(!)108 470.4 Q F0 -(Expands to the process ID of the most recently e)32.67 E -.15(xe)-.15 G -(cuted background \(asynchronous\) command.).15 E F1(0)108 482.4 Q F0 -1.692(Expands to the name of the shell or shell script.)31 F 1.691 -(This is set at shell initialization.)6.692 F(If)6.691 E F1(bash)4.191 E -F0(is)4.191 E(in)144 494.4 Q -.2(vo)-.4 G -.1(ke).2 G 3.077(dw).1 G .577 -(ith a \214le of commands,)-3.077 F F1($0)3.077 E F0 .578 -(is set to the name of that \214le.)3.077 F(If)5.578 E F1(bash)3.078 E -F0 .578(is started with the)3.078 F F13.078 E F0 .369 -(option, then)144 506.4 R F1($0)2.869 E F0 .369 -(is set to the \214rst ar)2.869 F .369(gument after the string to be e) --.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.368 E -(-)-.2 E(wise, it is set to the \214le name used to in)144 518.4 Q -.2 -(vo)-.4 G -.1(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25 -(iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E -F1(_)108 530.4 Q F0 .054 -(At shell startup, set to the absolute pathname used to in)31 F -.2(vo) --.4 G .255 -.1(ke t).2 H .055(he shell or shell script being e).1 F -.15 -(xe)-.15 G(cuted).15 E .692(as passed in the en)144 542.4 R .692 +(shell, not the subshell.)144 192 Q F1(!)108 204 Q F0 .499(Expands to t\ +he process ID of the job most recently placed into the background, whet\ +her e)32.67 F -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 216 Q F1(bg)2.5 E F0 -.2 +(bu)2.5 G(iltin \(see).2 E/F2 9/Times-Bold@0 SF(JOB CONTR)2.5 E(OL)-.27 +E F0(belo)2.25 E(w\).)-.25 E F1(0)108 228 Q F0 1.691 +(Expands to the name of the shell or shell script.)31 F 1.692 +(This is set at shell initialization.)6.692 F(If)6.692 E F1(bash)4.192 E +F0(is)4.192 E(in)144 240 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 +(ith a \214le of commands,)-3.078 F F1($0)3.078 E F0 .578 +(is set to the name of that \214le.)3.078 F(If)5.577 E F1(bash)3.077 E +F0 .577(is started with the)3.077 F F13.077 E F0 .368 +(option, then)144 252 R F1($0)2.869 E F0 .369(is set to the \214rst ar) +2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369 +(cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E +(wise, it is set to the \214lename used to in)144 264 Q -.2(vo)-.4 G -.1 +(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H +2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1(_)108 276 +Q F0 .055(At shell startup, set to the absolute pathname used to in)31 F +-.2(vo)-.4 G .255 -.1(ke t).2 H .054(he shell or shell script being e).1 +F -.15(xe)-.15 G(cuted).15 E .691(as passed in the en)144 288 R .691 (vironment or ar)-.4 F .691(gument list.)-.18 F(Subsequently)5.691 E -3.191(,e)-.65 G .691(xpands to the last ar)-3.341 F .691(gument to the) --.18 F(pre)144 554.4 Q .57(vious command, after e)-.25 F 3.07 +3.191(,e)-.65 G .692(xpands to the last ar)-3.341 F .692(gument to the) +-.18 F(pre)144 300 Q .571(vious command, after e)-.25 F 3.071 (xpansion. Also)-.15 F .571(set to the full pathname used to in)3.071 F --.2(vo)-.4 G .771 -.1(ke e).2 H .571(ach command).1 F -.15(exe)144 566.4 -S 1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 +-.2(vo)-.4 G .77 -.1(ke e).2 H .57(ach command).1 F -.15(exe)144 312 S +1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 (xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F (parameter holds the name of the mail \214le currently being check)144 -578.4 Q(ed.)-.1 E F1(Shell V)87 595.2 Q(ariables)-.92 E F0(The follo)108 -607.2 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA) -108 624 S(SH).3 E F0(Expands to the full \214le name used to in)9.07 E +324 Q(ed.)-.1 E F1(Shell V)87 340.8 Q(ariables)-.92 E F0(The follo)108 +352.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA) +108 369.6 S(SH).3 E F0(Expands to the full \214lename used to in)9.07 E -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A -F1 -.3(BA)108 636 S(SHOPTS).3 E F0 2.548(Ac)144 648 S .049 -(olon-separated list of enabled shell options.)-2.548 F .049(Each w) +F1 -.3(BA)108 381.6 S(SHOPTS).3 E F0 2.549(Ac)144 393.6 S .049 +(olon-separated list of enabled shell options.)-2.549 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F12.549 E F0 1.398(option to the)144 660 R -F1(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F3 +(gument for the)-.18 F F12.548 E F0 1.398(option to the)144 405.6 +R F1(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F2 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) -3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144 672 -R F3 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as)2.726 F -F2(on)3.206 E F0(by)3.217 E F1(shopt)2.977 E F0 5.477(.I)C 2.977(ft) --5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F(vironment) --.4 E(when)144 684 Q F1(bash)3.142 E F0 .642(starts up, each shell opti\ -on in the list will be enabled before reading an)3.142 F 3.141(ys)-.15 G -.641(tartup \214les.)-3.141 F(This v)144 696 Q(ariable is read-only)-.25 -E(.)-.65 E(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(9)190.955 E -0 Cg EP -%%Page: 10 10 +3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 +417.6 R F2 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) +2.727 F/F3 10/Times-Italic@0 SF(on)3.207 E F0(by)3.217 E F1(shopt)2.977 +E F0 5.476(.I)C 2.976(ft)-5.476 G .476(his v)-2.976 F .476 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 429.6 Q F1(bash) +3.141 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 +F(This v)144 441.6 Q(ariable is read-only)-.25 E(.)-.65 E F1 -.3(BA)108 +453.6 S(SHPID).3 E F0 .188(Expands to the process ID of the current)144 +465.6 R F1(bash)2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187 +(fers from)-.25 F F1($$)2.687 E F0 .187(under certain circum-)2.687 F +(stances, such as subshells that do not require)144 477.6 Q F1(bash)2.5 +E F0(to be re-initialized.)2.5 E F1 -.3(BA)108 489.6 S(SH_ALIASES).3 E +F0 1.195(An associati)144 501.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) +.15 F 1.195(ariable whose members correspond to the internal list of al\ +iases as main-)-.25 F .025(tained by the)144 513.6 R F1(alias)2.524 E F0 +-.2(bu)2.524 G 2.524(iltin. Elements).2 F .024 +(added to this array appear in the alias list; unsetting array ele-) +2.524 F(ments cause aliases to be remo)144 525.6 Q -.15(ve)-.15 G 2.5 +(df).15 G(rom the alias list.)-2.5 E F1 -.3(BA)108 537.6 S(SH_ARGC).3 E +F0 .934(An array v)144 549.6 R .934(ariable whose v)-.25 F .934 +(alues are the number of parameters in each frame of the current)-.25 F +F1(bash)3.435 E F0 -.15(exe)144 561.6 S .535(cution call stack.).15 F +.535(The number of parameters to the current subroutine \(shell functio\ +n or script)5.535 F -.15(exe)144 573.6 S .141(cuted with).15 F F1(.) +2.641 E F0(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa) +-2.641 G 2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 +(When a subroutine is e)5.142 F -.15(xe)-.15 G .142 +(cuted, the number of).15 F 2.631(parameters passed is pushed onto)144 +585.6 R F2 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 +2.63(The shell sets)7.13 F F2 -.27(BA)5.13 G(SH_ARGC).27 E F0 2.63 +(only when in)4.88 F -.15(ex)144 597.6 S(tended deb).15 E +(ugging mode \(see the description of the)-.2 E F1(extdeb)2.5 E(ug)-.2 E +F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E +(w\))-.25 E F1 -.3(BA)108 609.6 S(SH_ARGV).3 E F0 .979(An array v)144 +621.6 R .979(ariable containing all of the parameters in the current) +-.25 F F1(bash)3.48 E F0 -.15(exe)3.48 G .98(cution call stack.).15 F +(The)5.98 E .275(\214nal parameter of the last subroutine call is at th\ +e top of the stack; the \214rst parameter of the initial)144 633.6 R +1.424(call is at the bottom.)144 645.6 R 1.424(When a subroutine is e) +6.424 F -.15(xe)-.15 G 1.424 +(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 +657.6 S(SH_ARGV).27 E F4(.)A F0 2.197(The shell sets)6.697 F F2 -.27(BA) +4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F 2.197(xtended deb) +-.15 F 2.197(ugging mode \(see the)-.2 F(description of the)144 669.6 Q +F1(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2 +(bu)2.5 G(iltin belo).2 E(w\))-.25 E F1 -.3(BA)108 681.6 S(SH_CMDS).3 E +F0 .667(An associati)144 693.6 R .967 -.15(ve a)-.25 H .667(rray v).15 F +.668(ariable whose members correspond to the internal hash table of com\ +mands)-.25 F .147(as maintained by the)144 705.6 R F1(hash)2.647 E F0 +-.2(bu)2.646 G 2.646(iltin. Elements).2 F .146 +(added to this array appear in the hash table; unsetting)2.646 F +(array elements cause commands to be remo)144 717.6 Q -.15(ve)-.15 G 2.5 +(df).15 G(rom the hash table.)-2.5 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(10)190.95 E 0 Cg EP +%%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SHPID).3 E F0 .187 -(Expands to the process ID of the current)144 96 R F1(bash)2.687 E F0 -2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F F1($$) -2.688 E F0 .188(under certain circum-)2.688 F -(stances, such as subshells that do not require)144 108 Q F1(bash)2.5 E -F0(to be re-initialized.)2.5 E F1 -.3(BA)108 120 S(SH_ALIASES).3 E F0 -1.195(An associati)144 132 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F -1.195(ariable whose members correspond to the internal list of aliases \ -as main-)-.25 F .024(tained by the)144 144 R F1(alias)2.524 E F0 -.2(bu) -2.524 G 2.524(iltin. Elements).2 F .024 -(added to this array appear in the alias list; unsetting array ele-) -2.524 F(ments cause aliases to be remo)144 156 Q -.15(ve)-.15 G 2.5(df) -.15 G(rom the alias list.)-2.5 E F1 -.3(BA)108 168 S(SH_ARGC).3 E F0 -.935(An array v)144 180 R .935(ariable whose v)-.25 F .934 -(alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.434 E F0 -.15(exe)144 192 S .535(cution call stack.).15 F .535 -(The number of parameters to the current subroutine \(shell function or\ - script)5.535 F -.15(exe)144 204 S .142(cuted with).15 F F1(.)2.642 E F0 -(or)2.642 E F1(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)-2.642 G -2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 -(When a subroutine is e)5.141 F -.15(xe)-.15 G .141 -(cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 -216 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9 -/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.131 G -(SH_ARGC).27 E F0 2.631(only when in)4.881 F -.15(ex)144 228 S -(tended deb).15 E(ugging mode \(see the description of the)-.2 E F1 -(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2(bu) -2.5 G(iltin belo).2 E(w\))-.25 E F1 -.3(BA)108 240 S(SH_ARGV).3 E F0 .98 -(An array v)144 252 R .979 -(ariable containing all of the parameters in the current)-.25 F F1(bash) -3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F(The)5.979 E -.275(\214nal parameter of the last subroutine call is at the top of the\ - stack; the \214rst parameter of the initial)144 264 R 1.424 -(call is at the bottom.)144 276 R 1.424(When a subroutine is e)6.424 F --.15(xe)-.15 G 1.424(cuted, the parameters supplied are pushed onto).15 -F F2 -.27(BA)144 288 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets) -6.697 F F2 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F -2.197(xtended deb)-.15 F 2.197(ugging mode \(see the)-.2 F -(description of the)144 300 Q F1(extdeb)2.5 E(ug)-.2 E F0(option to the) -2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E(w\))-.25 E F1 -.3 -(BA)108 312 S(SH_CMDS).3 E F0 .668(An associati)144 324 R .968 -.15 -(ve a)-.25 H .668(rray v).15 F .668(ariable whose members correspond to\ - the internal hash table of commands)-.25 F .146(as maintained by the) -144 336 R F1(hash)2.646 E F0 -.2(bu)2.646 G 2.646(iltin. Elements).2 F -.146(added to this array appear in the hash table; unsetting)2.646 F -(array elements cause commands to be remo)144 348 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the hash table.)-2.5 E F1 -.3(BA)108 360 S(SH_COMMAND).3 E -F0 1.243(The command currently being e)144 372 R -.15(xe)-.15 G 1.243 -(cuted or about to be e).15 F -.15(xe)-.15 G 1.242 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F +-.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 96 R -.15(xe)-.15 G 1.243 +(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -384 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 -396 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 408 Q +108 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 +120 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 132 Q (gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F1 -.3(BA)108 420 S(SH_LINENO).3 E F0 .692 -(An array v)144 432 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .97(member of)144 444 R -F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o) --3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10 -/Times-Italic@0 SF($i)A F1(]})A F0 .969 -(is the line number in the source)3.469 F 14.671(\214le \()144 456 R F1 -(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 -E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G -17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 468 Q(ASH_LINENO[) --.3 E F4($i-1)A F1(]})A F0 .115 +(cation option.).2 E F1 -.3(BA)108 144 S(SH_LINENO).3 E F0 .693 +(An array v)144 156 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .969(member of)144 168 +R/F2 9/Times-Bold@0 SF(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469 +(si).1 G -1.9 -.4(nv o)-3.469 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E +(ASH_LINENO[)-.3 E/F3 10/Times-Italic@0 SF($i)A F1(]})A F0 .97 +(is the line number in the source)3.469 F 14.672(\214le \()144 180 R F1 +(${B)A(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 17.172(\)w)C(here)-17.172 +E F1(${FUNCN)17.172 E(AME[)-.2 E F3($i)A F1(]})A F0 -.1(wa)17.172 G +17.171(sc).1 G 14.671(alled \(or)-17.171 F F1(${B)144 192 Q(ASH_LINENO[) +-.3 E F3($i-1)A F1(]})A F0 .115 (if referenced within another shell function\).)2.615 F(Use)5.115 E F2 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -480 Q(.)-.55 E F1 -.3(BA)108 492 S(SH_REMA).3 E(TCH)-.95 E F0 .005 -(An array v)144 504 R .005(ariable whose members are assigned by the) --.25 F F1(=~)2.506 E F0 .006(binary operator to the)2.506 F F1([[)2.506 -E F0 .006(conditional com-)2.506 F 2.507(mand. The)144 516 R .007 -(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 -(he portion of the string matching the entire re)-2.507 F .006(gular e) --.15 F(xpression.)-.15 E .997(The element with inde)144 528 R(x)-.15 E -F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F -F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 540 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 552 S(SH_SOURCE).3 E F0 .126(An array v)144 564 R .125(ar\ +204 Q(.)-.55 E F1 -.3(BA)108 216 S(SH_REMA).3 E(TCH)-.95 E F0 .006 +(An array v)144 228 R .006(ariable whose members are assigned by the) +-.25 F F1(=~)2.506 E F0 .005(binary operator to the)2.506 F F1([[)2.505 +E F0 .005(conditional com-)2.505 F 2.506(mand. The)144 240 R .007 +(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .007(gular e) +-.15 F(xpression.)-.15 E .998(The element with inde)144 252 R(x)-.15 E +F3(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F +F3(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 264 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 276 S(SH_SOURCE).3 E F0 .125(An array v)144 288 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .78(names in the)144 576 R F2(FUNCN)3.28 E(AME) +shell function)-.25 F .781(names in the)144 300 R F2(FUNCN)3.28 E(AME) -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F1(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F1(]})A -F0(is)3.281 E(de\214ned in the \214le)144 588 Q F1(${B)2.5 E -(ASH_SOURCE[)-.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E -(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 600 S -(SH_SUBSHELL).3 E F0 .402 -(Incremented by one each time a subshell or subshell en)144 612 R .401 -(vironment is spa)-.4 F 2.901(wned. The)-.15 F .401(initial v)2.901 F -.401(alue is)-.25 F(0.)144 624 Q F1 -.3(BA)108 636 S(SH_VERSINFO).3 E F0 -2.644(Ar)144 648 S .144(eadonly array v)-2.644 F .144 +(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F3($i)A F1(]})A +F0(is)3.28 E(de\214ned in the \214le)144 312 Q F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F3($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 324 S(SH_SUBSHELL).3 E F0 +.296(Incremented by one within each subshell or subshell en)144 336 R +.296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E(in that en)144 348 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 360 S(SH_VERSINFO).3 E F0 2.645 +(Ar)144 372 S .145(eadonly array v)-2.645 F .144 (ariable whose members hold v)-.25 F .144 -(ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145 -(.T)C(he)-5.145 E -.25(va)144 660 S +(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 +(.T)C(he)-5.144 E -.25(va)144 384 S (lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 678 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E -(ersion number \(the)-.15 E F4 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 -(BA)144 690 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E -(ersion number \(the)-.15 E F4(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) -144 702 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)24.74 E -.15 -(ve)-.25 G(l.).15 E F1 -.3(BA)144 714 S(SH_VERSINFO[).3 E F0(3)A F1(])A -F0(The b)24.74 E(uild v)-.2 E(ersion.)-.15 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(10)185.955 E 0 Cg EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.3(BA)144 84 S(SH_VERSINFO[).3 E F0(4)A F1 -(])A F0(The release status \(e.g.,)24.74 E/F2 10/Times-Italic@0 SF -(beta1)2.5 E F0(\).)A F1 -.3(BA)144 96 S(SH_VERSINFO[).3 E F0(5)A F1(])A -F0(The v)24.74 E(alue of)-.25 E/F3 9/Times-Bold@0 SF(MA)2.5 E(CHTYPE) --.495 E/F4 9/Times-Roman@0 SF(.)A F1 -.3(BA)108 108 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 120 Q +(BA)144 402 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E +(ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 +(BA)144 414 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E +(ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) +144 426 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)24.74 E -.15 +(ve)-.25 G(l.).15 E F1 -.3(BA)144 438 S(SH_VERSINFO[).3 E F0(3)A F1(])A +F0(The b)24.74 E(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 450 S +(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)24.74 E +F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 462 S(SH_VERSINFO[).3 E F0(5)A F1 +(])A F0(The v)24.74 E(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 +/Times-Roman@0 SF(.)A F1 -.3(BA)108 474 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 486 Q (ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -132 Q(ORD)-.1 E F0 .397(An inde)144 144 R 2.897(xi)-.15 G(nto)-2.897 E +498 Q(ORD)-.1 E F0 .396(An inde)144 510 R 2.896(xi)-.15 G(nto)-2.896 E F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 -(ord containing the current cursor position.)-.1 F .396(This v)5.396 F -(ari-)-.25 E 1.18(able is a)144 156 R -.25(va)-.2 G 1.181 +(ord containing the current cursor position.)-.1 F .397(This v)5.397 F +(ari-)-.25 E 1.181(able is a)144 522 R -.25(va)-.2 G 1.181 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 -(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F -1.181(acilities \(see)-.1 F F1(Pr)144 168 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 180 Q F0(The k)144 192 Q .3 +(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F +1.18(acilities \(see)-.1 F F1(Pr)144 534 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 546 Q F0(The k)144 558 Q .3 -.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 -.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F1(COMP_LINE)108 204 Q F0 1.208 -(The current command line.)144 216 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F1(COMP_LINE)108 570 Q F0 1.207 +(The current command line.)144 582 R 1.208(This v)6.208 F 1.208 (ariable is a)-.25 F -.25(va)-.2 G 1.208 -(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F -2.848(mands in)144 228 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F +2.849(mands in)144 594 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 (yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 -(acilities \(see)-.1 F F1(Pr)5.349 E 2.849(ogrammable Completion)-.18 F -F0(belo)144 240 Q(w\).)-.25 E F1(COMP_POINT)108 252 Q F0 .667(The inde) -144 264 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666 -(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F +F0(belo)144 606 Q(w\).)-.25 E F1(COMP_POINT)108 618 Q F0 .666(The inde) +144 630 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 +(he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166 (ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 -F .666(If the)5.666 F .534 +F .667(If the)5.667 F .535 (current cursor position is at the end of the current command, the v)144 -276 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 288 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006 -(ariable is a)-.25 F -.25(va)-.2 G 2.005 -(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15 -F(in)144 300 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +642 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 654 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 +(ariable is a)-.25 F -.25(va)-.2 G 2.006 +(ilable only in shell functions and e).25 F 2.006(xternal commands)-.15 +F(in)144 666 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -312 Q F0 .041(Set to an inte)144 324 R .041(ger v)-.15 F .041(alue corr\ +678 Q F0 .042(Set to an inte)144 690 R .042(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .338(function to be called:)144 336 R F2 -.5(TA)2.837 G(B).5 E F0 -2.837(,f)C .337(or normal completion,)-2.837 F F2(?)2.837 E F0 2.837(,f) -C .337(or listing completions after successi)-2.837 F .637 -.15(ve t) --.25 H(abs,).15 E F2(!)144 348 Q F0 4.091(,f)C 1.591 -(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) --4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092 +-.25 F .337(function to be called:)144 702 R F3 -.5(TA)2.837 G(B).5 E F0 +2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f) +C .337(or listing completions after successi)-2.837 F .638 -.15(ve t) +-.25 H(abs,).15 E F3(!)144 714 Q F0 4.092(,f)C 1.592 +(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) +-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F3(@)4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092 -F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 360 R F2(%)4.053 E +F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 726 R F3(%)4.052 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 -(ilable only in shell functions and).25 F -.15(ex)144 372 S 2.928 -(ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 -(yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144 -384 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 396 Q(ORDBREAKS)-.1 E F0 -1.336(The set of characters that the)144 408 R F1 -.18(re)3.836 G -(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 -(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) -144 420 R F3(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 -(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G -3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G -(ubse-)-3.126 E(quently reset.)144 432 Q F1(COMP_W)108 444 Q(ORDS)-.1 E -F0 .654(An array v)144 456 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E -F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) --.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 468 R +(ilable only in shell functions and).25 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(11)190.95 E 0 Cg EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E -.15(ex)144 84 S 2.929(ternal commands in).15 F -.2(vo)-.4 G -.1 +(ke).2 G 5.429(db).1 G 5.429(yt)-5.429 G 2.929 +(he programmable completion f)-5.429 F 2.929(acilities \(see)-.1 F/F1 10 +/Times-Bold@0 SF(Pr)5.428 E(ogrammable)-.18 E(Completion)144 96 Q F0 +(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 108 Q(ORDBREAKS)-.1 E F0 1.335 +(The set of characters that the)144 120 R F1 -.18(re)3.836 G(adline).18 +E F0 1.336(library treats as w)3.836 F 1.336 +(ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If) +144 132 R/F2 9/Times-Bold@0 SF(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 +(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G +3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G +(ubse-)-3.125 E(quently reset.)144 144 Q F1(COMP_W)108 156 Q(ORDS)-.1 E +F0 .653(An array v)144 168 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E +F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w) +-.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 180 R 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332 -G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3 -(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 -480 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832 -(ariable is a)-.25 F -.25(va)-.2 G .831 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331 -(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f) -144 492 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 504 Q(OC)-.3 E F0 .168(An array v) -144 516 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E +G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F2 +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 +192 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 +(ariable is a)-.25 F -.25(va)-.2 G .832 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332 +(db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f) +144 204 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 216 Q(OC)-.3 E F0 .169(An array v) +144 228 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 528 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 540 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 552 R 2.26(ariable \(see)-.25 F F1 +-.25 F(to an unnamed coprocess \(see)144 240 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 252 Q -.55(AC) +-.9 G(K).55 E F0 2.26(An array v)144 264 R 2.26(ariable \(see)-.25 F F1 (Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.094(Directories appear in the stack in the order the)144 564 R 3.594 -(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu) -3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432 -(members of this array v)144 576 R 1.432 +1.095(Directories appear in the stack in the order the)144 276 R 3.594 +(ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu) +3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431 +(members of this array v)144 288 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.431(ut the)-.2 F F1(pushd)144 588 Q F0(and)2.746 E F1(popd)2.746 E +F 1.432(ut the)-.2 F F1(pushd)144 300 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .351(will not change the current directory)144 600 R -5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 -(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 -(ni).15 G(f)-2.85 E(it is subsequently reset.)144 612 Q F1(EUID)108 624 -Q F0 1.103(Expands to the ef)11 F(fecti)-.25 E 1.403 -.15(ve u)-.25 H +F(ariable)-.25 E .35(will not change the current directory)144 312 R +5.35(.I)-.65 G(f)-5.35 E F2(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 +(ni).15 G(f)-2.851 E(it is subsequently reset.)144 324 Q F1(EUID)108 336 +Q F0 1.104(Expands to the ef)11 F(fecti)-.25 E 1.403 -.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 -(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 -(ariable is)-.25 F(readonly)144 636 Q(.)-.65 E F1(FUNCN)108 648 Q(AME) --.2 E F0 .479(An array v)144 660 R .479 +(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 +(ariable is)-.25 F(readonly)144 348 Q(.)-.65 E F1(FUNCN)108 360 Q(AME) +-.2 E F0 .478(An array v)144 372 R .479 (ariable containing the names of all shell functions currently in the e) --.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 -(The element with inde)144 672 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 -(he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15 -G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385 -(element \(the one with the highest inde)144 684 R .384(x\) is)-.15 F/F5 -10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384 -(ariable e)-.25 F .384(xists only when a shell func-)-.15 F .034 -(tion is e)144 696 R -.15(xe)-.15 G 2.534(cuting. Assignments).15 F(to) -2.535 E F3(FUNCN)2.535 E(AME)-.18 E F0(ha)2.285 E .335 -.15(ve n)-.2 H +-.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 +(The element with inde)144 384 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 +(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 +G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 +(element \(the one with the highest inde)144 396 R .384(x\) is)-.15 F/F3 +10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 +(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .035 +(tion is e)144 408 R -.15(xe)-.15 G 2.535(cuting. Assignments).15 F(to) +2.535 E F2(FUNCN)2.535 E(AME)-.18 E F0(ha)2.285 E .335 -.15(ve n)-.2 H 2.535(oe).15 G -.25(ff)-2.535 G .035(ect and return an error status.).25 -F(If)5.035 E F3(FUNC-)2.535 E -.18(NA)144 708 S(ME).18 E F0 +F(If)5.034 E F2(FUNC-)2.534 E -.18(NA)144 420 S(ME).18 E F0 (is unset, it loses its special properties, e)2.25 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E 3.176(This v)144 726 R 3.176(ariable can be used with)-.25 F F1 --.3(BA)5.675 G(SH_LINENO).3 E F0(and)5.675 E F1 -.3(BA)5.675 G -(SH_SOURCE).3 E F0 8.175(.E)C 3.175(ach element of)-8.175 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(11)185.955 E 0 Cg EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(FUNCN)144 84 Q(AME)-.2 E F0 .11 -(has corresponding elements in)2.61 F F1 -.3(BA)2.61 G(SH_LINENO).3 E F0 -(and)2.61 E F1 -.3(BA)2.61 G(SH_SOURCE).3 E F0 .11(to describe)2.61 F -10.057(the call stack.)144 96 R -.15(Fo)15.057 G 12.557(ri).15 G -(nstance,)-12.557 E F1(${FUNCN)12.557 E(AME[)-.2 E/F2 10/Times-Italic@0 -SF($i)A F1(]})A F0 -.1(wa)12.557 G 12.557(sc).1 G 10.057 -(alled from the \214le)-12.557 F F1(${B)144 108 Q(ASH_SOURCE[)-.3 E F2 -($i+1)A F1(]})A F0 1.091(at line number)3.591 F F1(${B)3.591 E -(ASH_LINENO[)-.3 E F2($i)A F1(]})A F0 6.091(.T)C(he)-6.091 E F1(caller) -3.591 E F0 -.2(bu)3.592 G 1.092(iltin displays).2 F -(the current call stack using this information.)144 120 Q F1(GR)108 132 -Q(OUPS)-.3 E F0 1.229(An array v)144 144 R 1.228(ariable containing the\ - list of groups of which the current user is a member)-.25 F 6.228(.A) --.55 G(ssign-)-6.228 E .596(ments to)144 156 R/F3 9/Times-Bold@0 SF(GR) -3.096 E(OUPS)-.27 E F0(ha)2.847 E .897 -.15(ve n)-.2 H 3.097(oe).15 G +-2.5 E .11(This v)144 438 R .111(ariable can be used with)-.25 F F1 -.3 +(BA)2.611 G(SH_LINENO).3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 +E F0 5.111(.E)C .111(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 +450 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA) +3.904 G(SH_LINENO).3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E +F0 1.404(to describe the)3.904 F .012(call stack.)144 462 R -.15(Fo) +5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E +/F4 10/Times-Italic@0 SF($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G +.012(alled from the \214le)-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F4 +($i+1)A F1(]})A F0 1.184(at line number)144 474 R F1(${B)3.684 E +(ASH_LINENO[)-.3 E F4($i)A F1(]})A F0 6.184(.T)C(he)-6.184 E F1(caller) +3.683 E F0 -.2(bu)3.683 G 1.183 +(iltin displays the current call stack using).2 F(this information.)144 +486 Q F1(GR)108 498 Q(OUPS)-.3 E F0 1.228(An array v)144 510 R 1.228(ar\ +iable containing the list of groups of which the current user is a memb\ +er)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E .597(ments to)144 522 R F2(GR) +3.097 E(OUPS)-.27 E F0(ha)2.847 E .897 -.15(ve n)-.2 H 3.097(oe).15 G -.25(ff)-3.097 G .597(ect and return an error status.).25 F(If)5.597 E -F3(GR)3.097 E(OUPS)-.27 E F0 .597(is unset, it loses its spe-)2.847 F -(cial properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G -2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(HISTCMD)108 180 -Q F0 .356(The history number)144 192 R 2.856(,o)-.4 G 2.856(ri)-2.856 G -(nde)-2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 -(he history list, of the current command.)-2.856 F(If)5.356 E F3 -(HISTCMD)2.855 E F0 .355(is unset, it)2.605 F -(loses its special properties, e)144 204 Q -.15(ve)-.25 G 2.5(ni).15 G +F2(GR)3.097 E(OUPS)-.27 E F0 .597(is unset, it loses its spe-)2.847 F +(cial properties, e)144 534 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G +2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(HISTCMD)108 546 +Q F0 .355(The history number)144 558 R 2.855(,o)-.4 G 2.855(ri)-2.855 G +(nde)-2.855 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 +(he history list, of the current command.)-2.856 F(If)5.356 E F2 +(HISTCMD)2.856 E F0 .356(is unset, it)2.606 F +(loses its special properties, e)144 570 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -(HOSTN)108 216 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 228 Q F1 -(HOSTTYPE)108 240 Q F0 .222(Automatically set to a string that uniquely\ - describes the type of machine on which)144 252 R F1(bash)2.723 E F0 -.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 264 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 276 Q F0 1.408(Each\ +(HOSTN)108 582 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 594 Q F1 +(HOSTTYPE)108 606 Q F0 .223(Automatically set to a string that uniquely\ + describes the type of machine on which)144 618 R F1(bash)2.722 E F0 +.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 630 R(def) +2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 642 Q F0 1.408(Each\ time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 288 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 300 R .079 -(When not in a script or)5.078 F .307(function, the v)144 312 R .307 -(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E -F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F -(special properties, e)144 324 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 336 Q +ber representing the)144 654 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 666 R .078 +(When not in a script or)5.078 F .306(function, the v)144 678 R .306 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.307 E +F2(LINENO)2.807 E F0 .307(is unset, it loses its)2.557 F +(special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 702 Q (CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ -es the system type on which)144 348 R F1(bash)3.398 E F0 .899(is e)3.398 -F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 360 Q F2 +es the system type on which)144 714 R F1(bash)3.398 E F0 .898(is e)3.398 +F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 726 Q F4 (cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E -(ault is system-dependent.)-.1 E F1(MAPFILE)108 372 Q F0 .294 -(An array v)144 384 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 -(belo)2.794 E .294(w\) created to hold the te)-.25 F .293 -(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 -(iltin when no).2 F -.25(va)144 396 S(riable name is supplied.).25 E F1 -(OLDPWD)108 408 Q F0(The pre)144 420 Q(vious w)-.25 E -(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(OPT)108 432 Q(ARG)-.9 E F0 1.626(The v)144 444 R 1.627 -(alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F -F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F3 -(SHELL)4.127 E -.09(BU)144 456 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OPTIND)108 468 Q F0 1.652(The inde)144 480 R 4.152 -(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F -1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) -4.151 G 1.651(iltin command \(see).2 F F3(SHELL)4.151 E -.09(BU)144 492 -S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 -504 Q F0 .329(Automatically set to a string that describes the operatin\ -g system on which)144 516 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) --.15 G 2.83(cuting. The).15 F(def)144 528 Q(ault is system-dependent.) --.1 E F1(PIPEST)108 540 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 -552 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 -(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 -(alues from the processes in)-.25 F(the most-recently-e)144 564 Q -.15 -(xe)-.15 G(cuted fore).15 E +(ault is system-dependent.)-.1 E(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(12)190.95 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(MAPFILE)108 84 Q F0 .293(An array v)144 96 +R .293(ariable \(see)-.25 F F1(Arrays)2.793 E F0(belo)2.793 E .293 +(w\) created to hold the te)-.25 F .294(xt read by the)-.15 F F1 +(map\214le)2.794 E F0 -.2(bu)2.794 G .294(iltin when no).2 F -.25(va)144 +108 S(riable name is supplied.).25 E F1(OLDPWD)108 120 Q F0(The pre)144 +132 Q(vious w)-.25 E(orking directory as set by the)-.1 E F1(cd)2.5 E F0 +(command.)2.5 E F1(OPT)108 144 Q(ARG)-.9 E F0 1.627(The v)144 156 R +1.627(alue of the last option ar)-.25 F 1.627(gument processed by the) +-.18 F F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.626(iltin command \(see).2 +F/F2 9/Times-Bold@0 SF(SHELL)4.126 E -.09(BU)144 168 S(IL).09 E +(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 180 Q F0 +1.651(The inde)144 192 R 4.151(xo)-.15 G 4.151(ft)-4.151 G 1.651(he ne) +-4.151 F 1.651(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F +F1(getopts)4.152 E F0 -.2(bu)4.152 G 1.652(iltin command \(see).2 F F2 +(SHELL)4.152 E -.09(BU)144 204 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OSTYPE)108 216 Q F0 .329(Automatically set to a s\ +tring that describes the operating system on which)144 228 R F1(bash) +2.829 E F0 .329(is e)2.829 F -.15(xe)-.15 G 2.829(cuting. The).15 F(def) +144 240 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 252 Q -.95(AT) +-.9 G(US).95 E F0 .61(An array v)144 264 R .61(ariable \(see)-.25 F F1 +(Arrays)3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61 +(xit status v)-.15 F .61(alues from the processes in)-.25 F +(the most-recently-e)144 276 Q -.15(xe)-.15 G(cuted fore).15 E (ground pipeline \(which may contain only a single command\).)-.15 E F1 -(PPID)108 576 Q F0(The process ID of the shell')12.67 E 2.5(sp)-.55 G +(PPID)108 288 Q F0(The process ID of the shell')12.67 E 2.5(sp)-.55 G 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E -F1(PWD)108 588 Q F0(The current w)12.67 E +F1(PWD)108 300 Q F0(The current w)12.67 E (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 600 Q F0 .565 -(Each time this parameter is referenced, a random inte)144 612 R .566 -(ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 -(sequence of random numbers may be initialized by assigning a v)144 624 -R .01(alue to)-.25 F F3(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0(If) -4.51 E F3(RANDOM)2.51 E F0(is)2.26 E -(unset, it loses its special properties, e)144 636 Q -.15(ve)-.25 G 2.5 +(RANDOM)108 312 Q F0 .566 +(Each time this parameter is referenced, a random inte)144 324 R .565 +(ger between 0 and 32767 is generated.)-.15 F(The)5.565 E .01 +(sequence of random numbers may be initialized by assigning a v)144 336 +R .01(alue to)-.25 F F2(RANDOM)2.51 E/F3 9/Times-Roman@0 SF(.)A F0(If) +4.51 E F2(RANDOM)2.51 E F0(is)2.26 E +(unset, it loses its special properties, e)144 348 Q -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1(READLINE_LINE)108 648 Q F0 1.546(The contents of the)144 660 R +-2.5 E F1(READLINE_LINE)108 360 Q F0 1.547(The contents of the)144 372 R F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer) --.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F5 10/Courier@0 SF -1.547(bind -x)4.047 F F0(\(see)4.047 E F3 1.547(SHELL B)4.047 F(UIL)-.09 -E 1.547(TIN COM-)-.828 F(MANDS)144 672 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 684 Q F0 .314 -(The position of the insertion point in the)144 696 R F1 -.18(re)2.813 G +-.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F4 10/Courier@0 SF +1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546(SHELL B)4.047 F(UIL)-.09 +E 1.546(TIN COM-)-.828 F(MANDS)144 384 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 396 Q F0 .313 +(The position of the insertion point in the)144 408 R F1 -.18(re)2.813 G (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F5 .313(bind -x)2.813 F F0(\(see)2.813 E F3 -(SHELL)2.813 E -.09(BU)144 708 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(12) -185.955 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(REPL)108 84 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 96 Q F1 -.18(re)2.5 G(ad).18 E -F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.)-.18 -E F1(SECONDS)108 108 Q F0 .795(Each time this parameter is referenced, \ -the number of seconds since shell in)144 120 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .713(If a v)144 132 R .712 -(alue is assigned to)-.25 F/F2 9/Times-Bold@0 SF(SECONDS)3.212 E/F3 9 -/Times-Roman@0 SF(,)A F0 .712(the v)2.962 F .712 -(alue returned upon subsequent references is the number)-.25 F .407 -(of seconds since the assignment plus the v)144 144 R .408 -(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408 -(is unset, it loses its special)2.658 F(properties, e)144 156 Q -.15(ve) +.313(or use with)-2.813 F F4 .314(bind -x)2.814 F F0(\(see)2.814 E F2 +(SHELL)2.814 E -.09(BU)144 420 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(REPL)108 432 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 444 Q F1 -.18(re)2.5 G(ad).18 +E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.) +-.18 E F1(SECONDS)108 456 Q F0 .795(Each time this parameter is referen\ +ced, the number of seconds since shell in)144 468 R -.2(vo)-.4 G .795 +(cation is returned.).2 F .712(If a v)144 480 R .712 +(alue is assigned to)-.25 F F2(SECONDS)3.212 E F3(,)A F0 .712(the v) +2.962 F .712(alue returned upon subsequent references is the number)-.25 +F .408(of seconds since the assignment plus the v)144 492 R .408 +(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .407 +(is unset, it loses its special)2.658 F(properties, e)144 504 Q -.15(ve) -.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 168 Q F0 3.263(Ac)144 180 S -.763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 516 Q F0 3.262(Ac)144 528 S +.763(olon-separated list of enabled shell options.)-3.262 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 192 Q F0 1.173(option to the)3.673 F -F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174 -(SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E -3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 204 R F2 -(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F4 10 +(gument for the)-.18 F F1144 540 Q F0 1.174(option to the)3.674 F +F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173 +(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E +3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 552 R F2 +(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F/F5 10 /Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0 -5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019 -(ariable is in the en)-.25 F(vironment)-.4 E(when)144 216 Q F1(bash) -3.141 E F0 .642(starts up, each shell option in the list will be enable\ -d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 -F(This v)144 228 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 240 Q -(VL)-.92 E F0(Incremented by one each time an instance of)144 252 Q F1 -(bash)2.5 E F0(is started.)2.5 E F1(UID)108 264 Q F0 +5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .02 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 564 Q F1(bash) +3.142 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.142 F 3.141(ys)-.15 G .641(tartup \214les.)-3.141 +F(This v)144 576 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 588 Q +(VL)-.92 E F0(Incremented by one each time an instance of)144 600 Q F1 +(bash)2.5 E F0(is started.)2.5 E F1(UID)108 612 Q F0 (Expands to the user ID of the current user)17.67 E 2.5(,i)-.4 G (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .994(The follo)108 280.8 R .994(wing v)-.25 F .994 +E(.)-.65 E .993(The follo)108 628.8 R .993(wing v)-.25 F .994 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 -(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 -(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 292.8 -Q -.65(w.)-.25 G F1 -.3(BA)108 309.6 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 321.6 R F1(bash)3.005 E F0 .505(is e) -3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506 -(alue is interpreted as a \214lename)-.25 F .355 -(containing commands to initialize the shell, as in)144 333.6 R F4 -(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354(he v)-5.354 F .354 -(alue of)-.25 F F2 -.27(BA)2.854 G(SH_ENV).27 E F0 .354(is subjected) -2.604 F .525(to parameter e)144 345.6 R .525 -(xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214le name.)144 357.6 Q -F2 -.666(PA)5 G(TH)-.189 E F0 -(is not used to search for the resultant \214le name.)2.25 E F1 -.3(BA) -108 369.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 381.6 -R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 -F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F -(-)-.2 E 3.114(ated when)144 393.6 R/F5 10/Courier@0 SF 3.114(set -x) +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 640.8 +Q -.65(w.)-.25 G F1 -.3(BA)108 657.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 +1.193(The v)144 669.6 R 1.193(alue is used to set the shell')-.25 F +3.693(sc)-.55 G 1.192(ompatibility le)-3.693 F -.15(ve)-.25 G 3.692 +(l. See).15 F 1.192(the description of the)3.692 F F1(shopt)3.692 E F0 +-.2(bu)3.692 G(iltin).2 E(belo)144 681.6 Q 2.871(wu)-.25 G(nder)-2.871 E +F1 .371(SHELL B)2.871 F(UIL)-.1 E .371(TIN COMMANDS)-.92 F F0 .372 +(for a description of the v)2.872 F .372(arious compatibility le)-.25 F +(v-)-.25 E .361(els and their ef)144 693.6 R 2.861(fects. The)-.25 F +-.25(va)2.861 G .361 +(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .36 +(ger \(e.g., 42\) corre-)-.15 F 1.75 +(sponding to the desired compatibility le)144 705.6 R -.15(ve)-.25 G +4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.751 +(is unset or set to the empty)5.201 F .578(string, the compatibility le) +144 717.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 +(et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 +(ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) +4.028 E .248(set to a v)144 729.6 R .248(alue that is not one of the v) +-.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .249 +(ls, the shell prints an error message and).15 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(13)190.95 E 0 Cg EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E 1.12(sets the compatibility le)144 84 R -.15(ve)-.25 G 3.62(lt) +.15 G 3.619(ot)-3.62 G 1.119(he def)-3.619 F 1.119 +(ault for the current v)-.1 F 3.619(ersion. The)-.15 F -.25(va)3.619 G +1.119(lid compatibility le).25 F -.15(ve)-.25 G(ls).15 E .575 +(correspond to the compatibility options accepted by the)144 96 R/F1 10 +/Times-Bold@0 SF(shopt)3.075 E F0 -.2(bu)3.076 G .576 +(iltin described belo).2 F 3.076(w\()-.25 G .576(for e)-3.076 F(xam-) +-.15 E(ple,)144 108 Q F1(compat42)2.5 E F0(means that 4.2 and 42 are v) +2.5 E(alid v)-.25 E 2.5(alues\). The)-.25 F(current v)2.5 E +(ersion is also a v)-.15 E(alid v)-.25 E(alue.)-.25 E F1 -.3(BA)108 120 +S(SH_ENV).3 E F0 .506(If this parameter is set when)144 132 R F1(bash) +3.006 E F0 .506(is e)3.006 F -.15(xe)-.15 G .505 +(cuting a shell script, its v).15 F .505 +(alue is interpreted as a \214lename)-.25 F .354 +(containing commands to initialize the shell, as in)144 144 R/F2 10 +/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355 +(he v)-5.355 F .355(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.855 G +(SH_ENV).27 E F0 .355(is subjected)2.605 F .525(to parameter e)144 156 R +.525(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214lename.)144 168 Q F3 +-.666(PA)5 G(TH)-.189 E F0 +(is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) +108 180 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 192 R +.48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F +(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981 +F(-)-.2 E 3.114(ated when)144 204 R/F4 10/Courier@0 SF 3.114(set -x) 5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) --.55 G 3.114(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144 -405.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) -2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638 -G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ -empty string causes the trace output to be sent to the standard error) -144 417.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA) -144 429.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ - \214le descriptor\) and then unsetting it will result in the)2.991 F -(standard error being closed.)144 441.6 Q F1(CDP)108 453.6 Q -.95(AT) --.74 G(H).95 E F0 1.247(The search path for the)144 465.6 R F1(cd)3.747 -E F0 3.747(command. This)3.747 F 1.248 -(is a colon-separated list of directories in which the)3.747 F 3.796 -(shell looks for destination directories speci\214ed by the)144 477.6 R -F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 -(alue is)-.25 F F5(".:~:/usr")144 489.6 Q F0(.)A F1(COLUMNS)108 501.6 Q -F0 .828(Used by the)144 513.6 R F1(select)3.328 E F0 .829(compound comm\ -and to determine the terminal width when printing selection)3.328 F 2.5 -(lists. Automatically)144 525.6 R(set upon receipt of a)2.5 E F2 -(SIGWINCH)2.5 E F3(.)A F1(COMPREPL)108 537.6 Q(Y)-.92 E F0 .848 -(An array v)144 549.6 R .848(ariable from which)-.25 F F1(bash)3.348 E -F0 .848(reads the possible completions generated by a shell function) -3.348 F(in)144 561.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 -G(he programmable completion f)-2.5 E(acility \(see)-.1 E F1(Pr)2.5 E -(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(EMA)108 573.6 -Q(CS)-.55 E F0(If)144 585.6 Q F1(bash)2.535 E F0 .035(\214nds this v) -2.535 F .035(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F5(t)2.536 E -F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F -(shell is running in an Emacs shell b)144 597.6 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 609.6 Q F0(Similar to) -14.89 E F2 -.27(BA)2.5 G(SH_ENV).27 E F3(;)A F0 +-.55 G 3.114(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 +216 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)2.388 +F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 G +(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\ +mpty string causes the trace output to be sent to the standard error)144 +228 R 7.53(.N)-.55 G 2.53(ote that setting)-7.53 F F3 -.27(BA)144 240 S +(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \214le des\ +criptor\) and then unsetting it will result in the)2.99 F +(standard error being closed.)144 252 Q F1(CDP)108 264 Q -.95(AT)-.74 G +(H).95 E F0 1.248(The search path for the)144 276 R F1(cd)3.748 E F0 +3.748(command. This)3.748 F 1.247 +(is a colon-separated list of directories in which the)3.748 F 3.795 +(shell looks for destination directories speci\214ed by the)144 288 R F1 +(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796 +(alue is)-.25 F F4(".:~:/usr")144 300 Q F0(.)A F1(CHILD_MAX)108 312 Q F0 +.997(Set the number of e)144 324 R .997(xited child status v)-.15 F .997 +(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 +(ash will not allo)-5.997 F 3.497(wt)-.25 G(his)-3.497 E -.25(va)144 336 +S 1.077(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 +(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.078 +(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 348 Q +2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E +F1(COLUMNS)108 360 Q F0 .829(Used by the)144 372 R F1(select)3.329 E F0 +.828(compound command to determine the terminal width when printing sel\ +ection)3.329 F 4.506(lists. Automatically)144 384 R 2.006(set if the) +4.506 F F1(checkwinsize)4.506 E F0 2.007 +(option is enabled or in an interacti)4.506 F 2.307 -.15(ve s)-.25 H +2.007(hell upon).15 F(receipt of a)144 396 Q F3(SIGWINCH)2.5 E/F5 9 +/Times-Roman@0 SF(.)A F1(COMPREPL)108 408 Q(Y)-.92 E F0 .848(An array v) +144 420 R .848(ariable from which)-.25 F F1(bash)3.348 E F0 .848 +(reads the possible completions generated by a shell function)3.348 F +(in)144 432 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G +.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1 +(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785 +(w\). Each)-.25 F(array element contains one possible completion.)144 +444 Q F1(EMA)108 456 Q(CS)-.55 E F0(If)144 468 Q F1(bash)2.536 E F0 .036 +(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.535 E +F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F +(shell is running in an Emacs shell b)144 480 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F1(ENV)108 492 Q F0(Similar to) +14.89 E F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0 (used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(FCEDIT)108 621.6 Q F0(The def)144 -633.6 Q(ault editor for the)-.1 E F1(fc)2.5 E F0 -.2(bu)2.5 G -(iltin command.).2 E F1(FIGNORE)108 645.6 Q F0 2.599(Ac)144 657.6 S .098 -(olon-separated list of suf)-2.599 F<8c78>-.25 E .098 -(es to ignore when performing \214lename completion \(see)-.15 F F2 -(READLINE)2.598 E F0(belo)144 669.6 Q 2.704(w\). A)-.25 F .204 -(\214lename whose suf)2.704 F .205(\214x matches one of the entries in) --.25 F F2(FIGNORE)2.705 E F0 .205(is e)2.455 F .205 -(xcluded from the list)-.15 F(of matched \214lenames.)144 681.6 Q 2.5 -(As)5 G(ample v)-2.5 E(alue is)-.25 E F5(".o:~")2.5 E F0(.)A F1 -(FUNCNEST)108 693.6 Q F0 1.78(If set to a numeric v)144 705.6 R 1.78 +2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(FCEDIT)108 504 Q F0(The def)144 516 Q +(ault editor for the)-.1 E F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 +E F1(FIGNORE)108 528 Q F0 2.598(Ac)144 540 S .098 +(olon-separated list of suf)-2.598 F<8c78>-.25 E .098 +(es to ignore when performing \214lename completion \(see)-.15 F F3 +(READLINE)2.599 E F0(belo)144 552 Q 2.705(w\). A)-.25 F .205 +(\214lename whose suf)2.705 F .205(\214x matches one of the entries in) +-.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .204 +(xcluded from the list)-.15 F(of matched \214lenames.)144 564 Q 2.5(As)5 +G(ample v)-2.5 E(alue is)-.25 E F4(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 +576 Q F0 1.78(If set to a numeric v)144 588 R 1.78 (alue greater than 0, de\214nes a maximum function nesting le)-.25 F --.15(ve)-.25 G 4.28(l. Function).15 F(in)144 717.6 Q -.2(vo)-.4 G +-.15(ve)-.25 G 4.28(l. Function).15 F(in)144 600 Q -.2(vo)-.4 G (cations that e).2 E(xceed this nesting le)-.15 E -.15(ve)-.25 G 2.5(lw) -.15 G(ill cause the current command to abort.)-2.5 E(GNU Bash-4.2)72 768 -Q(2010 December 28)135.965 E(13)185.955 E 0 Cg EP -%%Page: 14 14 +.15 G(ill cause the current command to abort.)-2.5 E F1(GLOBIGNORE)108 +612 Q F0 3.118(Ac)144 624 S .618(olon-separated list of patterns de\214\ +ning the set of \214lenames to be ignored by pathname e)-3.118 F(xpan-) +-.15 E 3.131(sion. If)144 636 R 3.132<618c>3.131 G .632 +(lename matched by a pathname e)-3.132 F .632 +(xpansion pattern also matches one of the patterns in)-.15 F F3 +(GLOBIGNORE)144 648 Q F5(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df) +.15 G(rom the list of matches.)-2.5 E F1(HISTCONTR)108 660 Q(OL)-.3 E F0 +2.654(Ac)144 672 S .153(olon-separated list of v)-2.654 F .153 +(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653 +F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.) +-2.653 F .153(If the list)5.153 F .49(of v)144 684 R .49(alues includes) +-.25 F F2(ignor)2.99 E(espace)-.37 E F0 2.99(,l).18 G .49(ines which be) +-2.99 F .491(gin with a)-.15 F F1(space)2.991 E F0 .491 +(character are not sa)2.991 F -.15(ve)-.2 G 2.991(di).15 G 2.991(nt) +-2.991 G .491(he his-)-2.991 F .558(tory list.)144 696 R 3.058(Av)5.558 +G .558(alue of)-3.308 F F2(ignor)3.068 E(edups)-.37 E F0 .558 +(causes lines matching the pre)3.328 F .557 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.958 +(Av)144 708 S .458(alue of)-3.208 F F2(ignor)2.968 E(eboth)-.37 E F0 +.458(is shorthand for)3.238 F F2(ignor)2.959 E(espace)-.37 E F0(and) +2.959 E F2(ignor)2.959 E(edups)-.37 E F0 5.459(.A)C -.25(va)-2.5 G .459 +(lue of).25 F F2(er)2.959 E(asedups)-.15 E F0(causes)2.959 E .699 +(all pre)144 720 R .698 +(vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G +3.198(df).15 G .698(rom the history list before that line is)-3.198 F +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(14)190.95 E 0 Cg EP +%%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(GLOBIGNORE)108 84 Q F0 3.118(Ac)144 96 S -.618(olon-separated list of patterns de\214ning the set of \214lenames \ -to be ignored by pathname e)-3.118 F(xpan-)-.15 E 3.132(sion. If)144 108 -R 3.132<618c>3.132 G .632(lename matched by a pathname e)-3.132 F .632 -(xpansion pattern also matches one of the patterns in)-.15 F/F2 9 -/Times-Bold@0 SF(GLOBIGNORE)144 120 Q/F3 9/Times-Roman@0 SF(,)A F0 -(it is remo)2.25 E -.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.) --2.5 E F1(HISTCONTR)108 132 Q(OL)-.3 E F0 2.653(Ac)144 144 S .153 -(olon-separated list of v)-2.653 F .153(alues controlling ho)-.25 F -2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15 -G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .154(If the list) -5.153 F .491(of v)144 156 R .491(alues includes)-.25 F/F4 10 -/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G .491 -(ines which be)-2.991 F .491(gin with a)-.15 F F1(space)2.991 E F0 .49 -(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 -G .49(he his-)-2.99 F .557(tory list.)144 168 R 3.057(Av)5.557 G .557 -(alue of)-3.307 F F4(ignor)3.067 E(edups)-.37 E F0 .557 -(causes lines matching the pre)3.327 F .558 -(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.959 -(Av)144 180 S .459(alue of)-3.209 F F4(ignor)2.969 E(eboth)-.37 E F0 -.459(is shorthand for)3.239 F F4(ignor)2.959 E(espace)-.37 E F0(and) -2.959 E F4(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458 -(lue of).25 F F4(er)2.958 E(asedups)-.15 E F0(causes)2.958 E .698 -(all pre)144 192 R .698 -(vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G -3.198(df).15 G .699(rom the history list before that line is)-3.198 F -(sa)144 204 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 -(alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263 -(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .263 -(is unset, or does not include)2.513 F 2.941(av)144 216 S .441(alid v) --3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F --.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442 -(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F2 -(HISTIGNORE)144 228 Q F3(.)A F0 1.981(The second and subsequent lines o\ -f a multi-line compound command are not)6.482 F -(tested, and are added to the history re)144 240 Q -.05(ga)-.15 G -(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F3(.) -A F1(HISTFILE)108 252 Q F0 .181 -(The name of the \214le in which command history is sa)144 264 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y) --.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) --.1 F(alue)-.25 E(is)144 276 Q F4(~/.bash_history)2.5 E F0 5(.I)C 2.5 -(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5 -(dw).15 G(hen an interacti)-2.5 E .3 -.15(ve s)-.25 H(hell e).15 E -(xits.)-.15 E F1(HISTFILESIZE)108 288 Q F0 1.623 -(The maximum number of lines contained in the history \214le.)144 300 R -1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 -312 S .305(lue, the history \214le is truncated, if necessary).25 F -2.805(,b)-.65 G 2.805(yr)-2.805 G(emo)-2.805 E .305 -(ving the oldest entries, to contain no more)-.15 F .602 -(than that number of lines.)144 324 R .602(The def)5.602 F .602(ault v) --.1 F .602(alue is 500.)-.25 F .601 -(The history \214le is also truncated to this size)5.602 F -(after writing it when an interacti)144 336 Q .3 -.15(ve s)-.25 H -(hell e).15 E(xits.)-.15 E F1(HISTIGNORE)108 348 Q F0 2.657(Ac)144 360 S -.157(olon-separated list of patterns used to decide which command lines\ - should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G 2.658(nt)-2.658 G -.158(he his-)-2.658 F .708(tory list.)144 372 R .708 -(Each pattern is anchored at the be)5.708 F .707 -(ginning of the line and must match the complete line)-.15 F .625 -(\(no implicit `)144 384 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 -(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626 -(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144 -396 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +-.35 E(sa)144 84 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263 +(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263 +(ist is ignored.).15 F(If)5.263 E/F1 9/Times-Bold@0 SF(HISTCONTR)2.763 E +(OL)-.27 E F0 .264(is unset, or does not include)2.513 F 2.942(av)144 96 +S .442(alid v)-3.192 F .442 +(alue, all lines read by the shell parser are sa)-.25 F -.15(ve)-.2 G +2.941(do).15 G 2.941(nt)-2.941 G .441(he history list, subject to the v) +-2.941 F .441(alue of)-.25 F F1(HISTIGNORE)144 108 Q/F2 9/Times-Roman@0 +SF(.)A F0 1.981(The second and subsequent lines of a multi-line compoun\ +d command are not)6.481 F(tested, and are added to the history re)144 +120 Q -.05(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTCONTR) +2.5 E(OL)-.27 E F2(.)A/F3 10/Times-Bold@0 SF(HISTFILE)108 132 Q F0 .181 +(The name of the \214le in which command history is sa)144 144 R -.15 +(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR)-.162 E(Y) +-.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181(ault v) +-.1 F(alue)-.25 E(is)144 156 Q/F4 10/Times-Italic@0 SF(~/.bash_history) +2.5 E F0 5(.I)C 2.5(fu)-5 G(nset, the command history is not sa)-2.5 E +-.15(ve)-.2 G 2.5(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F3 +(HISTFILESIZE)108 168 Q F0 1.622 +(The maximum number of lines contained in the history \214le.)144 180 R +1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25(va)144 +192 S .932(lue, the history \214le is truncated, if necessary).25 F +3.432(,t)-.65 G 3.432(oc)-3.432 G .932 +(ontain no more than that number of lines by)-3.432 F(remo)144 204 Q .87 +(ving the oldest entries.)-.15 F .871(The history \214le is also trunca\ +ted to this size after writing it when a)5.87 F 1.245(shell e)144 216 R +3.745(xits. If)-.15 F 1.244(the v)3.744 F 1.244 +(alue is 0, the history \214le is truncated to zero size.)-.25 F 1.244 +(Non-numeric v)6.244 F 1.244(alues and)-.25 F 1.021(numeric v)144 228 R +1.022(alues less than zero inhibit truncation.)-.25 F 1.022 +(The shell sets the def)6.022 F 1.022(ault v)-.1 F 1.022(alue to the v) +-.25 F 1.022(alue of)-.25 F F3(HISTSIZE)144 240 Q F0(after reading an) +2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 252 Q F0 +2.658(Ac)144 264 S .158(olon-separated list of patterns used to decide \ +which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G +2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 276 R .707 +(Each pattern is anchored at the be)5.707 F .708 +(ginning of the line and must match the complete line)-.15 F .626 +(\(no implicit `)144 288 R F3(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126 +(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625 +(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144 +300 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 (In addition to the normal shell pattern matching characters, `)6.793 F -F1(&)A F0(')A 2.514(matches the pre)144 408 R 2.514(vious history line.) --.25 F(`)7.514 E F1(&)A F0 5.014('m)C 2.514 -(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 420 -Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F +F3(&)A F0(')A 2.515(matches the pre)144 312 R 2.515(vious history line.) +-.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514 +(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 324 +Q -.15(ve)-.15 G 3.352(db).15 G .852(efore attempting a match.)-3.352 F .852(The second and subsequent lines of a multi-line compound)5.852 F -(command are not tested, and are added to the history re)144 432 Q -.05 -(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F2(HISTIGNORE)2.5 E F3 -(.)A F1(HISTSIZE)108 444 Q F0 1.942 -(The number of commands to remember in the command history \(see)144 456 -R F2(HIST)4.443 E(OR)-.162 E(Y)-.315 E F0(belo)4.193 E 4.443(w\). The) --.25 F(def)144 468 Q(ault v)-.1 E(alue is 500.)-.25 E F1(HISTTIMEFORMA) -108 480 Q(T)-.95 E F0 .952(If this v)144 492 R .952 -(ariable is set and not null, its v)-.25 F .951 -(alue is used as a format string for)-.25 F F4(strftime)3.451 E F0 .951 -(\(3\) to print the)B .672 -(time stamp associated with each history entry displayed by the)144 504 -R F1(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) -3.173 F .673(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 516 R +(command are not tested, and are added to the history re)144 336 Q -.05 +(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTIGNORE)2.5 E F2 +(.)A F3(HISTSIZE)108 348 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 360 +R F1(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) +-.25 F(the)3.887 E -.25(va)144 372 S 1.32(lue is 0, commands are not sa) +.25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321 +(he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 384 T .437 +(ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937 +G .437(he history list \(there is no limit\).)-2.937 F .436 +(The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E +(to 500 after reading an)144 396 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E +F3(HISTTIMEFORMA)108 408 Q(T)-.95 E F0 .951(If this v)144 420 R .951 +(ariable is set and not null, its v)-.25 F .952 +(alue is used as a format string for)-.25 F F4(strftime)3.452 E F0 .952 +(\(3\) to print the)B .673 +(time stamp associated with each history entry displayed by the)144 432 +R F3(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) +3.172 F .672(ariable is)-.25 F .144 +(set, time stamps are written to the history \214le so the)144 444 R 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 -(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 528 Q -F1(HOME)108 540 Q F0 1.27 -(The home directory of the current user; the def)144 552 R 1.27(ault ar) --.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 -(iltin command.).2 F(The)6.27 E -.25(va)144 564 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 -(HOSTFILE)108 576 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 588 R F4 +(ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\ + character to distinguish timestamps from other history lines.)144 456 Q +F3(HOME)108 468 Q F0 1.27 +(The home directory of the current user; the def)144 480 R 1.27(ault ar) +-.1 F 1.27(gument for the)-.18 F F3(cd)3.77 E F0 -.2(bu)3.77 G 1.27 +(iltin command.).2 F(The)6.27 E -.25(va)144 492 S(lue of this v).25 E +(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3 +(HOSTFILE)108 504 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 516 R F4 (/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F -.55(needs to complete a hostname.)144 600 R .551 +.551(needs to complete a hostname.)144 528 R .551 (The list of possible hostname completions may be changed while)5.551 F -1.059(the shell is running; the ne)144 612 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.058 -(alue is changed,)-.25 F F1(bash)144 624 Q F0 .138 -(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) --2.638 F .138(xisting list.)-.15 F(If)5.138 E F2(HOSTFILE)2.638 E F0 -.138(is set, b)2.388 F .139(ut has no v)-.2 F .139(alue, or)-.25 F .518 -(does not name a readable \214le,)144 636 R F1(bash)3.018 E F0 .518 -(attempts to read)3.018 F F4(/etc/hosts)4.683 E F0 .517 -(to obtain the list of possible host-)4.683 F(name completions.)144 648 -Q(When)5 E F2(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) -2.25 E F1(IFS)108 660 Q F0(The)20.44 E F4 .555(Internal F)3.635 F .555 -(ield Separ)-.45 F(ator)-.15 E F0 .555(that is used for w)3.785 F .556 -(ord splitting after e)-.1 F .556(xpansion and to split lines into)-.15 -F -.1(wo)144 672 S(rds with the).1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2 +1.058(the shell is running; the ne)144 540 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.059 +(alue is changed,)-.25 F F3(bash)144 552 Q F0 .138 +(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) +-2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0 +.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517 +(does not name a readable \214le,)144 564 R F3(bash)3.017 E F0 .517 +(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518 +(to obtain the list of possible host-)4.684 F(name completions.)144 576 +Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) +2.25 E F3(IFS)108 588 Q F0(The)20.44 E F4 .556(Internal F)3.636 F .556 +(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556 +(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15 +F -.1(wo)144 600 S(rds with the).1 E F3 -.18(re)2.5 G(ad).18 E F0 -.2 (bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E -(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 684 Q -F0 .503(Controls the action of an interacti)144 696 R .803 -.15(ve s) --.25 H .503(hell on receipt of an).15 F F2(EOF)3.003 E F0 .503 -(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) -144 708 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F2 +(`')-.25 E('.)-.74 E F3(IGNOREEOF)108 612 Q +F0 .503(Controls the action of an interacti)144 624 R .803 -.15(ve s) +-.25 H .503(hell on receipt of an).15 F F1(EOF)3.003 E F0 .503 +(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) +144 636 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F1 (EOF)3.076 E F0 .426 -(characters which must be typed as the \214rst characters)2.676 F .303 -(on an input line before)144 720 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(characters which must be typed as the \214rst characters)2.676 F .302 +(on an input line before)144 648 R F3(bash)2.802 E F0 -.15(ex)2.802 G 2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 (xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .302(alue, or has)-.25 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(14)185.955 E 0 Cg EP -%%Page: 15 15 +(umeric v).15 F .303(alue, or has)-.25 F(no v)144 660 Q(alue, the def) +-.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E +F1(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F3 +(INPUTRC)108 672 Q F0 1.436(The \214lename for the)144 684 R F3 -.18(re) +3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G +1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c) +-.37 E F0(\(see)5.601 E F1(READLINE)3.935 E F0(belo)144 696 Q(w\).)-.25 +E F3(LANG)108 708 Q F0 1.239(Used to determine the locale cate)7.11 F +1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 +(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E +(starting with)144 720 Q F3(LC_)2.5 E F0(.)A(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(15)190.95 E 0 Cg EP +%%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(no v)144 84 Q(alue, the def)-.25 E(ault v)-.1 E(alue is 10.)-.25 -E(If it does not e)5 E(xist,)-.15 E/F1 9/Times-Bold@0 SF(EOF)2.5 E F0 -(signi\214es the end of input to the shell.)2.25 E/F2 10/Times-Bold@0 SF -(INPUTRC)108 96 Q F0 1.435(The \214lename for the)144 108 R F2 -.18(re) -3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G -1.436(rriding the def).15 F 1.436(ault of)-.1 F/F3 10/Times-Italic@0 SF -(~/.inputr)5.602 E(c)-.37 E F0(\(see)5.602 E F1(READLINE)3.936 E F0 -(belo)144 120 Q(w\).)-.25 E F2(LANG)108 132 Q F0 1.24 -(Used to determine the locale cate)7.11 F 1.239(gory for an)-.15 F 3.739 -(yc)-.15 G(ate)-3.739 E 1.239(gory not speci\214cally selected with a v) --.15 F(ariable)-.25 E(starting with)144 144 Q F2(LC_)2.5 E F0(.)A F2 -(LC_ALL)108 156 Q F0 .973(This v)144 168 R .973(ariable o)-.25 F -.15 -(ve)-.15 G .973(rrides the v).15 F .973(alue of)-.25 F F1(LANG)3.473 E -F0 .973(and an)3.223 F 3.473(yo)-.15 G(ther)-3.473 E F2(LC_)3.473 E F0 --.25(va)3.473 G .974(riable specifying a locale cate-).25 F(gory)144 180 -Q(.)-.65 E F2(LC_COLLA)108 192 Q(TE)-.95 E F0 .412(This v)144 204 R .412 -(ariable determines the collation order used when sorting the results o\ -f pathname e)-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 -216 R 1.464(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va) --.25 G 1.465(lence classes, and collating sequences).25 F -(within pathname e)144 228 Q(xpansion and pattern matching.)-.15 E F2 -(LC_CTYPE)108 240 Q F0 1.936(This v)144 252 R 1.936 +-.35 E/F1 10/Times-Bold@0 SF(LC_ALL)108 84 Q F0 .974(This v)144 96 R +.974(ariable o)-.25 F -.15(ve)-.15 G .974(rrides the v).15 F .973 +(alue of)-.25 F/F2 9/Times-Bold@0 SF(LANG)3.473 E F0 .973(and an)3.223 F +3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G .973 +(riable specifying a locale cate-).25 F(gory)144 108 Q(.)-.65 E F1 +(LC_COLLA)108 120 Q(TE)-.95 E F0 .411(This v)144 132 R .412(ariable det\ +ermines the collation order used when sorting the results of pathname e) +-.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 144 R 1.465 +(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G +1.464(lence classes, and collating sequences).25 F(within pathname e)144 +156 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 168 Q F0 +1.935(This v)144 180 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.935(vior of character classes)-.2 F(within pathname e)144 264 Q -(xpansion and pattern matching.)-.15 E F2(LC_MESSA)108 276 Q(GES)-.55 E -F0(This v)144 288 Q(ariable determines the locale used to translate dou\ -ble-quoted strings preceded by a)-.25 E F2($)2.5 E F0(.)A F2(LC_NUMERIC) -108 300 Q F0(This v)144 312 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F2(LINES)108 324 Q F0 .054 -(Used by the)5.99 F F2(select)2.554 E F0 .054(compound command to deter\ -mine the column length for printing selection lists.)2.554 F -(Automatically set upon receipt of a)144 336 Q F1(SIGWINCH)2.5 E/F4 9 -/Times-Roman@0 SF(.)A F2(MAIL)108 348 Q F0 1.201 +1.936(vior of character classes)-.2 F(within pathname e)144 192 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 204 Q(GES)-.55 E +F0(This v)144 216 Q(ariable determines the locale used to translate dou\ +ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) +108 228 Q F0(This v)144 240 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LINES)108 252 Q F0 .055 +(Used by the)5.99 F F1(select)2.555 E F0 .054(compound command to deter\ +mine the column length for printing selection lists.)2.555 F .264 +(Automatically set if the)144 264 R F1(checkwinsize)2.764 E F0 .264 +(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 +(hell upon receipt of a).15 F F2(SIGWINCH)144 276 Q/F3 9/Times-Roman@0 +SF(.)A F1(MAIL)108 288 Q F0 1.201 (If this parameter is set to a \214le or directory name and the)8.78 F -F1(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 -(riable is not set,).25 F F2(bash)3.701 E F0 -(informs the user of the arri)144 360 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 +(riable is not set,).25 F F1(bash)3.701 E F0 +(informs the user of the arri)144 300 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 (fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E -(-format directory)-.2 E(.)-.65 E F2(MAILCHECK)108 372 Q F0 .098 -(Speci\214es ho)144 384 R 2.598(wo)-.25 G .098(ften \(in seconds\)) --2.598 F F2(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 312 Q F0 .098 +(Speci\214es ho)144 324 R 2.598(wo)-.25 G .098(ften \(in seconds\)) +-2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) 5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 396 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F .066 -(or set to a v)144 408 R .066(alue that is not a number greater than or\ - equal to zero, the shell disables mail checking.)-.25 F F2(MAILP)108 -420 Q -.95(AT)-.74 G(H).95 E F0 2.815(Ac)144 432 S .314 -(olon-separated list of \214le names to be check)-2.815 F .314 -(ed for mail.)-.1 F .314(The message to be printed when mail)5.314 F -(arri)144 444 Q -.15(ve)-.25 G 3.42(si).15 G 3.42(nap)-3.42 G .92(artic\ -ular \214le may be speci\214ed by separating the \214le name from the m\ -essage with a)-3.42 F 2.808(`?'. When)144 456 R .308(used in the te) -2.808 F .308(xt of the message,)-.15 F F2($_)2.808 E F0 -.15(ex)2.808 G -.308(pands to the name of the current mail\214le.).15 F(Exam-)5.307 E -(ple:)144 468 Q F2(MAILP)144 480 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A -(ar/mail/bfox?"Y)-.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H -(ail":~/shell\255mail?"$_ has mail!"\010).15 E F2(Bash)144 492 Q F0 .388 -(supplies a def)2.888 F .388(ault v)-.1 F .388(alue for this v)-.25 F -.388(ariable, b)-.25 F .389 +mpt.)144 336 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F .066 +(or set to a v)144 348 R .066(alue that is not a number greater than or\ + equal to zero, the shell disables mail checking.)-.25 F F1(MAILP)108 +360 Q -.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 372 S .49 +(olon-separated list of \214lenames to be check)-2.99 F .49 +(ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) +144 384 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +\214le may be speci\214ed by separating the \214lename from the message\ + with a `?'.)-2.62 F(When used in the te)144 396 Q(xt of the message,) +-.15 E F1($_)2.5 E F0 -.15(ex)2.5 G +(pands to the name of the current mail\214le.).15 E(Example:)5 E F1 +(MAILP)144 408 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +-.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 420 Q F0 .389 +(supplies a def)2.889 F .389(ault v)-.1 F .389(alue for this v)-.25 F +.389(ariable, b)-.25 F .388 (ut the location of the user mail \214les that it uses is)-.2 F -(system dependent \(e.g., /v)144 504 Q(ar/mail/)-.25 E F2($USER)A F0 -(\).)A F2(OPTERR)108 516 Q F0 .39(If set to the v)144 528 R .39(alue 1,) --.25 F F2(bash)2.89 E F0 .389(displays error messages generated by the) -2.889 F F2(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 -F F1 .359(SHELL B)144 540 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0 -(belo)2.609 E(w\).)-.25 E F1(OPTERR)5.359 E F0 .36 -(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1 -(ke).2 G(d).1 E(or a shell script is e)144 552 Q -.15(xe)-.15 G(cuted.) -.15 E F2 -.74(PA)108 564 S(TH)-.21 E F0 .588 -(The search path for commands.)9.91 F .587 +(system dependent \(e.g., /v)144 432 Q(ar/mail/)-.25 E F1($USER)A F0 +(\).)A F1(OPTERR)108 444 Q F0 .389(If set to the v)144 456 R .389 +(alue 1,)-.25 F F1(bash)2.889 E F0 .389 +(displays error messages generated by the)2.889 F F1(getopts)2.89 E F0 +-.2(bu)2.89 G .39(iltin command \(see).2 F F2 .36(SHELL B)144 468 R(UIL) +-.09 E .36(TIN COMMANDS)-.828 F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR) +5.36 E F0 .359(is initialized to 1 each time the shell is in)2.61 F -.2 +(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 480 Q -.15(xe) +-.15 G(cuted.).15 E F1 -.74(PA)108 492 S(TH)-.21 E F0 .587 +(The search path for commands.)9.91 F .588 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 576 R F1 .471(COMMAND EXECUTION) -2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 588 S -.536(lue of).25 F F1 -.666(PA)3.036 G(TH)-.189 E F0 .535 -(indicates the current directory)2.786 F 5.535(.A)-.65 G .535 -(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) --3.035 E .867(colons, or as an initial or trailing colon.)144 600 R .868 -(The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F 26.329(administrator who installs)144 612 R F2(bash)28.829 E F0 -31.329(.A)C 26.328(common v)-2.501 F 26.328(alue is)-.25 F/F5 10 -/Courier@0 SF(/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin)144 624 -Q F0(.)A F2(POSIXL)108 636 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 648 -R .471(ariable is in the en)-.25 F .471(vironment when)-.4 F F2(bash) -2.971 E F0 .471(starts, the shell enters)2.971 F F3 .472(posix mode) -2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 660 R F2(\255\255posix)2.511 E F0 +5.587 F .472(for commands \(see)144 504 R F2 .472(COMMAND EXECUTION) +2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471 +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 516 S +.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535 +(indicates the current directory)2.785 F 5.535(.A)-.65 G .535 +(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent) +-3.036 E .868(colons, or as an initial or trailing colon.)144 528 R .868 +(The def)5.868 F .867(ault path is system-dependent, and is set by the) +-.1 F 26.328(administrator who installs)144 540 R F1(bash)28.828 E F0 +31.329(.A)C 26.329(common v)-2.5 F 26.329(alue is)-.25 F/F4 10/Courier@0 +SF(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 552 +Q F0(.)A F1(POSIXL)108 564 Q(Y_CORRECT)-.92 E F0 .472(If this v)144 576 +R .472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash) +2.971 E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF +.471(posix mode)2.971 F F0 .471(before reading)2.971 F .011 +(the startup \214les, as if the)144 588 R F1(\255\255posix)2.511 E F0 (in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011 -(If it is set while the shell is)5.011 F(running,)144 672 Q F2(bash)2.5 -E F0(enables)2.5 E F3(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) --2.5 G(he command)-2.5 E F5(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F2(PR)108 684 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 696 Q(alue is e)-.25 E -.15(xe)-.15 G -(cuted as a command prior to issuing each primary prompt.).15 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(15)185.955 E 0 Cg EP -%%Page: 16 16 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(PR)108 84 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 -.676(If set to a number greater than zero, the v)144 96 R .676 +(If it is set while the shell is)5.011 F(running,)144 600 Q F1(bash)2.5 +E F0(enables)2.5 E F5(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) +-2.5 G(he command)-2.5 E F4(set -o posix)2.5 E F0(had been e)2.5 E -.15 +(xe)-.15 G(cuted.).15 E F1(PR)108 612 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 624 Q(alue is e)-.25 E -.15(xe)-.15 G +(cuted as a command prior to issuing each primary prompt.).15 E F1(PR) +108 636 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 648 R .676 (alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 108 R .923(xpanding the)-.15 F F1(\\w)3.423 +(nents to retain when e)144 660 R .923(xpanding the)-.15 F F1(\\w)3.423 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) -3.423 F/F2 9/Times-Bold@0 SF(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E -(w\).)-.25 E(Characters remo)144 120 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS1)108 132 Q F0 .064(The v) +3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E +(Characters remo)144 672 Q -.15(ve)-.15 G 2.5(da).15 G +(re replaced with an ellipsis.)-2.5 E F1(PS1)108 684 Q F0 .065(The v) 19.33 F .065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR)2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 -(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 144 R +(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 696 R (def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 156 Q F0 .118(The v)19.33 F .118 -(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1) -2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The) -5.117 E(def)144 168 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 180 Q F0 1.115(The v)19.33 F 1.115 +-.74('')2.5 G(.).74 E F1(PS2)108 708 Q F0 .117(The v)19.33 F .117 +(alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) +2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) +5.118 E(def)144 720 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(16)190.95 E 0 Cg +EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(PS3)108 84 Q F0 1.116(The v)19.33 F 1.115 (alue of this parameter is used as the prompt for the)-.25 F F1(select) -3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR) -144 192 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 204 Q F0 -.101(The v)19.33 F .101(alue of this parameter is e)-.25 F .101 -(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 -(alue is printed before each command)-.25 F F1(bash)144 216 Q F0 .291 -(displays during an e)2.791 F -.15(xe)-.15 G .292(cution trace.).15 F -.292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .292 -(is replicated multiple times, as)2.542 F(necessary)144 228 Q 2.5(,t) +3.615 E F0 1.115(command \(see)3.615 F/F2 9/Times-Bold@0 SF 1.115 +(SHELL GRAM-)3.615 F(MAR)144 96 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E +F1(PS4)108 108 Q F0 .1(The v)19.33 F .1(alue of this parameter is e)-.25 +F .1(xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101 +(alue is printed before each command)-.25 F F1(bash)144 120 Q F0 .292 +(displays during an e)2.792 F -.15(xe)-.15 G .292(cution trace.).15 F +.292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .291 +(is replicated multiple times, as)2.542 F(necessary)144 132 Q 2.5(,t) -.65 G 2.5(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G (ls of indirection.).15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 --.74('')2.5 G(.).74 E F1(SHELL)108 240 Q F0 .664 -(The full pathname to the shell is k)144 252 R .664(ept in this en)-.1 F -.664(vironment v)-.4 F 3.164(ariable. If)-.25 F .663 -(it is not set when the shell)3.164 F(starts,)144 264 Q F1(bash)2.5 E F0 +-.74('')2.5 G(.).74 E F1(SHELL)108 144 Q F0 .663 +(The full pathname to the shell is k)144 156 R .664(ept in this en)-.1 F +.664(vironment v)-.4 F 3.164(ariable. If)-.25 F .664 +(it is not set when the shell)3.164 F(starts,)144 168 Q F1(bash)2.5 E F0 (assigns to it the full pathname of the current user')2.5 E 2.5(sl)-.55 -G(ogin shell.)-2.5 E F1(TIMEFORMA)108 276 Q(T)-.95 E F0 .826(The v)144 -288 R .826 +G(ogin shell.)-2.5 E F1(TIMEFORMA)108 180 Q(T)-.95 E F0 .827(The v)144 +192 R .826 (alue of this parameter is used as a format string specifying ho)-.25 F -3.327(wt)-.25 G .827(he timing information for)-3.327 F .649 -(pipelines pre\214x)144 300 R .649(ed with the)-.15 F F1(time)3.149 E F0 -(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F -(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711 -(an escape sequence that is e)144 312 R .711(xpanded to a time v)-.15 F -.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F -(and their meanings are as follo)144 324 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 342 Q F0 2.5 -(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 354 Q/F3 10 +3.326(wt)-.25 G .826(he timing information for)-3.326 F .648 +(pipelines pre\214x)144 204 R .648(ed with the)-.15 F F1(time)3.148 E F0 +(reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F +(The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712 +(an escape sequence that is e)144 216 R .711(xpanded to a time v)-.15 F +.711(alue or other information.)-.25 F .711(The escape sequences)5.711 F +(and their meanings are as follo)144 228 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 246 Q F0 2.5 +(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 258 Q/F3 10 /Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)11.68 -E F1(%[)144 366 Q F3(p)A F1(][l]U)A F0 -(The number of CPU seconds spent in user mode.)11.68 E F1(%[)144 378 Q +E F1(%[)144 270 Q F3(p)A F1(][l]U)A F0 +(The number of CPU seconds spent in user mode.)11.68 E F1(%[)144 282 Q F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.) -13.34 E F1(%P)144 390 Q F0 +13.34 E F1(%P)144 294 Q F0 (The CPU percentage, computed as \(%U + %S\) / %R.)33.89 E .87 -(The optional)144 406.8 R F3(p)3.37 E F0 .87(is a digit specifying the) +(The optional)144 310.8 R F3(p)3.37 E F0 .87(is a digit specifying the) 3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 -(he number of fractional digits after a decimal)-3.37 F 2.525(point. A) -144 418.8 R -.25(va)2.525 G .025 -(lue of 0 causes no decimal point or fraction to be output.).25 F .026 -(At most three places after the)5.025 F .538 -(decimal point may be speci\214ed; v)144 430.8 R .538(alues of)-.25 F F3 -(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E -F3(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 442.8 Q -(alue 3 is used.)-.25 E .667(The optional)144 459.6 R F1(l)3.167 E F0 +(he number of fractional digits after a decimal)-3.37 F 2.526(point. A) +144 322.8 R -.25(va)2.526 G .025 +(lue of 0 causes no decimal point or fraction to be output.).25 F .025 +(At most three places after the)5.025 F .537 +(decimal point may be speci\214ed; v)144 334.8 R .537(alues of)-.25 F F3 +(p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E +F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 346.8 Q +(alue 3 is used.)-.25 E .668(The optional)144 363.6 R F1(l)3.168 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F -F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.168(s. The)B -.25(va) -3.168 G(lue).25 E(of)144 471.6 Q F3(p)2.5 E F0 -(determines whether or not the fraction is included.)2.5 E .001 -(If this v)144 488.4 R .001(ariable is not set,)-.25 F F1(bash)2.501 E -F0 .001(acts as if it had the v)2.501 F(alue)-.25 E F1($\010\\nr)2.5 E -(eal\\t%3lR\\nuser\\t%3lU\\nsys%3lS\010)-.18 E F0(.)A .494(If the v)144 -500.4 R .494(alue is null, no timing information is displayed.)-.25 F -2.994(At)5.494 G .494(railing ne)-2.994 F .494 -(wline is added when the for)-.25 F(-)-.2 E(mat string is displayed.)144 -512.4 Q F1(TMOUT)108 524.4 Q F0 .941(If set to a v)144 536.4 R .941 -(alue greater than zero,)-.25 F F2(TMOUT)3.441 E F0 .941 -(is treated as the def)3.191 F .941(ault timeout for the)-.1 F F1 -.18 -(re)3.441 G(ad).18 E F0 -.2(bu)3.441 G(iltin.).2 E(The)144 548.4 Q F1 -(select)2.81 E F0 .31(command terminates if input does not arri)2.81 F -.611 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.811 E F0 .311 -(seconds when input is com-)2.561 F .886(ing from a terminal.)144 560.4 -R .886(In an interacti)5.886 F 1.185 -.15(ve s)-.25 H .885(hell, the v) -.15 F .885(alue is interpreted as the number of seconds to)-.25 F -.1 -(wa)144 572.4 S .546(it for input after issuing the primary prompt.).1 F -F1(Bash)5.546 E F0 .546(terminates after w)3.046 F .546 -(aiting for that number of)-.1 F(seconds if input does not arri)144 -584.4 Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 596.4 Q F0 .391(If set,)144 -608.4 R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 -(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39 -(creates temporary \214les for the)2.89 F(shell')144 620.4 Q 2.5(su)-.55 -G(se.)-2.5 E F1(auto_r)108 632.4 Q(esume)-.18 E F0 .53(This v)144 644.4 -R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531 -(he shell interacts with the user and job control.)-3.03 F .531 -(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 656.4 R +F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va) +3.167 G(lue).25 E(of)144 375.6 Q F3(p)2.5 E F0 +(determines whether or not the fraction is included.)2.5 E 13.364 +(If this v)144 392.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 +E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) +144 404.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +(.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 +(alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 +416.4 R(trailing ne)2.5 E +(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 +428.4 Q F0 .941(If set to a v)144 440.4 R .941(alue greater than zero,) +-.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941 +(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 +G(iltin.).2 E(The)144 452.4 Q F1(select)2.811 E F0 .311 +(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H +(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F +.885(ing from a terminal.)144 464.4 R .885(In an interacti)5.885 F 1.185 +-.15(ve s)-.25 H .885(hell, the v).15 F .886 +(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 476.4 +S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 +(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 +F(number of seconds if a complete line of input does not arri)144 488.4 +Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 500.4 Q F0 .39(If set,)144 512.4 +R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 +(alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 +(creates temporary \214les for the)2.891 F(shell')144 524.4 Q 2.5(su) +-.55 G(se.)-2.5 E F1(auto_r)108 536.4 Q(esume)-.18 E F0 .531(This v)144 +548.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 +(he shell interacts with the user and job control.)-3.031 F .53 +(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 560.4 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 668.4 S .366(isting stopped job) -.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366 -(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F -1.125(the string typed, the job most recently accessed is selected.)144 -680.4 R(The)6.125 E F3(name)3.985 E F0 1.124(of a stopped job, in this) -3.805 F(conte)144 692.4 Q 1.132 + for resumption of an)-.1 F -.15(ex)144 572.4 S .367(isting stopped job) +.15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 +(wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F +1.124(the string typed, the job most recently accessed is selected.)144 +584.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this) +3.805 F(conte)144 596.4 Q 1.133 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 -(he string supplied must)-3.633 F .625 -(match the name of a stopped job e)144 704.4 R .624(xactly; if set to) --.15 F F3(substring)3.124 E F0 3.124(,t).22 G .624 -(he string supplied needs to match a)-3.124 F .884 -(substring of the name of a stopped job)144 716.4 R 5.884(.T)-.4 G(he) --5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 -(vides functionality analogous to)-.15 F(the)144 728.4 Q F1(%?)3.334 E -F0 .834(job identi\214er \(see)5.834 F F2 .834(JOB CONTR)3.334 F(OL)-.27 +6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 +(he string supplied must)-3.632 F .624 +(match the name of a stopped job e)144 608.4 R .624(xactly; if set to) +-.15 F F3(substring)3.125 E F0 3.125(,t).22 G .625 +(he string supplied needs to match a)-3.125 F .885 +(substring of the name of a stopped job)144 620.4 R 5.884(.T)-.4 G(he) +-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 +(vides functionality analogous to)-.15 F(the)144 632.4 Q F1(%?)3.333 E +F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) --.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(16)185.955 E 0 Cg EP -%%Page: 17 17 +-.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 +(must be a pre\214x of a stopped job')144 644.4 R 2.816(sn)-.55 G .316 +(ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F +F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 656.4 Q(.)-.55 +E F1(histchars)108 668.4 Q F0 2.069(The tw)144 680.4 R 4.57(oo)-.1 G +4.57(rt)-4.57 G 2.07(hree characters which control history e)-4.57 F +2.07(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E +(OR)-.162 E(Y)-.315 E(EXP)144 692.4 Q(ANSION)-.666 E F0(belo)3.466 E +3.716(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 +(history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G +1.215(he character which)-3.715 F .798(signals the start of a history e) +144 704.4 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B +.798(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G +(ubstitu-)-3.298 E(tion)144 716.4 Q F0(character)2.74 E 2.74(,w)-.4 G +.239(hich is used as shorthand for re-running the pre)-2.74 F .239 +(vious command entered, substitut-)-.25 F .575 +(ing one string for another in the command.)144 728.4 R .575(The def) +5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 +(optional third character is the)3.076 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(17)190.95 E 0 Cg EP +%%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .315(must be a pre\214x of a stopped job')144 84 R 2.816(sn)-.55 -G .316(ame; this pro)-2.816 F .316(vides functionality analogous to the) --.15 F/F1 10/Times-Bold@0 SF(%)2.816 E/F2 10/Times-Italic@0 SF(string)A -F0(job)2.816 E(identi\214er)144 96 Q(.)-.55 E F1(histchars)108 108 Q F0 -2.07(The tw)144 120 R 4.57(oo)-.1 G 4.57(rt)-4.57 G 2.07 -(hree characters which control history e)-4.57 F 2.07(xpansion and tok) --.15 F 2.07(enization \(see)-.1 F/F3 9/Times-Bold@0 SF(HIST)4.569 E(OR) --.162 E(Y)-.315 E(EXP)144 132 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 -(w\). The)-.25 F 1.215(\214rst character is the)3.715 F F2 1.216 -(history e)3.715 F(xpansion)-.2 E F0(character)3.716 E 3.716(,t)-.4 G -1.216(he character which)-3.716 F .798(signals the start of a history e) -144 144 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798 -(second character is the)3.298 F F2(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 156 Q F0(character)2.739 E 2.739(,w)-.4 G -.239(hich is used as shorthand for re-running the pre)-2.739 F .24 -(vious command entered, substitut-)-.25 F .576 -(ing one string for another in the command.)144 168 R .575(The def)5.575 -F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .575 -(optional third character is the)3.075 F .223(character which indicates\ - that the remainder of the line is a comment when found as the \214rst \ -char)144 180 R(-)-.2 E 1.294(acter of a w)144 192 R 1.294 -(ord, normally `)-.1 F F1(#)A F0 3.794('. The)B 1.293 -(history comment character causes history substitution to be)3.794 F -.379(skipped for the remaining w)144 204 R .379(ords on the line.)-.1 F -.38(It does not necessarily cause the shell parser to treat)5.379 F -(the rest of the line as a comment.)144 216 Q F1(Arrays)87 232.8 Q(Bash) -108 244.8 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 -(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a) --.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89 -(ariable may be used as an)-3.641 F(inde)108 256.8 Q -.15(xe)-.15 G -2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2 -(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 -F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F -.329(an array)108 268.8 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) --.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G -2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F -5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 -(rrays are refer)-2.828 F(-)-.2 E 1.386(enced using inte)108 280.8 R -1.386(gers \(including arithmetic e)-.15 F 3.887(xpressions\) and)-.15 F -1.387(are zero-based; associati)3.887 F 1.687 -.15(ve a)-.25 H 1.387 -(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 292.8 -Q 2.463(An inde)108 309.6 R -.15(xe)-.15 G 4.963(da).15 G 2.463 +-.35 E .223(character which indicates that the remainder of the line is\ + a comment when found as the \214rst char)144 84 R(-)-.2 E 1.293 +(acter of a w)144 96 R 1.293(ord, normally `)-.1 F/F1 10/Times-Bold@0 SF +(#)A F0 3.793('. The)B 1.294 +(history comment character causes history substitution to be)3.794 F .38 +(skipped for the remaining w)144 108 R .38(ords on the line.)-.1 F .379 +(It does not necessarily cause the shell parser to treat)5.379 F +(the rest of the line as a comment.)144 120 Q F1(Arrays)87 136.8 Q(Bash) +108 148.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) +-.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H +.891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891 +(ariable may be used as an)-3.641 F(inde)108 160.8 Q -.15(xe)-.15 G +2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2 +(bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15 +F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F +.328(an array)108 172.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) +-.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G +2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F +5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329 +(rrays are refer)-2.829 F(-)-.2 E 1.387(enced using inte)108 184.8 R +1.387(gers \(including arithmetic e)-.15 F 3.887(xpressions\) and)-.15 F +1.387(are zero-based; associati)3.887 F 1.686 -.15(ve a)-.25 H 1.386 +(rrays are refer).15 F(-)-.2 E .219(enced using arbitrary strings.)108 +196.8 R .219(Unless otherwise noted, inde)5.219 F -.15(xe)-.15 G 2.719 +(da).15 G .219(rray indices must be non-ne)-2.719 F -.05(ga)-.15 G(ti) +.05 E .52 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 +213.6 R -.15(xe)-.15 G 4.963(da).15 G 2.463 (rray is created automatically if an)-4.963 F 4.963(yv)-.15 G 2.462 -(ariable is assigned to using the syntax)-5.213 F F2(name)4.962 E F0([)A -F2(sub-)A(script)108 321.6 Q F0(]=)A F2(value)A F0 5.426(.T)C(he)-5.426 -E F2(subscript)3.266 E F0 .426(is treated as an arithmetic e)3.606 F -.426(xpression that must e)-.15 F -.25(va)-.25 G .427(luate to a number) -.25 F 5.427(.I)-.55 G(f)-5.427 E F2(sub-)3.267 E(script)108 333.6 Q F0 --.25(eva)3.913 G .733 -(luates to a number less than zero, it is used as an of).25 F .733 -(fset from one greater than the array')-.25 F 3.233(sm)-.55 G(axi-) --3.233 E 1.104(mum inde)108 345.6 R 3.604(x\()-.15 G 1.105 -(so a subcript of -1 refers to the last element of the array\).)-3.604 F -2.705 -.8(To e)6.105 H 1.105(xplicitly declare an inde).65 F -.15(xe) --.15 G(d).15 E(array)108 357.6 Q 3.828(,u)-.65 G(se)-3.828 E F1(declar) -3.828 E 3.828<65ad>-.18 G(a)-3.828 E F2(name)3.828 E F0(\(see)3.828 E F3 -1.327(SHELL B)3.827 F(UIL)-.09 E 1.327(TIN COMMANDS)-.828 F F0(belo) -3.577 E(w\).)-.25 E F1(declar)6.327 E 3.827<65ad>-.18 G(a)-3.827 E F2 -(name)3.827 E F1([)A F2(subscript)A F1(])A F0(is)3.827 E -(also accepted; the)108 369.6 Q F2(subscript)2.5 E F0(is ignored.)2.5 E -(Associati)108 386.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E +(ariable is assigned to using the syntax)-5.213 F/F2 10/Times-Italic@0 +SF(name)4.962 E F0([)A F2(sub-)A(script)108 225.6 Q F0(]=)A F2(value)A +F0 6.548(.T)C(he)-6.548 E F2(subscript)4.388 E F0 1.549 +(is treated as an arithmetic e)4.728 F 1.549(xpression that must e)-.15 +F -.25(va)-.25 G 1.549(luate to a number).25 F 6.549(.T)-.55 G(o)-7.349 +E -.15(ex)108 237.6 S 1.98(plicitly declare an inde).15 F -.15(xe)-.15 G +4.48(da).15 G(rray)-4.48 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 E +4.48<65ad>-.18 G(a)-4.48 E F2(name)4.48 E F0(\(see)4.48 E/F3 9 +/Times-Bold@0 SF 1.979(SHELL B)4.479 F(UIL)-.09 E 1.979(TIN COMMANDS) +-.828 F F0(belo)4.229 E(w\).)-.25 E F1(declar)108 249.6 Q 2.5<65ad>-.18 +G(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 +(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E +(Associati)108 266.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 -403.2 Q .94(utes may be speci\214ed for an array v)-.2 F .941 +283.2 Q .94(utes may be speci\214ed for an array v)-.2 F .941 (ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 -.18(re)3.441 G(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F -(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 415.2 Q +(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 295.2 Q (.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 432 R +(Arrays are assigned to using compound assignments of the form)108 312 R F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 (... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.147(,w)C 1.647(here each) --4.147 F F2(value)108 444 Q F0 .122(is of the form [)2.622 F F2 -(subscript)A F0(]=)A F2(string)A F0 5.122(.I)C(nde)-5.122 E -.15(xe)-.15 -G 2.622(da).15 G .122(rray assignments do not require the brack)-2.622 F -.122(et and subscript.)-.1 F .164(When assigning to inde)108 456 R -.15 -(xe)-.15 G 2.663(da).15 G .163(rrays, if the optional brack)-2.663 F -.163(ets and subscript are supplied, that inde)-.1 F 2.663(xi)-.15 G -2.663(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 468 R -3.91(xo)-.15 G 3.91(ft)-3.91 G 1.41 -(he element assigned is the last inde)-3.91 F 3.911(xa)-.15 G 1.411 -(ssigned to by the statement plus one.)-3.911 F(Inde)108 480 Q -(xing starts at zero.)-.15 E(When assigning to an associati)108 496.8 Q -.3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.) --2.5 E .24(This syntax is also accepted by the)108 513.6 R F1(declar) -2.74 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 +-4.147 F F2(value)108 324 Q F0 1.833(is of the form [)4.332 F F2 +(subscript)A F0(]=)A F2(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 +G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.833 +(ything b)-.15 F(ut)-.2 E F2(string)4.333 E F0(.)A .164 +(When assigning to inde)108 336 R -.15(xe)-.15 G 2.663(da).15 G .163 +(rrays, if the optional brack)-2.663 F .163 +(ets and subscript are supplied, that inde)-.1 F 2.663(xi)-.15 G 2.663 +(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 348 R 3.91 +(xo)-.15 G 3.91(ft)-3.91 G 1.41(he element assigned is the last inde) +-3.91 F 3.911(xa)-.15 G 1.411(ssigned to by the statement plus one.) +-3.911 F(Inde)108 360 Q(xing starts at zero.)-.15 E +(When assigning to an associati)108 376.8 Q .3 -.15(ve a)-.25 H(rray).15 +E 2.5(,t)-.65 G(he subscript is required.)-2.5 E .24 +(This syntax is also accepted by the)108 393.6 R F1(declar)2.74 E(e)-.18 +E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 (vidual array elements may be assigned to using the)-.25 F F2(name)108 -525.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 -(syntax introduced abo)2.5 E -.15(ve)-.15 G(.).15 E(An)108 542.4 Q 3.575 -(ye)-.15 G 1.075(lement of an array may be referenced using ${)-3.575 F -F2(name)A F0([)A F2(subscript)A F0 3.575(]}. The)B 1.076 -(braces are required to a)3.576 F -.2(vo)-.2 G(id).2 E 1.542 -(con\215icts with pathname e)108 554.4 R 4.041(xpansion. If)-.15 F F2 +405.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 1.917 +(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 +(hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F2(name)4.777 E F0 1.917(is sub-) +4.597 F .116(scripted by a ne)108 417.6 R -.05(ga)-.15 G(ti).05 E .416 +-.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 +(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H +2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E +(of)108 429.6 Q F2(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +-.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 +(ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 +(nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 +G .838(eferences the last)-3.338 F(element.)108 441.6 Q(An)108 458.4 Q +3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) +-3.576 F F2(name)A F0([)A F2(subscript)A F0 3.575(]}. The)B 1.075 +(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 +(con\215icts with pathname e)108 470.4 R 4.041(xpansion. If)-.15 F F2 (subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 -(xpands to all members of)-.15 F F2(name)4.041 E F0(.)A 1.056 -(These subscripts dif)108 566.4 R 1.056(fer only when the w)-.25 F 1.057 -(ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057 -(ord is double-quoted,)-.1 F(${)108 578.4 Q F2(name)A F0 .521([*]} e)B -.521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52 +(xpands to all members of)-.15 F F2(name)4.042 E F0(.)A 1.057 +(These subscripts dif)108 482.4 R 1.057(fer only when the w)-.25 F 1.057 +(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 +(ord is double-quoted,)-.1 F(${)108 494.4 Q F2(name)A F0 .52([*]} e)B +.52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 (alue of each array member separated by the \214rst character)-.25 F -1.374(of the)108 590.4 R F3(IFS)3.874 E F0 1.374(special v)3.624 F 1.375 +1.375(of the)108 506.4 R F3(IFS)3.875 E F0 1.375(special v)3.625 F 1.375 (ariable, and ${)-.25 F F2(name)A F0 1.375([@]} e)B 1.375 -(xpands each element of)-.15 F F2(name)3.875 E F0 1.375(to a separate w) -3.875 F 3.875(ord. When)-.1 F 2.028(there are no array members, ${)108 -602.4 R F2(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F -2.027(If the double-quoted e)7.028 F 2.027(xpansion occurs)-.15 F .758 -(within a w)108 614.4 R .759(ord, the e)-.1 F .759 +(xpands each element of)-.15 F F2(name)3.875 E F0 1.374(to a separate w) +3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108 +518.4 R F2(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F +2.028(If the double-quoted e)7.028 F 2.028(xpansion occurs)-.15 F .759 +(within a w)108 530.4 R .759(ord, the e)-.1 F .759 (xpansion of the \214rst parameter is joined with the be)-.15 F .759 -(ginning part of the original w)-.15 F(ord,)-.1 E .516(and the e)108 -626.4 R .516(xpansion of the last parameter is joined with the last par\ -t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015 -F .227(to the e)108 638.4 R .228(xpansion of the special parameters)-.15 +(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108 +542.4 R .516(xpansion of the last parameter is joined with the last par\ +t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 +F .228(to the e)108 554.4 R .228(xpansion of the special parameters)-.15 F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228 -(Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728 -(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 650.4 +(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 +(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 566.4 S .886(pands to the length of ${).15 F F2(name)A F0([)A F2(subscript)A F0 3.386(]}. If)B F2(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) 3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .462(ments in the array)108 662.4 -R 5.462(.R)-.65 G .462(eferencing an array v)-5.462 F .463 -(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .463 -(lent to referencing the array).25 F(with a subscript of 0.)108 674.4 Q -.168(An array v)108 691.2 R .168 +(xpansion is the number of ele-)-.15 F .463(ments in the array)108 578.4 +R 5.463(.R)-.65 G .463(eferencing an array v)-5.463 F .462 +(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .462 +(lent to referencing the array).25 F .233(with a subscript of 0.)108 +590.4 R .233(If the)5.233 F F2(subscript)3.073 E F0 .233 +(used to reference an element of an inde)3.413 F -.15(xe)-.15 G 2.733 +(da).15 G .233(rray e)-2.733 F -.25(va)-.25 G .233(luates to a num-).25 +F .617(ber less than zero, it is interpreted as relati)108 602.4 R .917 +-.15(ve t)-.25 H 3.117(oo).15 G .616(ne greater than the maximum inde) +-3.117 F 3.116(xo)-.15 G 3.116(ft)-3.116 G .616(he array)-3.116 F 3.116 +(,s)-.65 G 3.116(on)-3.116 G -.15(eg)-3.116 G(-).15 E(ati)108 614.4 Q .3 +-.15(ve i)-.25 H(ndices count back from the end of the array).15 E 2.5 +(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(eferences the last element.)-2.5 E .168(An array v)108 631.2 R .168 (ariable is considered set if a subscript has been assigned a v)-.25 F 2.668(alue. The)-.25 F .168(null string is a v)2.668 F .168(alid v)-.25 -F(alue.)-.25 E(The)108 708 Q F1(unset)2.766 E F0 -.2(bu)2.766 G .267 -(iltin is used to destro).2 F 2.767(ya)-.1 G(rrays.)-2.767 E F1(unset) -5.267 E F2(name)2.767 E F0([)A F2(subscript)A F0 2.767(]d)C(estro)-2.767 -E .267(ys the array element at inde)-.1 F(x)-.15 E F2(sub-)2.767 E -(script)108 720 Q F0 6.205(.C)C 1.205(are must be tak)-6.205 F 1.205 -(en to a)-.1 F -.2(vo)-.2 G 1.205(id unw).2 F 1.205(anted side ef)-.1 F -1.204(fects caused by pathname e)-.25 F(xpansion.)-.15 E F1(unset)6.204 -E F2(name)3.704 E F0(,)A(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 -E(17)185.955 E 0 Cg EP -%%Page: 18 18 +F(alue.)-.25 E .418(It is possible to obtain the k)108 648 R -.15(ey)-.1 +G 2.918(s\().15 G .418(indices\) of an array as well as the v)-2.918 F +2.917(alues. ${)-.25 F F1(!)A F2(name)A F0([)A F2(@)A F0 .417(]} and ${) +B F1(!)A F2(name)A F0([)A F2(*)A F0(]})A -.15(ex)108 660 S .749 +(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name) +3.249 E F0 5.749(.T)C .75 +(he treatment when in double quotes is similar to)-5.749 F(the e)108 672 +Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5 E F2 +(*)2.5 E F0(within double quotes.)2.5 E(The)108 688.8 Q F1(unset)2.767 E +F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G +(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A +F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) +-.15 E F2(sub-)2.766 E(script)108 700.8 Q F0 6.318(.N)C -2.25 -.15(eg a) +-6.318 H(ti).15 E 1.618 -.15(ve s)-.25 H 1.318(ubscripts to inde).15 F +-.15(xe)-.15 G 3.818(da).15 G 1.319 +(rrays are interpreted as described abo)-3.818 F -.15(ve)-.15 G 6.319 +(.C).15 G 1.319(are must be tak)-6.319 F 1.319(en to)-.1 F -.2(avo)108 +712.8 S .298(id unw).2 F .298(anted side ef)-.1 F .298 +(fects caused by pathname e)-.25 F(xpansion.)-.15 E F1(unset)5.298 E F2 +(name)2.797 E F0 2.797(,w)C(here)-2.797 E F2(name)2.797 E F0 .297 +(is an array)2.797 F 2.797(,o)-.65 G(r)-2.797 E F1(unset)2.797 E F2 +(name)108 724.8 Q F0([)A F2(subscript)A F0(], where)A F2(subscript)2.5 E +F0(is)2.5 E F1(*)2.5 E F0(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E +-.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(18)190.95 E 0 Cg EP +%%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(where)108 84 Q/F1 10/Times-Italic@0 SF(name)2.5 E F0(is an array) -2.5 E 2.5(,o)-.65 G(r)-2.5 E/F2 10/Times-Bold@0 SF(unset)2.5 E F1(name) -2.5 E F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E F0(is)2.5 E -F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G -2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108 100.8 Q F2(declar) -3.573 E(e)-.18 E F0(,)A F2(local)3.573 E F0 3.573(,a)C(nd)-3.573 E F2 --.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073 -(iltins each accept a).2 F F23.573 E F0 1.073 -(option to specify an inde)3.573 F -.15(xe)-.15 G 3.574(da).15 G 1.074 -(rray and a)-3.574 F F23.574 E F0 .339 -(option to specify an associati)108 112.8 R .638 -.15(ve a)-.25 H(rray) -.15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) --2.838 F F22.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) -5.338 E F2 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 -(accepts a)108 124.8 R F22.941 E F0 .441 +-.35 E(The)108 84 Q/F1 10/Times-Bold@0 SF(declar)3.573 E(e)-.18 E F0(,)A +F1(local)3.573 E F0 3.573(,a)C(nd)-3.573 E F1 -.18(re)3.573 G(adonly).18 +E F0 -.2(bu)3.573 G 1.073(iltins each accept a).2 F F13.573 E F0 +1.073(option to specify an inde)3.573 F -.15(xe)-.15 G 3.574(da).15 G +1.074(rray and a)-3.574 F F13.574 E F0 .339 +(option to specify an associati)108 96 R .638 -.15(ve a)-.25 H(rray).15 +E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) +-2.838 F F12.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) +5.338 E F1 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 +(accepts a)108 108 R F12.941 E F0 .441 (option to assign a list of w)2.941 F .441 (ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he) --5.441 E F2(set)2.941 E F0(and)2.941 E F2(declar)2.941 E(e)-.18 E F0 -.2 -(bu)108 136.8 S(iltins display array v).2 E(alues in a w)-.25 E -(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95 -/Times-Bold@0 SF(EXP)72 153.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 165.6 R 3.26 +-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2 +(bu)108 120 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F2 10.95 +/Times-Bold@0 SF(EXP)72 136.8 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 148.8 R 3.26 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76 -(inds of)-3.26 F -.15(ex)108 177.6 S .369(pansion performed:).15 F F1 -(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369(tilde e) -2.869 F(xpansion)-.2 E F0(,).24 E F1(par)2.869 E .369 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .37 -(command sub-)2.869 F(stitution)108 189.6 Q F0(,).24 E F1(arithmetic e) -2.5 E(xpansion)-.2 E F0(,).24 E F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 -E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)2.5 E(xpansion)-.2 E F0(.).24 -E .471(The order of e)108 206.4 R .471(xpansions is: brace e)-.15 F .471 -(xpansion, tilde e)-.15 F .471(xpansion, parameter)-.15 F 2.971(,v)-.4 G -.47(ariable and arithmetic e)-3.221 F(xpansion)-.15 E -(and command substitution \(done in a left-to-right f)108 218.4 Q -(ashion\), w)-.1 E(ord splitting, and pathname e)-.1 E(xpansion.)-.15 E -(On systems that can support it, there is an additional e)108 235.2 Q -(xpansion a)-.15 E -.25(va)-.2 G(ilable:).25 E F1(pr)2.5 E -(ocess substitution)-.45 E F0(.)A 1.486(Only brace e)108 252 R 1.486 -(xpansion, w)-.15 F 1.486(ord splitting, and pathname e)-.1 F 1.487 +(inds of)-3.26 F -.15(ex)108 160.8 S .369(pansion performed:).15 F/F3 10 +/Times-Italic@0 SF(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 +E F3 .369(tilde e)2.869 F(xpansion)-.2 E F0(,).24 E F3(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F3 .37 +(command sub-)2.869 F(stitution)108 172.8 Q F0(,).24 E F3(arithmetic e) +2.5 E(xpansion)-.2 E F0(,).24 E F3(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 +E F0 2.5(,a).22 G(nd)-2.5 E F3(pathname e)2.5 E(xpansion)-.2 E F0(.).24 +E .419(The order of e)108 189.6 R .419(xpansions is: brace e)-.15 F .418 +(xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F .418 +(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 201.6 S +.195(pansion, and command substitution \(done in a left-to-right f).15 F +.196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-) +-.15 E(sion.)108 213.6 Q .257 +(On systems that can support it, there is an additional e)108 230.4 R +.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F3(pr)2.757 E .257 +(ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2 +E(formed at the same time as tilde, parameter)108 242.4 Q 2.5(,v)-.4 G +(ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) +-.15 E 1.486(Only brace e)108 259.2 R 1.486(xpansion, w)-.15 F 1.486 +(ord splitting, and pathname e)-.1 F 1.487 (xpansion can change the number of w)-.15 F 1.487(ords of the)-.1 F -.15 -(ex)108 264 S 1.165(pansion; other e).15 F 1.165(xpansions e)-.15 F +(ex)108 271.2 S 1.165(pansion; other e).15 F 1.165(xpansions e)-.15 F 1.165(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 (ord. The)-.1 F 1.164(only e)3.665 F 1.164(xceptions to this are the) --.15 F -.15(ex)108 276 S(pansions of ").15 E F2($@)A F0 2.5("a)C(nd ") --2.5 E F2(${)A F1(name)A F2([@]})A F0 2.5("a)C 2.5(se)-2.5 G +-.15 F -.15(ex)108 283.2 S(pansions of ").15 E F1($@)A F0 2.5("a)C(nd ") +-2.5 E F1(${)A F3(name)A F1([@]})A F0 2.5("a)C 2.5(se)-2.5 G (xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 -SF -.666(PA)2.5 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2 -(Brace Expansion)87 292.8 Q F1(Br)108.58 304.8 Q .606(ace e)-.15 F -(xpansion)-.2 E F0 .606 +SF -.666(PA)2.5 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1 +(Brace Expansion)87 300 Q F3(Br)108.58 312 Q .606(ace e)-.15 F(xpansion) +-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 316.8 Q F1 .415 -(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 +.606(This mechanism is similar)5.606 F(to)108 324 Q F3 .415(pathname e) +2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .151(form of an optional)108 328.8 R F1(pr)2.651 E(eamble) +(he)-2.915 E .151(form of an optional)108 336 R F3(pr)2.651 E(eamble) -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 340.8 R -.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G -.563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659 -(contained within the braces, and the postscript is then appended to ea\ -ch resulting string, e)108 352.8 R .659(xpanding left to)-.15 F(right.) -108 364.8 Q .719(Brace e)108 381.6 R .719(xpansions may be nested.)-.15 -F .719(The results of each e)5.719 F .719 +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 348 R .563 +(wed by an optional)-.25 F F3(postscript)3.063 E F0 5.563(.T).68 G .563 +(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659(co\ +ntained within the braces, and the postscript is then appended to each \ +resulting string, e)108 360 R .659(xpanding left to)-.15 F(right.)108 +372 Q .719(Brace e)108 388.8 R .719(xpansions may be nested.)-.15 F .719 +(The results of each e)5.719 F .719 (xpanded string are not sorted; left to right order is)-.15 F(preserv) -108 393.6 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0 -(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.242(As) -108 410.4 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 -(es the form)-.1 F F2({)3.242 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A -F2(]})A F0 3.242(,w)C(here)-3.242 E F1(x)3.242 E F0(and)3.243 E F1(y) +108 400.8 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0 +(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.242(As) +108 417.6 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 +(es the form)-.1 F F1({)3.242 E F3(x)A F1(..)A F3(y)A F1([..)A F3(incr)A +F1(]})A F0 3.242(,w)C(here)-3.242 E F3(x)3.242 E F0(and)3.243 E F3(y) 3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,) --.15 F(and)108 422.4 Q F1(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G +-.15 F(and)108 429.6 Q F3(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G .532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G .532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 (xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108 -434.4 R F1(x)2.577 E F0(and)2.577 E F1(y)2.577 E F0 2.577(,i)C(nclusi) +441.6 R F3(x)2.577 E F0(and)2.577 E F3(y)2.577 E F0 2.577(,i)C(nclusi) -2.577 E -.15(ve)-.25 G 5.077(.S).15 G .077(upplied inte)-5.077 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F1(0)2.577 E F0 .078 +(gers may be pre\214x)-.15 F .077(ed with)-.15 F F3(0)2.577 E F0 .078 (to force each term to ha)2.578 F .378 -.15(ve t)-.2 H(he).15 E .015 -(same width.)108 446.4 R .015(When either)5.015 F F1(x)2.515 E F0(or) -2.515 E F1(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ +(same width.)108 453.6 R .015(When either)5.015 F F3(x)2.515 E F0(or) +2.515 E F3(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 458.4 R +(the same number of digits, zero-padding where necessary)108 465.6 R 6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F -(xpression)-.15 E -.15(ex)108 470.4 S .542(pands to each character le) -.15 F .542(xicographically between)-.15 F F1(x)3.042 E F0(and)3.042 E F1 -(y)3.042 E F0 3.042(,i)C(nclusi)-3.042 E -.15(ve)-.25 G 5.542(.N).15 G -.542(ote that both)-5.542 F F1(x)3.041 E F0(and)3.041 E F1(y)3.041 E F0 -.541(must be of)3.041 F .182(the same type.)108 482.4 R .182 -(When the increment is supplied, it is used as the dif)5.182 F .183 -(ference between each term.)-.25 F .183(The def)5.183 F(ault)-.1 E -(increment is 1 or -1 as appropriate.)108 494.4 Q .582(Brace e)108 511.2 +(xpression)-.15 E -.15(ex)108 477.6 S 1.064(pands to each character le) +.15 F 1.064(xicographically between)-.15 F F3(x)3.564 E F0(and)3.564 E +F3(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G +1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .983 +(that both)108 489.6 R F3(x)3.483 E F0(and)3.483 E F3(y)3.483 E F0 .983 +(must be of the same type.)3.483 F .984 +(When the increment is supplied, it is used as the dif)5.983 F(ference) +-.25 E(between each term.)108 501.6 Q(The def)5 E +(ault increment is 1 or -1 as appropriate.)-.1 E .582(Brace e)108 518.4 R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581 (ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581 (haracters special to other e)-3.081 F(xpansions)-.15 E .015 -(are preserv)108 523.2 R .015(ed in the result.)-.15 F .015 -(It is strictly te)5.015 F(xtual.)-.15 E F2(Bash)5.016 E F0 .016 +(are preserv)108 530.4 R .015(ed in the result.)-.15 F .015 +(It is strictly te)5.015 F(xtual.)-.15 E F1(Bash)5.016 E F0 .016 (does not apply an)2.516 F 2.516(ys)-.15 G .016 -(yntactic interpretation to the con-)-2.516 F(te)108 535.2 Q +(yntactic interpretation to the con-)-2.516 F(te)108 542.4 Q (xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 3.633(Ac)108 552 S 1.133(orrectly-formed brace e)-3.633 F 1.132(\ -xpansion must contain unquoted opening and closing braces, and at least\ - one)-.15 F 3.44(unquoted comma or a v)108 564 R 3.441(alid sequence e) --.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 +-.15 E 3.633(Ac)108 559.2 S 1.133(orrectly-formed brace e)-3.633 F 1.132 +(xpansion must contain unquoted opening and closing braces, and at leas\ +t one)-.15 F 3.44(unquoted comma or a v)108 571.2 R 3.441 +(alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 (ncorrectly formed brace e)-5.941 F 3.441(xpansion is left)-.15 F 2.755 -(unchanged. A)108 576 R F2({)2.755 E F0(or)2.755 E F2(,)2.755 E F0 .255 -(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 +(unchanged. A)108 583.2 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 +.255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 (nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.91 -(sion. T)108 588 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41 +(sion. T)108 595.2 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41 (id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F2(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 600 Q 1.476(This construct is typically used as\ - shorthand when the common pre\214x of the strings to be generated is) -108 616.8 R(longer than in the abo)108 628.8 Q .3 -.15(ve ex)-.15 H -(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 645.6 Q -.65(w,)-.25 -G(dist,b).65 E(ugs})-.2 E(or)108 657.6 Q(cho)144 669.6 Q +F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion.)108 607.2 Q 1.476(This construct is typically used \ +as shorthand when the common pre\214x of the strings to be generated is) +108 624 R(longer than in the abo)108 636 Q .3 -.15(ve ex)-.15 H(ample:) +.15 E(mkdir /usr/local/src/bash/{old,ne)144 652.8 Q -.65(w,)-.25 G +(dist,b).65 E(ugs})-.2 E(or)108 664.8 Q(cho)144 676.8 Q (wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e) --.25 E(x}})-.15 E .618(Brace e)108 686.4 R .618 +-.25 E(x}})-.15 E .618(Brace e)108 693.6 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F -.618(ersions of)-.15 F F2(sh)3.118 E F0(.)A F2(sh)5.618 E F0 .618 +.618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618 (does not treat open-)3.118 F .248 -(ing or closing braces specially when the)108 698.4 R 2.748(ya)-.15 G +(ing or closing braces specially when the)108 705.6 R 2.748(ya)-.15 G .247(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247 -(es them in the output.)-.15 F F2(Bash)5.247 E F0(remo)108 710.4 Q -.15 +(es them in the output.)-.15 F F1(Bash)5.247 E F0(remo)108 717.6 Q -.15 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 -(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F2(sh) -3.53 E F0(as)3.53 E F1(\214le{1,2})108 722.4 Q F0 .515 +(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh) +3.53 E F0(as)3.53 E F3(\214le{1,2})108 729.6 Q F0 .515 (appears identically in the output.)3.015 F .515(The same w)5.515 F .515 -(ord is output as)-.1 F F1 .514(\214le1 \214le2)4.925 F F0 .514(after e) -3.034 F .514(xpansion by)-.15 F F2(bash)3.014 E F0(.)A(GNU Bash-4.2)72 -768 Q(2010 December 28)135.965 E(18)185.955 E 0 Cg EP -%%Page: 19 19 +(ord is output as)-.1 F F3 .514(\214le1 \214le2)4.925 F F0 .514(after e) +3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A(GNU Bash 4.3)72 +768 Q(2014 February 2)141.79 E(19)190.95 E 0 Cg EP +%%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup @@ -2452,9 +2638,9 @@ ith the corresponding element from the directory stack, as it w)108 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) -.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E -.281(these cases, tilde e)108 307.2 R .282(xpansion is also performed.) --.15 F(Consequently)5.282 E 2.782(,o)-.65 G .282 -(ne may use \214le names with tildes in assign-)-2.782 F(ments to)108 +.467(these cases, tilde e)108 307.2 R .467(xpansion is also performed.) +-.15 F(Consequently)5.467 E 2.967(,o)-.65 G .468 +(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 319.2 Q F2 -.666(PA)2.5 G(TH)-.189 E F4(,)A F2(MAILP)2.25 E -.855(AT) -.666 G(H).855 E F4(,)A F0(and)2.25 E F2(CDP)2.5 E -.855(AT)-.666 G(H) .855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E @@ -2479,51 +2665,55 @@ Q 1.189 1.205(is a positional)4.435 F .264 (parameter with more than one digit, or when)144 465.6 R F3(par)4.014 E (ameter)-.15 E F0 .264(is follo)3.494 F .264 -(wed by a character which is not to)-.25 F -(be interpreted as part of its name.)144 477.6 Q .685 -(If the \214rst character of)108 494.4 R F3(par)3.185 E(ameter)-.15 E F0 -.685(is an e)3.185 F .685(xclamation point \()-.15 F F1(!)A F0 .685 -(\), a le)B -.15(ve)-.25 G 3.186(lo).15 G 3.186(fv)-3.186 G .686 -(ariable indirection is introduced.)-3.436 F F1(Bash)108 506.4 Q F0 .106 -(uses the v)2.606 F .106(alue of the v)-.25 F .106 +(wed by a character which is not to)-.25 F 2.676 +(be interpreted as part of its name.)144 477.6 R(The)7.677 E F3(par) +5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo) +5.177 F -.15(ve)-.15 G F1 -.74(PA)144 489.6 S(RAMETERS).74 E F0 2.5(\)o) +C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 +(\).)A .816(If the \214rst character of)108 506.4 R F3(par)3.316 E +(ameter)-.15 E F0 .816(is an e)3.316 F .816(xclamation point \()-.15 F +F1(!)A F0 .816(\), it introduces a le)B -.15(ve)-.25 G 3.316(lo).15 G +3.315(fv)-3.316 G .815(ariable indirection.)-3.565 F F1(Bash)108 518.4 Q +F0 .106(uses the v)2.606 F .106(alue of the v)-.25 F .106 (ariable formed from the rest of)-.25 F F3(par)2.606 E(ameter)-.15 E F0 .106(as the name of the v)2.606 F .106(ariable; this v)-.25 F(ari-)-.25 -E .351(able is then e)108 518.4 R .351(xpanded and that v)-.15 F .352 +E .352(able is then e)108 530.4 R .352(xpanded and that v)-.15 F .351 (alue is used in the rest of the substitution, rather than the v)-.25 F -.352(alue of)-.25 F F3(par)2.852 E(ame-)-.15 E(ter)108 530.4 Q F0 2.52 -(itself. This)2.52 F .02(is kno)2.52 F .02(wn as)-.25 F F3(indir)2.52 E -.02(ect e)-.37 F(xpansion)-.2 E F0 5.019(.T)C .019(he e)-5.019 F .019 -(xceptions to this are the e)-.15 F .019(xpansions of ${)-.15 F F1(!)A -F3(pr)A(e\214x)-.37 E F1(*)A F0 2.519(}a)C(nd)-2.519 E(${)108 542.4 Q F1 -(!)A F3(name)A F0([)A F3(@)A F0 .762(]} described belo)B 4.563 -.65 +.351(alue of)-.25 F F3(par)2.851 E(ame-)-.15 E(ter)108 542.4 Q F0 2.519 +(itself. This)2.519 F .019(is kno)2.519 F .019(wn as)-.25 F F3(indir) +2.519 E .019(ect e)-.37 F(xpansion)-.2 E F0 5.019(.T)C .019(he e)-5.019 +F .02(xceptions to this are the e)-.15 F .02(xpansions of ${)-.15 F F1 +(!)A F3(pr)A(e\214x)-.37 E F1(*)A F0 2.52(}a)C(nd)-2.52 E(${)108 554.4 Q +F1(!)A F3(name)A F0([)A F3(@)A F0 .763(]} described belo)B 4.563 -.65 (w. T)-.25 H .763(he e).65 F .763 (xclamation point must immediately follo)-.15 F 3.263(wt)-.25 G .763 -(he left brace in order to)-3.263 F(introduce indirection.)108 554.4 Q -.334(In each of the cases belo)108 571.2 R -.65(w,)-.25 G F3(wor)3.484 E +(he left brace in order to)-3.263 F(introduce indirection.)108 566.4 Q +.334(In each of the cases belo)108 583.2 R -.65(w,)-.25 G F3(wor)3.484 E (d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 (xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 -F(and arithmetic e)108 583.2 Q(xpansion.)-.15 E .697 -(When not performing substring e)108 600 R .698 -(xpansion, using the forms documented belo)-.15 F -.65(w,)-.25 G F1 -(bash)3.848 E F0 .698(tests for a parameter)3.198 F -(that is unset or null.)108 612 Q(Omitting the colon results in a test \ -only for a parameter that is unset.)5 E(${)108 628.8 Q F3(par)A(ameter) --.15 E F1<3aad>A F3(wor)A(d)-.37 E F0(})A F1 .723(Use Default V)144 -640.8 R(alues)-.92 E F0 5.723(.I)C(f)-5.723 E F3(par)4.473 E(ameter)-.15 -E F0 .723(is unset or null, the e)3.953 F .722(xpansion of)-.15 F F3 -(wor)3.562 E(d)-.37 E F0 .722(is substituted.)3.992 F(Other)5.722 E(-) --.2 E(wise, the v)144 652.8 Q(alue of)-.25 E F3(par)3.75 E(ameter)-.15 E -F0(is substituted.)3.23 E(${)108 664.8 Q F3(par)A(ameter)-.15 E F1(:=)A -F3(wor)A(d)-.37 E F0(})A F1 2.004(Assign Default V)144 676.8 R(alues) --.92 E F0 7.004(.I)C(f)-7.004 E F3(par)5.754 E(ameter)-.15 E F0 2.005 -(is unset or null, the e)5.234 F 2.005(xpansion of)-.15 F F3(wor)4.845 E -(d)-.37 E F0 2.005(is assigned to)5.275 F F3(par)144 688.8 Q(ameter)-.15 -E F0 5.279(.T).73 G .279(he v)-5.279 F .279(alue of)-.25 F F3(par)4.029 -E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .278 +F(and arithmetic e)108 595.2 Q(xpansion.)-.15 E 1.09 +(When not performing substring e)108 612 R 1.089 +(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G +(e.g.,)-3.589 E F1(:-)3.589 E F0(\),)A F1(bash)3.589 E F0 1.089 +(tests for a)3.589 F(parameter that is unset or null.)108 624 Q(Omittin\ +g the colon results in a test only for a parameter that is unset.)5 E +(${)108 640.8 Q F3(par)A(ameter)-.15 E F1<3aad>A F3(wor)A(d)-.37 E F0(}) +A F1 .722(Use Default V)144 652.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 +E F3(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F +.723(xpansion of)-.15 F F3(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 664.8 Q(alue of)-.25 E F3 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 676.8 Q F3 +(par)A(ameter)-.15 E F1(:=)A F3(wor)A(d)-.37 E F0(})A F1 2.005 +(Assign Default V)144 688.8 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F3 +(par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F +2.004(xpansion of)-.15 F F3(wor)4.844 E(d)-.37 E F0 2.004 +(is assigned to)5.274 F F3(par)144 700.8 Q(ameter)-.15 E F0 5.278(.T).73 +G .278(he v)-5.278 F .278(alue of)-.25 F F3(par)4.028 E(ameter)-.15 E F0 +.278(is then substituted.)3.508 F .279 (Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 700.8 Q(ay)-.1 E(.)-.65 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(19)185.955 E 0 Cg EP -%%Page: 20 20 +(eters may not be assigned to in this w)144 712.8 Q(ay)-.1 E(.)-.65 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(20)190.95 E 0 Cg EP +%%Page: 21 21 %%BeginPageSetup BP %%EndPageSetup @@ -2533,9 +2723,9 @@ BP 96 R .535(or if Null or Unset)-.18 F F0 5.535(.I)C(f)-5.535 E F1(par) 4.285 E(ameter)-.15 E F0 .535(is null or unset, the e)3.765 F .535 (xpansion of)-.15 F F1(wor)3.035 E(d)-.37 E F0 .535(\(or a mes-)3.035 F -.662(sage to that ef)144 108 R .662(fect if)-.25 F F1(wor)3.502 E(d)-.37 -E F0 .661(is not present\) is written to the standard error and the she\ -ll, if it is not)3.932 F(interacti)144 120 Q -.15(ve)-.25 G 2.5(,e).15 G +.661(sage to that ef)144 108 R .661(fect if)-.25 F F1(wor)3.501 E(d)-.37 +E F0 .662(is not present\) is written to the standard error and the she\ +ll, if it is not)3.931 F(interacti)144 120 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,)-2.65 F(the v)2.5 E(alue of)-.25 E F1(par)2.5 E (ameter)-.15 E F0(is substituted.)2.5 E(${)108 132 Q F1(par)A(ameter) -.15 E F2(:+)A F1(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 144 R .745 @@ -2545,3454 +2735,3603 @@ ll, if it is not)3.932 F(interacti)144 120 Q -.15(ve)-.25 G 2.5(,e).15 G (xpan-)-.15 E(sion of)144 156 Q F1(wor)2.84 E(d)-.37 E F0 (is substituted.)3.27 E(${)108 168 Q F1(par)A(ameter)-.15 E F2(:)A F1 (of)A(fset)-.18 E F0(})A(${)108 180 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .797(Substring Expansion) -144 192 R F0 5.797(.E)C .796(xpands to up to)-5.797 F F1(length)3.296 E -F0 .796(characters of)3.296 F F1(par)3.296 E(ameter)-.15 E F0 .796 -(starting at the character)3.296 F .228(speci\214ed by)144 204 R F1(of) -2.728 E(fset)-.18 E F0 5.228(.I)C(f)-5.228 E F1(length)2.728 E F0 .229 -(is omitted, e)2.729 F .229(xpands to the substring of)-.15 F F1(par) -2.729 E(ameter)-.15 E F0 .229(starting at the char)2.729 F(-)-.2 E .433 -(acter speci\214ed by)144 216 R F1(of)2.933 E(fset)-.18 E F0(.)A F1 -(length)5.433 E F0(and)2.933 E F1(of)2.933 E(fset)-.18 E F0 .433 -(are arithmetic e)2.933 F .433(xpressions \(see)-.15 F/F3 9/Times-Bold@0 -SF .432(ARITHMETIC EV)2.933 F(ALU-)-1.215 E -.855(AT)144 228 S(ION).855 -E F0(belo)2.925 E 3.175(w\). If)-.25 F F1(of)3.175 E(fset)-.18 E F0 -.25 -(eva)3.175 G .676(luates to a number less than zero, the v).25 F .676 -(alue is used as an of)-.25 F .676(fset from)-.25 F .103 -(the end of the v)144 240 R .103(alue of)-.25 F F1(par)2.603 E(ameter) --.15 E F0 5.103(.I)C(f)-5.103 E F1(length)2.603 E F0 -.25(eva)2.603 G -.103(luates to a number less than zero, and).25 F F1(par)2.602 E(ameter) --.15 E F0(is)2.602 E(not)144 252 Q F2(@)3.642 E F0 1.142 -(and not an inde)3.642 F -.15(xe)-.15 G 3.642(do).15 G 3.642(ra)-3.642 G -(ssociati)-3.642 E 1.443 -.15(ve a)-.25 H(rray).15 E 3.643(,i)-.65 G -3.643(ti)-3.643 G 3.643(si)-3.643 G 1.143(nterpreted as an of)-3.643 F -1.143(fset from the end of the)-.25 F -.25(va)144 264 S .038(lue of).25 -F F1(par)2.538 E(ameter)-.15 E F0 .037 -(rather than a number of characters, and the e)2.538 F .037 -(xpansion is the characters between)-.15 F .073(the tw)144 276 R 2.573 -(oo)-.1 G -.25(ff)-2.573 G 2.573(sets. If).25 F F1(par)2.573 E(ameter) --.15 E F0(is)2.574 E F2(@)2.574 E F0 2.574(,t)C .074(he result is)-2.574 -F F1(length)2.574 E F0 .074(positional parameters be)2.574 F .074 -(ginning at)-.15 F F1(of)2.574 E(fset)-.18 E F0 5.074(.I)C(f)-5.074 E F1 -(par)144 288 Q(ameter)-.15 E F0 .205(is an inde)2.705 F -.15(xe)-.15 G -2.705(da).15 G .205(rray name subscripted by @ or *, the result is the) --2.705 F F1(length)2.705 E F0 .205(members of the)2.705 F .696(array be) -144 300 R .697(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1 -(of)A(fset)-.18 E F0 3.197(]}. A)B(ne)3.197 E -.05(ga)-.15 G(ti).05 E --.15(ve)-.25 G F1(of)3.347 E(fset)-.18 E F0 .697(is tak)3.197 F .697 -(en relati)-.1 F .997 -.15(ve t)-.25 H 3.197(oo).15 G .697 -(ne greater than)-3.197 F 1.404(the maximum inde)144 312 R 3.903(xo)-.15 -G 3.903(ft)-3.903 G 1.403(he speci\214ed array)-3.903 F 6.403(.S)-.65 G -1.403(ubstring e)-6.403 F 1.403(xpansion applied to an associati)-.15 F -1.703 -.15(ve a)-.25 H(rray).15 E 1.294(produces unde\214ned results.) -144 324 R 1.294(Note that a ne)6.294 F -.05(ga)-.15 G(ti).05 E 1.595 --.15(ve o)-.25 H -.25(ff).15 G 1.295 -(set must be separated from the colon by at).25 F .959 -(least one space to a)144 336 R -.2(vo)-.2 G .959 -(id being confused with the :- e).2 F 3.458(xpansion. Substring)-.15 F -(inde)3.458 E .958(xing is zero-based)-.15 F .414 -(unless the positional parameters are used, in which case the inde)144 -348 R .415(xing starts at 1 by def)-.15 F 2.915(ault. If)-.1 F F1(of) -2.915 E(f-)-.18 E(set)144 360 Q F0 -(is 0, and the positional parameters are used,)2.5 E F2($0)2.5 E F0 -(is pre\214x)2.5 E(ed to the list.)-.15 E(${)108 376.8 Q F2(!)A F1(pr)A -(e\214x)-.37 E F2(*)A F0(})A(${)108 388.8 Q F2(!)A F1(pr)A(e\214x)-.37 E -F2(@)A F0(})A F2 .085(Names matching pr)144 400.8 R(e\214x)-.18 E F0 -5.085(.E)C .084(xpands to the names of v)-5.085 F .084 +(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion) +144 192 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E +F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E +(ameter)-.15 E F0 .002(starting at the)2.502 F 1.082 +(character speci\214ed by)144 204 R F1(of)3.582 E(fset)-.18 E F0 6.082 +(.I)C(f)-6.082 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E +F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15 +G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.581 E F2(*) +3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 216 Q +1.022 -.15(ve a)-.25 H .722(rray name, the results dif).15 F .722 +(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F1(length) +3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .043 +(substring of the v)144 228 R .043(alue of)-.25 F F1(par)2.543 E(ameter) +-.15 E F0 .042(starting at the character speci\214ed by)2.543 F F1(of) +2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the)-.15 F +.846(end of the v)144 240 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 +E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .847 +(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV)3.347 F +(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 252 Q(w\).)-.25 E +(If)144 276 Q F1(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 G .529 +(luates to a number less than zero, the v).25 F .529 +(alue is used as an of)-.25 F .529(fset in characters from the)-.25 F +.045(end of the v)144 288 R .045(alue of)-.25 F F1(par)2.546 E(ameter) +-.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G +.046(luates to a number less than zero, it is interpreted as an).25 F +(of)144 300 Q .203(fset in characters from the end of the v)-.25 F .202 +(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .202 +(rather than a number of characters, and)2.702 F .557(the e)144 312 R +.557(xpansion is the characters between)-.15 F F1(of)3.057 E(fset)-.18 E +F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga) +-.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25 +F(separated from the colon by at least one space to a)144 324 Q -.2(vo) +-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 348 Q F1(par)2.959 E(ameter)-.15 E F0(is)2.959 E +F2(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F1(length)2.959 E +F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F1(of) +2.958 E(fset)-.18 E F0 5.458(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 +(ve)-.25 G F1(of)3.108 E(fset)-.18 E F0 .095(is tak)144 360 R .095 +(en relati)-.1 F .396 -.15(ve t)-.25 H 2.596(oo).15 G .096 +(ne greater than the greatest positional parameter)-2.596 F 2.596(,s)-.4 +G 2.596(oa)-2.596 G 2.596(no)-2.596 G -.25(ff)-2.596 G .096(set of -1 e) +.25 F -.25(va)-.25 G .096(luates to).25 F 1.322 +(the last positional parameter)144 372 R 6.322(.I)-.55 G 3.822(ti)-6.322 +G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if)-3.972 F +F1(length)3.822 E F0 -.25(eva)3.822 G 1.322 +(luates to a number less than).25 F(zero.)144 384 Q(If)144 408 Q F1(par) +3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G 3.014 +(da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014 +F F1(length)3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 +420 R 1.082(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A +(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15 +(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081 +(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater) +-3.581 F 1.079(than the maximum inde)144 432 R 3.579(xo)-.15 G 3.579(ft) +-3.579 G 1.079(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti) +-6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 +F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F +(number less than zero.)144 444 Q(Substring e)144 468 Q +(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H +(rray produces unde\214ned results.).15 E 1.931(Substring inde)144 492 R +1.931(xing is zero-based unless the positional parameters are used, in \ +which case the)-.15 F(inde)144 504 Q .306(xing starts at 1 by def)-.15 F +2.806(ault. If)-.1 F F1(of)2.807 E(fset)-.18 E F0 .307 +(is 0, and the positional parameters are used,)2.807 F F2($0)2.807 E F0 +.307(is pre\214x)2.807 F(ed)-.15 E(to the list.)144 516 Q(${)108 532.8 Q +F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 544.8 Q F2(!)A F1(pr)A +(e\214x)-.37 E F2(@)A F0(})A F2 .085(Names matching pr)144 556.8 R +(e\214x)-.18 E F0 5.085(.E)C .084(xpands to the names of v)-5.085 F .084 (ariables whose names be)-.25 F .084(gin with)-.15 F F1(pr)2.584 E (e\214x)-.37 E F0 2.584(,s)C(epa-)-2.584 E .257 -(rated by the \214rst character of the)144 412.8 R F3(IFS)2.757 E F0 +(rated by the \214rst character of the)144 568.8 R F3(IFS)2.757 E F0 .257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.758 E F0 .258 (is used and the e)2.758 F .258(xpansion appears)-.15 F -(within double quotes, each v)144 424.8 Q(ariable name e)-.25 E -(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 441.6 Q F2(!)A F1(name) -A F0([)A F1(@)A F0(]})A(${)108 453.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 -(]})A F2 2.036(List of array k)144 465.6 R(eys)-.1 E F0 7.036(.I)C(f) +(within double quotes, each v)144 580.8 Q(ariable name e)-.25 E +(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 597.6 Q F2(!)A F1(name) +A F0([)A F1(@)A F0(]})A(${)108 609.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 +(]})A F2 2.036(List of array k)144 621.6 R(eys)-.1 E F0 7.036(.I)C(f) -7.036 E F1(name)4.536 E F0 2.036(is an array v)4.536 F 2.036 (ariable, e)-.25 F 2.036(xpands to the list of array indices \(k)-.15 F --.15(ey)-.1 G(s\)).15 E .595(assigned in)144 477.6 R F1(name)3.095 E F0 +-.15(ey)-.1 G(s\)).15 E .595(assigned in)144 633.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1(name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G .595(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596 -(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 489.6 Q F0 +(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 645.6 Q F0 (is used and the e)2.5 E(xpansion appears within double quotes, each k) -.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 -506.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 518.4 S .471 +662.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 674.4 S .471 (rameter length).1 F F0 5.471(.T)C .471 (he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par) 2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par) -4.22 E(ame-)-.15 E(ter)144 530.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) +4.22 E(ame-)-.15 E(ter)144 686.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) 3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 (alue substituted is the number of positional parameters.)-.25 F(If) -6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F -(array name subscripted by)144 542.4 Q F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E -F0 2.5(,t)C(he v)-2.5 E -(alue substituted is the number of elements in the array)-.25 E(.)-.65 E -(${)108 559.2 Q F1(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A -(${)108 571.2 Q F1(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A -F2(Remo)144 583.2 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196 +6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349 +(array name subscripted by)144 698.4 R F2(*)2.849 E F0(or)2.849 E F2(@) +2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 +(alue substituted is the number of elements in the array)-.25 F 5.348 +(.I)-.65 G(f)-5.348 E F1(par)145.25 710.4 Q(ameter)-.15 E F0 .455 +(is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 +(rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 +-.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 +(hat number is interpreted)-2.956 F .973(as relati)144 722.4 R 1.273 +-.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) +-3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 +3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 +-.15(ve i)-.25 H .972(ndices count back).15 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(21)190.95 E 0 Cg EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E(from the end of the array)144 84 Q 2.5(,a)-.65 G(nd an inde)-2.5 +E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(eferences the last element.)-2.5 E(${)108 100.8 Q/F1 10/Times-Italic@0 +SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(#)A F1(wor)A(d)-.37 E F0(}) +A(${)108 112.8 Q F1(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A +F2(Remo)144 124.8 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196 (e\214x patter)-.18 F(n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E (d)-.37 E F0 1.196(is e)4.466 F 1.196 -(xpanded to produce a pattern just as in path-)-.15 F .151(name e)144 -595.2 R 2.651(xpansion. If)-.15 F .152(the pattern matches the be)2.652 +(xpanded to produce a pattern just as in path-)-.15 F .152(name e)144 +136.8 R 2.652(xpansion. If)-.15 F .152(the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152(alue of)-.25 F F1(par)2.652 E -(ameter)-.15 E F0 2.652(,t).73 G .152(hen the result of)-2.652 F 1.4 -(the e)144 607.2 R 1.4(xpansion is the e)-.15 F 1.4(xpanded v)-.15 F 1.4 +(ameter)-.15 E F0 2.652(,t).73 G .151(hen the result of)-2.652 F 1.4 +(the e)144 148.8 R 1.4(xpansion is the e)-.15 F 1.4(xpanded v)-.15 F 1.4 (alue of)-.25 F F1(par)5.15 E(ameter)-.15 E F0 1.4 (with the shortest matching pattern \(the `)4.63 F(`)-.74 E F2(#)A F0 --.74('')C .281(case\) or the longest matching pattern \(the `)144 619.2 +-.74('')C .281(case\) or the longest matching pattern \(the `)144 160.8 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.).74 F(If) 5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E F0(or) -2.781 E F2(*)2.782 E F0 2.782(,t)C .282(he pattern)-2.782 F(remo)144 -631.2 Q -.25(va)-.15 G 3.274(lo).25 G .774 +2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo)144 +172.8 Q -.25(va)-.15 G 3.274(lo).25 G .774 (peration is applied to each positional parameter in turn, and the e) --3.274 F .774(xpansion is the resul-)-.15 F .401(tant list.)144 643.2 R -(If)5.401 E F1(par)4.151 E(ameter)-.15 E F0 .401(is an array v)3.631 F +-3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 184.8 R +(If)5.402 E F1(par)4.152 E(ameter)-.15 E F0 .401(is an array v)3.632 F .401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*) -2.901 E F0 2.902(,t)C .402(he pattern remo)-2.902 F -.25(va)-.15 G 2.902 -(lo).25 G(peration)-2.902 E -(is applied to each member of the array in turn, and the e)144 655.2 Q -(xpansion is the resultant list.)-.15 E(${)108 672 Q F1(par)A(ameter) --.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 684 Q F1(par)A(ameter)-.15 -E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 696 Q .347 -.1(ve m)-.1 H -.147(atching suf\214x patter).1 F(n)-.15 E F0 5.147(.T)C(he)-5.147 E F1 -(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F .146 -(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 708 -S 3.088(pansion. If).15 F .588 +2.901 E F0 2.901(,t)C .401(he pattern remo)-2.901 F -.25(va)-.15 G 2.901 +(lo).25 G(peration)-2.901 E +(is applied to each member of the array in turn, and the e)144 196.8 Q +(xpansion is the resultant list.)-.15 E(${)108 213.6 Q F1(par)A(ameter) +-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 225.6 Q F1(par)A(ameter) +-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 237.6 Q .346 -.1 +(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he) +-5.146 E F1(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 +249.6 S 3.088(pansion. If).15 F .588 (the pattern matches a trailing portion of the e)3.088 F .588(xpanded v) -.15 F .588(alue of)-.25 F F1(par)3.088 E(ameter)-.15 E F0 3.088(,t).73 -G .588(hen the)-3.088 F .226(result of the e)144 720 R .226 +G .588(hen the)-3.088 F .226(result of the e)144 261.6 R .226 (xpansion is the e)-.15 F .226(xpanded v)-.15 F .226(alue of)-.25 F F1 (par)3.976 E(ameter)-.15 E F0 .226 -(with the shortest matching pattern \(the)3.456 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(20)185.955 E 0 Cg EP -%%Page: 21 21 +(with the shortest matching pattern \(the)3.456 F -.74(``)144 273.6 S F2 +(%).74 E F0 1.522 -.74('' c)D .042 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0 +1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E F1(par)3.792 E +(ameter)-.15 E F0(is)3.272 E F2(@)2.541 E F0(or)2.541 E F2(*)2.541 E F0 +2.541(,t)C(he)-2.541 E .44(pattern remo)144 285.6 R -.25(va)-.15 G 2.94 +(lo).25 G .441 +(peration is applied to each positional parameter in turn, and the e) +-2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 297.6 R(If) +5.241 E F1(par)3.991 E(ameter)-.15 E F0 .241(is an array v)3.471 F .241 +(ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.74 E F2(*)2.74 E +F0 2.74(,t)C .24(he pattern remo)-2.74 F -.25(va)-.15 G 2.74(lo).25 G +(per)-2.74 E(-)-.2 E +(ation is applied to each member of the array in turn, and the e)144 +309.6 Q(xpansion is the resultant list.)-.15 E(${)108 326.4 Q F1(par)A +(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa) +144 338.4 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C +(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 +(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E +(sion.)144 350.4 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 +(is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) +3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033 +(alue is replaced with)-.25 F F1(string)144 362.4 Q F0 5.16(.I)C(f)-5.16 +E F1(pattern)2.66 E F0(be)2.66 E .16(gins with)-.15 F F2(/)2.66 E F0 +2.66(,a)C .161(ll matches of)-2.66 F F1(pattern)2.661 E F0 .161 +(are replaced with)2.661 F F1(string)2.661 E F0 5.161(.N)C .161 +(ormally only the)-5.161 F .807(\214rst match is replaced.)144 374.4 R +(If)5.807 E F1(pattern)3.307 E F0(be)3.307 E .807(gins with)-.15 F F2(#) +3.307 E F0 3.306(,i)C 3.306(tm)-3.306 G .806(ust match at the be)-3.306 +F .806(ginning of the e)-.15 F(xpanded)-.15 E -.25(va)144 386.4 S .62 +(lue of).25 F F1(par)3.12 E(ameter)-.15 E F0 5.62(.I)C(f)-5.62 E F1 +(pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F F2(%)3.12 E F0 3.12 +(,i)C 3.121(tm)-3.12 G .621(ust match at the end of the e)-3.121 F .621 +(xpanded v)-.15 F .621(alue of)-.25 F F1(par)144 398.4 Q(ameter)-.15 E +F0 6.254(.I)C(f)-6.254 E F1(string)3.754 E F0 1.253(is null, matches of) +3.753 F F1(pattern)3.753 E F0 1.253(are deleted and the)3.753 F F2(/) +3.753 E F0(follo)3.753 E(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be) +3.753 F 2.678(omitted. If)144 410.4 R F1(par)3.928 E(ameter)-.15 E F0 +(is)3.408 E F2(@)2.678 E F0(or)2.678 E F2(*)2.679 E F0 2.679(,t)C .179 +(he substitution operation is applied to each positional parameter) +-2.679 F .619(in turn, and the e)144 422.4 R .619 +(xpansion is the resultant list.)-.15 F(If)5.619 E F1(par)4.369 E +(ameter)-.15 E F0 .618(is an array v)3.849 F .618 +(ariable subscripted with)-.25 F F2(@)144 434.4 Q F0(or)3.223 E F2(*) +3.223 E F0 3.223(,t)C .723(he substitution operation is applied to each\ + member of the array in turn, and the e)-3.223 F(xpan-)-.15 E +(sion is the resultant list.)144 446.4 Q(${)108 463.2 Q F1(par)A(ameter) +-.15 E F2(^)A F1(pattern)A F0(})A(${)108 475.2 Q F1(par)A(ameter)-.15 E +F2(^^)A F1(pattern)A F0(})A(${)108 487.2 Q F1(par)A(ameter)-.15 E F2(,)A +F1(pattern)A F0(})A(${)108 499.2 Q F1(par)A(ameter)-.15 E F2(,,)A F1 +(pattern)A F0(})A F2 .438(Case modi\214cation)144 511.2 R F0 5.438(.T)C +.438(his e)-5.438 F .437 +(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) +2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 523.2 Q +F0 1.406(is e)3.906 F 1.407 +(xpanded to produce a pattern just as in pathname e)-.15 F 3.907 +(xpansion. Each)-.15 F 1.407(character in the)3.907 F -.15(ex)144 535.2 +S 1.232(panded v).15 F 1.232(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E +F0 1.232(is tested ag)3.732 F(ainst)-.05 E F1(pattern)3.732 E F0 3.732 +(,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144 +547.2 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 +(pattern should not attempt to match more than one character)2.924 F +5.424(.T)-.55 G(he)-5.424 E F2(^)2.924 E F0 .424(operator con-)2.924 F +-.15(ve)144 559.2 S .61(rts lo).15 F .61(wercase letters matching)-.25 F +F1(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F2(,)3.11 E F0 .61 +(operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F +1.547(letters to lo)144 571.2 R 4.047(wercase. The)-.25 F F2(^^)4.047 E +F0(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F +-.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded) +-.15 E -.25(va)144 583.2 S .634(lue; the).25 F F2(^)3.134 E F0(and)3.134 +E F2(,)3.134 E F0 -.15(ex)3.134 G .634(pansions match and con).15 F -.15 +(ve)-.4 G .633(rt only the \214rst character in the e).15 F .633 +(xpanded v)-.15 F 3.133(alue. If)-.25 F F1(pattern)144 595.2 Q F0 .78 +(is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F2(?)A F0 3.28(,w)C +.78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78 +(.I)-.55 G(f)-5.78 E F1(par)4.53 E(ameter)-.15 E F0(is)4.01 E F2(@)3.28 +E F0(or)3.28 E F2(*)3.28 E F0(,)A .582(the case modi\214cation operatio\ +n is applied to each positional parameter in turn, and the e)144 607.2 R +(xpansion)-.15 E .468(is the resultant list.)144 619.2 R(If)5.468 E F1 +(par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468 +(ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.969 E +F0 2.969(,t)C .469(he case modi\214ca-)-2.969 F .005(tion operation is \ +applied to each member of the array in turn, and the e)144 631.2 R .005 +(xpansion is the resultant list.)-.15 F F2(Command Substitution)87 648 Q +F1 1.697(Command substitution)108 660 R F0(allo)4.197 E 1.697 +(ws the output of a command to replace the command name.)-.25 F 1.698 +(There are tw)6.698 F(o)-.1 E(forms:)108 672 Q F2($\()144 688.8 Q F1 +(command)A F2(\))1.666 E F0(or)108 700.8 Q F2<92>144 712.8 Q F1(command) +A F2<92>A(Bash)108 729.6 Q F0 1.709(performs the e)4.209 F 1.709 +(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)4.209 E F0 +1.708(and replacing the command substitution with the)4.208 F +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(22)190.95 E 0 Cg EP +%%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E -.74(``)144 84 S/F1 10/Times-Bold@0 SF(%).74 E F0 1.521 -.74 -('' c)D .042(ase\) or the longest matching pattern \(the `).74 F(`)-.74 -E F1(%%)A F0 1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E/F2 -10/Times-Italic@0 SF(par)3.792 E(ameter)-.15 E F0(is)3.272 E F1(@)2.542 -E F0(or)2.542 E F1(*)2.542 E F0 2.542(,t)C(he)-2.542 E .441 -(pattern remo)144 96 R -.25(va)-.15 G 2.941(lo).25 G .441 -(peration is applied to each positional parameter in turn, and the e) --2.941 F .44(xpansion is the)-.15 F .24(resultant list.)144 108 R(If) -5.24 E F2(par)3.99 E(ameter)-.15 E F0 .24(is an array v)3.47 F .241 -(ariable subscripted with)-.25 F F1(@)2.741 E F0(or)2.741 E F1(*)2.741 E -F0 2.741(,t)C .241(he pattern remo)-2.741 F -.25(va)-.15 G 2.741(lo).25 -G(per)-2.741 E(-)-.2 E -(ation is applied to each member of the array in turn, and the e)144 120 -Q(xpansion is the resultant list.)-.15 E(${)108 136.8 Q F2(par)A(ameter) --.15 E F1(/)A F2(pattern)A F1(/)A F2(string)A F0(})A F1 -.1(Pa)144 148.8 -S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 E F0 6.107(.T)C(he)-6.107 -E F2(pattern)3.607 E F0 1.107(is e)3.607 F 1.106 -(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E -(sion.)144 160.8 Q F2 -.8(Pa)6.033 G -.15(ra).8 G(meter).15 E F0 1.033 -(is e)3.533 F 1.033(xpanded and the longest match of)-.15 F F2(pattern) -3.533 E F0(ag)3.533 E 1.034(ainst its v)-.05 F 1.034 -(alue is replaced with)-.25 F F2(string)144 172.8 Q F0 5.161(.I)C(f) --5.161 E F2(pattern)2.661 E F0(be)2.661 E .161(gins with)-.15 F F1(/) -2.661 E F0 2.661(,a)C .161(ll matches of)-2.661 F F2(pattern)2.661 E F0 -.16(are replaced with)2.661 F F2(string)2.66 E F0 5.16(.N)C .16 -(ormally only the)-5.16 F .806(\214rst match is replaced.)144 184.8 R -(If)5.806 E F2(pattern)3.306 E F0(be)3.306 E .806(gins with)-.15 F F1(#) -3.306 E F0 3.306(,i)C 3.307(tm)-3.306 G .807(ust match at the be)-3.307 -F .807(ginning of the e)-.15 F(xpanded)-.15 E -.25(va)144 196.8 S .621 -(lue of).25 F F2(par)3.121 E(ameter)-.15 E F0 5.621(.I)C(f)-5.621 E F2 -(pattern)3.121 E F0(be)3.121 E .621(gins with)-.15 F F1(%)3.121 E F0 -3.121(,i)C 3.121(tm)-3.121 G .62(ust match at the end of the e)-3.121 F -.62(xpanded v)-.15 F .62(alue of)-.25 F F2(par)144 208.8 Q(ameter)-.15 E -F0 6.253(.I)C(f)-6.253 E F2(string)3.753 E F0 1.253(is null, matches of) -3.753 F F2(pattern)3.753 E F0 1.253(are deleted and the)3.753 F F1(/) -3.753 E F0(follo)3.753 E(wing)-.25 E F2(pattern)3.753 E F0 1.254(may be) -3.754 F 2.679(omitted. If)144 220.8 R F2(par)3.929 E(ameter)-.15 E F0 -(is)3.409 E F1(@)2.679 E F0(or)2.679 E F1(*)2.679 E F0 2.679(,t)C .178 -(he substitution operation is applied to each positional parameter) --2.679 F .618(in turn, and the e)144 232.8 R .619 -(xpansion is the resultant list.)-.15 F(If)5.619 E F2(par)4.369 E -(ameter)-.15 E F0 .619(is an array v)3.849 F .619 -(ariable subscripted with)-.25 F F1(@)144 244.8 Q F0(or)3.224 E F1(*) -3.224 E F0 3.224(,t)C .723(he substitution operation is applied to each\ - member of the array in turn, and the e)-3.224 F(xpan-)-.15 E -(sion is the resultant list.)144 256.8 Q(${)108 273.6 Q F2(par)A(ameter) --.15 E F1(^)A F2(pattern)A F0(})A(${)108 285.6 Q F2(par)A(ameter)-.15 E -F1(^^)A F2(pattern)A F0(})A(${)108 297.6 Q F2(par)A(ameter)-.15 E F1(,)A -F2(pattern)A F0(})A(${)108 309.6 Q F2(par)A(ameter)-.15 E F1(,,)A F2 -(pattern)A F0(})A F1 .437(Case modi\214cation)144 321.6 R F0 5.437(.T)C -.437(his e)-5.437 F .438 -(xpansion modi\214es the case of alphabetic characters in)-.15 F F2(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F2(pattern)144 333.6 Q -F0 .814(is e)3.314 F .813 -(xpanded to produce a pattern just as in pathname e)-.15 F 3.313 -(xpansion. The)-.15 F F1(^)3.313 E F0 .813(operator con)3.313 F -.15(ve) --.4 G(rts).15 E(lo)144 345.6 Q .18(wercase letters matching)-.25 F F2 -(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F1(,)2.681 E F0 .181 -(operator con)2.681 F -.15(ve)-.4 G .181(rts matching uppercase letters) -.15 F .085(to lo)144 357.6 R 2.585(wercase. The)-.25 F F1(^^)2.585 E F0 -(and)2.585 E F1(,,)2.585 E F0 -.15(ex)2.585 G .085(pansions con).15 F --.15(ve)-.4 G .085(rt each matched character in the e).15 F .085 -(xpanded v)-.15 F .085(alue; the)-.25 F F1(^)2.585 E F0(and)144 369.6 Q -F1(,)3.59 E F0 -.15(ex)3.59 G 1.09(pansions match and con).15 F -.15(ve) --.4 G 1.091(rt only the \214rst character in the e).15 F 1.091 -(xpanded v)-.15 F 3.591(alue. If)-.25 F F2(pattern)3.591 E F0(is)3.591 E -1.121(omitted, it is treated lik)144 381.6 R 3.621(ea)-.1 G F1(?)A F0 -3.621(,w)C 1.121(hich matches e)-3.621 F -.15(ve)-.25 G 1.121 -(ry character).15 F 6.12(.I)-.55 G(f)-6.12 E F2(par)4.87 E(ameter)-.15 E -F0(is)4.35 E F1(@)3.62 E F0(or)3.62 E F1(*)3.62 E F0 3.62(,t)C 1.12 -(he case)-3.62 F 1.335(modi\214cation operation is applied to each posi\ -tional parameter in turn, and the e)144 393.6 R 1.335(xpansion is the) --.15 F 1.308(resultant list.)144 405.6 R(If)6.308 E F2(par)5.058 E -(ameter)-.15 E F0 1.308(is an array v)4.538 F 1.308 -(ariable subscripted with)-.25 F F1(@)3.808 E F0(or)3.808 E F1(*)3.808 E -F0 3.808(,t)C 1.308(he case modi\214cation)-3.808 F -(operation is applied to each member of the array in turn, and the e)144 -417.6 Q(xpansion is the resultant list.)-.15 E F1(Command Substitution) -87 434.4 Q F2 1.697(Command substitution)108 446.4 R F0(allo)4.197 E -1.697(ws the output of a command to replace the command name.)-.25 F -1.698(There are tw)6.698 F(o)-.1 E(forms:)108 458.4 Q F1($\()144 475.2 Q -F2(command)A F1(\))1.666 E F0(or)108 487.2 Q F1<92>144 499.2 Q F2 -(command)A F1<92>A(Bash)108 516 Q F0 .02(performs the e)2.52 F .02 -(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.519 E F0 -.019(and replacing the command substitution with the stan-)2.519 F .768 -(dard output of the command, with an)108 528 R 3.268(yt)-.15 G .768 -(railing ne)-3.268 F .768(wlines deleted.)-.25 F .768(Embedded ne)5.768 -F .768(wlines are not deleted, b)-.25 F(ut)-.2 E(the)108 540 Q 3.219(ym) --.15 G .719(ay be remo)-3.219 F -.15(ve)-.15 G 3.219(dd).15 G .719 -(uring w)-3.219 F .719(ord splitting.)-.1 F .719 -(The command substitution)5.719 F F1($\(cat)3.219 E F2(\214le)3.219 E F1 -(\))A F0 .718(can be replaced by the)3.219 F(equi)108 552 Q -.25(va)-.25 -G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1 -(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ - used, backslash retains its literal meaning e)108 568.8 R(xcept)-.15 E -.315(when follo)108 580.8 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1 -<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(h\ -e \214rst backquote not preceded by a backslash terminates the command \ -sub-)-5.315 F 3.886(stitution. When)108 592.8 R 1.386(using the $\() -3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 +-.35 E .749(standard output of the command, with an)108 84 R 3.249(yt) +-.15 G .749(railing ne)-3.249 F .749(wlines deleted.)-.25 F .75 +(Embedded ne)5.749 F .75(wlines are not deleted,)-.25 F -.2(bu)108 96 S +3.197(tt).2 G(he)-3.197 E 3.197(ym)-.15 G .697(ay be remo)-3.197 F -.15 +(ve)-.15 G 3.196(dd).15 G .696(uring w)-3.196 F .696(ord splitting.)-.1 +F .696(The command substitution)5.696 F/F1 10/Times-Bold@0 SF($\(cat) +3.196 E/F2 10/Times-Italic@0 SF(\214le)3.196 E F1(\))A F0 .696 +(can be replaced by)3.196 F(the equi)108 108 Q -.25(va)-.25 G(lent b).25 +E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1(\))A F0(.)A +1.724(When the old-style backquote form of substitution is used, backsl\ +ash retains its literal meaning e)108 124.8 R(xcept)-.15 E .315 +(when follo)108 136.8 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92> +2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(he \ +\214rst backquote not preceded by a backslash terminates the command su\ +b-)-5.315 F 3.886(stitution. When)108 148.8 R 1.386(using the $\()3.886 +F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 (orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G 3.887(pt)-3.887 G 1.387(he com-)-3.887 F -(mand; none are treated specially)108 604.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 621.6 R 2.494 -.8(To n)5.894 H +(mand; none are treated specially)108 160.8 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 177.6 R 2.494 -.8(To n)5.894 H .894(est when using the backquoted form, escape the inner back-).8 F -(quotes with backslashes.)108 633.6 Q .422 -(If the substitution appears within double quotes, w)108 650.4 R .422 +(quotes with backslashes.)108 189.6 Q .422 +(If the substitution appears within double quotes, w)108 206.4 R .422 (ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 662.4 Q F1(Arithmetic Expansion)87 679.2 Q F0 -1.035(Arithmetic e)108 691.2 R 1.035(xpansion allo)-.15 F 1.035 +F(on the results.)108 218.4 Q F1(Arithmetic Expansion)87 235.2 Q F0 +1.035(Arithmetic e)108 247.2 R 1.035(xpansion allo)-.15 F 1.035 (ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F 1.034(xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 703.2 Q(xpansion is:)-.15 E F1($\(\() -144 720 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(GNU Bash-4.2)72 -768 Q(2010 December 28)135.965 E(21)185.955 E 0 Cg EP -%%Page: 22 22 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(The)108 84 Q/F1 10/Times-Italic@0 SF -.2(ex)2.665 G(pr).2 E -(ession)-.37 E F0 .165(is treated as if it were within double quotes, b) -2.905 F .166(ut a double quote inside the parentheses is not)-.2 F 1.075 -(treated specially)108 96 R 6.075(.A)-.65 G 1.074(ll tok)-6.075 F 1.074 -(ens in the e)-.1 F 1.074(xpression under)-.15 F 1.074(go parameter e) --.18 F 1.074(xpansion, string e)-.15 F 1.074(xpansion, command)-.15 F -(substitution, and quote remo)108 108 Q -.25(va)-.15 G 2.5 -(l. Arithmetic).25 F -.15(ex)2.5 G(pansions may be nested.).15 E 1.378 -(The e)108 124.8 R -.25(va)-.25 G 1.378 +(The format for arithmetic e)108 259.2 Q(xpansion is:)-.15 E F1($\(\() +144 276 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 292.8 Q +F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 +(is treated as if it were within double quotes, b)2.905 F .166 +(ut a double quote inside the parentheses is not)-.2 F .231 +(treated specially)108 304.8 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 +(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) +-.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059 +(tution, and quote remo)108 316.8 R -.25(va)-.15 G 3.559(l. The).25 F +1.059(result is treated as the arithmetic e)3.559 F 1.06 +(xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F +-.15(ex)108 328.8 S(pansions may be nested.).15 E 1.379(The e)108 345.6 +R -.25(va)-.25 G 1.378 (luation is performed according to the rules listed belo).25 F 3.878(wu) --.25 G(nder)-3.878 E/F2 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F3 9/Times-Roman@0 SF(.)A F0 -(If)5.879 E F1 -.2(ex)108 136.8 S(pr).2 E(ession)-.37 E F0(is in)2.74 E --.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF(bash)2.5 E F0 -(prints a message indicating f)2.5 E(ailure and no substitution occurs.) --.1 E F4(Pr)87 153.6 Q(ocess Substitution)-.18 E F1(Pr)108 165.6 Q .971 -(ocess substitution)-.45 F F0 .971 -(is supported on systems that support named pipes \()3.471 F F1(FIFOs)A -F0 3.47(\)o)C 3.47(rt)-3.47 G(he)-3.47 E F4(/de)3.47 E(v/fd)-.15 E F0 -.97(method of)3.47 F .021(naming open \214les.)108 177.6 R .021(It tak) -5.021 F .021(es the form of)-.1 F F4(<\()2.521 E F1(list)A F4(\)).833 E -F0(or)2.521 E F4(>\()2.521 E F1(list)A F4(\)).833 E F0 5.021(.T)C .021 -(he process)-5.021 F F1(list)2.521 E F0 .021 -(is run with its input or output con-)2.521 F .059(nected to a)108 189.6 -R F1(FIFO)2.559 E F0 .058(or some \214le in)2.559 F F4(/de)2.558 E(v/fd) +-.25 G(nder)-3.878 E/F3 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F +(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 +(If)5.878 E F2 -.2(ex)108 357.6 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +-.25(va)-.4 G(lid,).25 E F1(bash)2.5 E F0(prints a message indicating f) +2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 374.4 Q +(ocess Substitution)-.18 E F2(Pr)108 386.4 Q .97(ocess substitution)-.45 +F F0 .971(is supported on systems that support named pipes \()3.47 F F2 +(FIFOs)A F0 3.471(\)o)C 3.471(rt)-3.471 G(he)-3.471 E F1(/de)3.471 E +(v/fd)-.15 E F0 .971(method of)3.471 F .022(naming open \214les.)108 +398.4 R .021(It tak)5.022 F .021(es the form of)-.1 F F1(<\()2.521 E F2 +(list)A F1(\)).833 E F0(or)2.521 E F1(>\()2.521 E F2(list)A F1(\)).833 E +F0 5.021(.T)C .021(he process)-5.021 F F2(list)2.521 E F0 .021 +(is run with its input or output con-)2.521 F .058(nected to a)108 410.4 +R F2(FIFO)2.558 E F0 .058(or some \214le in)2.558 F F1(/de)2.558 E(v/fd) -.15 E F0 5.058(.T)C .058(he name of this \214le is passed as an ar) --5.058 F .058(gument to the current com-)-.18 F .13 -(mand as the result of the e)108 201.6 R 2.63(xpansion. If)-.15 F(the) -2.63 E F4(>\()2.63 E F1(list)A F4(\)).833 E F0 .13 -(form is used, writing to the \214le will pro)2.63 F .131 -(vide input for)-.15 F F1(list)2.631 E F0(.)A(If the)108 213.6 Q F4(<\() -2.5 E F1(list)A F4(\)).833 E F0 -(form is used, the \214le passed as an ar)2.5 E -(gument should be read to obtain the output of)-.18 E F1(list)2.5 E F0 -(.)A .897(When a)108 230.4 R -.25(va)-.2 G .896(ilable, process substit\ -ution is performed simultaneously with parameter and v).25 F .896 +-5.058 F .059(gument to the current com-)-.18 F .131 +(mand as the result of the e)108 422.4 R 2.631(xpansion. If)-.15 F(the) +2.63 E F1(>\()2.63 E F2(list)A F1(\)).833 E F0 .13 +(form is used, writing to the \214le will pro)2.63 F .13(vide input for) +-.15 F F2(list)2.63 E F0(.)A(If the)108 434.4 Q F1(<\()2.5 E F2(list)A +F1(\)).833 E F0(form is used, the \214le passed as an ar)2.5 E +(gument should be read to obtain the output of)-.18 E F2(list)2.5 E F0 +(.)A .896(When a)108 451.2 R -.25(va)-.2 G .896(ilable, process substit\ +ution is performed simultaneously with parameter and v).25 F .897 (ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 242.4 Q(xpansion.)-.15 E F4 --.75(Wo)87 259.2 S(rd Splitting).75 E F0 1.142 -(The shell scans the results of parameter e)108 271.2 R 1.143 -(xpansion, command substitution, and arithmetic e)-.15 F 1.143 -(xpansion that)-.15 F(did not occur within double quotes for)108 283.2 Q -F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 -(The shell treats each character of)108 300 R F2(IFS)2.563 E F0 .063 +(command substitution, and arithmetic e)108 463.2 Q(xpansion.)-.15 E F1 +-.75(Wo)87 480 S(rd Splitting).75 E F0 1.143 +(The shell scans the results of parameter e)108 492 R 1.142 +(xpansion, command substitution, and arithmetic e)-.15 F 1.142 +(xpansion that)-.15 F(did not occur within double quotes for)108 504 Q +F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 +(The shell treats each character of)108 520.8 R F3(IFS)2.563 E F0 .063 (as a delimiter)2.313 F 2.563(,a)-.4 G .063 (nd splits the results of the other e)-2.563 F .063(xpansions into w) --.15 F(ords)-.1 E 1.788(on these characters.)108 312 R(If)6.788 E F2 -(IFS)4.288 E F0 1.788(is unset, or its v)4.038 F 1.789(alue is e)-.25 F -(xactly)-.15 E F4()4.289 E F0 4.289(,t)C 1.789 -(he def)-4.289 F 1.789(ault, then)-.1 F .022(sequences of)108 324 R F4 -()2.522 E F0(,)A F4()2.522 E F0 2.521(,a)C(nd)-2.521 E F4 -()2.521 E F0 .021(at the be)2.521 F .021 -(ginning and end of the results of the pre)-.15 F .021(vious e)-.25 F -(xpan-)-.15 E .585(sions are ignored, and an)108 336 R 3.086(ys)-.15 G -.586(equence of)-3.086 F F2(IFS)3.086 E F0 .586 -(characters not at the be)2.836 F .586(ginning or end serv)-.15 F .586 -(es to delimit w)-.15 F(ords.)-.1 E(If)108 348 Q F2(IFS)3.617 E F0 1.117 -(has a v)3.367 F 1.117(alue other than the def)-.25 F 1.117 -(ault, then sequences of the whitespace characters)-.1 F F4(space)3.617 -E F0(and)3.617 E F4(tab)3.617 E F0(are)3.617 E .315(ignored at the be) -108 360 R .315(ginning and end of the w)-.15 F .315 -(ord, as long as the whitespace character is in the v)-.1 F .315 -(alue of)-.25 F F2(IFS)2.815 E F0(\(an)2.566 E F2(IFS)108 372 Q F0 1.054 -(whitespace character\).)3.304 F(An)6.054 E 3.554(yc)-.15 G 1.054 -(haracter in)-3.554 F F2(IFS)3.554 E F0 1.053(that is not)3.303 F F2 -(IFS)3.553 E F0 1.053(whitespace, along with an)3.303 F 3.553(ya)-.15 G -(djacent)-3.553 E F2(IFS)3.553 E F0 .331 -(whitespace characters, delimits a \214eld.)108 384 R 2.831(As)5.331 G -.332(equence of)-2.831 F F2(IFS)2.832 E F0 .332 -(whitespace characters is also treated as a delim-)2.582 F(iter)108 396 -Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F2(IFS)2.5 E F0 -(is null, no w)2.25 E(ord splitting occurs.)-.1 E 1.879 -(Explicit null ar)108 412.8 R 1.879(guments \()-.18 F F4 .833("").833 G -F0(or)3.545 E F4 .833<0808>5.211 G F0 4.378(\)a)C 1.878(re retained.) --4.378 F 1.878(Unquoted implicit null ar)6.878 F 1.878 -(guments, resulting from the)-.18 F -.15(ex)108 424.8 S .176 -(pansion of parameters that ha).15 F .476 -.15(ve n)-.2 H 2.676(ov).15 G -.176(alues, are remo)-2.926 F -.15(ve)-.15 G 2.676(d. If).15 F 2.677(ap) -2.677 G .177(arameter with no v)-2.677 F .177(alue is e)-.25 F .177 -(xpanded within)-.15 F(double quotes, a null ar)108 436.8 Q -(gument results and is retained.)-.18 E(Note that if no e)108 453.6 Q -(xpansion occurs, no splitting is performed.)-.15 E F4 -.1(Pa)87 470.4 S -(thname Expansion).1 E F0 .371(After w)108 482.4 R .371 -(ord splitting, unless the)-.1 F F42.871 E F0 .371 -(option has been set,)2.871 F F4(bash)2.871 E F0 .37(scans each w)2.87 F -.37(ord for the characters)-.1 F F4(*)2.87 E F0(,)A F4(?)2.87 E F0 2.87 -(,a)C(nd)-2.87 E F4([)2.87 E F0(.)A .677 -(If one of these characters appears, then the w)108 494.4 R .677 -(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F1(pattern)3.177 E -F0 3.177(,a).24 G .678(nd replaced with an alphabeti-)-3.177 F 1.457 -(cally sorted list of \214le names matching the pattern.)108 506.4 R -1.456(If no matching \214le names are found, and the shell)6.457 F -(option)108 518.4 Q F4(nullglob)2.537 E F0 .038(is not enabled, the w) -2.537 F .038(ord is left unchanged.)-.1 F .038(If the)5.038 F F4 -(nullglob)2.538 E F0 .038(option is set, and no matches are)2.538 F .306 -(found, the w)108 530.4 R .306(ord is remo)-.1 F -.15(ve)-.15 G 2.806 -(d. If).15 F(the)2.805 E F4(failglob)2.805 E F0 .305 -(shell option is set, and no matches are found, an error message)2.805 F -.928(is printed and the command is not e)108 542.4 R -.15(xe)-.15 G -3.428(cuted. If).15 F .928(the shell option)3.428 F F4(nocaseglob)3.428 -E F0 .929(is enabled, the match is per)3.429 F(-)-.2 E .033 -(formed without re)108 554.4 R -.05(ga)-.15 G .033 -(rd to the case of alphabetic characters.).05 F .032 -(When a pattern is used for pathname e)5.032 F(xpansion,)-.15 E .104 -(the character)108 566.4 R F4 -.63(``)2.604 G -.55(.').63 G(')-.08 E F0 -.104(at the start of a name or immediately follo)5.104 F .105 -(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 2.605(,u)-.65 G -(nless)-2.605 E .888(the shell option)108 578.4 R F4(dotglob)3.388 E F0 -.888(is set.)3.388 F .887 -(When matching a pathname, the slash character must al)5.888 F -.1(wa) --.1 G .887(ys be matched).1 F -.15(ex)108 590.4 S(plicitly).15 E 6.165 -(.I)-.65 G 3.665(no)-6.165 G 1.165(ther cases, the)-3.665 F F4 -.63(``) -3.665 G -.55(.').63 G(')-.08 E F0 1.166 -(character is not treated specially)6.165 F 6.166(.S)-.65 G 1.166 -(ee the description of)-6.166 F F4(shopt)3.666 E F0(belo)3.666 E(w)-.25 -E(under)108 602.4 Q F2 .478(SHELL B)2.978 F(UIL)-.09 E .478 -(TIN COMMANDS)-.828 F F0 .477(for a description of the)2.728 F F4 -(nocaseglob)2.977 E F0(,)A F4(nullglob)2.977 E F0(,)A F4(failglob)2.977 -E F0 2.977(,a)C(nd)-2.977 E F4(dotglob)2.977 E F0(shell options.)108 -614.4 Q(The)108 631.2 Q F2(GLOBIGNORE)2.63 E F0 .13(shell v)2.38 F .131 -(ariable may be used to restrict the set of \214le names matching a)-.25 -F F1(pattern)2.631 E F0 5.131(.I).24 G(f)-5.131 E F2(GLO-)2.631 E -(BIGNORE)108 643.2 Q F0 2.015(is set, each matching \214le name that al\ -so matches one of the patterns in)4.265 F F2(GLOBIGNORE)4.515 E F0(is) -4.264 E(remo)108 655.2 Q -.15(ve)-.15 G 2.503(df).15 G .003 -(rom the list of matches.)-2.503 F .003(The \214le names)5.003 F F4 -.63 -(``)2.503 G -.55(.').63 G(')-.08 E F0(and)5.003 E F4 -.63(``)2.503 G(..) -.63 E -.63('')-.55 G F0 .004(are al)5.633 F -.1(wa)-.1 G .004 -(ys ignored when).1 F F2(GLOBIGNORE)2.504 E F0(is)2.254 E .046 -(set and not null.)108 667.2 R(Ho)5.046 E(we)-.25 E -.15(ve)-.25 G .846 --.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)2.546 E F0 .046 -(to a non-null v)2.296 F .045(alue has the ef)-.25 F .045 -(fect of enabling the)-.25 F F4(dotglob)2.545 E F0 .613 -(shell option, so all other \214le names be)108 679.2 R .614 -(ginning with a)-.15 F F4 -.63(``)3.114 G -.55(.').63 G(')-.08 E F0 .614 -(will match.)5.614 F 2.214 -.8(To g)5.614 H .614(et the old beha).8 F -.614(vior of ignoring)-.2 F .457(\214le names be)108 691.2 R .457 -(ginning with a)-.15 F F4 -.63(``)2.957 G -.55(.').63 G(')-.08 E F0 -2.957(,m)C(ak)-2.957 E(e)-.1 E F4 -.63(``)2.957 G(.*').63 E(')-.63 E F0 -.457(one of the patterns in)5.457 F F2(GLOBIGNORE)2.957 E F3(.)A F0(The) -4.957 E F4(dotglob)2.956 E F0 .456(option is)2.956 F(disabled when)108 -703.2 Q F2(GLOBIGNORE)2.5 E F0(is unset.)2.25 E F4 -.1(Pa)108 720 S -(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(22)185.955 E 0 Cg EP -%%Page: 23 23 +-.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) +108 532.8 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +.207(alue is e)-.25 F(xactly)-.15 E F1()2.707 E F0 +(,)A .836(the def)108 544.8 R .836(ault, then sequences of)-.1 F F1 +()3.336 E F0(,)A F1()3.336 E F0 3.336(,a)C(nd)-3.336 E F1 +()3.336 E F0 .837(at the be)3.336 F .837 +(ginning and end of the results of)-.15 F .346(the pre)108 556.8 R .345 +(vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 +G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 +(characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) +-.15 E 1.236(to delimit w)108 568.8 R 3.736(ords. If)-.1 F F3(IFS)3.736 +E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.237 +(ault, then sequences of the whitespace characters)-.1 F F1(space)108 +580.8 Q F0(and)3.187 E F1(tab)3.187 E F0 .687(are ignored at the be) +3.187 F .687(ginning and end of the w)-.15 F .686 +(ord, as long as the whitespace character is in)-.1 F .276(the v)108 +592.8 R .276(alue of)-.25 F F3(IFS)2.777 E F0(\(an)2.527 E F3(IFS)2.777 +E F0 .277(whitespace character\).)2.527 F(An)5.277 E 2.777(yc)-.15 G +.277(haracter in)-2.777 F F3(IFS)2.777 E F0 .277(that is not)2.527 F F3 +(IFS)2.777 E F0 .277(whitespace, along with)2.527 F(an)108 604.8 Q 3.336 +(ya)-.15 G(djacent)-3.336 E F3(IFS)3.336 E F0 .836 +(whitespace characters, delimits a \214eld.)3.086 F 3.335(As)5.835 G +.835(equence of)-3.335 F F3(IFS)3.335 E F0 .835 +(whitespace characters is also)3.085 F(treated as a delimiter)108 616.8 +Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0 +(is null, no w)2.25 E(ord splitting occurs.)-.1 E 1.878 +(Explicit null ar)108 633.6 R 1.878(guments \()-.18 F F1 .833("").833 G +F0(or)3.545 E F1 .833<0808>5.211 G F0 4.378(\)a)C 1.878(re retained.) +-4.378 F 1.878(Unquoted implicit null ar)6.878 F 1.879 +(guments, resulting from the)-.18 F -.15(ex)108 645.6 S .177 +(pansion of parameters that ha).15 F .477 -.15(ve n)-.2 H 2.677(ov).15 G +.177(alues, are remo)-2.927 F -.15(ve)-.15 G 2.676(d. If).15 F 2.676(ap) +2.676 G .176(arameter with no v)-2.676 F .176(alue is e)-.25 F .176 +(xpanded within)-.15 F(double quotes, a null ar)108 657.6 Q +(gument results and is retained.)-.18 E(Note that if no e)108 674.4 Q +(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 691.2 S +(thname Expansion).1 E F0 .37(After w)108 703.2 R .37 +(ord splitting, unless the)-.1 F F12.87 E F0 .37 +(option has been set,)2.87 F F1(bash)2.87 E F0 .371(scans each w)2.871 F +.371(ord for the characters)-.1 F F1(*)2.871 E F0(,)A F1(?)2.871 E F0 +2.871(,a)C(nd)-2.871 E F1([)2.871 E F0(.)A .678 +(If one of these characters appears, then the w)108 715.2 R .677 +(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E +F0 3.177(,a).24 G .677(nd replaced with an alphabeti-)-3.177 F .562 +(cally sorted list of \214lenames matching the pattern \(see)108 727.2 R +F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) +2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(23)190.95 E 0 Cg EP +%%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(An)108 84 Q 3.138(yc)-.15 G .638(haracter that appears in a patt\ -ern, other than the special pattern characters described belo)-3.138 F -1.938 -.65(w, m)-.25 H(atches).65 E 3.62(itself. The)108 96 R 1.12 -(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G 1.12 -(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F .576 -(escaping backslash is discarded when matching.)108 108 R .576 +-.35 E .009(are found, and the shell option)108 84 R/F1 10/Times-Bold@0 +SF(nullglob)2.509 E F0 .008(is not enabled, the w)2.509 F .008 +(ord is left unchanged.)-.1 F .008(If the)5.008 F F1(nullglob)2.508 E F0 +.008(option is)2.508 F .442(set, and no matches are found, the w)108 96 +R .442(ord is remo)-.1 F -.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1 +(failglob)2.943 E F0 .443(shell option is set, and no matches are)2.943 +F 1.38(found, an error message is printed and the command is not e)108 +108 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F +F1(nocaseglob)3.88 E F0(is)3.88 E .103 +(enabled, the match is performed without re)108 120 R -.05(ga)-.15 G +.104(rd to the case of alphabetic characters.).05 F .104 +(When a pattern is used)5.104 F .378(for pathname e)108 132 R .378 +(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 +E F0 .378(at the start of a name or immediately follo)5.378 F .377 +(wing a slash must be)-.25 F .578(matched e)108 144 R(xplicitly)-.15 E +3.078(,u)-.65 G .578(nless the shell option)-3.078 F F1(dotglob)3.079 E +F0 .579(is set.)3.079 F .579 +(When matching a pathname, the slash character)5.579 F 1.789(must al)108 +156 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788(.I) +-.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``)4.288 +G -.55(.').63 G(')-.08 E F0 1.788(character is not treated specially) +6.788 F 6.788(.S)-.65 G 1.788(ee the)-6.788 F .165(description of)108 +168 R F1(shopt)2.665 E F0(belo)2.665 E 2.665(wu)-.25 G(nder)-2.665 E/F2 +9/Times-Bold@0 SF .165(SHELL B)2.665 F(UIL)-.09 E .165(TIN COMMANDS) +-.828 F F0 .166(for a description of the)2.415 F F1(nocaseglob)2.666 E +F0(,)A F1(null-)2.666 E(glob)108 180 Q F0(,)A F1(failglob)2.5 E F0 2.5 +(,a)C(nd)-2.5 E F1(dotglob)2.5 E F0(shell options.)2.5 E(The)108 196.8 Q +F2(GLOBIGNORE)2.786 E F0 .286(shell v)2.536 F .285 +(ariable may be used to restrict the set of \214lenames matching a)-.25 +F/F3 10/Times-Italic@0 SF(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E +F2(GLO-)2.785 E(BIGNORE)108 208.8 Q F0 2.316(is set, each matching \214\ +lename that also matches one of the patterns in)4.565 F F2(GLOBIGNORE) +4.816 E F0(is)4.566 E(remo)108 220.8 Q -.15(ve)-.15 G 2.66(df).15 G .16 +(rom the list of matches.)-2.66 F .16(The \214lenames)5.16 F F1 -.63(``) +2.66 G -.55(.').63 G(')-.08 E F0(and)5.16 E F1 -.63(``)2.66 G(..).63 E +-.63('')-.55 G F0 .16(are al)5.79 F -.1(wa)-.1 G .159(ys ignored when).1 +F F2(GLOBIGNORE)2.659 E F0(is)2.409 E .045(set and not null.)108 232.8 R +(Ho)5.045 E(we)-.25 E -.15(ve)-.25 G .845 -.4(r, s).15 H(etting).4 E F2 +(GLOBIGNORE)2.545 E F0 .046(to a non-null v)2.296 F .046 +(alue has the ef)-.25 F .046(fect of enabling the)-.25 F F1(dotglob) +2.546 E F0 .787(shell option, so all other \214lenames be)108 244.8 R +.787(ginning with a)-.15 F F1 -.63(``)3.287 G -.55(.').63 G(')-.08 E F0 +.787(will match.)5.787 F 2.386 -.8(To g)5.787 H .786(et the old beha).8 +F .786(vior of ignoring)-.2 F .641(\214lenames be)108 256.8 R .641 +(ginning with a)-.15 F F1 -.63(``)3.141 G -.55(.').63 G(')-.08 E F0 +3.141(,m)C(ak)-3.141 E(e)-.1 E F1 -.63(``)3.141 G(.*').63 E(')-.63 E F0 +.642(one of the patterns in)5.642 F F2(GLOBIGNORE)3.142 E/F4 9 +/Times-Roman@0 SF(.)A F0(The)5.142 E F1(dotglob)3.142 E F0 .642 +(option is)3.142 F(disabled when)108 268.8 Q F2(GLOBIGNORE)2.5 E F0 +(is unset.)2.25 E F1 -.1(Pa)108 285.6 S(tter).1 E 2.5(nM)-.15 G(atching) +-2.5 E F0(An)108 302.4 Q 3.138(yc)-.15 G .638(haracter that appears in \ +a pattern, other than the special pattern characters described belo) +-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62(itself. The)108 314.4 +R 1.12(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G +1.12(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F +.576(escaping backslash is discarded when matching.)108 326.4 R .576 (The special pattern characters must be quoted if the)5.576 F 3.076(ya) --.15 G(re)-3.076 E(to be matched literally)108 120 Q(.)-.65 E -(The special pattern characters ha)108 136.8 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E/F1 10/Times-Bold@0 SF(*)144 153.6 -Q F0 .377(Matches an)31 F 2.877(ys)-.15 G .376 -(tring, including the null string.)-2.877 F .376(When the)5.376 F F1 -(globstar)2.876 E F0 .376(shell option is enabled,)2.876 F(and)180 165.6 -Q F1(*)3.275 E F0 .775(is used in a pathname e)3.275 F .775 -(xpansion conte)-.15 F .775(xt, tw)-.15 F 3.275(oa)-.1 G(djacent)-3.275 -E F1(*)3.275 E F0 3.275(su)C .775(sed as a single pattern)-3.275 F 1.058 -(will match all \214les and zero or more directories and subdirectories\ -.)180 177.6 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E -F0(,)A(tw)180 189.6 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F1(?)144 201.6 Q -F0(Matches an)31 E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 -([...])144 213.6 Q F0 .578(Matches an)21.84 F 3.078(yo)-.15 G .578 -(ne of the enclosed characters.)-3.078 F 3.079(Ap)5.579 G .579 -(air of characters separated by a h)-3.079 F(yphen)-.05 E .537 -(denotes a)180 225.6 R/F2 10/Times-Italic@0 SF -.15(ra)3.037 G(ng).15 E -3.037(ee)-.1 G(xpr)-3.237 E(ession)-.37 E F0 3.037(;a)C .837 -.15(ny c) --3.037 H .537(haracter that sorts between those tw).15 F 3.036(oc)-.1 G -.536(haracters, inclu-)-3.036 F(si)180 237.6 Q -.15(ve)-.25 G 3.712(,u) -.15 G 1.212(sing the current locale')-3.712 F 3.712(sc)-.55 G 1.212 -(ollating sequence and character set, is matched.)-3.712 F 1.213(If the) -6.213 F 1.124(\214rst character follo)180 249.6 R 1.124(wing the)-.25 F -F1([)3.624 E F0 1.124(is a)3.624 F F1(!)3.624 E F0 1.124(or a)6.124 F F1 -(^)3.623 E F0 1.123(then an)3.623 F 3.623(yc)-.15 G 1.123 -(haracter not enclosed is matched.)-3.623 F .894 -(The sorting order of characters in range e)180 261.6 R .895 -(xpressions is determined by the current locale)-.15 F .258(and the v) -180 273.6 R .257(alue of the)-.25 F/F3 9/Times-Bold@0 SF(LC_COLLA)2.757 -E(TE)-.855 E F0 .257(shell v)2.507 F .257(ariable, if set.)-.25 F(A) -5.257 E F12.757 E F0 .257(may be matched by includ-)2.757 F .78 -(ing it as the \214rst or last character in the set.)180 285.6 R(A)5.78 -E F1(])3.28 E F0 .78(may be matched by including it as the)3.28 F -(\214rst character in the set.)180 297.6 Q -.4(Wi)180 315.6 S(thin).4 E -F1([)3.071 E F0(and)3.071 E F1(])3.071 E F0(,)A F2 -.15(ch)3.071 G(ar) -.15 E .571(acter classes)-.15 F F0 .571 -(can be speci\214ed using the syntax)3.071 F F1([:)3.07 E F2(class)A F1 -(:])A F0 3.07(,w)C(here)-3.07 E F2(class)3.07 E F0(is one of the follo) -180 327.6 Q(wing classes de\214ned in the POSIX standard:)-.25 E F1 -8.173(alnum alpha ascii blank cntrl digit graph lo)180 339.6 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 351.6 R 5(ord xdigit)-.1 F F0 -4.29(Ac)180 363.6 S 1.789(haracter class matches an)-4.29 F 4.289(yc) +-.15 G(re)-3.076 E(to be matched literally)108 338.4 Q(.)-.65 E +(The special pattern characters ha)108 355.2 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 372 Q F0 .376(Matches an) +31 F 2.876(ys)-.15 G .376(tring, including the null string.)-2.876 F +.376(When the)5.376 F F1(globstar)2.876 E F0 .377 +(shell option is enabled,)2.876 F(and)180 384 Q F1(*)3.275 E F0 .775 +(is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw) +-.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775 +(sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\ + or more directories and subdirectories.)180 396 R 1.058(If follo)6.058 +F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 408 Q 2.5(oa)-.1 G +(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C +(ill match only directories and subdirectories.)-2.5 E F1(?)144 420 Q F0 +(Matches an)31 E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1([...]) +144 432 Q F0 .579(Matches an)21.84 F 3.079(yo)-.15 G .579 +(ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578 +(air of characters separated by a h)-3.079 F(yphen)-.05 E .684 +(denotes a)180 444 R F3 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr) +-3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 +(haracter that f).15 F .684(alls between those tw)-.1 F 3.185(oc)-.1 G +.685(haracters, inclu-)-3.185 F(si)180 456 Q -.15(ve)-.25 G 3.713(,u).15 +G 1.213(sing the current locale')-3.713 F 3.712(sc)-.55 G 1.212 +(ollating sequence and character set, is matched.)-3.712 F 1.212(If the) +6.212 F 1.123(\214rst character follo)180 468 R 1.123(wing the)-.25 F F1 +([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 1.124(or a)6.123 F F1 +(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G 1.124 +(haracter not enclosed is matched.)-3.624 F .895 +(The sorting order of characters in range e)180 480 R .894 +(xpressions is determined by the current locale)-.15 F .375(and the v) +180 492 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) +2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 +F .068(ditional interpretation of range e)180 504 R .068 +(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F +-.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067 +(et v)-2.567 F(alue)-.25 E .156(of the)180 516 R F1(LC_ALL)2.656 E F0 +.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C +2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 +.157(shell option.)2.657 F(A)5.157 E F12.657 E F0(may)2.657 E .193(\ +be matched by including it as the \214rst or last character in the set.) +180 528 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 540 Q -.4(Wi)180 +558 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F3 -.15(ch) +3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571 +(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F3(class)A F1 +(:])A F0 3.071(,w)C(here)-3.071 E F3(class)3.071 E F0 +(is one of the follo)180 570 Q +(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 +(alnum alpha ascii blank cntrl digit graph lo)180 582 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 594 R 5(ord xdigit)-.1 F F0 +4.289(Ac)180 606 S 1.789(haracter class matches an)-4.289 F 4.289(yc) -.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 --.1(wo)4.289 G(rd).1 E F0(character)4.289 E -(class matches letters, digits, and the character _.)180 375.6 Q -.4(Wi) -180 393.6 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536 -(,a)C(n)-4.536 E F2 2.036(equivalence class)4.536 F F0 2.037 -(can be speci\214ed using the syntax)4.536 F F1([=)4.537 E F2(c)A F1(=]) -A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 405.6 R -(the character)180 417.6 Q F2(c)2.5 E F0(.)A -.4(Wi)180 435.6 S(thin).4 -E F1([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.) -2.5 E F2(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F2 -(symbol)2.5 E F0(.)A .704(If the)108 452.4 R F1(extglob)3.204 E F0 .705 -(shell option is enabled using the)3.204 F F1(shopt)3.205 E F0 -.2(bu) -3.205 G .705(iltin, se).2 F -.15(ve)-.25 G .705(ral e).15 F .705 -(xtended pattern matching operators)-.15 F .256(are recognized.)108 -464.4 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F2 +-.1(wo)4.29 G(rd).1 E F0(character)4.29 E +(class matches letters, digits, and the character _.)180 618 Q -.4(Wi) +180 636 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 +(,a)C(n)-4.537 E F3 2.037(equivalence class)4.537 F F0 2.036 +(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F3(c)A F1(=]) +A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\ + collation weight \(as de\214ned by the current locale\) as)180 648 R +(the character)180 660 Q F3(c)2.5 E F0(.)A -.4(Wi)180 678 S(thin).4 E F1 +([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5 +E F3(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F3(symbol) +2.5 E F0(.)A .705(If the)108 694.8 R F1(extglob)3.205 E F0 .705 +(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu) +3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 +(xtended pattern matching operators)-.15 F .255(are recognized.)108 +706.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F3 (pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F1(|)2.755 E +(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E F0(.)A(Composite patterns may be formed using one or more of the follo) -108 476.4 Q(wing sub-patterns:)-.25 E F1(?\()144 500.4 Q F2 -(pattern-list).833 E F1(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 512.4 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F1(*\()144 524.4 Q F2(pattern-list).833 E F1 -(\)).833 E F0(Matches zero or more occurrences of the gi)180 536.4 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 548.4 Q F2 -(pattern-list).833 E F1(\)).833 E F0 -(Matches one or more occurrences of the gi)180 560.4 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E F1(@\()144 572.4 Q F2(pattern-list).833 E F1 -(\)).833 E F0(Matches one of the gi)180 584.4 Q -.15(ve)-.25 G 2.5(np) -.15 G(atterns)-2.5 E F1(!\()144 596.4 Q F2(pattern-list).833 E F1(\)) -.833 E F0(Matches an)180 608.4 Q(ything e)-.15 E(xcept one of the gi) --.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(Quote Remo)87 625.2 -Q -.1(va)-.1 G(l).1 E F0 1.112(After the preceding e)108 637.2 R 1.112 -(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) -3.613 E F0(,)A F1<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F1(")4.446 E F0 -1.113(that did not result)4.446 F(from one of the abo)108 649.2 Q .3 --.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F4 -10.95/Times-Bold@0 SF(REDIRECTION)72 666 Q F0 .545 -(Before a command is e)108 678 R -.15(xe)-.15 G .545 -(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E -(ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .616 -(by the shell.)108 690 R .617(Redirection may also be used to open and \ -close \214les for the current shell e)5.616 F -.15(xe)-.15 G .617 -(cution en).15 F(viron-)-.4 E 3.275(ment. The)108 702 R(follo)3.275 E -.774(wing redirection operators may precede or appear an)-.25 F .774 -(ywhere within a)-.15 F F2 .774(simple command)3.614 F F0(or)4.044 E -(may follo)108 714 Q 2.5(wa)-.25 G F2(command)A F0 5(.R).77 G -(edirections are processed in the order the)-5 E 2.5(ya)-.15 G(ppear) --2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Each redirection tha\ -t may be preceded by a \214le descriptor number may instead be preceded\ - by a w)108 730.8 R .772(ord of)-.1 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(23)185.955 E 0 Cg EP -%%Page: 24 24 +108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(24)190.95 E 0 Cg EP +%%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .293(the form {)108 84 R/F1 10/Times-Italic@0 SF(varname)A F0 -2.793(}. In)B .293(this case, for each redirection operator e)2.793 F -.293(xcept >&- and <&-, the shell will allocate)-.15 F 3.498<618c>108 96 -S .999(le descriptor greater than 10 and assign it to)-3.498 F F1 -(varname)3.499 E F0 5.999(.I)C 3.499(f>)-5.999 G .999 -(&- or <&- is preceded by {)-3.499 F F1(varname)A F0 .999(}, the)B -.25 -(va)108 108 S(lue of).25 E F1(varname)2.5 E F0 -(de\214nes the \214le descriptor to close.)2.5 E .284(In the follo)108 -124.8 R .283(wing descriptions, if the \214le descriptor number is omit\ -ted, and the \214rst character of the redirect-)-.25 F .512 -(ion operator is)108 136.8 R/F2 10/Times-Bold@0 SF(<)3.012 E F0 3.012 -(,t)C .512 +-.35 E/F1 10/Times-Bold@0 SF(?\()144 84 Q/F2 10/Times-Italic@0 SF +(pattern-list).833 E F1(\)).833 E F0 +(Matches zero or one occurrence of the gi)180 96 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F1(*\()144 108 Q F2(pattern-list).833 E F1(\)) +.833 E F0(Matches zero or more occurrences of the gi)180 120 Q -.15(ve) +-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 132 Q F2(pattern-list).833 +E F1(\)).833 E F0(Matches one or more occurrences of the gi)180 144 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 156 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches one of the gi)180 168 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(!\()144 180 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches an)180 192 Q(ything e)-.15 +E(xcept one of the gi)-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E +F1(Quote Remo)87 208.8 Q -.1(va)-.1 G(l).1 E F0 1.113 +(After the preceding e)108 220.8 R 1.113 +(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) +3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0 +1.112(that did not result)4.445 F(from one of the abo)108 232.8 Q .3 +-.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 +10.95/Times-Bold@0 SF(REDIRECTION)72 249.6 Q F0 .545 +(Before a command is e)108 261.6 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E +(ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405 +(by the shell.)108 273.6 R .405(Redirection allo)5.405 F .405(ws comman\ +ds' \214le handles to be duplicated, opened, closed, made to refer to) +-.25 F(dif)108 285.6 Q 1.019(ferent \214les, and can change the \214les\ + the command reads from and writes to.)-.25 F 1.02 +(Redirection may also be)6.02 F .215 +(used to modify \214le handles in the current shell e)108 297.6 R -.15 +(xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E +.215(wing redirection operators)-.25 F .875(may precede or appear an)108 +309.6 R .875(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 +.875(or may follo)4.145 F 3.376(wa)-.25 G F2(command)A F0 5.876(.R).77 G +.876(edirections are)-5.876 F(processed in the order the)108 321.6 Q 2.5 +(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ +h redirection that may be preceded by a \214le descriptor number may in\ +stead be preceded by a w)108 338.4 R .771(ord of)-.1 F .292(the form {) +108 350.4 R F2(varname)A F0 2.793(}. In)B .293 +(this case, for each redirection operator e)2.793 F .293 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 362.4 S +.679(le descriptor greater than or equal to 10 and assign it to)-3.18 F +F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 374.4 Q +F0(}, the v)A(alue of)-.25 E F2(varname)2.5 E F0 +(de\214nes the \214le descriptor to close.)2.5 E .283(In the follo)108 +391.2 R .284(wing descriptions, if the \214le descriptor number is omit\ +ted, and the \214rst character of the redirect-)-.25 F .513 +(ion operator is)108 403.2 R F1(<)3.012 E F0 3.012(,t)C .512 (he redirection refers to the standard input \(\214le descriptor 0\).) -3.012 F .512(If the \214rst character of the)5.512 F -(redirection operator is)108 148.8 Q F2(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 415.2 Q F1(>)2.5 E F0 2.5(,t)C (he redirection refers to the standard output \(\214le descriptor 1\).) --2.5 E .825(The w)108 165.6 R .825(ord follo)-.1 F .824 -(wing the redirection operator in the follo)-.25 F .824 -(wing descriptions, unless otherwise noted, is sub-)-.25 F .772 -(jected to brace e)108 177.6 R .773(xpansion, tilde e)-.15 F .773 -(xpansion, parameter e)-.15 F .773 -(xpansion, command substitution, arithmetic e)-.15 F(xpan-)-.15 E .844 -(sion, quote remo)108 189.6 R -.25(va)-.15 G .843(l, pathname e).25 F -.843(xpansion, and w)-.15 F .843(ord splitting.)-.1 F .843(If it e)5.843 -F .843(xpands to more than one w)-.15 F(ord,)-.1 E F2(bash)3.343 E F0 -(reports an error)108 201.6 Q(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 218.4 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 235.2 Q F2(>)2.5 -E F0(dirlist 2)2.5 E F2(>&)A F0(1)A -(directs both standard output and standard error to the \214le)108 252 Q -F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 268.8 -Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .527 -(directs only the standard output to \214le)108 285.6 R F1(dirlist)3.027 -E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 +-2.5 E .824(The w)108 432 R .824(ord follo)-.1 F .824 +(wing the redirection operator in the follo)-.25 F .825 +(wing descriptions, unless otherwise noted, is sub-)-.25 F .463 +(jected to brace e)108 444 R .463(xpansion, tilde e)-.15 F .462 +(xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462 +(xpansion, command substitution, arith-)-.15 F .866(metic e)108 456 R +.866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F +.867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 +F .867(xpands to more than one)-.15 F -.1(wo)108 468 S(rd,).1 E F1(bash) +2.5 E F0(reports an error)2.5 E(.)-.55 E +(Note that the order of redirections is signi\214cant.)108 484.8 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 501.6 Q F1(>)2.5 +E F0(dirlist 2)2.5 E F1(>&)A F0(1)A +(directs both standard output and standard error to the \214le)108 518.4 +Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 +535.2 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 +(directs only the standard output to \214le)108 552 R F2(dirlist)3.027 E +F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 (as duplicated from the standard)-.1 F -(output before the standard output w)108 297.6 Q(as redirected to)-.1 E -F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 314.4 Q F0 .599(handles se)3.099 -F -.15(ve)-.25 G .599(ral \214lenames specially when the).15 F 3.099(ya) --.15 G .598(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E(table:)108 326.4 Q F2(/de)144 343.2 Q(v/fd/)-.15 E F1(fd)A -F0(If)180 355.2 Q F1(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E(ger)-.15 -E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F1(fd)2.5 E F0(is duplicated.)2.5 -E F2(/de)144 367.2 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.) -180 379.2 Q F2(/de)144 391.2 Q(v/stdout)-.15 E F0 -(File descriptor 1 is duplicated.)180 403.2 Q F2(/de)144 415.2 Q -(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 427.2 Q F2(/de) -144 439.2 Q(v/tcp/)-.15 E F1(host)A F2(/)A F1(port)A F0(If)180 451.2 Q -F1(host)2.996 E F0 .496(is a v)2.996 F .496 -(alid hostname or Internet address, and)-.25 F F1(port)2.997 E F0 .497 -(is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 463.2 Q F2(bash)2.5 E F0 -(attempts to open a TCP connection to the corresponding sock)2.5 E(et.) --.1 E F2(/de)144 475.2 Q(v/udp/)-.15 E F1(host)A F2(/)A F1(port)A F0(If) -180 487.2 Q F1(host)2.997 E F0 .497(is a v)2.997 F .497 -(alid hostname or Internet address, and)-.25 F F1(port)2.996 E F0 .496 +(output before the standard output w)108 564 Q(as redirected to)-.1 E F2 +(dirlist)2.5 E F0(.).68 E F1(Bash)108 580.8 Q F0 .598(handles se)3.098 F +-.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya) +-.15 G .599(re used in redirections, as described in the follo)-3.099 F +(wing)-.25 E(table:)108 592.8 Q F1(/de)144 609.6 Q(v/fd/)-.15 E F2(fd)A +F0(If)180 621.6 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E(ger)-.15 +E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0(is duplicated.)2.5 +E F1(/de)144 633.6 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.) +180 645.6 Q F1(/de)144 657.6 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 669.6 Q F1(/de)144 681.6 Q +(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 693.6 Q F1(/de) +144 705.6 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 717.6 Q +F2(host)2.997 E F0 .497(is a v)2.997 F .497 +(alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 (is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 499.2 Q F2(bash)2.5 E F0 -(attempts to open a UDP connection to the corresponding sock)2.5 E(et.) --.1 E 2.5(Af)108 516 S +(vice name,)180 729.6 Q F1(bash)2.5 E F0 +(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(25)190.95 E 0 Cg EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(/de)144 84 Q(v/udp/)-.15 E/F2 10 +/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 96 Q F2(host)2.996 +E F0 .496(is a v)2.996 F .496(alid hostname or Internet address, and) +-.25 F F2(port)2.997 E F0 .497(is an inte)2.997 F .497 +(ger port number or ser)-.15 F(-)-.2 E(vice name,)180 108 Q F1(bash)2.5 +E F0(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af) +108 124.8 S (ailure to open or create a \214le causes the redirection to f)-2.6 E -(ail.)-.1 E .946(Redirections using \214le descriptors greater than 9 s\ -hould be used with care, as the)108 532.8 R 3.447(ym)-.15 G .947 -(ay con\215ict with \214le)-3.447 F -(descriptors the shell uses internally)108 544.8 Q(.)-.65 E F2(Redir)87 -561.6 Q(ecting Input)-.18 E F0 .391 +(ail.)-.1 E .947(Redirections using \214le descriptors greater than 9 s\ +hould be used with care, as the)108 141.6 R 3.446(ym)-.15 G .946 +(ay con\215ict with \214le)-3.446 F +(descriptors the shell uses internally)108 153.6 Q(.)-.65 E F1(Redir)87 +170.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 573.6 R .391(xpansion of)-.15 F F1(wor)3.231 E(d)-.37 E F0 .391 -(to be opened for read-)3.661 F(ing on \214le descriptor)108 585.6 Q F1 +108 182.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 194.4 Q F2 (n)2.5 E F0 2.5(,o).24 G 2.5(rt)-2.5 G -(he standard input \(\214le descriptor 0\) if)-2.5 E F1(n)2.86 E F0 +(he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 (is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 602.4 Q([)144 619.2 Q -F1(n)A F0(])A F2(<)A F1(wor)A(d)-.37 E F2(Redir)87 636 Q(ecting Output) --.18 E F0 .174 +(The general format for redirecting input is:)108 211.2 Q([)144 228 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 244.8 Q(ecting Output) +-.18 E F0 .175 (Redirection of output causes the \214le whose name results from the e) -108 648 R .175(xpansion of)-.15 F F1(wor)3.015 E(d)-.37 E F0 .175 -(to be opened for writ-)3.445 F .825(ing on \214le descriptor)108 660 R -F1(n)3.325 E F0 3.325(,o).24 G 3.325(rt)-3.325 G .824 -(he standard output \(\214le descriptor 1\) if)-3.325 F F1(n)3.684 E F0 -.824(is not speci\214ed.)3.564 F .824(If the \214le does not)5.824 F --.15(ex)108 672 S(ist it is created; if it does e).15 E +108 256.8 R .174(xpansion of)-.15 F F2(wor)3.014 E(d)-.37 E F0 .174 +(to be opened for writ-)3.444 F .824(ing on \214le descriptor)108 268.8 +R F2(n)3.324 E F0 3.324(,o).24 G 3.324(rt)-3.324 G .824 +(he standard output \(\214le descriptor 1\) if)-3.324 F F2(n)3.684 E F0 +.824(is not speci\214ed.)3.564 F .825(If the \214le does not)5.825 F +-.15(ex)108 280.8 S(ist it is created; if it does e).15 E (xist it is truncated to zero size.)-.15 E -(The general format for redirecting output is:)108 688.8 Q([)144 705.6 Q -F1(n)A F0(])A F2(>)A F1(wor)A(d)-.37 E F0 .154 -(If the redirection operator is)108 722.4 R F2(>)2.654 E F0 2.654(,a)C -.154(nd the)-2.654 F F2(noclob)2.654 E(ber)-.1 E F0 .154(option to the) -2.654 F F2(set)2.655 E F0 -.2(bu)2.655 G .155 -(iltin has been enabled, the redirection).2 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(24)185.955 E 0 Cg EP -%%Page: 25 25 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .658(will f)108 84 R .658 -(ail if the \214le whose name results from the e)-.1 F .658(xpansion of) --.15 F/F1 10/Times-Italic@0 SF(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G -.657(ists and is a re).15 F .657(gular \214le.)-.15 F .657(If the redi-) -5.657 F .408(rection operator is)108 96 R/F2 10/Times-Bold@0 SF(>|)2.909 -E F0 2.909(,o)C 2.909(rt)-2.909 G .409(he redirection operator is)-2.909 -F F2(>)2.909 E F0 .409(and the)2.909 F F2(noclob)2.909 E(ber)-.1 E F0 -.409(option to the)2.909 F F2(set)2.909 E F0 -.2(bu)2.909 G .409 +(The general format for redirecting output is:)108 297.6 Q([)144 314.4 Q +F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 +(If the redirection operator is)108 331.2 R F1(>)2.655 E F0 2.655(,a)C +.155(nd the)-2.655 F F1(noclob)2.655 E(ber)-.1 E F0 .154(option to the) +2.654 F F1(set)2.654 E F0 -.2(bu)2.654 G .154 +(iltin has been enabled, the redirection).2 F .657(will f)108 343.2 R +.657(ail if the \214le whose name results from the e)-.1 F .658 +(xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .658 +(ists and is a re).15 F .658(gular \214le.)-.15 F .658(If the redi-) +5.658 F .409(rection operator is)108 355.2 R F1(>|)2.909 E F0 2.909(,o)C +2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E +F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 +(option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.908 G .408 (iltin command).2 F(is not enabled, the redirection is attempted e)108 -108 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by)-2.5 -E F1(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F2 -.25(Ap)87 124.8 -S(pending Redir).25 E(ected Output)-.18 E F0 .642 -(Redirection of output in this f)108 136.8 R .642 -(ashion causes the \214le whose name results from the e)-.1 F .641 -(xpansion of)-.15 F F1(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .473 -(opened for appending on \214le descriptor)108 148.8 R F1(n)2.973 E F0 +367.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +-2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87 +384 S(pending Redir).25 E(ected Output)-.18 E F0 .641 +(Redirection of output in this f)108 396 R .642 +(ashion causes the \214le whose name results from the e)-.1 F .642 +(xpansion of)-.15 F F2(wor)3.482 E(d)-.37 E F0 .642(to be)3.912 F .474 +(opened for appending on \214le descriptor)108 408 R F2(n)2.974 E F0 2.974(,o).24 G 2.974(rt)-2.974 G .474 -(he standard output \(\214le descriptor 1\) if)-2.974 F F1(n)3.334 E F0 -.474(is not speci\214ed.)3.214 F(If)5.474 E(the \214le does not e)108 -160.8 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 177.6 Q([)144 194.4 Q -F1(n)A F0(])A F2(>>)A F1(wor)A(d)-.37 E F2(Redir)87 216 Q -(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249 -(This construct allo)108 228 R .249(ws both the standard output \(\214l\ -e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F -(tor 2\) to be redirected to the \214le whose name is the e)108 240 Q -(xpansion of)-.15 E F1(wor)2.5 E(d)-.37 E F0(.).77 E(There are tw)108 -256.8 Q 2.5(of)-.1 G -(ormats for redirecting standard output and standard error:)-2.5 E F2 -(&>)144 273.6 Q F1(wor)A(d)-.37 E F0(and)108 285.6 Q F2(>&)144 297.6 Q -F1(wor)A(d)-.37 E F0(Of the tw)108 314.4 Q 2.5(of)-.1 G +(he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.333 E F0 +.473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108 +420 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 436.8 Q([)144 453.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 475.2 Q +(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .248 +(This construct allo)108 487.2 R .249(ws both the standard output \(\ +\214le descriptor 1\) and the standard error output \(\214le descrip-) +-.25 F(tor 2\) to be redirected to the \214le whose name is the e)108 +499.2 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(There are tw)108 516 Q 2.5(of)-.1 G +(ormats for redirecting standard output and standard error:)-2.5 E F1 +(&>)144 532.8 Q F2(wor)A(d)-.37 E F0(and)108 544.8 Q F1(>&)144 556.8 Q +F2(wor)A(d)-.37 E F0(Of the tw)108 573.6 Q 2.5(of)-.1 G (orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E --.25(va)-.25 G(lent to).25 E F2(>)144 331.2 Q F1(wor)A(d)-.37 E F0(2)2.5 -E F2(>&)A F0(1)A F2 -.25(Ap)87 352.8 S +-.25(va)-.25 G(lent to).25 E F1(>)144 590.4 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .115(When using the second form,)108 607.2 R F2(wor) +2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) +-.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.614(td)-2.614 G +.114(oes, other redirection operators)-2.614 F(apply \(see)108 619.2 Q +F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E +(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 636 S (pending Standard Output and Standard Err).25 E(or)-.18 E F0 .248 -(This construct allo)108 364.8 R .249(ws both the standard output \(\ -\214le descriptor 1\) and the standard error output \(\214le descrip-) --.25 F(tor 2\) to be appended to the \214le whose name is the e)108 -376.8 Q(xpansion of)-.15 E F1(wor)2.5 E(d)-.37 E F0(.).77 E +(This construct allo)108 648 R .249(ws both the standard output \(\214l\ +e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F +(tor 2\) to be appended to the \214le whose name is the e)108 660 Q +(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E (The format for appending standard output and standard error is:)108 -393.6 Q F2(&>>)144 410.4 Q F1(wor)A(d)-.37 E F0 -(This is semantically equi)108 427.2 Q -.25(va)-.25 G(lent to).25 E F2 -(>>)144 444 Q F1(wor)A(d)-.37 E F0(2)2.5 E F2(>&)A F0(1)A F2(Her)87 -460.8 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redirection i\ +676.8 Q F1(&>>)144 693.6 Q F2(wor)A(d)-.37 E F0 +(This is semantically equi)108 710.4 Q -.25(va)-.25 G(lent to).25 E F1 +(>>)144 727.2 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(26)190.95 E 0 Cg EP +%%Page: 27 27 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E(\(see)108 84 Q/F1 10/Times-Bold@0 SF +(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E F1(Her)87 +100.8 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redirection i\ nstructs the shell to read input from the current source until a line c\ -ontaining only)108 472.8 R F1(delimiter)108.35 484.8 Q F0 .614 -(\(with no trailing blanks\) is seen.)3.844 F .615 +ontaining only)108 112.8 R/F2 10/Times-Italic@0 SF(delimiter)108.35 +124.8 Q F0 .614(\(with no trailing blanks\) is seen.)3.844 F .615 (All of the lines read up to that point are then used as the stan-)5.615 -F(dard input for a command.)108 496.8 Q -(The format of here-documents is:)108 513.6 Q F2(<<)144 530.4 Q F0([)A -F2A F0(])A F1(wor)A(d)-.37 E(her)164 542.4 Q(e-document)-.37 E -(delimiter)144 554.4 Q F0 .128(No parameter e)108 571.2 R .127 -(xpansion, command substitution, arithmetic e)-.15 F .127 -(xpansion, or pathname e)-.15 F .127(xpansion is performed)-.15 F(on)108 -583.2 Q F1(wor)3.274 E(d)-.37 E F0 5.774(.I).77 G 3.274(fa)-5.774 G -1.074 -.15(ny c)-3.274 H .774(haracters in).15 F F1(wor)3.614 E(d)-.37 E -F0 .774(are quoted, the)4.044 F F1(delimiter)3.624 E F0 .774 -(is the result of quote remo)4.004 F -.25(va)-.15 G 3.275(lo).25 G(n) --3.275 E F1(wor)3.275 E(d)-.37 E F0 3.275(,a).77 G(nd)-3.275 E .905 -(the lines in the here-document are not e)108 595.2 R 3.405(xpanded. If) --.15 F F1(wor)3.405 E(d)-.37 E F0 .904 -(is unquoted, all lines of the here-document are)3.405 F .694 -(subjected to parameter e)108 607.2 R .695 -(xpansion, command substitution, and arithmetic e)-.15 F 3.195 -(xpansion. In)-.15 F .695(the latter case, the)3.195 F -(character sequence)108 619.2 Q F2(\\)2.5 E F0(is ignored, and) -2.5 E F2(\\)2.5 E F0(must be used to quote the characters)2.5 E F2(\\) -2.5 E F0(,)A F2($)2.5 E F0 2.5(,a)C(nd)-2.5 E F2<92>2.5 E F0(.)A .602 -(If the redirection operator is)108 636 R F2(<<\255)3.101 E F0 3.101(,t) +F(dard input for a command.)108 136.8 Q +(The format of here-documents is:)108 153.6 Q F1(<<)144 170.4 Q F0([)A +F1A F0(])A F2(wor)A(d)-.37 E(her)164 182.4 Q(e-document)-.37 E +(delimiter)144 194.4 Q F0 .302(No parameter and v)108 211.2 R .302 +(ariable e)-.25 F .302(xpansion, command substitution, arithmetic e)-.15 +F .301(xpansion, or pathname e)-.15 F(xpansion)-.15 E .225 +(is performed on)108 223.2 R F2(wor)2.725 E(d)-.37 E F0 5.225(.I).77 G +2.726(fa)-5.225 G .526 -.15(ny c)-2.726 H .226(haracters in).15 F F2 +(wor)3.066 E(d)-.37 E F0 .226(are quoted, the)3.496 F F2(delimiter)3.076 +E F0 .226(is the result of quote remo)3.456 F -.25(va)-.15 G 2.726(lo) +.25 G(n)-2.726 E F2(wor)108 235.2 Q(d)-.37 E F0 2.715(,a).77 G .215 +(nd the lines in the here-document are not e)-2.715 F 2.714(xpanded. If) +-.15 F F2(wor)2.714 E(d)-.37 E F0 .214 +(is unquoted, all lines of the here-docu-)2.714 F .499 +(ment are subjected to parameter e)108 247.2 R .499 +(xpansion, command substitution, and arithmetic e)-.15 F .5 +(xpansion, the character)-.15 F(sequence)108 259.2 Q F1(\\)2.5 +E F0(is ignored, and)2.5 E F1(\\)2.5 E F0 +(must be used to quote the characters)2.5 E F1(\\)2.5 E F0(,)A F1($)2.5 +E F0 2.5(,a)C(nd)-2.5 E F1<92>2.5 E F0(.)A .602 +(If the redirection operator is)108 276 R F1(<<\255)3.101 E F0 3.101(,t) C .601(hen all leading tab characters are stripped from input lines and\ - the line)-3.101 F(containing)108 648 Q F1(delimiter)2.5 E F0 5(.T).73 G + the line)-3.101 F(containing)108 288 Q F2(delimiter)2.5 E F0 5(.T).73 G (his allo)-5 E (ws here-documents within shell scripts to be indented in a natural f) --.25 E(ashion.)-.1 E F2(Her)87 664.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 -2.5(Av)108 676.8 S(ariant of here documents, the format is:)-2.75 E F2 -(<<<)144 693.6 Q F1(wor)A(d)-.37 E F0(The)108 710.4 Q F1(wor)2.5 E(d) --.37 E F0(is e)2.5 E -(xpanded and supplied to the command on its standard input.)-.15 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(25)185.955 E 0 Cg EP -%%Page: 26 26 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Duplicating File Descriptors)87 84 Q F0 -(The redirection operator)108 96 Q([)144 112.8 Q/F2 10/Times-Italic@0 SF -(n)A F0(])A F1(<&)A F2(wor)A(d)-.37 E F0 .126 -(is used to duplicate input \214le descriptors.)108 129.6 R(If)5.127 E +-.25 E(ashion.)-.1 E F1(Her)87 304.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 316.8 S(ariant of here documents, the format is:)-2.75 E F1 +(<<<)144 333.6 Q F2(wor)A(d)-.37 E F0(The)108 350.4 Q F2(wor)2.893 E(d) +-.37 E F0(under)2.893 E .393(goes brace e)-.18 F .393(xpansion, tilde e) +-.15 F .393(xpansion, parameter and v)-.15 F .394(ariable e)-.25 F .394 +(xpansion, command substi-)-.15 F 2.148(tution, arithmetic e)108 362.4 R +2.148(xpansion, and quote remo)-.15 F -.25(va)-.15 G 4.648(l. P).25 F +2.148(athname e)-.15 F 2.148(xpansion and w)-.15 F 2.147 +(ord splitting are not per)-.1 F(-)-.2 E 2.5(formed. The)108 374.4 R(re\ +sult is supplied as a single string to the command on its standard inpu\ +t.)2.5 E F1(Duplicating File Descriptors)87 391.2 Q F0 +(The redirection operator)108 403.2 Q([)144 420 Q F2(n)A F0(])A F1(<&)A +F2(wor)A(d)-.37 E F0 .126 +(is used to duplicate input \214le descriptors.)108 436.8 R(If)5.127 E F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 (pands to one or more digits, the \214le descriptor denoted).15 F(by)108 -141.6 Q F2(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G +448.8 Q F2(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G 2.958(ft)-2.958 G .457(hat \214le descriptor)-2.958 F 5.457(.I)-.55 G 2.957(ft)-5.457 G .457(he digits in)-2.957 F F2(wor)3.297 E(d)-.37 E F0 .457(do not specify a \214le descriptor open)3.727 F .149 -(for input, a redirection error occurs.)108 153.6 R(If)5.149 E F2(wor) +(for input, a redirection error occurs.)108 460.8 R(If)5.149 E F2(wor) 2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F12.649 E F0 2.65<2c8c>C .15(le descriptor)-2.65 F F2(n)3.01 E F0 .15(is closed.) 2.89 F(If)5.15 E F2(n)3.01 E F0 .15(is not speci\214ed,)2.89 F -(the standard input \(\214le descriptor 0\) is used.)108 165.6 Q -(The operator)108 182.4 Q([)144 199.2 Q F2(n)A F0(])A F1(>&)A F2(wor)A +(the standard input \(\214le descriptor 0\) is used.)108 472.8 Q +(The operator)108 489.6 Q([)144 506.4 Q F2(n)A F0(])A F1(>&)A F2(wor)A (d)-.37 E F0 .444 -(is used similarly to duplicate output \214le descriptors.)108 216 R(If) -5.444 E F2(n)3.304 E F0 .443 +(is used similarly to duplicate output \214le descriptors.)108 523.2 R +(If)5.444 E F2(n)3.304 E F0 .443 (is not speci\214ed, the standard output \(\214le descrip-)3.183 F 1.357 -(tor 1\) is used.)108 228 R 1.357(If the digits in)6.357 F F2(wor)4.197 -E(d)-.37 E F0 1.358(do not specify a \214le descriptor open for output,\ - a redirection error)4.627 F 2.597(occurs. As)108 240 R 2.597(as)2.597 G -.097(pecial case, if)-2.597 F F2(n)2.596 E F0 .096(is omitted, and)2.596 -F F2(wor)2.596 E(d)-.37 E F0 .096(does not e)2.596 F .096 -(xpand to one or more digits, the standard out-)-.15 F -(put and standard error are redirected as described pre)108 252 Q -(viously)-.25 E(.)-.65 E F1(Mo)87 268.8 Q(ving File Descriptors)-.1 E F0 -(The redirection operator)108 280.8 Q([)144 297.6 Q F2(n)A F0(])A F1(<&) -A F2(digit)A F1A F0(mo)108 314.4 Q -.15(ve)-.15 G 3.035(st).15 G -.535(he \214le descriptor)-3.035 F F2(digit)3.035 E F0 .535 -(to \214le descriptor)3.035 F F2(n)3.035 E F0 3.035(,o).24 G 3.035(rt) --3.035 G .536(he standard input \(\214le descriptor 0\) if)-3.035 F F2 -(n)3.036 E F0 .536(is not speci-)3.036 F(\214ed.)108 326.4 Q F2(digit)5 -E F0(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A -(Similarly)108 343.2 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([) -144 360 Q F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 376.8 Q --.15(ve)-.15 G 2.786(st).15 G .286(he \214le descriptor)-2.786 F F2 -(digit)2.786 E F0 .286(to \214le descriptor)2.786 F F2(n)2.786 E F0 -2.786(,o).24 G 2.786(rt)-2.786 G .285 -(he standard output \(\214le descriptor 1\) if)-2.786 F F2(n)2.785 E F0 -.285(is not speci-)2.785 F(\214ed.)108 388.8 Q F1 -(Opening File Descriptors f)87 405.6 Q(or Reading and Writing)-.25 E F0 -(The redirection operator)108 417.6 Q([)144 434.4 Q F2(n)A F0(])A F1(<>) -A F2(wor)A(d)-.37 E F0 1.349(causes the \214le whose name is the e)108 -451.2 R 1.349(xpansion of)-.15 F F2(wor)4.189 E(d)-.37 E F0 1.349 +(tor 1\) is used.)108 535.2 R 1.357(If the digits in)6.357 F F2(wor) +4.197 E(d)-.37 E F0 1.358(do not specify a \214le descriptor open for o\ +utput, a redirection error)4.627 F 2.754(occurs. If)108 547.2 R F2(wor) +3.094 E(d)-.37 E F0 -.25(eva)3.524 G .254(luates to).25 F F12.754 E +F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 +(is closed.)2.994 F .254(As a special case, if)5.254 F F2(n)2.754 E F0 +.253(is omitted, and)2.754 F F2(wor)2.753 E(d)-.37 E F0(does)2.753 E +.965(not e)108 559.2 R .965(xpand to one or more digits or)-.15 F F1 +3.465 E F0 3.466(,t)C .966 +(he standard output and standard error are redirected as described) +-3.466 F(pre)108 571.2 Q(viously)-.25 E(.)-.65 E F1(Mo)87 588 Q +(ving File Descriptors)-.1 E F0(The redirection operator)108 600 Q([)144 +616.8 Q F2(n)A F0(])A F1(<&)A F2(digit)A F1A F0(mo)108 633.6 Q -.15 +(ve)-.15 G 3.036(st).15 G .536(he \214le descriptor)-3.036 F F2(digit) +3.036 E F0 .536(to \214le descriptor)3.036 F F2(n)3.036 E F0 3.036(,o) +.24 G 3.036(rt)-3.036 G .535 +(he standard input \(\214le descriptor 0\) if)-3.036 F F2(n)3.035 E F0 +.535(is not speci-)3.035 F(\214ed.)108 645.6 Q F2(digit)5 E F0 +(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A(Similarly) +108 662.4 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 679.2 Q +F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 696 Q -.15(ve)-.15 G +2.785(st).15 G .285(he \214le descriptor)-2.785 F F2(digit)2.785 E F0 +.285(to \214le descriptor)2.785 F F2(n)2.785 E F0 2.785(,o).24 G 2.785 +(rt)-2.785 G .286(he standard output \(\214le descriptor 1\) if)-2.785 F +F2(n)2.786 E F0 .286(is not speci-)2.786 F(\214ed.)108 708 Q +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(27)190.95 E 0 Cg EP +%%Page: 28 28 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(Opening File Descriptors f)87 84 Q +(or Reading and Writing)-.25 E F0(The redirection operator)108 96 Q([) +144 112.8 Q/F2 10/Times-Italic@0 SF(n)A F0(])A F1(<>)A F2(wor)A(d)-.37 E +F0 1.349(causes the \214le whose name is the e)108 129.6 R 1.349 +(xpansion of)-.15 F F2(wor)4.189 E(d)-.37 E F0 1.349 (to be opened for both reading and writing on \214le)4.619 F(descriptor) -108 463.2 Q F2(n)2.5 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c>-2.5 G +108 141.6 Q F2(n)2.5 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c>-2.5 G (le descriptor 0 if)-2.5 E F2(n)2.86 E F0(is not speci\214ed.)2.74 E (If the \214le does not e)5 E(xist, it is created.)-.15 E/F3 10.95 -/Times-Bold@0 SF(ALIASES)72 480 Q F2(Aliases)108 492 Q F0(allo)3.174 E -3.174(was)-.25 G .674(tring to be substituted for a w)-3.174 F .674 -(ord when it is used as the \214rst w)-.1 F .673 +/Times-Bold@0 SF(ALIASES)72 158.4 Q F2(Aliases)108 170.4 Q F0(allo)3.173 +E 3.173(was)-.25 G .674(tring to be substituted for a w)-3.173 F .674 +(ord when it is used as the \214rst w)-.1 F .674 (ord of a simple command.)-.1 F .394(The shell maintains a list of alia\ -ses that may be set and unset with the)108 504 R F1(alias)2.894 E F0 -(and)2.894 E F1(unalias)2.894 E F0 -.2(bu)2.894 G .394(iltin commands).2 -F(\(see)108 516 Q/F4 9/Times-Bold@0 SF 1.98(SHELL B)4.48 F(UIL)-.09 E -1.98(TIN COMMANDS)-.828 F F0(belo)4.23 E 4.48(w\). The)-.25 F 1.98 -(\214rst w)4.48 F 1.979(ord of each simple command, if unquoted, is)-.1 -F(check)108 528 Q .472(ed to see if it has an alias.)-.1 F .472 -(If so, that w)5.472 F .473(ord is replaced by the te)-.1 F .473 -(xt of the alias.)-.15 F .473(The characters)5.473 F F1(/)2.973 E F0(,)A -F1($)2.973 E F0(,)A F1<92>2.973 E F0(,)A(and)108 540 Q F1(=)3.612 E F0 -1.112(and an)3.612 F 3.612(yo)-.15 G 3.612(ft)-3.612 G 1.112(he shell) --3.612 F F2(metac)3.612 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 -(or quoting characters listed abo)3.612 F 1.411 -.15(ve m)-.15 H 1.111 -(ay not appear in an alias).15 F 3.619(name. The)108 552 R 1.119 -(replacement te)3.619 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G -1.119(alid shell input, including shell metacharacters.)-3.869 F 1.12 -(The \214rst)6.12 F -.1(wo)108 564 S .514(rd of the replacement te).1 F -.514(xt is tested for aliases, b)-.15 F .514(ut a w)-.2 F .513 -(ord that is identical to an alias being e)-.1 F .513(xpanded is)-.15 F -.295(not e)108 576 R .295(xpanded a second time.)-.15 F .296 -(This means that one may alias)5.295 F F1(ls)2.796 E F0(to)2.796 E F1 -.296(ls \255F)2.796 F F0 2.796(,f)C .296(or instance, and)-2.796 F F1 -(bash)2.796 E F0 .296(does not try)2.796 F .543(to recursi)108 588 R --.15(ve)-.25 G .543(ly e).15 F .543(xpand the replacement te)-.15 F -3.043(xt. If)-.15 F .543(the last character of the alias v)3.043 F .542 -(alue is a)-.25 F F2(blank)3.042 E F0 3.042(,t).67 G .542(hen the ne) --3.042 F(xt)-.15 E(command w)108 600 Q(ord follo)-.1 E +ses that may be set and unset with the)108 182.4 R F1(alias)2.893 E F0 +(and)2.893 E F1(unalias)2.893 E F0 -.2(bu)2.893 G .393(iltin commands).2 +F(\(see)108 194.4 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)4.479 F(UIL)-.09 +E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48(w\). The)-.25 F 1.98 +(\214rst w)4.48 F 1.98(ord of each simple command, if unquoted, is)-.1 F +(check)108 206.4 Q .473(ed to see if it has an alias.)-.1 F .473 +(If so, that w)5.473 F .472(ord is replaced by the te)-.1 F .472 +(xt of the alias.)-.15 F .472(The characters)5.472 F F1(/)2.972 E F0(,)A +F1($)2.972 E F0(,)A F1<92>2.972 E F0(,)A(and)108 218.4 Q F1(=)3.611 E F0 +1.111(and an)3.611 F 3.611(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell) +-3.611 F F2(metac)3.612 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 +(or quoting characters listed abo)3.612 F 1.412 -.15(ve m)-.15 H 1.112 +(ay not appear in an alias).15 F 3.62(name. The)108 230.4 R 1.12 +(replacement te)3.62 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G +1.119(alid shell input, including shell metacharacters.)-3.869 F 1.119 +(The \214rst)6.119 F -.1(wo)108 242.4 S .513(rd of the replacement te).1 +F .513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 +(ord that is identical to an alias being e)-.1 F .514(xpanded is)-.15 F +.296(not e)108 254.4 R .296(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.296 F F1(ls)2.796 E F0(to)2.796 E F1 +.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F1 +(bash)2.795 E F0 .295(does not try)2.795 F .542(to recursi)108 266.4 R +-.15(ve)-.25 G .542(ly e).15 F .542(xpand the replacement te)-.15 F +3.042(xt. If)-.15 F .543(the last character of the alias v)3.042 F .543 +(alue is a)-.25 F F2(blank)3.043 E F0 3.043(,t).67 G .543(hen the ne) +-3.043 F(xt)-.15 E(command w)108 278.4 Q(ord follo)-.1 E (wing the alias is also check)-.25 E(ed for alias e)-.1 E(xpansion.)-.15 -E(Aliases are created and listed with the)108 616.8 Q F1(alias)2.5 E F0 +E(Aliases are created and listed with the)108 295.2 Q F1(alias)2.5 E F0 (command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F1 (unalias)2.5 E F0(command.)2.5 E .284 -(There is no mechanism for using ar)108 633.6 R .284 +(There is no mechanism for using ar)108 312 R .284 (guments in the replacement te)-.18 F 2.784(xt. If)-.15 F(ar)2.784 E .284(guments are needed, a shell func-)-.18 F(tion should be used \(see) -108 645.6 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.22 -(Aliases are not e)108 662.4 R 1.22 +108 324 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.22 +(Aliases are not e)108 340.8 R 1.22 (xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 3.72(,u) .15 G 1.22(nless the)-3.72 F F1(expand_aliases)3.72 E F0 1.22 -(shell option is set)3.72 F(using)108 674.4 Q F1(shopt)2.5 E F0 +(shell option is set)3.72 F(using)108 352.8 Q F1(shopt)2.5 E F0 (\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F4 (SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 -E .435 +E .436 (The rules concerning the de\214nition and use of aliases are some)108 -691.2 R .436(what confusing.)-.25 F F1(Bash)5.436 E F0(al)2.936 E -.1 -(wa)-.1 G .436(ys reads at least).1 F .338 -(one complete line of input before e)108 703.2 R -.15(xe)-.15 G .338 +369.6 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 +(wa)-.1 G .435(ys reads at least).1 F .337 +(one complete line of input before e)108 381.6 R -.15(xe)-.15 G .338 (cuting an).15 F 2.838(yo)-.15 G 2.838(ft)-2.838 G .338 -(he commands on that line.)-2.838 F .337(Aliases are e)5.337 F .337 -(xpanded when)-.15 F 3.403(ac)108 715.2 S .904 -(ommand is read, not when it is e)-3.403 F -.15(xe)-.15 G 3.404 +(he commands on that line.)-2.838 F .338(Aliases are e)5.338 F .338 +(xpanded when)-.15 F 3.404(ac)108 393.6 S .904 +(ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404 (cuted. Therefore,).15 F .904 -(an alias de\214nition appearing on the same line as)3.404 F 1.162 -(another command does not tak)108 727.2 R 3.662(ee)-.1 G -.25(ff)-3.662 +(an alias de\214nition appearing on the same line as)3.404 F 1.161 +(another command does not tak)108 405.6 R 3.662(ee)-.1 G -.25(ff)-3.662 G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F -1.161(The commands follo)6.161 F 1.161(wing the)-.25 F(GNU Bash-4.2)72 -768 Q(2010 December 28)135.965 E(26)185.955 E 0 Cg EP -%%Page: 27 27 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .277(alias de\214nition on that line are not af)108 84 R .277 +1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277 +(alias de\214nition on that line are not af)108 417.6 R .277 (fected by the ne)-.25 F 2.777(wa)-.25 G 2.777(lias. This)-2.777 F(beha) -2.777 E .277(vior is also an issue when functions)-.2 F .699(are e)108 -96 R -.15(xe)-.15 G 3.199(cuted. Aliases).15 F .699(are e)3.199 F .699(\ -xpanded when a function de\214nition is read, not when the function is \ -e)-.15 F -.15(xe)-.15 G(cuted,).15 E .494 -(because a function de\214nition is itself a compound command.)108 108 R -.495(As a consequence, aliases de\214ned in a func-)5.494 F .085 -(tion are not a)108 120 R -.25(va)-.2 G .084 +2.777 E .277(vior is also an issue when functions)-.2 F .698(are e)108 +429.6 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F +.699(xpanded when a function de\214nition is read, not when the functio\ +n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .495 +(because a function de\214nition is itself a compound command.)108 441.6 +R .494(As a consequence, aliases de\214ned in a func-)5.494 F .084 +(tion are not a)108 453.6 R -.25(va)-.2 G .084 (ilable until after that function is e).25 F -.15(xe)-.15 G 2.584 (cuted. T).15 F 2.584(ob)-.8 G 2.584(es)-2.584 G .084(afe, al)-2.584 F --.1(wa)-.1 G .084(ys put alias de\214nitions on a sepa-).1 F -(rate line, and do not use)108 132 Q/F1 10/Times-Bold@0 SF(alias)2.5 E -F0(in compound commands.)2.5 E -.15(Fo)108 148.8 S 2.5(ra).15 G(lmost e) +-.1(wa)-.1 G .085(ys put alias de\214nitions on a sepa-).1 F +(rate line, and do not use)108 465.6 Q F1(alias)2.5 E F0 +(in compound commands.)2.5 E -.15(Fo)108 482.4 S 2.5(ra).15 G(lmost e) -2.5 E -.15(ve)-.25 G -(ry purpose, aliases are superseded by shell functions.).15 E/F2 10.95 -/Times-Bold@0 SF(FUNCTIONS)72 165.6 Q F0 3.467(As)108 177.6 S .967 -(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15 -H(nder).15 E/F3 9/Times-Bold@0 SF .967(SHELL GRAMMAR)3.467 F/F4 9 -/Times-Roman@0 SF(,)A F0 .968(stores a series of commands for)3.217 F -1.002(later e)108 189.6 R -.15(xe)-.15 G 3.502(cution. When).15 F 1.002 -(the name of a shell function is used as a simple command name, the lis\ -t of com-)3.502 F .315(mands associated with that function name is e)108 -201.6 R -.15(xe)-.15 G 2.816(cuted. Functions).15 F .316(are e)2.816 F --.15(xe)-.15 G .316(cuted in the conte).15 F .316(xt of the current)-.15 -F .036(shell; no ne)108 213.6 R 2.536(wp)-.25 G .036 -(rocess is created to interpret them \(contrast this with the e)-2.536 F --.15(xe)-.15 G .036(cution of a shell script\).).15 F .035(When a)5.035 -F .639(function is e)108 225.6 R -.15(xe)-.15 G .639(cuted, the ar).15 F +(ry purpose, aliases are superseded by shell functions.).15 E F3 +(FUNCTIONS)72 499.2 Q F0 3.468(As)108 511.2 S .968 +(hell function, de\214ned as described abo)-3.468 F 1.267 -.15(ve u)-.15 +H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 +.967(stores a series of commands for)3.217 F 1.001(later e)108 523.2 R +-.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\ +ion is used as a simple command name, the list of com-)3.501 F .316 +(mands associated with that function name is e)108 535.2 R -.15(xe)-.15 +G 2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .315 +(cuted in the conte).15 F .315(xt of the current)-.15 F .035 +(shell; no ne)108 547.2 R 2.535(wp)-.25 G .036 +(rocess is created to interpret them \(contrast this with the e)-2.535 F +-.15(xe)-.15 G .036(cution of a shell script\).).15 F .036(When a)5.036 +F .64(function is e)108 559.2 R -.15(xe)-.15 G .64(cuted, the ar).15 F .639 (guments to the function become the positional parameters during its e) --.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 237.6 -R F1(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 -(Special parameter)5.532 F F1(0)3.032 E F0 .532(is unchanged.)3.032 F -.532(The \214rst ele-)5.532 F(ment of the)108 249.6 Q F3(FUNCN)2.5 E +-.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 571.2 +R F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532 +(Special parameter)5.532 F F1(0)3.033 E F0 .533(is unchanged.)3.033 F +.533(The \214rst ele-)5.533 F(ment of the)108 583.2 Q F4(FUNCN)2.5 E (AME)-.18 E F0 -.25(va)2.25 G (riable is set to the name of the function while the function is e).25 E -.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108 -266.4 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 +600 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 (vironment are identical between a function and its caller with)-.4 F -1.049(these e)108 278.4 R 3.548(xceptions: the)-.15 F F3(DEB)3.548 E(UG) +1.048(these e)108 612 R 3.548(xceptions: the)-.15 F F4(DEB)3.548 E(UG) -.09 E F0(and)3.298 E F1(RETURN)3.548 E F0 1.048 (traps \(see the description of the)3.548 F F1(trap)3.548 E F0 -.2(bu) -3.548 G 1.048(iltin under).2 F F3(SHELL)3.548 E -.09(BU)108 290.4 S(IL) -.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479 +3.548 G 1.048(iltin under).2 F F4(SHELL)3.549 E -.09(BU)108 624 S(IL).09 +E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479 (w\) are not inherited unless the function has been gi)-.25 F -.15(ve) --.25 G 2.979(nt).15 G(he)-2.979 E F1(trace)2.979 E F0(attrib)2.979 E -.479(ute \(see)-.2 F .421(the description of the)108 302.4 R F3(declar) -2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the) --.25 F F1 .42(\255o functrace)2.92 F F0 .42 -(shell option has been enabled with the)2.92 F F1(set)2.92 E F0 -.2(bu) -108 314.4 S .071(iltin \(in which case all functions inherit the).2 F F1 +-.25 G 2.978(nt).15 G(he)-2.978 E F1(trace)2.978 E F0(attrib)2.978 E +.478(ute \(see)-.2 F .42(the description of the)108 636 R F4(declar)2.92 +E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F +F1 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F1(set)2.921 E F0 -.2(bu) +108 648 S .072(iltin \(in which case all functions inherit the).2 F F1 (DEB)2.572 E(UG)-.1 E F0(and)2.572 E F1(RETURN)2.572 E F0 .072 -(traps\), and the)2.572 F F3(ERR)2.572 E F0 .072(trap is not inher)2.322 -F(-)-.2 E(ited unless the)108 326.4 Q F1(\255o errtrace)2.5 E F0 -(shell option has been enabled.)2.5 E -1.11(Va)108 343.2 S .656 +(traps\), and the)2.572 F F4(ERR)2.571 E F0 .071(trap is not inher)2.321 +F(-)-.2 E(ited unless the)108 660 Q F1(\255o errtrace)2.5 E F0 +(shell option has been enabled.)2.5 E -1.11(Va)108 676.8 S .655 (riables local to the function may be declared with the)1.11 F F1(local) -3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E -3.155(,v)-.65 G .655(ariables and)-3.405 F(their v)108 355.2 Q +3.155 E F0 -.2(bu)3.156 G .656(iltin command.).2 F(Ordinarily)5.656 E +3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 688.8 Q (alues are shared between the function and its caller)-.25 E(.)-.55 E -(The)108 372 Q F1(FUNCNEST)3.528 E F0 -.25(va)3.528 G 1.028 +(The)108 705.6 Q F1(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 (riable, if set to a numeric v).25 F 1.028 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 -384 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +717.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G (cations that e).2 E(xceed the limit cause the entire command to abort.) --.15 E .044(If the b)108 400.8 R .043(uiltin command)-.2 F F1 -.18(re) -2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 -(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G -.043(cution resumes with).15 F 1.011(the ne)108 412.8 R 1.011 -(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G -1.011(ommand associated with the)-3.511 F F1(RETURN)3.512 E F0 1.012 -(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 424.8 R --.15(xe)-.15 G .214(cution resumes.).15 F .213 -(When a function completes, the v)5.214 F .213 +-.15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(28)190.95 E 0 Cg +EP +%%Page: 29 29 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .043(If the b)108 84 R .043(uiltin command)-.2 F/F1 10 +/Times-Bold@0 SF -.18(re)2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F +-.15(xe)-.15 G .043(cuted in a function, the function completes and e) +.15 F -.15(xe)-.15 G .044(cution resumes with).15 F 1.012(the ne)108 96 +R 1.012(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc) +-.15 G 1.011(ommand associated with the)-3.511 F F1(RETURN)3.511 E F0 +1.011(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 108 +R -.15(xe)-.15 G .213(cution resumes.).15 F .213 +(When a function completes, the v)5.213 F .214 (alues of the positional parameters and the spe-)-.25 F(cial parameter) -108 436.8 Q F1(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E -2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe) --2.65 G(cution.).15 E 1.358 -(Function names and de\214nitions may be listed with the)108 453.6 R F1 +108 120 Q F1(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E 2.5 +(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe)-2.65 +G(cution.).15 E 1.359 +(Function names and de\214nitions may be listed with the)108 136.8 R F1 3.858 E F0 1.358(option to the)3.858 F F1(declar)3.858 E(e)-.18 E -F0(or)3.859 E F1(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F -3.39(mands. The)108 465.6 R F13.39 E F0 .89(option to)3.39 F F1 +F0(or)3.858 E F1(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F +3.39(mands. The)108 148.8 R F13.39 E F0 .89(option to)3.39 F F1 (declar)3.39 E(e)-.18 E F0(or)3.39 E F1(typeset)3.39 E F0 .89 (will list the function names only \(and optionally the source)3.39 F -.326(\214le and line number)108 477.6 R 2.826(,i)-.4 G 2.826(ft)-2.826 G -(he)-2.826 E F1(extdeb)2.826 E(ug)-.2 E F0 .326 -(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327 -(xported so that subshells)-.15 F 1.298(automatically ha)108 489.6 R -1.598 -.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F13.798 E -F0 1.298(option to the)3.798 F F1(export)3.797 E F0 -.2(bu)3.797 G 3.797 -(iltin. A).2 F 1.297(function de\214nition may be)3.797 F .16 -(deleted using the)108 501.6 R F12.66 E F0 .16(option to the)2.66 -F F1(unset)2.66 E F0 -.2(bu)2.66 G 2.661(iltin. Note).2 F .161 -(that shell functions and v)2.661 F .161(ariables with the same name) --.25 F 1.325(may result in multiple identically-named entries in the en) -108 513.6 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G -3.825(hildren. Care)-3.825 F(should be tak)108 525.6 Q -(en in cases where this may cause a problem.)-.1 E .371 -(Functions may be recursi)108 542.4 R -.15(ve)-.25 G 5.371(.T).15 G(he) +.327(\214le and line number)108 160.8 R 2.827(,i)-.4 G 2.827(ft)-2.827 G +(he)-2.827 E F1(extdeb)2.827 E(ug)-.2 E F0 .326 +(shell option is enabled\).)2.827 F .326(Functions may be e)5.326 F .326 +(xported so that subshells)-.15 F 1.297(automatically ha)108 172.8 R +1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F13.797 E +F0 1.297(option to the)3.797 F F1(export)3.798 E F0 -.2(bu)3.798 G 3.798 +(iltin. A).2 F 1.298(function de\214nition may be)3.798 F .161 +(deleted using the)108 184.8 R F12.661 E F0 .161(option to the) +2.661 F F1(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16 +(that shell functions and v)2.661 F .16(ariables with the same name)-.25 +F 1.325(may result in multiple identically-named entries in the en)108 +196.8 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825 +(hildren. Care)-3.825 F(should be tak)108 208.8 Q +(en in cases where this may cause a problem.)-.1 E .372 +(Functions may be recursi)108 225.6 R -.15(ve)-.25 G 5.371(.T).15 G(he) -5.371 E F1(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371 (riable may be used to limit the depth of the function call).25 F 1.141 -(stack and restrict the number of function in)108 554.4 R -.2(vo)-.4 G +(stack and restrict the number of function in)108 237.6 R -.2(vo)-.4 G 3.641(cations. By).2 F(def)3.641 E 1.141 -(ault, no limit is imposed on the number of)-.1 F(recursi)108 566.4 Q .3 --.15(ve c)-.25 H(alls.).15 E F2(ARITHMETIC EV)72 583.2 Q(ALU)-1.478 E --1.04(AT)-.657 G(ION)1.04 E F0 2.297(The shell allo)108 595.2 R 2.297 -(ws arithmetic e)-.25 F 2.297(xpressions to be e)-.15 F -.25(va)-.25 G -2.297(luated, under certain circumstances \(see the).25 F F1(let)4.798 E -F0(and)4.798 E F1(declar)108 607.2 Q(e)-.18 E F0 -.2(bu)2.706 G .206 -(iltin commands and).2 F F1 .206(Arithmetic Expansion)2.706 F F0 2.705 -(\). Ev)B .205(aluation is done in \214x)-.25 F .205(ed-width inte)-.15 -F .205(gers with no)-.15 F .428(check for o)108 619.2 R -.15(ve)-.15 G -(r\215o).15 E 1.728 -.65(w, t)-.25 H .428(hough di).65 F .428 -(vision by 0 is trapped and \215agged as an error)-.25 F 5.429(.T)-.55 G -.429(he operators and their prece-)-5.429 F 1.92(dence, associati)108 -631.2 R(vity)-.25 E 4.42(,a)-.65 G 1.92(nd v)-4.42 F 1.92 -(alues are the same as in the C language.)-.25 F 1.919(The follo)6.919 F -1.919(wing list of operators is)-.25 F(grouped into le)108 643.2 Q -.15 +(ault, no limit is imposed on the number of)-.1 F(recursi)108 249.6 Q .3 +-.15(ve c)-.25 H(alls.).15 E/F2 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 +266.4 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 +(The shell allo)108 278.4 R 2.297(ws arithmetic e)-.25 F 2.297 +(xpressions to be e)-.15 F -.25(va)-.25 G 2.297 +(luated, under certain circumstances \(see the).25 F F1(let)4.797 E F0 +(and)4.797 E F1(declar)108 290.4 Q(e)-.18 E F0 -.2(bu)2.705 G .205 +(iltin commands and).2 F F1 .205(Arithmetic Expansion)2.705 F F0 2.705 +(\). Ev)B .205(aluation is done in \214x)-.25 F .206(ed-width inte)-.15 +F .206(gers with no)-.15 F .429(check for o)108 302.4 R -.15(ve)-.15 G +(r\215o).15 E 1.729 -.65(w, t)-.25 H .429(hough di).65 F .428 +(vision by 0 is trapped and \215agged as an error)-.25 F 5.428(.T)-.55 G +.428(he operators and their prece-)-5.428 F 1.919(dence, associati)108 +314.4 R(vity)-.25 E 4.419(,a)-.65 G 1.919(nd v)-4.419 F 1.919 +(alues are the same as in the C language.)-.25 F 1.92(The follo)6.92 F +1.92(wing list of operators is)-.25 F(grouped into le)108 326.4 Q -.15 (ve)-.25 G(ls of equal-precedence operators.).15 E(The le)5 E -.15(ve) --.25 G(ls are listed in order of decreasing precedence.).15 E/F5 10 -/Times-Italic@0 SF(id)108 660 Q F1(++)A F5(id)2.5 E F1A F0 -.25 -(va)144 672 S(riable post-increment and post-decrement).25 E F1(++)108 -684 Q F5(id)A F12.5 E F5(id)A F0 -.25(va)144 696 S -(riable pre-increment and pre-decrement).25 E F1 2.5108 708 S F0 -(unary minus and plus)19.6 E(GNU Bash-4.2)72 768 Q(2010 December 28) -135.965 E(27)185.955 E 0 Cg EP -%%Page: 28 28 +-.25 G(ls are listed in order of decreasing precedence.).15 E/F3 10 +/Times-Italic@0 SF(id)108 343.2 Q F1(++)A F3(id)2.5 E F1A F0 -.25 +(va)144 355.2 S(riable post-increment and post-decrement).25 E F1(++)108 +367.2 Q F3(id)A F12.5 E F3(id)A F0 -.25(va)144 379.2 S +(riable pre-increment and pre-decrement).25 E F1 2.5108 391.2 S F0 +(unary minus and plus)19.6 E F1 2.5(!~)108 403.2 S F0 +(logical and bitwise ne)24.34 E -.05(ga)-.15 G(tion).05 E F1(**)108 +415.2 Q F0 -.15(ex)26 G(ponentiation).15 E F1 2.5(*/%)108 427.2 S F0 +(multiplication, di)10.72 E(vision, remainder)-.25 E F1 2.5<2bad>108 +439.2 S F0(addition, subtraction)19.6 E F1(<< >>)108 451.2 Q F0 +(left and right bitwise shifts)10.7 E F1(<= >= < >)108 463.2 Q F0 +(comparison)144 475.2 Q F1(== !=)108 487.2 Q F0(equality and inequality) +13.07 E F1(&)108 499.2 Q F0(bitwise AND)27.67 E F1(^)108 511.2 Q F0 +(bitwise e)32.67 E(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F1(|)108 +523.2 Q F0(bitwise OR)33.8 E F1(&&)108 535.2 Q F0(logical AND)19.34 E F1 +(||)108 547.2 Q F0(logical OR)31.6 E F3 -.2(ex)108 559.2 S(pr).2 E F1(?) +A F3 -.2(ex)C(pr).2 E F1(:)A F3 -.2(ex)C(pr).2 E F0 +(conditional operator)144 571.2 Q F1 2.5(=*)108 583.2 S 2.5(=/)-2.5 G +2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G +(<= >>= &= ^= |=)-2.5 E F0(assignment)144 595.2 Q F3 -.2(ex)108 607.2 S +(pr1).2 E F1(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 619.2 Q .68 +(Shell v)108 636 R .68(ariables are allo)-.25 F .68 +(wed as operands; parameter e)-.25 F .68 +(xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 648 R 1.007(ithin an e)-.4 F +1.007(xpression, shell v)-.15 F 1.007 +(ariables may also be referenced by name without using the parameter) +-.25 F -.15(ex)108 660 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G +1.041(hell v)-3.541 F 1.041(ariable that is null or unset e)-.25 F -.25 +(va)-.25 G 1.04(luates to 0 when referenced by name without).25 F 1.466 +(using the parameter e)108 672 R 1.466(xpansion syntax.)-.15 F 1.467 +(The v)6.466 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 +(va)-.25 G 1.467(luated as an arithmetic e).25 F(xpression)-.15 E 1.39 +(when it is referenced, or when a v)108 684 R 1.389 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.889(nt).15 G(he) +-3.889 E F3(inte)3.889 E -.1(ge)-.4 G(r).1 E F0(attrib)3.889 E 1.389 +(ute using)-.2 F F1(declar)3.889 E 3.889(e-)-.18 G(i)-3.889 E F0(is) +3.889 E .332(assigned a v)108 696 R 2.832(alue. A)-.25 F .332(null v) +2.832 F .332(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832 +(As)5.332 G .332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 +-.15(ve i)-.2 H(ts).15 E F3(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib) +2.832 E .333(ute turned on)-.2 F(to be used in an e)108 708 Q +(xpression.)-.15 E 1.406 +(Constants with a leading 0 are interpreted as octal numbers.)108 724.8 +R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) +-.15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(29)190.95 E 0 Cg +EP +%%Page: 30 30 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF 2.5(!~)108 84 S F0(logical and bitwise ne) -24.34 E -.05(ga)-.15 G(tion).05 E F1(**)108 96 Q F0 -.15(ex)26 G -(ponentiation).15 E F1 2.5(*/%)108 108 S F0(multiplication, di)10.72 E -(vision, remainder)-.25 E F1 2.5<2bad>108 120 S F0 -(addition, subtraction)19.6 E F1(<< >>)108 132 Q F0 -(left and right bitwise shifts)10.7 E F1(<= >= < >)108 144 Q F0 -(comparison)144 156 Q F1(== !=)108 168 Q F0(equality and inequality) -13.07 E F1(&)108 180 Q F0(bitwise AND)27.67 E F1(^)108 192 Q F0 -(bitwise e)32.67 E(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F1(|)108 -204 Q F0(bitwise OR)33.8 E F1(&&)108 216 Q F0(logical AND)19.34 E F1(||) -108 228 Q F0(logical OR)31.6 E/F2 10/Times-Italic@0 SF -.2(ex)108 240 S -(pr).2 E F1(?)A F2 -.2(ex)C(pr).2 E F1(:)A F2 -.2(ex)C(pr).2 E F0 -(conditional operator)144 252 Q F1 2.5(=*)108 264 S 2.5(=/)-2.5 G 2.5 -(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=) --2.5 E F0(assignment)144 276 Q F2 -.2(ex)108 288 S(pr1).2 E F1(,)2.5 E -F2 -.2(ex)2.5 G(pr2).2 E F0(comma)144 300 Q .68(Shell v)108 316.8 R .68 -(ariables are allo)-.25 F .68(wed as operands; parameter e)-.25 F .68 -(xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F --.25(va)-.25 G(lu-).25 E 3.508(ated. W)108 328.8 R 1.008(ithin an e)-.4 -F 1.008(xpression, shell v)-.15 F 1.007 -(ariables may also be referenced by name without using the parameter) --.25 F -.15(ex)108 340.8 S 1.04(pansion syntax.).15 F 3.54(As)6.04 G -1.04(hell v)-3.54 F 1.04(ariable that is null or unset e)-.25 F -.25(va) --.25 G 1.041(luates to 0 when referenced by name without).25 F 1.467 -(using the parameter e)108 352.8 R 1.467(xpansion syntax.)-.15 F 1.467 -(The v)6.467 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 -(va)-.25 G 1.466(luated as an arithmetic e).25 F(xpression)-.15 E 1.389 -(when it is referenced, or when a v)108 364.8 R 1.389 -(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89 -E F2(inte)3.89 E -.1(ge)-.4 G(r).1 E F0(attrib)3.89 E 1.39(ute using)-.2 -F F1(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .333 -(assigned a v)108 376.8 R 2.832(alue. A)-.25 F .332(null v)2.832 F .332 -(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832(As)5.332 G -.332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2 -H(ts).15 E F2(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)2.832 E .332 -(ute turned on)-.2 F(to be used in an e)108 388.8 Q(xpression.)-.15 E -1.406(Constants with a leading 0 are interpreted as octal numbers.)108 -405.6 R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F -(xadecimal.)-.15 E .113(Otherwise, numbers tak)108 417.6 R 2.613(et)-.1 -G .113(he form [)-2.613 F F2(base#)A F0 .112(]n, where the optional)B F2 -(base)2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533 -(representing the arithmetic base, and)108 429.6 R F2(n)3.033 E F0 .533 -(is a number in that base.)3.033 F(If)5.534 E F2(base#)3.034 E F0 .534 -(is omitted, then base 10 is used.)3.034 F .916 -(The digits greater than 9 are represented by the lo)108 441.6 R .915 -(wercase letters, the uppercase letters, @, and _, in that)-.25 F(order) -108 453.6 Q 5.67(.I)-.55 G(f)-5.67 E F2(base)3.17 E F0 .67 -(is less than or equal to 36, lo)3.17 F .671 -(wercase and uppercase letters may be used interchangeably to)-.25 F -(represent numbers between 10 and 35.)108 465.6 Q .235(Operators are e) -108 482.4 R -.25(va)-.25 G .235(luated in order of precedence.).25 F -(Sub-e)5.234 E .234(xpressions in parentheses are e)-.15 F -.25(va)-.25 -G .234(luated \214rst and may).25 F -.15(ove)108 494.4 S -(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 -/Times-Bold@0 SF(CONDITION)72 511.2 Q(AL EXPRESSIONS)-.219 E F0 .255 -(Conditional e)108 523.2 R .255(xpressions are used by the)-.15 F F1([[) -2.755 E F0 .255(compound command and the)2.755 F F1(test)2.755 E F0(and) -2.755 E F1([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F -.77(\214le attrib)108 535.2 R .77 +-.35 E .112(Otherwise, numbers tak)108 84 R 2.612(et)-.1 G .112 +(he form [)-2.612 F/F1 10/Times-Italic@0 SF(base#)A F0 .112 +(]n, where the optional)B F1(base)2.612 E F0 .113 +(is a decimal number between 2 and 64)2.612 F .534 +(representing the arithmetic base, and)108 96 R F1(n)3.034 E F0 .534 +(is a number in that base.)3.034 F(If)5.533 E F1(base#)3.033 E F0 .533 +(is omitted, then base 10 is used.)3.033 F .16(When specifying)108 108 R +F1(n)2.66 E F0 2.66(,t)C .16 +(he digits greater< than 9 are represented by the lo)-2.66 F .16 +(wercase letters, the uppercase letters,)-.25 F .943 +(@, and _, in that order)108 120 R 5.943(.I)-.55 G(f)-5.943 E F1(base) +3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942 +(wercase and uppercase letters may be used)-.25 F +(interchangeably to represent numbers between 10 and 35.)108 132 Q .234 +(Operators are e)108 148.8 R -.25(va)-.25 G .234 +(luated in order of precedence.).25 F(Sub-e)5.234 E .234 +(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .235 +(luated \214rst and may).25 F -.15(ove)108 160.8 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F2 10.95 +/Times-Bold@0 SF(CONDITION)72 177.6 Q(AL EXPRESSIONS)-.219 E F0 .256 +(Conditional e)108 189.6 R .256(xpressions are used by the)-.15 F/F3 10 +/Times-Bold@0 SF([[)2.755 E F0 .255(compound command and the)2.755 F F3 +(test)2.755 E F0(and)2.755 E F3([)2.755 E F0 -.2(bu)2.755 G .255 +(iltin commands to test).2 F .77(\214le attrib)108 201.6 R .77 (utes and perform string and arithmetic comparisons.)-.2 F .77 -(Expressions are formed from the follo)5.77 F(wing)-.25 E 1.04 -(unary or binary primaries.)108 547.2 R 1.04(If an)6.04 F(y)-.15 E F2 -(\214le)3.54 E F0(ar)3.54 E 1.041 -(gument to one of the primaries is of the form)-.18 F F2(/de)3.541 E -(v/fd/n)-.15 E F0 3.541(,t)C 1.041(hen \214le)-3.541 F(descriptor)108 -559.2 Q F2(n)3.789 E F0 1.289(is check)3.789 F 3.789(ed. If)-.1 F(the) -3.789 E F2(\214le)3.789 E F0(ar)3.789 E 1.289 -(gument to one of the primaries is one of)-.18 F F2(/de)3.789 E(v/stdin) --.15 E F0(,)A F2(/de)3.788 E(v/stdout)-.15 E F0 3.788(,o)C(r)-3.788 E F2 -(/de)108 571.2 Q(v/stderr)-.15 E F0 2.5<2c8c>C +(Expressions are formed from the follo)5.77 F(wing)-.25 E 1.041 +(unary or binary primaries.)108 213.6 R 1.041(If an)6.041 F(y)-.15 E F1 +(\214le)3.541 E F0(ar)3.541 E 1.04 +(gument to one of the primaries is of the form)-.18 F F1(/de)3.54 E +(v/fd/n)-.15 E F0 3.54(,t)C 1.04(hen \214le)-3.54 F(descriptor)108 225.6 +Q F1(n)3.788 E F0 1.289(is check)3.788 F 3.789(ed. If)-.1 F(the)3.789 E +F1(\214le)3.789 E F0(ar)3.789 E 1.289 +(gument to one of the primaries is one of)-.18 F F1(/de)3.789 E(v/stdin) +-.15 E F0(,)A F1(/de)3.789 E(v/stdout)-.15 E F0 3.789(,o)C(r)-3.789 E F1 +(/de)108 237.6 Q(v/stderr)-.15 E F0 2.5<2c8c>C (le descriptor 0, 1, or 2, respecti)-2.5 E -.15(ve)-.25 G(ly).15 E 2.5 -(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721 +(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .722 (Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 588 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) --3.221 F(get)-.18 E(of the link, rather than the link itself.)108 600 Q -1.096(When used with)108 618 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596 E -F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le) -3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095 -E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 -630 Q F1108 654 Q F2(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 E -F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 666 Q F2 -(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a block special \214le.).15 E F1108 678 Q F2 -(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a character special \214le.).15 E F1108 690 Q F2 -(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a directory).15 E(.)-.65 E F1108 702 Q F2 -(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex) -2.5 G(ists.).15 E F1108 714 Q F2(\214le)2.5 E F0 -.35(Tr)12.25 G -(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 E -(gular \214le.)-.15 E(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E -(28)185.955 E 0 Cg EP -%%Page: 29 29 +108 254.4 R 3.221(ws)-.25 G .721(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 266.4 +Q 1.095(When used with)108 284.4 R F3([[)3.595 E F0 3.595(,t)C(he)-3.595 +E F3(<)3.595 E F0(and)3.595 E F3(>)3.595 E F0 1.095(operators sort le) +3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.096 +E F3(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 +296.4 Q F3108 320.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 +E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F3108 332.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) +2.5 G(ists and is a block special \214le.).15 E F3108 344.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) +2.5 G(ists and is a character special \214le.).15 E F3108 356.4 Q +F1(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F3108 368.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) +2.5 G(ists.).15 E F3108 380.4 Q F1(\214le)2.5 E F0 -.35(Tr)12.25 G +(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 E +(gular \214le.)-.15 E F3108 392.4 Q F1(\214le)2.5 E F0 -.35(Tr) +10.58 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is set-group-id.).15 E F3108 404.4 Q F1(\214le)2.5 E F0 +-.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F3108 416.4 Q F1(\214le)2.5 E +F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) +-2.5 E F3108 428.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 +E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).) +.15 E F3108 440.4 Q F1(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E +F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F3108 +452.4 Q F1(\214le)2.5 E F0 -.35(Tr)11.69 G(ue if).35 E F1(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F3 +108 464.4 Q F1(fd)2.5 E F0 -.35(Tr)16.69 G(ue if \214le descriptor).35 E +F1(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F3108 +476.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F3 +108 488.4 Q F1(\214le)2.5 E F0 -.35(Tr)8.36 G(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is writable.).15 E F3108 +500.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 E F1(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F3 +108 512.4 Q F1(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E +(fecti)-.25 E .3 -.15(ve g)-.25 H(roup id.).15 E F3108 524.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)8.91 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) +2.5 G(ists and is a symbolic link.).15 E F3108 536.4 Q F1(\214le) +2.5 E F0 -.35(Tr)8.36 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F3 +108 548.4 Q F1(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E +(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F3108 560.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) +2.5 G(ists and is a sock).15 E(et.)-.1 E F1(\214le1)108 572.4 Q F3 +(\255ef)2.5 E F1(\214le2)2.5 E F0 -.35(Tr)144 584.4 S(ue if).35 E F1 +(\214le1)2.5 E F0(and)2.5 E F1(\214le2)2.5 E F0(refer to the same de)2.5 +E(vice and inode numbers.)-.25 E F1(\214le1)108 596.4 Q F02.5 E F3 +(nt)A F1(\214le2)2.5 E F0 -.35(Tr)144 608.4 S .039(ue if).35 F F1 +(\214le1)2.539 E F0 .039(is ne)2.539 F .039 +(wer \(according to modi\214cation date\) than)-.25 F F1(\214le2)2.539 E +F0 2.539(,o)C 2.539(ri)-2.539 G(f)-2.539 E F1(\214le1)2.539 E F0 -.15 +(ex)2.539 G .039(ists and).15 F F1(\214le2)2.539 E F0 .038(does not.) +2.538 F F1(\214le1)108 620.4 Q F02.5 E F3(ot)A F1(\214le2)2.5 E F0 +-.35(Tr)144 632.4 S(ue if).35 E F1(\214le1)2.5 E F0(is older than)2.5 E +F1(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F1(\214le2)2.5 E F0 +-.15(ex)2.5 G(ists and).15 E F1(\214le1)2.5 E F0(does not.)2.5 E F3 +108 644.4 Q F1(optname)2.5 E F0 -.35(Tr)144 656.4 S .262 +(ue if the shell option).35 F F1(optname)2.992 E F0 .262(is enabled.) +2.942 F .262(See the list of options under the description of the)5.262 +F F32.763 E F0(option to the)144 668.4 Q F3(set)2.5 E F0 -.2(bu) +2.5 G(iltin belo).2 E -.65(w.)-.25 G F3108 680.4 Q F1(varname)2.5 +E F0 -.35(Tr)144 692.4 S(ue if the shell v).35 E(ariable)-.25 E F1 +(varname)2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E +F3108 704.4 Q F1(varname)2.5 E F0 -.35(Tr)144 716.4 S +(ue if the shell v).35 E(ariable)-.25 E F1(varname)2.79 E F0 +(is set and is a name reference.)2.68 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(30)190.95 E 0 Cg EP +%%Page: 31 31 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF108 84 Q/F2 10/Times-Italic@0 SF -(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is set-group-id.).15 E F1108 96 Q F2(\214le)2.5 E -F0 -.35(Tr)10.02 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F1108 108 Q F2(\214le)2.5 E F0 --.35(Tr)10.02 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) --2.5 E F1108 120 Q F2(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E -F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).).15 -E F1108 132 Q F2(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F2 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F1108 -144 Q F2(\214le)2.5 E F0 -.35(Tr)11.69 G(ue if).35 E F2(\214le)2.5 E F0 --.15(ex)2.5 G(ists and has a size greater than zero.).15 E F1108 -156 Q F2(fd)2.5 E F0 -.35(Tr)16.69 G(ue if \214le descriptor).35 E F2 -(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1108 168 Q -F2(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1108 -180 Q F2(\214le)2.5 E F0 -.35(Tr)8.36 G(ue if).35 E F2(\214le)2.5 E F0 --.15(ex)2.5 G(ists and is writable.).15 E F1108 192 Q F2(\214le) -2.5 E F0 -.35(Tr)10.58 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1108 204 Q F2 -(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 E .3 -.15 -(ve g)-.25 H(roup id.).15 E F1108 216 Q F2(\214le)2.5 E F0 -.35 -(Tr)8.91 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F1108 228 Q F2(\214le)2.5 E F0 --.35(Tr)8.36 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1 -108 240 Q F2(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F2(\214le) -2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti) --.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1108 252 Q F2(\214le)2.5 -E F0 -.35(Tr)10.02 G(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a sock).15 E(et.)-.1 E F2(\214le1)108 264 Q F1(\255ef)2.5 E -F2(\214le2)2.5 E F0 -.35(Tr)144 276 S(ue if).35 E F2(\214le1)2.5 E F0 -(and)2.5 E F2(\214le2)2.5 E F0(refer to the same de)2.5 E -(vice and inode numbers.)-.25 E F2(\214le1)108 288 Q F02.5 E F1(nt)A -F2(\214le2)2.5 E F0 -.35(Tr)144 300 S .038(ue if).35 F F2(\214le1)2.538 -E F0 .039(is ne)2.539 F .039 -(wer \(according to modi\214cation date\) than)-.25 F F2(\214le2)2.539 E -F0 2.539(,o)C 2.539(ri)-2.539 G(f)-2.539 E F2(\214le1)2.539 E F0 -.15 -(ex)2.539 G .039(ists and).15 F F2(\214le2)2.539 E F0 .039(does not.) -2.539 F F2(\214le1)108 312 Q F02.5 E F1(ot)A F2(\214le2)2.5 E F0 --.35(Tr)144 324 S(ue if).35 E F2(\214le1)2.5 E F0(is older than)2.5 E F2 -(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 --.15(ex)2.5 G(ists and).15 E F2(\214le1)2.5 E F0(does not.)2.5 E F1 -108 336 Q F2(optname)2.5 E F0 -.35(Tr)144 348 S .263 -(ue if the shell option).35 F F2(optname)2.992 E F0 .262(is enabled.) -2.942 F .262(See the list of options under the description of the)5.262 -F F12.762 E F0(option to the)144 360 Q F1(set)2.5 E F0 -.2(bu)2.5 -G(iltin belo).2 E -.65(w.)-.25 G F1108 372 Q F2(varname)2.5 E F0 --.35(Tr)144 384 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 -E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1108 -396 Q F2(string)2.5 E F0 -.35(Tr)144 408 S(ue if the length of).35 E F2 -(string)2.5 E F0(is zero.)2.5 E F2(string)108 420 Q F1108 432 Q F2 -(string)2.5 E F0 -.35(Tr)144 444 S(ue if the length of).35 E F2(string) -2.84 E F0(is non-zero.)2.72 E F2(string1)108 460.8 Q F1(==)2.5 E F2 -(string2)2.5 E(string1)108 472.8 Q F1(=)2.5 E F2(string2)2.5 E F0 -.35 -(Tr)144 484.8 S(ue if the strings are equal.).35 E F1(=)5 E F0 -(should be used with the)2.5 E F1(test)2.5 E F0 -(command for POSIX conformance.)2.5 E F2(string1)108 501.6 Q F1(!=)2.5 E -F2(string2)2.5 E F0 -.35(Tr)144 513.6 S -(ue if the strings are not equal.).35 E F2(string1)108 530.4 Q F1(<)2.5 -E F2(string2)2.5 E F0 -.35(Tr)144 542.4 S(ue if).35 E F2(string1)2.5 E +-.35 E/F1 10/Times-Bold@0 SF108 84 Q/F2 10/Times-Italic@0 SF +(string)2.5 E F0 -.35(Tr)144 96 S(ue if the length of).35 E F2(string) +2.5 E F0(is zero.)2.5 E F2(string)108 108 Q F1108 120 Q F2(string) +2.5 E F0 -.35(Tr)144 132 S(ue if the length of).35 E F2(string)2.84 E F0 +(is non-zero.)2.72 E F2(string1)108 148.8 Q F1(==)2.5 E F2(string2)2.5 E +(string1)108 160.8 Q F1(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 172.8 S +.862(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 +(should be used with the)3.361 F F1(test)3.361 E F0 .861 +(command for POSIX conformance.)3.361 F .446(When used with the)144 +184.8 R F1([[)2.946 E F0 .446 +(command, this performs pattern matching as described abo)2.946 F .747 +-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 196.8 Q F0(\).)A F2 +(string1)108 213.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 225.6 S +(ue if the strings are not equal.).35 E F2(string1)108 242.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 254.4 S(ue if).35 E F2(string1)2.5 E F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 -E(.)-.65 E F2(string1)108 559.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 -(Tr)144 571.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 +E(.)-.65 E F2(string1)108 271.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 +(Tr)144 283.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 (string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 -588 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF -(OP)144 600 Q F0 .385(is one of)2.634 F F1(\255eq)2.885 E F0(,)A F1 +300 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF +(OP)144 312 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1 (\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 (.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 -(ar)2.885 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ -s than or equal to, greater than, or greater than or equal to)144 612 R -F2(ar)144 624 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) +(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ +s than or equal to, greater than, or greater than or equal to)144 324 R +F2(ar)144 336 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) .15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37 E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15 (eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4 -10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 640.8 Q(ANSION)-.81 E F0 -.613(When a simple command is e)108 652.8 R -.15(xe)-.15 G .614 -(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614 +10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 352.8 Q(ANSION)-.81 E F0 +.614(When a simple command is e)108 364.8 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613 (xpansions, assignments, and redi-)-.15 F(rections, from left to right.) -108 664.8 Q 26(1. The)108 681.6 R -.1(wo)4.349 G 1.849 -(rds that the parser has mark).1 F 1.848(ed as v)-.1 F 1.848 +108 376.8 Q 26(1. The)108 393.6 R -.1(wo)4.348 G 1.848 +(rds that the parser has mark).1 F 1.848(ed as v)-.1 F 1.849 (ariable assignments \(those preceding the command)-.25 F -(name\) and redirections are sa)144 693.6 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E 26(2. The)108 710.4 R -.1(wo)3.663 G 1.163 +(name\) and redirections are sa)144 405.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E 26(2. The)108 422.4 R -.1(wo)3.664 G 1.164 (rds that are not v).1 F 1.164 -(ariable assignments or redirections are e)-.25 F 3.664(xpanded. If)-.15 -F(an)3.664 E 3.664(yw)-.15 G 1.164(ords remain)-3.764 F .776(after e)144 -722.4 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775 +(ariable assignments or redirections are e)-.25 F 3.663(xpanded. If)-.15 +F(an)3.663 E 3.663(yw)-.15 G 1.163(ords remain)-3.763 F .775(after e)144 +434.4 R .775(xpansion, the \214rst w)-.15 F .775(ord is tak)-.1 F .775 (en to be the name of the command and the remaining w)-.1 F(ords)-.1 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(29)185.955 E 0 Cg EP -%%Page: 30 30 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(are the ar)144 84 Q(guments.)-.18 E 26(3. Redirections)108 100.8 -R(are performed as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E/F1 -9/Times-Bold@0 SF(REDIRECTION)2.5 E/F2 9/Times-Roman@0 SF(.)A F0 26 -(4. The)108 117.6 R(te)3.216 E .717(xt after the)-.15 F/F3 10 -/Times-Bold@0 SF(=)3.217 E F0 .717(in each v)3.217 F .717 -(ariable assignment under)-.25 F .717(goes tilde e)-.18 F .717 -(xpansion, parameter e)-.15 F(xpansion,)-.15 E .34 -(command substitution, arithmetic e)144 129.6 R .339 +(are the ar)144 446.4 Q(guments.)-.18 E 26(3. Redirections)108 463.2 R +(are performed as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F3 +(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0 26(4. The)108 480 R(te) +3.217 E .717(xt after the)-.15 F F1(=)3.217 E F0 .717(in each v)3.217 F +.717(ariable assignment under)-.25 F .717(goes tilde e)-.18 F .717 +(xpansion, parameter e)-.15 F(xpansion,)-.15 E .339 +(command substitution, arithmetic e)144 492 R .339 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339 -(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 141.6 Q -.332(If no command name results, the v)108 158.4 R .332 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 504 Q .332 +(If no command name results, the v)108 520.8 R .332 (ariable assignments af)-.25 F .332(fect the current shell en)-.25 F -2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 170.4 S .757 +2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 532.8 S .757 (riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 (xe)-.15 G .757(cuted command and do not af).15 F .757 -(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 182.4 -R(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677 -(he assignments attempts to assign a v)-3.176 F .677 -(alue to a readonly v)-.25 F .677(ariable, an error occurs, and)-.25 F -(the command e)108 194.4 Q(xits with a non-zero status.)-.15 E .15 -(If no command name results, redirections are performed, b)108 211.2 R -.149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649 -(vironment. A)-.4 F(redirection error causes the command to e)108 223.2 +(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 544.8 +R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677 +(he assignments attempts to assign a v)-3.177 F .677 +(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F +(the command e)108 556.8 Q(xits with a non-zero status.)-.15 E .149 +(If no command name results, redirections are performed, b)108 573.6 R +.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65 +(vironment. A)-.4 F(redirection error causes the command to e)108 585.6 Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 240 R 1.064(xpansion, e) +(If there is a command name left after e)108 602.4 R 1.064(xpansion, e) -.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F -4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108 252 -R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069 -(xpansions contained a command substitution, the e)-.15 F .068 -(xit status of the command)-.15 F .466(is the e)108 264 R .466 -(xit status of the last command substitution performed.)-.15 F .467 -(If there were no command substitutions, the)5.466 F(command e)108 276 Q -(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF -(COMMAND EXECUTION)72 292.8 Q F0 .547 -(After a command has been split into w)108 304.8 R .546 +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108 +614.4 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069 +(xpansions contained a command substitution, the e)-.15 F .069 +(xit status of the command)-.15 F .467(is the e)108 626.4 R .466 +(xit status of the last command substitution performed.)-.15 F .466 +(If there were no command substitutions, the)5.466 F(command e)108 638.4 +Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 655.2 Q F0 +.546(After a command has been split into w)108 667.2 R .547 (ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 316.8 Q(wing actions are tak)-.25 E +F(gu-)-.18 E(ments, the follo)108 679.2 Q(wing actions are tak)-.25 E (en.)-.1 E .379(If the command name contains no slashes, the shell atte\ -mpts to locate it.)108 333.6 R .379(If there e)5.379 F .379 +mpts to locate it.)108 696 R .379(If there e)5.379 F .379 (xists a shell function by)-.15 F .246(that name, that function is in) -108 345.6 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G -.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F1(FUNCTIONS) -2.746 E F2(.)A F0 .246(If the name does not match a func-)4.746 F -(tion, the shell searches for it in the list of shell b)108 357.6 Q 2.5 +108 708 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G .246 +(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS)2.746 +E F5(.)A F0 .246(If the name does not match a func-)4.746 F +(tion, the shell searches for it in the list of shell b)108 720 Q 2.5 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E -(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309 -(If the name is neither a shell function nor a b)108 374.4 R .31 -(uiltin, and contains no slashes,)-.2 F F3(bash)2.81 E F0 .31 -(searches each element of)2.81 F(the)108 386.4 Q F1 -.666(PA)3.163 G(TH) --.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G -.662(cutable \214le by that name.).15 F F3(Bash)5.662 E F0 .662 -(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108 -398.4 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F3(hash)4.415 E -F0(under)4.415 E F1 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS) --.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E .72 -(search of the directories in)108 410.4 R F1 -.666(PA)3.22 G(TH)-.189 E -F0 .719 -(is performed only if the command is not found in the hash table.)2.97 F -.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\ - a de\214ned shell function named)108 422.4 R F3(command_not_f)3.456 E -(ound_han-)-.25 E(dle)108 434.4 Q F0 5.278(.I)C 2.778(ft)-5.278 G .278 -(hat function e)-2.778 F .278(xists, it is in)-.15 F -.2(vo)-.4 G -.1 -(ke).2 G 2.778(dw).1 G .277 -(ith the original command and the original command')-2.778 F 2.777(sa) --.55 G -.18(rg)-2.777 G(uments).18 E .775(as its ar)108 446.4 R .775 +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash 4.3)72 768 +Q(2014 February 2)141.79 E(31)190.95 E 0 Cg EP +%%Page: 32 32 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .31(If the name is neither a shell function nor a b)108 84 R .309 +(uiltin, and contains no slashes,)-.2 F/F1 10/Times-Bold@0 SF(bash)2.809 +E F0 .309(searches each element of)2.809 F(the)108 96 Q/F2 9 +/Times-Bold@0 SF -.666(PA)3.162 G(TH)-.189 E F0 .662 +(for a directory containing an e)2.912 F -.15(xe)-.15 G .662 +(cutable \214le by that name.).15 F F1(Bash)5.662 E F0 .663 +(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108 +108 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F1(hash)4.415 E +F0(under)4.415 E F2 1.915(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS) +-.828 F F0(belo)4.164 E 4.414(w\). A)-.25 F(full)4.414 E .719 +(search of the directories in)108 120 R F2 -.666(PA)3.219 G(TH)-.189 E +F0 .72(is performed only if the command is not found in the hash table.) +2.969 F .72(If the)5.72 F .956(search is unsuccessful, the shell search\ +es for a de\214ned shell function named)108 132 R F1(command_not_f)3.455 +E(ound_han-)-.25 E(dle)108 144 Q F0 5.277(.I)C 2.777(ft)-5.277 G .277 +(hat function e)-2.777 F .277(xists, it is in)-.15 F -.2(vo)-.4 G -.1 +(ke).2 G 2.777(dw).1 G .278 +(ith the original command and the original command')-2.777 F 2.778(sa) +-.55 G -.18(rg)-2.778 G(uments).18 E .776(as its ar)108 156 R .776 (guments, and the function')-.18 F 3.275(se)-.55 G .775 (xit status becomes the e)-3.425 F .775(xit status of the shell.)-.15 F -.776(If that function is not)5.776 F -(de\214ned, the shell prints an error message and returns an e)108 458.4 -Q(xit status of 127.)-.15 E 1.089(If the search is successful, or if th\ -e command name contains one or more slashes, the shell e)108 475.2 R --.15(xe)-.15 G 1.089(cutes the).15 F .197(named program in a separate e) -108 487.2 R -.15(xe)-.15 G .197(cution en).15 F 2.698(vironment. Ar)-.4 -F .198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198 -(n, and the remain-).15 F(ing ar)108 499.2 Q +.775(If that function is not)5.775 F +(de\214ned, the shell prints an error message and returns an e)108 168 Q +(xit status of 127.)-.15 E 1.089(If the search is successful, or if the\ + command name contains one or more slashes, the shell e)108 184.8 R -.15 +(xe)-.15 G 1.09(cutes the).15 F .198(named program in a separate e)108 +196.8 R -.15(xe)-.15 G .198(cution en).15 F 2.698(vironment. Ar)-.4 F +.198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 +(n, and the remain-).15 F(ing ar)108 208.8 Q (guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 -(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 516 R -.15 -(xe)-.15 G 1.809(cution f).15 F 1.809 +(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 225.6 R +-.15(xe)-.15 G 1.809(cution f).15 F 1.809 (ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.809 (cutable format, and the \214le is not a directory).15 F 4.309(,i)-.65 G -4.309(ti)-4.309 G(s)-4.309 E .677(assumed to be a)108 528 R/F5 10 -/Times-Italic@0 SF .678(shell script)3.177 F F0 3.178(,a\214)C .678 +4.309(ti)-4.309 G(s)-4.309 E .678(assumed to be a)108 237.6 R/F3 10 +/Times-Italic@0 SF .678(shell script)3.178 F F0 3.178(,a\214)C .678 (le containing shell commands.)-3.178 F 3.178(As)5.678 G .678 -(ubshell is spa)-3.178 F .678(wned to e)-.15 F -.15(xe)-.15 G .678 -(cute it.).15 F(This)5.678 E .33 -(subshell reinitializes itself, so that the ef)108 540 R .33 -(fect is as if a ne)-.25 F 2.829(ws)-.25 G .329(hell had been in)-2.829 -F -.2(vo)-.4 G -.1(ke).2 G 2.829(dt).1 G 2.829(oh)-2.829 G .329 -(andle the script, with)-2.829 F 1.219(the e)108 552 R 1.219 +(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15(xe)-.15 G .677 +(cute it.).15 F(This)5.677 E .329 +(subshell reinitializes itself, so that the ef)108 249.6 R .329 +(fect is as if a ne)-.25 F 2.83(ws)-.25 G .33(hell had been in)-2.83 F +-.2(vo)-.4 G -.1(ke).2 G 2.83(dt).1 G 2.83(oh)-2.83 G .33 +(andle the script, with)-2.83 F 1.219(the e)108 261.6 R 1.219 (xception that the locations of commands remembered by the parent \(see) --.15 F F3(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F1 -(SHELL)3.719 E -.09(BU)108 564 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A -F0(are retained by the child.)2.25 E .348(If the program is a \214le be) -108 580.8 R .348(ginning with)-.15 F F3(#!)2.848 E F0 2.848(,t)C .347(h\ -e remainder of the \214rst line speci\214es an interpreter for the pro-) --2.848 F 3.178(gram. The)108 592.8 R .678(shell e)3.178 F -.15(xe)-.15 G -.678(cutes the speci\214ed interpreter on operating systems that do not\ - handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.193(format themselv) -108 604.8 R 3.693(es. The)-.15 F(ar)3.693 E 1.193 -(guments to the interpreter consist of a single optional ar)-.18 F 1.192 -(gument follo)-.18 F 1.192(wing the)-.25 F 1.13 -(interpreter name on the \214rst line of the program, follo)108 616.8 R -1.131(wed by the name of the program, follo)-.25 F 1.131(wed by the)-.25 -F(command ar)108 628.8 Q(guments, if an)-.18 E -.65(y.)-.15 G F4 -(COMMAND EXECUTION ENVIR)72 645.6 Q(ONMENT)-.329 E F0(The shell has an) -108 657.6 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0 -2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E 32.5<836f>108 -674.4 S 1.406(pen \214les inherited by the shell at in)-32.5 F -.2(vo) --.4 G 1.405(cation, as modi\214ed by redirections supplied to the).2 F -F3(exec)3.905 E F0 -.2(bu)144 686.4 S(iltin).2 E 32.5<8374>108 703.2 S -(he current w)-32.5 E(orking directory as set by)-.1 E F3(cd)2.5 E F0(,) -A F3(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F3(popd)2.5 E F0 2.5(,o)C 2.5(ri) --2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(30)185.955 E 0 Cg EP -%%Page: 31 31 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 32.5<8374>108 84 S(he \214le creation mode mask as set by)-32.5 E -/F1 10/Times-Bold@0 SF(umask)2.5 E F0(or inherited from the shell')2.5 E -2.5(sp)-.55 G(arent)-2.5 E 32.5<8363>108 100.8 S(urrent traps set by) --32.5 E F1(trap)2.5 E F0 32.5<8373>108 117.6 S .256 -(hell parameters that are set by v)-32.5 F .256 -(ariable assignment or with)-.25 F F1(set)2.756 E F0 .257 -(or inherited from the shell')2.756 F 2.757(sp)-.55 G(arent)-2.757 E -(in the en)144 129.6 Q(vironment)-.4 E 32.5<8373>108 146.4 S +-.15 F F1(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F2 +(SHELL)3.719 E -.09(BU)108 273.6 S(IL).09 E(TIN COMMANDS)-.828 E/F4 9 +/Times-Roman@0 SF(\))A F0(are retained by the child.)2.25 E .347 +(If the program is a \214le be)108 290.4 R .347(ginning with)-.15 F F1 +(#!)2.847 E F0 2.847(,t)C .348(he remainder of the \214rst line speci\ +\214es an interpreter for the pro-)-2.847 F 3.178(gram. The)108 302.4 R +.678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpre\ +ter on operating systems that do not handle this e).15 F -.15(xe)-.15 G +(cutable).15 E 1.192(format themselv)108 314.4 R 3.692(es. The)-.15 F +(ar)3.693 E 1.193 +(guments to the interpreter consist of a single optional ar)-.18 F 1.193 +(gument follo)-.18 F 1.193(wing the)-.25 F 1.131 +(interpreter name on the \214rst line of the program, follo)108 326.4 R +1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F +(command ar)108 338.4 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95 +/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 355.2 Q(ONMENT)-.329 E F0 +(The shell has an)108 367.2 Q F3 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E +(onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 +E 32.5<836f>108 384 S 1.405(pen \214les inherited by the shell at in) +-32.5 F -.2(vo)-.4 G 1.406 +(cation, as modi\214ed by redirections supplied to the).2 F F1(exec) +3.906 E F0 -.2(bu)144 396 S(iltin).2 E 32.5<8374>108 412.8 S +(he current w)-32.5 E(orking directory as set by)-.1 E F1(cd)2.5 E F0(,) +A F1(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F1(popd)2.5 E F0 2.5(,o)C 2.5(ri) +-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E 32.5 +<8374>108 429.6 S(he \214le creation mode mask as set by)-32.5 E F1 +(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) +-2.5 E 32.5<8363>108 446.4 S(urrent traps set by)-32.5 E F1(trap)2.5 E +F0 32.5<8373>108 463.2 S .257(hell parameters that are set by v)-32.5 F +.256(ariable assignment or with)-.25 F F1(set)2.756 E F0 .256 +(or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E +(in the en)144 475.2 Q(vironment)-.4 E 32.5<8373>108 492 S (hell functions de\214ned during e)-32.5 E -.15(xe)-.15 G (cution or inherited from the shell').15 E 2.5(sp)-.55 G -(arent in the en)-2.5 E(vironment)-.4 E 32.5<836f>108 163.2 S +(arent in the en)-2.5 E(vironment)-.4 E 32.5<836f>108 508.8 S (ptions enabled at in)-32.5 E -.2(vo)-.4 G(cation \(either by def).2 E (ault or with command-line ar)-.1 E(guments\) or by)-.18 E F1(set)2.5 E -F0 32.5<836f>108 180 S(ptions enabled by)-32.5 E F1(shopt)2.5 E F0 32.5 -<8373>108 196.8 S(hell aliases de\214ned with)-32.5 E F1(alias)2.5 E F0 -32.5<8376>108 213.6 S +F0 32.5<836f>108 525.6 S(ptions enabled by)-32.5 E F1(shopt)2.5 E F0 +32.5<8373>108 542.4 S(hell aliases de\214ned with)-32.5 E F1(alias)2.5 E +F0 32.5<8376>108 559.2 S (arious process IDs, including those of background jobs, the v)-32.75 E (alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E -/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .427 -(When a simple command other than a b)108 230.4 R .426 -(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .426 -(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.926(di).1 G 2.926(nas) --2.926 G(eparate)-2.926 E -.15(exe)108 242.4 S .133(cution en).15 F .133 +F2(PPID)2.5 E F0 .426(When a simple command other than a b)108 576 R +.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 +(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas) +-2.927 G(eparate)-2.927 E -.15(exe)108 588 S .134(cution en).15 F .134 (vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F -.134(otherwise noted, the v)2.634 F .134(alues are inherited from)-.25 F -(the shell.)108 254.4 Q 32.5<8374>108 271.2 S 1.056(he shell')-32.5 F -3.556(so)-.55 G 1.056(pen \214les, plus an)-3.556 F 3.556(ym)-.15 G +.133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F +(the shell.)108 600 Q 32.5<8374>108 616.8 S 1.055(he shell')-32.5 F +3.555(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G 1.056 (odi\214cations and additions speci\214ed by redirections to the com-) --3.556 F(mand)144 283.2 Q 32.5<8374>108 300 S(he current w)-32.5 E -(orking directory)-.1 E 32.5<8374>108 316.8 S -(he \214le creation mode mask)-32.5 E 32.5<8373>108 333.6 S .856(hell v) +-3.556 F(mand)144 628.8 Q 32.5<8374>108 645.6 S(he current w)-32.5 E +(orking directory)-.1 E 32.5<8374>108 662.4 S +(he \214le creation mode mask)-32.5 E 32.5<8373>108 679.2 S .857(hell v) -32.5 F .857(ariables and functions mark)-.25 F .857(ed for e)-.1 F .857 (xport, along with v)-.15 F .857(ariables e)-.25 F .857 -(xported for the command,)-.15 F(passed in the en)144 345.6 Q(vironment) --.4 E 32.5<8374>108 362.4 S .307 -(raps caught by the shell are reset to the v)-32.5 F .306 -(alues inherited from the shell')-.25 F 2.806(sp)-.55 G .306 -(arent, and traps ignored)-2.806 F(by the shell are ignored)144 374.4 Q -2.5(Ac)108 391.2 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E +(xported for the command,)-.15 F(passed in the en)144 691.2 Q(vironment) +-.4 E 32.5<8374>108 708 S .306 +(raps caught by the shell are reset to the v)-32.5 F .307 +(alues inherited from the shell')-.25 F 2.807(sp)-.55 G .307 +(arent, and traps ignored)-2.807 F(by the shell are ignored)144 720 Q +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(32)190.95 E 0 Cg EP +%%Page: 33 33 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E 2.5(Ac)108 84 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di) +.1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E (fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E (vironment.)-.4 E .577(Command substitution, commands grouped with pare\ -ntheses, and asynchronous commands are in)108 408 R -.2(vo)-.4 G -.1(ke) -.2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 420 S .245(ubshell en)-2.745 -F .245(vironment that is a duplicate of the shell en)-.4 F .244 -(vironment, e)-.4 F .244(xcept that traps caught by the shell are)-.15 F -.358(reset to the v)108 432 R .358 +ntheses, and asynchronous commands are in)108 100.8 R -.2(vo)-.4 G -.1 +(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 112.8 S .244(ubshell en) +-2.744 F .244(vironment that is a duplicate of the shell en)-.4 F .245 +(vironment, e)-.4 F .245(xcept that traps caught by the shell are)-.15 F +.359(reset to the v)108 124.8 R .358 (alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 -G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo) --.4 G -.1(ke).2 G(d).1 E .857(as part of a pipeline are also e)108 444 R --.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.356 -(vironment. Changes)-.4 F .856(made to the subshell en)3.356 F(viron-) --.4 E(ment cannot af)108 456 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15 -(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108 -472.8 R 1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377 +G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) +-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 136.8 +R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 +(vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-) +-.4 E(ment cannot af)108 148.8 Q(fect the shell')-.25 E 2.5(se)-.55 G +-.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108 +165.6 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F -F13.877 E F0 1.377(option from the parent)3.877 F 2.5(shell. When) -108 484.8 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix)2.5 E F0(mode,) -2.5 E F1(bash)2.5 E F0(clears the)2.5 E F12.5 E F0 -(option in such subshells.)2.5 E .405(If a command is follo)108 501.6 R -.405(wed by a)-.25 F F1(&)2.905 E F0 .404(and job control is not acti) -2.905 F -.15(ve)-.25 G 2.904(,t).15 G .404(he def)-2.904 F .404 -(ault standard input for the command)-.1 F .197(is the empty \214le)108 -513.6 R F3(/de)2.697 E(v/null)-.15 E F0 5.197(.O)C .197 -(therwise, the in)-5.197 F -.2(vo)-.4 G -.1(ke).2 G 2.697(dc).1 G .198 -(ommand inherits the \214le descriptors of the calling shell)-2.697 F -(as modi\214ed by redirections.)108 525.6 Q/F4 10.95/Times-Bold@0 SF -(ENVIR)72 542.4 Q(ONMENT)-.329 E F0 2.354(When a program is in)108 554.4 -R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg) --4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na).25 G 4.853(na)-4.853 G 2.353 -(rray of strings called the)-4.853 F F3(en)4.853 E(vir)-.4 E(onment)-.45 -E F0 7.353(.T).68 G 2.353(his is a list of)-7.353 F F3(name)108 566.4 Q -F0A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.5 E F0(=)A F3 -(value)A F0(.).18 E 1.485(The shell pro)108 583.2 R 1.485(vides se)-.15 -F -.15(ve)-.25 G 1.485(ral w).15 F 1.485(ays to manipulate the en)-.1 F -3.985(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.486 -(cation, the shell scans its o).2 F(wn)-.25 E(en)108 595.2 Q .144(viron\ -ment and creates a parameter for each name found, automatically marking\ - it for)-.4 F F3 -.2(ex)2.643 G(port).2 E F0 .143(to child pro-)3.323 F -2.703(cesses. Ex)108 607.2 R .203(ecuted commands inherit the en)-.15 F -2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar) -2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.704 -(wp)-.25 G(aram-)-2.704 E 1.153 -(eters and functions to be added to and deleted from the en)108 619.2 R -3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.153 -(alue of a parameter in the)-.25 F(en)108 631.2 Q .64 +/F1 10/Times-Bold@0 SF3.876 E F0 1.376(option from the parent) +3.876 F 2.5(shell. When)108 177.6 R(not in)2.5 E/F2 10/Times-Italic@0 SF +(posix)2.5 E F0(mode,)2.5 E F1(bash)2.5 E F0(clears the)2.5 E F1 +2.5 E F0(option in such subshells.)2.5 E .404(If a command is follo)108 +194.4 R .404(wed by a)-.25 F F1(&)2.904 E F0 .405 +(and job control is not acti)2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405 +(he def)-2.905 F .405(ault standard input for the command)-.1 F .198 +(is the empty \214le)108 206.4 R F2(/de)2.698 E(v/null)-.15 E F0 5.198 +(.O)C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc) +.1 G .197(ommand inherits the \214le descriptors of the calling shell) +-2.698 F(as modi\214ed by redirections.)108 218.4 Q/F3 10.95 +/Times-Bold@0 SF(ENVIR)72 235.2 Q(ONMENT)-.329 E F0 2.353 +(When a program is in)108 247.2 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G +4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na) +.25 G 4.853(na)-4.853 G 2.353(rray of strings called the)-4.853 F F2(en) +4.853 E(vir)-.4 E(onment)-.45 E F0 7.353(.T).68 G 2.354 +(his is a list of)-7.353 F F2(name)108 259.2 Q F0A F2(value)A F0 +(pairs, of the form)2.5 E F2(name)2.5 E F0(=)A F2(value)A F0(.).18 E +1.486(The shell pro)108 276 R 1.486(vides se)-.15 F -.15(ve)-.25 G 1.486 +(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985(vironment. On) +-.4 F(in)3.985 E -.2(vo)-.4 G 1.485(cation, the shell scans its o).2 F +(wn)-.25 E(en)108 288 Q .144(vironment and creates a parameter for each\ + name found, automatically marking it for)-.4 F F2 -.2(ex)2.644 G(port) +.2 E F0 .144(to child pro-)3.324 F 2.704(cesses. Ex)108 300 R .203 +(ecuted commands inherit the en)-.15 F 2.703(vironment. The)-.4 F F1 +(export)2.703 E F0(and)2.703 E F1(declar)2.703 E 2.703<65ad>-.18 G(x) +-2.703 E F0 .203(commands allo)2.703 F 2.703(wp)-.25 G(aram-)-2.703 E +1.153(eters and functions to be added to and deleted from the en)108 312 +R 3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.154 +(alue of a parameter in the)-.25 F(en)108 324 Q .64 (vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64 (alue becomes part of the en)-3.39 F .64(vironment, replacing the old.) --.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 643.2 -R 3.08(ye)-.15 G -.15(xe)-3.23 G .58 -(cuted command consists of the shell').15 F 3.08(si)-.55 G .58 -(nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F -.3(modi\214ed in the shell, less an)108 655.2 R 2.8(yp)-.15 G .3 -(airs remo)-2.8 F -.15(ve)-.15 G 2.8(db).15 G 2.801(yt)-2.8 G(he)-2.801 -E F1(unset)2.801 E F0 .301(command, plus an)2.801 F 2.801(ya)-.15 G .301 -(dditions via the)-2.801 F F1(export)2.801 E F0(and)2.801 E F1(declar) -108 667.2 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .563(The en)108 -684 R .563(vironment for an)-.4 F(y)-.15 E F3 .563(simple command)3.403 -F F0 .562 +-.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 336 R +3.08(ye)-.15 G -.15(xe)-3.23 G .58(cuted command consists of the shell') +.15 F 3.08(si)-.55 G .58(nitial en)-3.08 F .58(vironment, whose v)-.4 F +.58(alues may be)-.25 F .301(modi\214ed in the shell, less an)108 348 R +2.801(yp)-.15 G .301(airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G +2.801(yt)-2.801 G(he)-2.801 E F1(unset)2.801 E F0 .3(command, plus an) +2.8 F 2.8(ya)-.15 G .3(dditions via the)-2.8 F F1(export)2.8 E F0(and) +2.8 E F1(declar)108 360 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E +.562(The en)108 376.8 R .562(vironment for an)-.4 F(y)-.15 E F2 .562 +(simple command)3.402 F F0 .563 (or function may be augmented temporarily by pre\214xing it with)3.833 F -.202(parameter assignments, as described abo)108 696 R .502 -.15(ve i) --.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF -(.)A F0 .202(These assignment statements af)4.702 F .203(fect only the) --.25 F(en)108 708 Q(vironment seen by that command.)-.4 E .81(If the)108 -724.8 R F13.31 E F0 .81(option is set \(see the)3.31 F F1(set)3.31 -E F0 -.2(bu)3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F3 -(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(31)185.955 E 0 Cg EP -%%Page: 32 32 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(the en)108 84 Q +.203(parameter assignments, as described abo)108 388.8 R .502 -.15(ve i) +-.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5 +9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F +.202(fect only the)-.25 F(en)108 400.8 Q +(vironment seen by that command.)-.4 E .81(If the)108 417.6 R F1 +3.31 E F0 .81(option is set \(see the)3.31 F F1(set)3.31 E F0 -.2(bu) +3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 +.81(parameter assignments are placed in)3.82 F(the en)108 429.6 Q (vironment for a command, not just those that precede the command name.) --.4 E(When)108 100.8 Q/F1 10/Times-Bold@0 SF(bash)3.396 E F0(in)3.396 E --.2(vo)-.4 G -.1(ke).2 G 3.396(sa).1 G 3.397(ne)-3.396 G .897 -(xternal command, the v)-3.547 F(ariable)-.25 E F1(_)3.397 E F0 .897 -(is set to the full \214le name of the command and)3.397 F -(passed to that command in its en)108 112.8 Q(vironment.)-.4 E/F2 10.95 -/Times-Bold@0 SF(EXIT ST)72 129.6 Q -1.04(AT)-.986 G(US)1.04 E F0 .151 -(The e)108 141.6 R .151(xit status of an e)-.15 F -.15(xe)-.15 G .151 -(cuted command is the v).15 F .15(alue returned by the)-.25 F/F3 10 -/Times-Italic@0 SF(waitpid)2.65 E F0 .15(system call or equi)2.65 F -.25 -(va)-.25 G .15(lent func-).25 F 2.847(tion. Exit)108 153.6 R .347 -(statuses f)2.847 F .347(all between 0 and 255, though, as e)-.1 F .347 -(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 -F .348(alues abo)-.25 F .648 -.15(ve 1)-.15 H(25).15 E(specially)108 -165.6 Q 5.674(.E)-.65 G .674(xit statuses from shell b)-5.674 F .673 +-.4 E(When)108 446.4 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 +(ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v) +-3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085 +(is set to the full \214lename of the command and)3.586 F +(passed to that command in its en)108 458.4 Q(vironment.)-.4 E F3 +(EXIT ST)72 475.2 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 487.2 R +.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v) +.15 F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151 +(system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848 +(tion. Exit)108 499.2 R .348(statuses f)2.848 F .347 +(all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F +1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25 +F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 511.2 Q 5.673(.E)-.65 G +.673(xit statuses from shell b)-5.673 F .673 (uiltins and compound commands are also limited to this range. Under)-.2 -F(certain circumstances, the shell will use special v)108 177.6 Q +F(certain circumstances, the shell will use special v)108 523.2 Q (alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15(Fo)108 -194.4 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G .873 -(urposes, a command which e)-3.372 F .873(xits with a zero e)-.15 F .873 -(xit status has succeeded.)-.15 F .873(An e)5.873 F .873(xit status of) --.15 F .049(zero indicates success.)108 206.4 R 2.549(An)5.049 G .049 -(on-zero e)-2.549 F .049(xit status indicates f)-.15 F 2.549 -(ailure. When)-.1 F 2.549(ac)2.549 G .048(ommand terminates on a f) --2.549 F .048(atal sig-)-.1 F(nal)108 218.4 Q F3(N)2.5 E F0(,)A F1(bash) -2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F3(N)A F0(as the e)2.5 E -(xit status.)-.15 E .404 -(If a command is not found, the child process created to e)108 235.2 R --.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .405 -(If a command is)5.405 F(found b)108 247.2 Q(ut is not e)-.2 E -.15(xe) --.15 G(cutable, the return status is 126.).15 E(If a command f)108 264 Q -(ails because of an error during e)-.1 E(xpansion or redirection, the e) --.15 E(xit status is greater than zero.)-.15 E .081(Shell b)108 280.8 R -.081(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581 -(\)i)C 2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F3 -(false)A F0 2.58(\)i)C 2.58(fa)-2.58 G 2.58(ne)-2.58 G .08 -(rror occurs while)-2.58 F(the)108 292.8 Q 2.5(ye)-.15 G -.15(xe)-2.65 G -2.5(cute. All).15 F -.2(bu)2.5 G(iltins return an e).2 E -(xit status of 2 to indicate incorrect usage.)-.15 E F1(Bash)108 309.6 Q -F0 .201(itself returns the e)2.701 F .202 -(xit status of the last command e)-.15 F -.15(xe)-.15 G .202 -(cuted, unless a syntax error occurs, in which case).15 F(it e)108 321.6 +540 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873 +(urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F .873 +(xit status has succeeded.)-.15 F .872(An e)5.872 F .872(xit status of) +-.15 F .048(zero indicates success.)108 552 R 2.548(An)5.048 G .049 +(on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549 +(ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f) +-2.549 F .049(atal sig-)-.1 F(nal)108 564 Q F2(N)2.5 E F0(,)A F1(bash) +2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E +(xit status.)-.15 E .405 +(If a command is not found, the child process created to e)108 580.8 R +-.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404 +(If a command is)5.404 F(found b)108 592.8 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 609.6 +Q(ails because of an error during e)-.1 E +(xpansion or redirection, the e)-.15 E(xit status is greater than zero.) +-.15 E .08(Shell b)108 626.4 R .08 +(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0 +2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while) +-2.581 F(the)108 638.4 Q 2.5(ye)-.15 G -.15(xe)-2.65 G 2.5(cute. All).15 +F -.2(bu)2.5 G(iltins return an e).2 E +(xit status of 2 to indicate incorrect usage.)-.15 E F1(Bash)108 655.2 Q +F0 .202(itself returns the e)2.702 F .202 +(xit status of the last command e)-.15 F -.15(xe)-.15 G .201 +(cuted, unless a syntax error occurs, in which case).15 F(it e)108 667.2 Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1 -(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F2 -(SIGN)72 338.4 Q(ALS)-.219 E F0(When)108 350.4 Q F1(bash)3.183 E F0 .683 -(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G 3.183(nt)-3.183 G -.683(he absence of an)-3.183 F 3.183(yt)-.15 G .683(raps, it ignores) --3.183 F/F4 9/Times-Bold@0 SF(SIGTERM)3.183 E F0 .682(\(so that)2.933 F -F1 .682(kill 0)3.182 F F0 .682(does not kill an)3.182 F(interacti)108 -362.4 Q .757 -.15(ve s)-.25 H .457(hell\), and).15 F F4(SIGINT)2.957 E -F0 .458(is caught and handled \(so that the)2.707 F F1(wait)2.958 E F0 --.2(bu)2.958 G .458(iltin is interruptible\).).2 F .458(In all cases,) -5.458 F F1(bash)108 374.4 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E/F5 -9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,)-.25 E F1 -(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU) --.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 391.2 -Q 1.065(uiltin commands run by)-.2 F F1(bash)3.565 E F0(ha)3.565 E 1.365 --.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.064 -(alues inherited by the shell from its)-.25 F 3.247(parent. When)108 -403.2 R .747(job control is not in ef)3.247 F .747 -(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.248 E F0(and) -2.998 E F4(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653 -(tion to these inherited handlers.)108 415.2 R .653 -(Commands run as a result of command substitution ignore the k)5.653 F --.15(ey)-.1 G(board-).15 E(generated job control signals)108 427.2 Q F4 -(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4 -(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 444 R 2.045(xits by def) --.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E F5(.)A F0 -2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346 -.15 -(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 456 Q F0 1.005 -(to all jobs, running or stopped.)3.255 F 1.004(Stopped jobs are sent) -6.005 F F4(SIGCONT)3.504 E F0 1.004(to ensure that the)3.254 F 3.504(yr) --.15 G(ecei)-3.504 E 1.304 -.15(ve t)-.25 H(he).15 E F4(SIGHUP)108 468 Q -F5(.)A F0 2.529 -.8(To p)5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shel\ +(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F3 +(SIGN)72 684 Q(ALS)-.219 E F0(When)108 696 Q F1(bash)3.182 E F0 .682 +(is interacti)3.182 F -.15(ve)-.25 G 3.182(,i).15 G 3.182(nt)-3.182 G +.682(he absence of an)-3.182 F 3.183(yt)-.15 G .683(raps, it ignores) +-3.183 F F4(SIGTERM)3.183 E F0 .683(\(so that)2.933 F F1 .683(kill 0) +3.183 F F0 .683(does not kill an)3.183 F(interacti)108 708 Q .758 -.15 +(ve s)-.25 H .458(hell\), and).15 F F4(SIGINT)2.958 E F0 .458 +(is caught and handled \(so that the)2.708 F F1(wait)2.958 E F0 -.2(bu) +2.958 G .457(iltin is interruptible\).).2 F .457(In all cases,)5.457 F +F1(bash)108 720 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0 +(If job control is in ef)4.5 E(fect,)-.25 E F1(bash)2.5 E F0(ignores)2.5 +E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 +E F4(SIGTSTP)2.5 E F5(.)A F0(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(33)190.95 E 0 Cg EP +%%Page: 34 34 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E(Non-b)108 84 Q 1.064(uiltin commands run by)-.2 F/F1 10 +/Times-Bold@0 SF(bash)3.564 E F0(ha)3.564 E 1.365 -.15(ve s)-.2 H 1.065 +(ignal handlers set to the v).15 F 1.065 +(alues inherited by the shell from its)-.25 F 3.248(parent. When)108 96 +R .748(job control is not in ef)3.248 F .747 +(fect, asynchronous commands ignore)-.25 F/F2 9/Times-Bold@0 SF(SIGINT) +3.247 E F0(and)2.997 E F2(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 +F .652(tion to these inherited handlers.)108 108 R .653 +(Commands run as a result of command substitution ignore the k)5.652 F +-.15(ey)-.1 G(board-).15 E(generated job control signals)108 120 Q F2 +(SIGTTIN)2.5 E/F3 9/Times-Roman@0 SF(,)A F2(SIGTT)2.25 E(OU)-.162 E F3 +(,)A F0(and)2.25 E F2(SIGTSTP)2.5 E F3(.)A F0 2.046(The shell e)108 +136.8 R 2.046(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F2 +(SIGHUP)4.545 E F3(.)A F0 2.045(Before e)6.545 F 2.045 +(xiting, an interacti)-.15 F 2.345 -.15(ve s)-.25 H 2.045 +(hell resends the).15 F F2(SIGHUP)108 148.8 Q F0 1.004 +(to all jobs, running or stopped.)3.254 F 1.004(Stopped jobs are sent) +6.004 F F2(SIGCONT)3.505 E F0 1.005(to ensure that the)3.255 F 3.505(yr) +-.15 G(ecei)-3.505 E 1.305 -.15(ve t)-.25 H(he).15 E F2(SIGHUP)108 160.8 +Q F3(.)A F0 2.53 -.8(To p)5.43 H(re).8 E -.15(ve)-.25 G .93(nt the shel\ l from sending the signal to a particular job, it should be remo).15 F --.15(ve)-.15 G 3.43(df).15 G .93(rom the)-3.43 F 1.357 -(jobs table with the)108 480 R F1(diso)3.857 E(wn)-.1 E F0 -.2(bu)3.857 -G 1.357(iltin \(see).2 F F4 1.356(SHELL B)3.856 F(UIL)-.09 E 1.356 -(TIN COMMANDS)-.828 F F0(belo)3.606 E 1.356(w\) or mark)-.25 F 1.356 -(ed to not recei)-.1 F -.15(ve)-.25 G F4(SIGHUP)108 492 Q F0(using)2.25 -E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A .166(If the)108 508.8 R F1 +-.15(ve)-.15 G 3.429(df).15 G .929(rom the)-3.429 F 1.356 +(jobs table with the)108 172.8 R F1(diso)3.856 E(wn)-.1 E F0 -.2(bu) +3.856 G 1.356(iltin \(see).2 F F2 1.356(SHELL B)3.856 F(UIL)-.09 E 1.356 +(TIN COMMANDS)-.828 F F0(belo)3.607 E 1.357(w\) or mark)-.25 F 1.357 +(ed to not recei)-.1 F -.15(ve)-.25 G F2(SIGHUP)108 184.8 Q F0(using) +2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A .166(If the)108 201.6 R F1 (huponexit)2.666 E F0 .166(shell option has been set with)2.666 F F1 -(shopt)2.666 E F0(,)A F1(bash)2.666 E F0 .166(sends a)2.666 F F4(SIGHUP) +(shopt)2.666 E F0(,)A F1(bash)2.666 E F0 .166(sends a)2.666 F F2(SIGHUP) 2.666 E F0 .166(to all jobs when an interacti)2.416 F -.15(ve)-.25 G -(login shell e)108 520.8 Q(xits.)-.15 E(If)108 537.6 Q F1(bash)3.047 E -F0 .547(is w)3.047 F .546(aiting for a command to complete and recei)-.1 +(login shell e)108 213.6 Q(xits.)-.15 E(If)108 230.4 Q F1(bash)3.046 E +F0 .546(is w)3.046 F .546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G 3.046(sas).15 G .546 -(ignal for which a trap has been set, the trap)-3.046 F .662 -(will not be e)108 549.6 R -.15(xe)-.15 G .662 +(ignal for which a trap has been set, the trap)-3.046 F .663 +(will not be e)108 242.4 R -.15(xe)-.15 G .663 (cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E -F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99 -(via the)108 561.6 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ +F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .99 +(via the)108 254.4 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ eption of a signal for which a trap has been set will cause the).2 F F1 (wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F -(return immediately with an e)108 573.6 Q +(return immediately with an e)108 266.4 Q (xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E F2(JOB CONTR)72 590.4 Q(OL)-.329 E F3 -.25 -(Jo)108 602.4 S 4.567(bc).25 G(ontr)-4.567 E(ol)-.45 E F0 2.067 -(refers to the ability to selecti)5.077 F -.15(ve)-.25 G 2.067 -(ly stop \().15 F F3(suspend)A F0 4.567(\)t)C 2.068(he e)-4.567 F -.15 -(xe)-.15 G 2.068(cution of processes and continue).15 F(\()108 614.4 Q -F3 -.37(re)C(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 -G .702(cution at a later point.).15 F 3.202(Au)5.702 G .702 +E -.15(xe)-.15 G(cuted.).15 E/F4 10.95/Times-Bold@0 SF(JOB CONTR)72 +283.2 Q(OL)-.329 E/F5 10/Times-Italic@0 SF -.25(Jo)108 295.2 S 4.568(bc) +.25 G(ontr)-4.568 E(ol)-.45 E F0 2.068(refers to the ability to selecti) +5.078 F -.15(ve)-.25 G 2.067(ly stop \().15 F F5(suspend)A F0 4.567(\)t) +C 2.067(he e)-4.567 F -.15(xe)-.15 G 2.067 +(cution of processes and continue).15 F(\()108 307.2 Q F5 -.37(re)C +(sume).37 E F0 3.201(\)t)C .701(heir e)-3.201 F -.15(xe)-.15 G .702 +(cution at a later point.).15 F 3.202(Au)5.702 G .702 (ser typically emplo)-3.202 F .702(ys this f)-.1 F .702 -(acility via an interacti)-.1 F 1.001 -.15(ve i)-.25 H(nterf).15 E(ace) --.1 E(supplied jointly by the operating system k)108 626.4 Q(ernel')-.1 +(acility via an interacti)-.1 F 1.002 -.15(ve i)-.25 H(nterf).15 E(ace) +-.1 E(supplied jointly by the operating system k)108 319.2 Q(ernel')-.1 E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E -F1(bash)2.5 E F0(.)A .784(The shell associates a)108 643.2 R F3(job) -5.024 E F0 .784(with each pipeline.)3.514 F .784(It k)5.784 F .785 -(eeps a table of currently e)-.1 F -.15(xe)-.15 G .785 -(cuting jobs, which may be).15 F .341(listed with the)108 655.2 R F1 -(jobs)2.841 E F0 2.841(command. When)2.841 F F1(bash)2.841 E F0 .341 -(starts a job asynchronously \(in the)2.841 F F3(bac)2.84 E(kgr)-.2 E -(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 667.2 -Q(e:)-.1 E([1] 25647)144 684 Q .241(indicating that this job is job num\ -ber 1 and that the process ID of the last process in the pipeline assoc\ -iated)108 700.8 R .733(with this job is 25647.)108 712.8 R .732 +F1(bash)2.5 E F0(.)A .785(The shell associates a)108 336 R F5(job)5.025 +E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F .784 +(eeps a table of currently e)-.1 F -.15(xe)-.15 G .784 +(cuting jobs, which may be).15 F .34(listed with the)108 348 R F1(jobs) +2.84 E F0 2.84(command. When)2.84 F F1(bash)2.84 E F0 .341 +(starts a job asynchronously \(in the)2.84 F F5(bac)2.841 E(kgr)-.2 E +(ound)-.45 E F0 .341(\), it prints a line).77 F(that looks lik)108 360 Q +(e:)-.1 E([1] 25647)144 376.8 Q .241(indicating that this job is job nu\ +mber 1 and that the process ID of the last process in the pipeline asso\ +ciated)108 393.6 R .732(with this job is 25647.)108 405.6 R .733 (All of the processes in a single pipeline are members of the same job) -5.733 F(.)-.4 E F1(Bash)5.732 E F0(uses)3.232 E(the)108 724.8 Q F3(job) -4.24 E F0(abstraction as the basis for job control.)2.73 E(GNU Bash-4.2) -72 768 Q(2010 December 28)135.965 E(32)185.955 E 0 Cg EP -%%Page: 33 33 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 3.062 -.8(To f)108 84 T 1.462 -(acilitate the implementation of the user interf).7 F 1.463 -(ace to job control, the operating system maintains the)-.1 F .871 -(notion of a)108 96 R/F1 10/Times-Italic@0 SF(curr)3.371 E .871 -(ent terminal pr)-.37 F .871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871 -(.M)C .87(embers of this process group \(processes whose process)-5.871 -F .023 +5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 417.6 Q F5(job) +4.24 E F0(abstraction as the basis for job control.)2.73 E 3.063 -.8 +(To f)108 434.4 T 1.463(acilitate the implementation of the user interf) +.7 F 1.462(ace to job control, the operating system maintains the)-.1 F +.87(notion of a)108 446.4 R F5(curr)3.37 E .87(ent terminal pr)-.37 F +.871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .871 +(embers of this process group \(processes whose process)-5.871 F .023 (group ID is equal to the current terminal process group ID\) recei)108 -108 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F/F2 9/Times-Bold@0 SF(SIG-)2.523 E -(INT)108 120 Q/F3 9/Times-Roman@0 SF(.)A F0 1.347 -(These processes are said to be in the)5.847 F F1(for)3.846 E -.4(eg) --.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.926 E(kgr)-.2 E(ound) --.45 E F0 1.346(processes are those whose process)4.616 F .145 -(group ID dif)108 132 R .145(fers from the terminal')-.25 F .146 -(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .146 -(board-generated signals.).15 F .146(Only fore-)5.146 F .16 -(ground processes are allo)108 144 R .16(wed to read from or)-.25 F 2.66 -(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F4 10 -/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) --2.66 F(-)-.2 E 3.051(minal. Background)108 156 R .551 -(processes which attempt to read from \(write to when)3.051 F F4 .551 -(stty tostop)3.051 F F0 .552(is in ef)3.052 F .552(fect\) the)-.25 F -.718(terminal are sent a)108 168 R F2 .718(SIGTTIN \(SIGTT)3.218 F(OU\)) --.162 E F0 .718(signal by the k)2.968 F(ernel')-.1 E 3.217(st)-.55 G -.717(erminal dri)-3.217 F -.15(ve)-.25 G 1.517 -.4(r, w).15 H .717 -(hich, unless caught, sus-).4 F(pends the process.)108 180 Q 1.087 -(If the operating system on which)108 196.8 R/F5 10/Times-Bold@0 SF -(bash)3.587 E F0 1.088(is running supports job control,)3.588 F F5(bash) -3.588 E F0 1.088(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8 -(Ty)108 208.8 S .302(ping the).8 F F1(suspend)3.142 E F0 .302 -(character \(typically)3.572 F F5(^Z)2.801 E F0 2.801(,C)C .301 +458.4 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F F2(SIG-)2.522 E(INT)108 470.4 Q +F3(.)A F0 1.346(These processes are said to be in the)5.846 F F5(for) +3.847 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F5(Bac)6.927 E +(kgr)-.2 E(ound)-.45 E F0 1.347(processes are those whose process)4.617 +F .146(group ID dif)108 482.4 R .146(fers from the terminal')-.25 F .146 +(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145 +(board-generated signals.).15 F .145(Only fore-)5.145 F .16 +(ground processes are allo)108 494.4 R .16(wed to read from or)-.25 F +2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 +10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) +-2.66 F(-)-.2 E 3.052(minal. Background)108 506.4 R .551 +(processes which attempt to read from \(write to when)3.052 F F6 .551 +(stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F +.717(terminal are sent a)108 518.4 R F2 .717(SIGTTIN \(SIGTT)3.217 F +(OU\))-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 +G .718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718 +(hich, unless caught, sus-).4 F(pends the process.)108 530.4 Q 1.088 +(If the operating system on which)108 547.2 R F1(bash)3.588 E F0 1.088 +(is running supports job control,)3.588 F F1(bash)3.587 E F0 1.087 +(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8(Ty)108 559.2 S +.301(ping the).8 F F5(suspend)3.141 E F0 .301(character \(typically) +3.571 F F1(^Z)2.801 E F0 2.801(,C)C .301 (ontrol-Z\) while a process is running causes that process to be)-2.801 -F 2.142(stopped and returns control to)108 220.8 R F5(bash)4.642 E F0 -7.142(.T)C 2.142(yping the)-7.942 F F1 2.142(delayed suspend)4.992 F F0 -2.143(character \(typically)5.413 F F5(^Y)4.643 E F0 4.643(,C)C -(ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\ +F 2.143(stopped and returns control to)108 571.2 R F1(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F5 2.142(delayed suspend)4.992 F F0 +2.142(character \(typically)5.412 F F1(^Y)4.642 E F0 4.642(,C)C +(ontrol-Y\))-4.642 E .021(causes the process to be stopped when it atte\ mpts to read input from the terminal, and control to be returned)108 -232.8 R(to)108 244.8 Q F5(bash)3.392 E F0 5.892(.T)C .892 +583.2 R(to)108 595.2 Q F1(bash)3.392 E F0 5.892(.T)C .892 (he user may then manipulate the state of this job, using the)-5.892 F -F5(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895 -(background, the)108 256.8 R F5(fg)3.395 E F0 .895 -(command to continue it in the fore)3.395 F .895(ground, or the)-.15 F -F5(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F5(^Z) -3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 268.8 Q .948(fect immediately) --.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948 +F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .894 +(background, the)108 607.2 R F1(fg)3.394 E F0 .895 +(command to continue it in the fore)3.394 F .895(ground, or the)-.15 F +F1(kill)3.395 E F0 .895(command to kill it.)3.395 F(A)5.895 E F1(^Z) +3.395 E F0(tak)3.395 E(es)-.1 E(ef)108 619.2 Q .949(fect immediately) +-.25 F 3.449(,a)-.65 G .948(nd has the additional side ef)-3.449 F .948 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 280.8 Q .777(There are a number of w)108 297.6 R .777 -(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F5 -(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 309.6 -Q F1(jobspec)A F0 3.457(\). Job)B(number)3.457 E F1(n)3.817 E F0 .957 -(may be referred to as)3.697 F F5(%n)3.457 E F0 5.957(.A)C .957 +108 631.2 Q .777(There are a number of w)108 648 R .777 +(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 660 Q +F5(jobspec)A F0 3.458(\). Job)B(number)3.458 E F5(n)3.818 E F0 .957 +(may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957 (job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ ed to start it, or using a substring that appears in its command line.) -108 321.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F5(%ce)3.09 E -F0 .59(refers to a)3.09 F(stopped)108 333.6 Q F5(ce)3.463 E F0(job)3.463 -E 5.963(.I)-.4 G 3.463(fap)-5.963 G .963 -(re\214x matches more than one job,)-3.463 F F5(bash)3.463 E F0 .963 -(reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F5(%?ce)3.463 E -F0 3.464(,o)C 3.464(nt)-3.464 G .964(he other)-3.464 F .087 -(hand, refers to an)108 345.6 R 2.587(yj)-.15 G .087 -(ob containing the string)-2.587 F F5(ce)2.587 E F0 .087 +108 672 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E F0 +.59(refers to a)3.09 F(stopped)108 684 Q F1(ce)3.464 E F0(job)3.464 E +5.964(.I)-.4 G 3.463(fap)-5.964 G .963 +(re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963 +(reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E +F0 3.463(,o)C 3.463(nt)-3.463 G .963(he other)-3.463 F .086 +(hand, refers to an)108 696 R 2.587(yj)-.15 G .087 +(ob containing the string)-2.587 F F1(ce)2.587 E F0 .087 (in its command line.)2.587 F .087 -(If the substring matches more than one)5.087 F(job,)108 357.6 Q F5 -(bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018 -(he symbols)-5.018 F F5(%%)2.518 E F0(and)2.518 E F5(%+)2.518 E F0 .018 +(If the substring matches more than one)5.087 F(job,)108 708 Q F1(bash) +2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018 +(he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018 (refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F -F1(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) --2.518 F .495(the last job stopped while it w)108 369.6 R .495 +F5(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) +-2.518 F .494(the last job stopped while it w)108 720 R .495 (as in the fore)-.1 F .495(ground or started in the background.)-.15 F -(The)5.494 E F1(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494 -(may be)3.224 F .787(referenced using)108 381.6 R F5<25ad>3.287 E F0 -5.787(.I)C 3.287(ft)-5.787 G .787(here is only a single job,)-3.287 F F5 -(%+)3.287 E F0(and)3.287 E F5<25ad>3.287 E F0 .788 -(can both be used to refer to that job)3.287 F 5.788(.I)-.4 G(n)-5.788 E -.257(output pertaining to jobs \(e.g., the output of the)108 393.6 R F5 +(The)5.495 E F5(pr)4.245 E -.15(ev)-.37 G .495(ious job).15 F F0 .495 +(may be)3.225 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(34)190.95 +E 0 Cg EP +%%Page: 35 35 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .788(referenced using)108 84 R/F1 10/Times-Bold@0 SF<25ad>3.288 E +F0 5.788(.I)C 3.288(ft)-5.788 G .787(here is only a single job,)-3.288 F +F1(%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .787 +(can both be used to refer to that job)3.287 F 5.787(.I)-.4 G(n)-5.787 E +.256(output pertaining to jobs \(e.g., the output of the)108 96 R F1 (jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa) --.1 G .256(ys \215agged with a).1 F F5(+)2.756 E F0(,)A .41(and the pre) -108 405.6 R .41(vious job with a)-.25 F F52.91 E F0 5.41(.A)C .411 -(single % \(with no accompan)-2.5 F .411 +-.1 G .257(ys \215agged with a).1 F F1(+)2.757 E F0(,)A .411 +(and the pre)108 108 R .411(vious job with a)-.25 F F12.911 E F0 +5.411(.A)C .411(single % \(with no accompan)-2.5 F .41 (ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E -(rent job)108 417.6 Q(.)-.4 E .444 -(Simply naming a job can be used to bring it into the fore)108 434.4 R -(ground:)-.15 E F5(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for) --.15 F F5 -.63(``)2.943 G .443(fg %1').63 F(')-.63 E F0 2.943(,b)C -(ringing)-2.943 E 1.472(job 1 from the background into the fore)108 -446.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F5 -.63(``)3.973 G 1.473 -(%1 &').63 F(')-.63 E F0 1.473(resumes job 1 in the background,)3.973 F -(equi)108 458.4 Q -.25(va)-.25 G(lent to).25 E F5 -.63(``)2.5 G(bg %1') -.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 475.2 -R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F -(Normally)5.131 E(,)-.65 E F5(bash)2.631 E F0 -.1(wa)2.63 G .13 -(its until it is about to print a).1 F .157 -(prompt before reporting changes in a job')108 487.2 R 2.657(ss)-.55 G -.157(tatus so as to not interrupt an)-2.657 F 2.658(yo)-.15 G .158 -(ther output.)-2.658 F .158(If the)5.158 F F52.658 E F0 .158 -(option to)2.658 F(the)108 499.2 Q F5(set)3.952 E F0 -.2(bu)3.952 G -1.452(iltin command is enabled,).2 F F5(bash)3.952 E F0 1.451 -(reports such changes immediately)3.952 F 6.451(.A)-.65 G 1.751 -.15 -(ny t)-6.451 H 1.451(rap on).15 F F2(SIGCHLD)3.951 E F0(is)3.701 E -.15 -(exe)108 511.2 S(cuted for each child that e).15 E(xits.)-.15 E .032 -(If an attempt to e)108 528 R(xit)-.15 E F5(bash)2.532 E F0 .032 -(is made while jobs are stopped \(or)2.532 F 2.533(,i)-.4 G 2.533(ft) --2.533 G(he)-2.533 E F5(checkjobs)2.533 E F0 .033 -(shell option has been enabled)2.533 F 2.02(using the)108 540 R F5 -(shopt)4.52 E F0 -.2(bu)4.52 G 2.02 -(iltin, running\), the shell prints a w).2 F 2.019 -(arning message, and, if the)-.1 F F5(checkjobs)4.519 E F0 2.019 -(option is)4.519 F .458(enabled, lists the jobs and their statuses.)108 -552 R(The)5.458 E F5(jobs)2.958 E F0 .459 -(command may then be used to inspect their status.)2.958 F .459(If a) -5.459 F .604(second attempt to e)108 564 R .604 +(rent job)108 120 Q(.)-.4 E .443 +(Simply naming a job can be used to bring it into the fore)108 136.8 R +(ground:)-.15 E F1(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) +-.15 F F1 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C +(ringing)-2.944 E 1.473(job 1 from the background into the fore)108 +148.8 R 3.973(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.972 G 1.472 +(%1 &').63 F(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F +(equi)108 160.8 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 177.6 R +-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) +5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.631 G .131 +(its until it is about to print a).1 F .158 +(prompt before reporting changes in a job')108 189.6 R 2.658(ss)-.55 G +.158(tatus so as to not interrupt an)-2.658 F 2.657(yo)-.15 G .157 +(ther output.)-2.657 F .157(If the)5.157 F F12.657 E F0 .157 +(option to)2.657 F(the)108 201.6 Q F1(set)3.951 E F0 -.2(bu)3.951 G +1.451(iltin command is enabled,).2 F F1(bash)3.951 E F0 1.452 +(reports such changes immediately)3.951 F 6.452(.A)-.65 G 1.752 -.15 +(ny t)-6.452 H 1.452(rap on).15 F/F2 9/Times-Bold@0 SF(SIGCHLD)3.952 E +F0(is)3.702 E -.15(exe)108 213.6 S(cuted for each child that e).15 E +(xits.)-.15 E .033(If an attempt to e)108 230.4 R(xit)-.15 E F1(bash) +2.533 E F0 .033(is made while jobs are stopped \(or)2.533 F 2.532(,i)-.4 +G 2.532(ft)-2.532 G(he)-2.532 E F1(checkjobs)2.532 E F0 .032 +(shell option has been enabled)2.532 F 2.019(using the)108 242.4 R F1 +(shopt)4.519 E F0 -.2(bu)4.519 G 2.019 +(iltin, running\), the shell prints a w).2 F 2.02 +(arning message, and, if the)-.1 F F1(checkjobs)4.52 E F0 2.02 +(option is)4.52 F .459(enabled, lists the jobs and their statuses.)108 +254.4 R(The)5.459 E F1(jobs)2.959 E F0 .458 +(command may then be used to inspect their status.)2.958 F .458(If a) +5.458 F .603(second attempt to e)108 266.4 R .604 (xit is made without an interv)-.15 F .604 (ening command, the shell does not print another w)-.15 F(arning,)-.1 E -(and an)108 576 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F6 -10.95/Times-Bold@0 SF(PR)72 592.8 Q(OMPTING)-.329 E F0 .644(When e)108 -604.8 R -.15(xe)-.15 G .644(cuting interacti).15 F -.15(ve)-.25 G(ly).15 -E(,)-.65 E F5(bash)3.144 E F0 .645(displays the primary prompt)3.145 F -F2(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.826 -(and the secondary prompt)108 616.8 R F2(PS2)4.326 E F0 1.825 -(when it needs more input to complete a command.)4.076 F F5(Bash)6.825 E -F0(allo)4.325 E 1.825(ws these)-.25 F 1.499(prompt strings to be custom\ +(and an)108 278.4 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F3 +10.95/Times-Bold@0 SF(PR)72 295.2 Q(OMPTING)-.329 E F0 .645(When e)108 +307.2 R -.15(xe)-.15 G .645(cuting interacti).15 F -.15(ve)-.25 G(ly).15 +E(,)-.65 E F1(bash)3.145 E F0 .645(displays the primary prompt)3.145 F +F2(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.825 +(and the secondary prompt)108 319.2 R F2(PS2)4.325 E F0 1.825 +(when it needs more input to complete a command.)4.075 F F1(Bash)6.826 E +F0(allo)4.326 E 1.826(ws these)-.25 F 1.499(prompt strings to be custom\ ized by inserting a number of backslash-escaped special characters that\ - are)108 628.8 R(decoded as follo)108 640.8 Q(ws:)-.25 E F5(\\a)144 -652.8 Q F0(an ASCII bell character \(07\))28.22 E F5(\\d)144 664.8 Q F0 + are)108 331.2 R(decoded as follo)108 343.2 Q(ws:)-.25 E F1(\\a)144 +355.2 Q F0(an ASCII bell character \(07\))28.22 E F1(\\d)144 367.2 Q F0 (the date in "W)27.66 E(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E F5(\\D{)144 676.8 Q F1(format)A F5(})A F0(the)180 -688.8 Q F1(format)3.927 E F0 1.427(is passed to)3.927 F F1(strftime) -3.927 E F0 1.427 +(ue May 26"\))-.45 E F1(\\D{)144 379.2 Q/F4 10/Times-Italic@0 SF(format) +A F1(})A F0(the)180 391.2 Q F4(format)3.926 E F0 1.426(is passed to) +3.926 F F4(strftime)3.926 E F0 1.427 (\(3\) and the result is inserted into the prompt string; an)B(empty)180 -700.8 Q F1(format)2.5 E F0 +403.2 Q F4(format)2.5 E F0 (results in a locale-speci\214c time representation.)2.5 E -(The braces are required)5 E F5(\\e)144 712.8 Q F0 -(an ASCII escape character \(033\))28.78 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(33)185.955 E 0 Cg EP -%%Page: 34 34 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(\\h)144 84 Q F0 -(the hostname up to the \214rst `.)27.66 E(')-.7 E F1(\\H)144 96 Q F0 -(the hostname)25.44 E F1(\\j)144 108 Q F0 +(The braces are required)5 E F1(\\e)144 415.2 Q F0 +(an ASCII escape character \(033\))28.78 E F1(\\h)144 427.2 Q F0 +(the hostname up to the \214rst `.)27.66 E(')-.7 E F1(\\H)144 439.2 Q F0 +(the hostname)25.44 E F1(\\j)144 451.2 Q F0 (the number of jobs currently managed by the shell)29.89 E F1(\\l)144 -120 Q F0(the basename of the shell')30.44 E 2.5(st)-.55 G(erminal de) --2.5 E(vice name)-.25 E F1(\\n)144 132 Q F0(ne)27.66 E(wline)-.25 E F1 -(\\r)144 144 Q F0(carriage return)28.78 E F1(\\s)144 156 Q F0 +463.2 Q F0(the basename of the shell')30.44 E 2.5(st)-.55 G(erminal de) +-2.5 E(vice name)-.25 E F1(\\n)144 475.2 Q F0(ne)27.66 E(wline)-.25 E F1 +(\\r)144 487.2 Q F0(carriage return)28.78 E F1(\\s)144 499.2 Q F0 (the name of the shell, the basename of)29.33 E F1($0)2.5 E F0 (\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1(\\t)144 -168 Q F0(the current time in 24-hour HH:MM:SS format)29.89 E F1(\\T)144 -180 Q F0(the current time in 12-hour HH:MM:SS format)26.55 E F1(\\@)144 -192 Q F0(the current time in 12-hour am/pm format)23.92 E F1(\\A)144 204 -Q F0(the current time in 24-hour HH:MM format)26 E F1(\\u)144 216 Q F0 -(the username of the current user)27.66 E F1(\\v)144 228 Q F0(the v) -28.22 E(ersion of)-.15 E F1(bash)2.5 E F0(\(e.g., 2.00\))2.5 E F1(\\V) -144 240 Q F0(the release of)26 E F1(bash)2.5 E F0 2.5(,v)C -(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5(l\().15 G(e.g., 2.00.0\)) --2.5 E F1(\\w)144 252 Q F0 .115(the current w)26 F .115 -(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F2 9/Times-Bold@0 -SF($HOME)2.615 E F0(abbre)2.365 E .116(viated with a tilde \(uses the v) --.25 F .116(alue of the)-.25 F F2(PR)180 264 Q(OMPT_DIR)-.27 E(TRIM)-.36 -E F0 -.25(va)2.25 G(riable\)).25 E F1(\\W)144 276 Q F0 +511.2 Q F0(the current time in 24-hour HH:MM:SS format)29.89 E F1(\\T) +144 523.2 Q F0(the current time in 12-hour HH:MM:SS format)26.55 E F1 +(\\@)144 535.2 Q F0(the current time in 12-hour am/pm format)23.92 E F1 +(\\A)144 547.2 Q F0(the current time in 24-hour HH:MM format)26 E F1 +(\\u)144 559.2 Q F0(the username of the current user)27.66 E F1(\\v)144 +571.2 Q F0(the v)28.22 E(ersion of)-.15 E F1(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F1(\\V)144 583.2 Q F0(the release of)26 E F1(bash) +2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5(l\().15 G +(e.g., 2.00.0\))-2.5 E F1(\\w)144 595.2 Q F0 .116(the current w)26 F +.116(orking directory)-.1 F 2.616(,w)-.65 G(ith)-2.616 E F2($HOME)2.616 +E F0(abbre)2.366 E .115(viated with a tilde \(uses the v)-.25 F .115 +(alue of the)-.25 F F2(PR)180 607.2 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 +-.25(va)2.25 G(riable\)).25 E F1(\\W)144 619.2 Q F0 (the basename of the current w)23.22 E(orking directory)-.1 E 2.5(,w) -.65 G(ith)-2.5 E F2($HOME)2.5 E F0(abbre)2.25 E(viated with a tilde) --.25 E F1(\\!)144 288 Q F0(the history number of this command)29.89 E F1 -(\\#)144 300 Q F0(the command number of this command)28.22 E F1(\\$)144 -312 Q F0(if the ef)28.22 E(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a) -.15 E F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 324 Q -/F3 10/Times-Italic@0 SF(nnn)A F0 -(the character corresponding to the octal number)18.22 E F3(nnn)2.5 E F1 -(\\\\)144 336 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 348 Q F0 -(be)29.89 E 1.257(gin a sequence of non-printing characters, which coul\ -d be used to embed a terminal)-.15 F(control sequence into the prompt) -180 360 Q F1(\\])144 372 Q F0(end a sequence of non-printing characters) -29.89 E .119(The command number and the history number are usually dif) -108 388.8 R .12(ferent: the history number of a command is its)-.25 F -1.585(position in the history list, which may include commands restored\ - from the history \214le \(see)108 400.8 R F2(HIST)4.084 E(OR)-.162 E(Y) --.315 E F0(belo)108 412.8 Q .541(w\), while the command number is the p\ -osition in the sequence of commands e)-.25 F -.15(xe)-.15 G .541 -(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 424.8 R +-.25 E F1(\\!)144 631.2 Q F0(the history number of this command)29.89 E +F1(\\#)144 643.2 Q F0(the command number of this command)28.22 E F1(\\$) +144 655.2 Q F0(if the ef)28.22 E(fecti)-.25 E .3 -.15(ve U)-.25 H +(ID is 0, a).15 E F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E +(\\)144 667.2 Q F4(nnn)A F0 +(the character corresponding to the octal number)18.22 E F4(nnn)2.5 E F1 +(\\\\)144 679.2 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 691.2 Q +F0(be)29.89 E 1.257(gin a sequence of non-printing characters, which co\ +uld be used to embed a terminal)-.15 F(control sequence into the prompt) +180 703.2 Q F1(\\])144 715.2 Q F0 +(end a sequence of non-printing characters)29.89 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(35)190.95 E 0 Cg EP +%%Page: 36 36 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .12(The command number and the history number are usually dif)108 +84 R .119(ferent: the history number of a command is its)-.25 F 1.585(p\ +osition in the history list, which may include commands restored from t\ +he history \214le \(see)108 96 R/F1 9/Times-Bold@0 SF(HIST)4.085 E(OR) +-.162 E(Y)-.315 E F0(belo)108 108 Q .541(w\), while the command number \ +is the position in the sequence of commands e)-.25 F -.15(xe)-.15 G .54 +(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 120 R .546(After the string is decoded, it is e)5.546 F .546 (xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F -.351(tion, arithmetic e)108 436.8 R .352(xpansion, and quote remo)-.15 F --.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 -(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .352(shell option \(see the)2.852 -F(description of the)108 448.8 Q F1(shopt)2.5 E F0(command under)2.5 E -F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) --.25 E/F4 10.95/Times-Bold@0 SF(READLINE)72 465.6 Q F0 .151 +.352(tion, arithmetic e)108 132 R .352(xpansion, and quote remo)-.15 F +-.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F/F2 +10/Times-Bold@0 SF(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351 +(shell option \(see the)2.852 F(description of the)108 144 Q F2(shopt) +2.5 E F0(command under)2.5 E F1(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E/F3 10.95/Times-Bold@0 SF(READLINE)72 +160.8 Q F0 .15 (This is the library that handles reading input when using an interacti) -108 477.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1 -(\255\255noediting)2.65 E F0(option)2.65 E 1.208(is gi)108 489.6 R -.15 -(ve)-.25 G 3.708(na).15 G 3.708(ts)-3.708 G 1.208(hell in)-3.708 F -.2 -(vo)-.4 G 3.708(cation. Line).2 F 1.208 -(editing is also used when using the)3.708 F F13.709 E F0 1.209 -(option to the)3.709 F F1 -.18(re)3.709 G(ad).18 E F0 -.2(bu)3.709 G -3.709(iltin. By).2 F(def)108 501.6 Q .851 +108 172.8 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F F2 +(\255\255noediting)2.651 E F0(option)2.651 E 1.209(is gi)108 184.8 R +-.15(ve)-.25 G 3.709(na).15 G 3.709(ts)-3.709 G 1.209(hell in)-3.709 F +-.2(vo)-.4 G 3.709(cation. Line).2 F 1.208 +(editing is also used when using the)3.709 F F23.708 E F0 1.208 +(option to the)3.708 F F2 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G +3.708(iltin. By).2 F(def)108 196.8 Q .851 (ault, the line editing commands are similar to those of Emacs.)-.1 F -3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .851 -(ace is also)-.1 F -.2(av)108 513.6 S 3.35(ailable. Line)-.05 F .85 +3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852 +(ace is also)-.1 F -.2(av)108 208.8 S 3.35(ailable. Line)-.05 F .85 (editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) --3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 -.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E -(\(see)108 525.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) --.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) +-3.35 F F2 .85(\255o emacs)3.35 F F0(or)3.35 E F2 .85(\255o vi)3.35 F F0 +.85(options to the)3.35 F F2(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E +(\(see)108 220.8 Q F1 .762(SHELL B)3.262 F(UIL)-.09 E .762(TIN COMMANDS) +-.828 F F0(belo)3.012 E 3.262(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) -3.263 F 3.263(fl)-.25 G .763 -(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E -(emacs)108 537.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 -(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 554.4 Q +(ine editing after the shell is running, use the)-3.263 F F2(+o)3.263 E +(emacs)108 232.8 Q F0(or)2.5 E F2(+o vi)2.5 E F0(options to the)2.5 E F2 +(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F2(Readline Notation)87 249.6 Q F0 .463(In this section, the Emacs-style notation is used to denote k) -108 566.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) -2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A -1.153(e.g., C\255n means Control\255N.)108 578.4 R(Similarly)6.153 E(,) --.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255) --.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152 -(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 590.4 S .83 -(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 -(y, M)-.05 H.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33 -(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831 -(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H -.831(his mak).65 F(es)-.1 E .6(ESC the)108 602.4 R F3 .6(meta pr)3.1 F -(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0 -.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp) --3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599 -(hen hold).15 F(the Control k)108 614.4 Q .3 -.15(ey w)-.1 H -(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) -.65 E .619(Readline commands may be gi)108 631.2 R -.15(ve)-.25 G 3.119 -(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G -.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.62 E(ho) -108 643.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti).4 G -3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619 +108 261.6 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F/F4 10/Times-Italic@0 SF -.1 +(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 273.6 R +(Similarly)6.152 E(,)-.65 E F4(meta)4.032 E F0 -.1(ke)3.913 G 1.153 +(ys are denoted by M\255)-.05 F F4 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653 +(oM)-3.653 G 1.153(\255x means Meta\255X.)-3.653 F(\(On)6.153 E -.1(ke) +108 285.6 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke) +3.591 G 2.131 -.65(y, M)-.05 H.65 E F4(x)A F0 .831(means ESC)3.331 F +F4(x)3.331 E F0 3.331(,i)C .83(.e., press the Escape k)-3.331 F 1.13 +-.15(ey t)-.1 H .83(hen the).15 F F4(x)4.1 E F0 -.1(ke)3.86 G 4.63 -.65 +(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 297.6 R F4 .599 +(meta pr)3.099 F(e\214x)-.37 E F0 5.599(.T)C .599 +(he combination M\255C\255)-5.599 F F4(x)A F0 .599 +(means ESC\255Control\255)3.099 F F4(x)A F0 3.099(,o)C 3.099(rp)-3.099 G +.6(ress the Escape k)-3.099 F .9 -.15(ey t)-.1 H .6(hen hold).15 F +(the Control k)108 309.6 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4 +(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)).65 E .62 +(Readline commands may be gi)108 326.4 R -.15(ve)-.25 G 3.119(nn).15 G +(umeric)-3.119 E F4(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G .619 +(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E(ho)108 +338.4 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G +3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 -(ument to a command that).18 F 1.018(acts in the forw)108 655.2 R 1.018 -(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C -1.018(auses that command to act in a backw)-3.518 F 1.019 -(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 667.2 Q +(ument to a command that).18 F 1.019(acts in the forw)108 350.4 R 1.018 +(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C +1.018(auses that command to act in a backw)-3.518 F 1.018 +(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 362.4 Q (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) --.25 E -.65(w.)-.25 G .812(When a command is described as)108 684 R F3 +-.25 E -.65(w.)-.25 G .811(When a command is described as)108 379.2 R F4 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 -(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811 -(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3 -(yank-)-3.311 E(ing)108 696 Q F0 2.529(\). The)B .029(killed te)2.529 F -.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3 +(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812 +(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F4 +(yank-)-3.312 E(ing)108 391.2 Q F0 2.529(\). The)B .029(killed te)2.529 +F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029(xt to be accumulated into one unit,) --.15 F .567(which can be yank)108 708 R .567(ed all at once.)-.1 F .567 -(Commands which do not kill te)5.567 F .567 +-.15 F .567(which can be yank)108 403.2 R .567(ed all at once.)-.1 F +.567(Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) -108 720 Q(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(34)185.955 E -0 Cg EP -%%Page: 35 35 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Readline Initialization)87 84 Q F0 .091(Re\ -adline is customized by putting commands in an initialization \214le \(\ -the)108 96 R/F2 10/Times-Italic@0 SF(inputr)2.591 E(c)-.37 E F0 2.591 -(\214le\). The)2.591 F .092(name of this \214le)2.591 F .197(is tak)108 -108 R .196(en from the v)-.1 F .196(alue of the)-.25 F/F3 9/Times-Bold@0 -SF(INPUTRC)2.696 E F0 -.25(va)2.446 G 2.696(riable. If).25 F .196 -(that v)2.696 F .196(ariable is unset, the def)-.25 F .196(ault is)-.1 F -F2(~/.inputr)2.696 E(c)-.37 E F0 5.196(.W).31 G .196(hen a)-5.196 F -1.034(program which uses the readline library starts up, the initializa\ -tion \214le is read, and the k)108 120 R 1.335 -.15(ey b)-.1 H 1.035 -(indings and).15 F -.25(va)108 132 S 1.15(riables are set.).25 F 1.15 -(There are only a fe)6.15 F 3.649(wb)-.25 G 1.149(asic constructs allo) --3.649 F 1.149(wed in the readline initialization \214le.)-.25 F(Blank) -6.149 E .736(lines are ignored.)108 144 R .737(Lines be)5.737 F .737 -(ginning with a)-.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737 -(Lines be)5.737 F .737(ginning with a)-.15 F F1($)3.237 E F0 .737 -(indicate conditional)3.237 F 2.5(constructs. Other)108 156 R -(lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E -(ariable settings.)-.25 E .987(The def)108 172.8 R .987(ault k)-.1 F --.15(ey)-.1 G .987(-bindings may be changed with an).15 F F2(inputr) -3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 -(programs that use this library may)3.487 F(add their o)108 184.8 Q -(wn commands and bindings.)-.25 E -.15(Fo)108 201.6 S 2.5(re).15 G -(xample, placing)-2.65 E(M\255Control\255u: uni)144 218.4 Q -.15(ve)-.25 -G(rsal\255ar).15 E(gument)-.18 E(or)108 230.4 Q(C\255Meta\255u: uni)144 -242.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 254.4 -Q F2(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G -(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F2 -(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.26(The follo) -108 271.2 R 1.261(wing symbolic character names are recognized:)-.25 F -F2 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F2(DEL)3.761 E F0(,).53 E F2 -(ESC)3.761 E F0(,).72 E F2(LFD)3.761 E F0(,).28 E F2(NEWLINE)3.761 E F0 -(,).73 E F2(RET)3.761 E F0(,)1.27 E F2(RETURN)108 283.2 Q F0(,)1.1 E F2 -(SPC)2.5 E F0(,).72 E F2(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G -(nd)-2.5 E F2 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 -(In addition to command names, readline allo)108 300 R .209(ws k)-.25 F +108 415.2 Q F2(Readline Initialization)87 432 Q F0 .091(Readline is cus\ +tomized by putting commands in an initialization \214le \(the)108 444 R +F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091 +(name of this \214le)2.591 F .196(is tak)108 456 R .196(en from the v) +-.1 F .196(alue of the)-.25 F F1(INPUTRC)2.696 E F0 -.25(va)2.446 G +2.696(riable. If).25 F .196(that v)2.696 F .196 +(ariable is unset, the def)-.25 F .196(ault is)-.1 F F4(~/.inputr)2.696 +E(c)-.37 E F0 5.196(.W).31 G .197(hen a)-5.196 F 1.034(program which us\ +es the readline library starts up, the initialization \214le is read, a\ +nd the k)108 468 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25 +(va)108 480 S 1.149(riables are set.).25 F 1.149(There are only a fe) +6.149 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.15 +(wed in the readline initialization \214le.)-.25 F(Blank)6.15 E .737 +(lines are ignored.)108 492 R .737(Lines be)5.737 F .737(ginning with a) +-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737(Lines be)5.737 F +.737(ginning with a)-.15 F F2($)3.237 E F0 .736(indicate conditional) +3.236 F 2.5(constructs. Other)108 504 R(lines denote k)2.5 E .3 -.15 +(ey b)-.1 H(indings and v).15 E(ariable settings.)-.25 E .986(The def) +108 520.8 R .986(ault k)-.1 F -.15(ey)-.1 G .987 +(-bindings may be changed with an).15 F F4(inputr)3.497 E(c)-.37 E F0 +3.487(\214le. Other)3.797 F .987(programs that use this library may) +3.487 F(add their o)108 532.8 Q(wn commands and bindings.)-.25 E -.15 +(Fo)108 549.6 S 2.5(re).15 G(xample, placing)-2.65 E +(M\255Control\255u: uni)144 566.4 Q -.15(ve)-.25 G(rsal\255ar).15 E +(gument)-.18 E(or)108 578.4 Q(C\255Meta\255u: uni)144 590.4 Q -.15(ve) +-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 602.4 Q F4(inputr) +2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e) +-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4(univer)2.5 E +(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo)108 619.2 R +1.261(wing symbolic character names are recognized:)-.25 F F4 -.4(RU) +3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4(ESC)3.761 E +F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0(,).73 E F4 +(RET)3.76 E F0(,)1.27 E F4(RETURN)108 631.2 Q F0(,)1.1 E F4(SPC)2.5 E F0 +(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F4 +-.5(TA)2.5 G(B).5 E F0(.).27 E .209 +(In addition to command names, readline allo)108 648 R .209(ws k)-.25 F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 (ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) --.1 H(s).15 E(pressed \(a)108 312 Q F2(macr)2.5 E(o)-.45 E F0(\).)A F1 -(Readline K)87 328.8 Q(ey Bindings)-.25 E F0 .366 -(The syntax for controlling k)108 340.8 R .666 -.15(ey b)-.1 H .366 -(indings in the).15 F F2(inputr)2.876 E(c)-.37 E F0 .366 +-.1 H(s).15 E(pressed \(a)108 660 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F2 +(Readline K)87 676.8 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 688.8 R .666 -.15(ey b)-.1 H .366 +(indings in the).15 F F4(inputr)2.876 E(c)-.37 E F0 .366 (\214le is simple.)3.176 F .366(All that is required is the name of the) -5.366 F .383(command or the te)108 352.8 R .383(xt of a macro and a k) +5.366 F .382(command or the te)108 700.8 R .383(xt of a macro and a k) -.15 F .683 -.15(ey s)-.1 H .383 (equence to which it should be bound. The name may be speci-).15 F .853 -(\214ed in one of tw)108 364.8 R 3.353(ow)-.1 G .853 +(\214ed in one of tw)108 712.8 R 3.353(ow)-.1 G .853 (ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853 -(ame, possibly with).15 F F2(Meta\255)3.353 E F0(or)3.353 E F2(Contr) +(ame, possibly with).15 F F4(Meta\255)3.353 E F0(or)3.353 E F4(Contr) 3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15 -(ey)-.1 G(sequence.)108 376.8 Q 1.542(When using the form)108 393.6 R F1 --.1(ke)4.042 G(yname).1 E F0(:)A F2(function\255name).833 E F0(or)4.042 -E F2(macr)4.042 E(o)-.45 E F0(,)A F2 -.1(ke)4.042 G(yname)-.2 E F0 1.542 -(is the name of a k)4.222 F 1.841 -.15(ey s)-.1 H 1.541(pelled out in) -.15 F 2.5(English. F)108 405.6 R(or e)-.15 E(xample:)-.15 E -(Control-u: uni)144 429.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 -E(Meta-Rubout: backw)144 441.6 Q(ard-kill-w)-.1 E(ord)-.1 E -(Control-o: "> output")144 453.6 Q .698(In the abo)108 470.4 R .998 -.15 +(ey)-.1 G(sequence.)108 724.8 Q(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(36)190.95 E 0 Cg EP +%%Page: 37 37 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E 1.541(When using the form)108 84 R/F1 10/Times-Bold@0 SF -.1(ke) +4.041 G(yname).1 E F0(:)A/F2 10/Times-Italic@0 SF(function\255name).833 +E F0(or)4.041 E F2(macr)4.042 E(o)-.45 E F0(,)A F2 -.1(ke)4.042 G(yname) +-.2 E F0 1.542(is the name of a k)4.222 F 1.842 -.15(ey s)-.1 H 1.542 +(pelled out in).15 F 2.5(English. F)108 96 R(or e)-.15 E(xample:)-.15 E +(Control-u: uni)144 120 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E +(Meta-Rubout: backw)144 132 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 144 Q .699(In the abo)108 160.8 R .998 -.15 (ve ex)-.15 H(ample,).15 E F2(C\255u)3.038 E F0 .698 (is bound to the function)3.448 F F1(uni)3.198 E -.1(ve)-.1 G (rsal\255ar).1 E(gument)-.1 E F0(,)A F2(M\255DEL)3.878 E F0 .698 -(is bound to the func-)3.728 F(tion)108 482.4 Q F1 -(backward\255kill\255w)2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F2 -(C\255o)2.599 E F0 .258(is bound to run the macro e)2.939 F .258 +(is bound to the func-)3.728 F(tion)108 172.8 Q F1 +(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F2 +(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F .259 (xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -494.4 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 -(into the line\).)2.5 E .055(In the second form,)108 511.2 R F1("k)2.555 -E(eyseq")-.1 E F0(:)A F2(function\255name).833 E F0(or)2.555 E F2(macr) -2.555 E(o)-.45 E F0(,)A F1 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056 -(fers from)-.25 F F1 -.1(ke)2.556 G(yname).1 E F0(abo)2.556 E .356 -.15 -(ve i)-.15 H 2.556(nt).15 G .056(hat strings)-2.556 F 1.284 -(denoting an entire k)108 523.2 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ +184.8 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .056(In the second form,)108 201.6 R F1("k)2.556 +E(eyseq")-.1 E F0(:)A F2(function\255name).833 E F0(or)2.556 E F2(macr) +2.556 E(o)-.45 E F0(,)A F1 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 +(fers from)-.25 F F1 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 +(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 +(denoting an entire k)108 213.6 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .385(GNU Emacs style k)108 535.2 R .685 -.15(ey e)-.1 H -.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .386 -(xample, b)-.15 F .386(ut the symbolic character names)-.2 F -(are not recognized.)108 547.2 Q("\\C\255u": uni)144 571.2 Q -.15(ve) +(Some)6.284 E .386(GNU Emacs style k)108 225.6 R .686 -.15(ey e)-.1 H +.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 +(xample, b)-.15 F .385(ut the symbolic character names)-.2 F +(are not recognized.)108 237.6 Q("\\C\255u": uni)144 261.6 Q -.15(ve) -.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 583.2 Q -("\\e[11~": "Function K)144 595.2 Q .3 -.15(ey 1)-.25 H(").15 E .315 -(In this e)108 612 R(xample,)-.15 E F2(C\255u)2.655 E F0 .315(is ag) -3.065 F .315(ain bound to the function)-.05 F F1(uni)2.815 E -.1(ve)-.1 +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 273.6 Q +("\\e[11~": "Function K)144 285.6 Q .3 -.15(ey 1)-.25 H(").15 E .314 +(In this e)108 302.4 R(xample,)-.15 E F2(C\255u)2.654 E F0 .314(is ag) +3.064 F .315(ain bound to the function)-.05 F F1(uni)2.815 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(.)A F2 .315(C\255x C\255r)5.155 F F0 -.314(is bound to the func-)3.544 F(tion)108 624 Q F1 -.18(re)2.5 G -.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F2(ESC [ 1 1 ~) -3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F4(Function Key 1) -2.5 E F0(.)A(The full set of GNU Emacs style escape sequences is)108 -640.8 Q F1<5c43ad>144 652.8 Q F0(control pre\214x)20.3 E F1<5c4dad>144 -664.8 Q F0(meta pre\214x)18.08 E F1(\\e)144 676.8 Q F0 -(an escape character)28.78 E F1(\\\\)144 688.8 Q F0(backslash)30.44 E F1 -(\\")144 700.8 Q F0(literal ")27.67 E F1<5c08>144 712.8 Q F0 -(literal \010)30.44 E(In addition to the GNU Emacs style escape sequenc\ -es, a second set of backslash escapes is a)108 729.6 Q -.25(va)-.2 G -(ilable:).25 E(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(35) -185.955 E 0 Cg EP -%%Page: 36 36 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(\\a)144 84 Q F0(alert \(bell\))28.22 E F1 -(\\b)144 96 Q F0(backspace)27.66 E F1(\\d)144 108 Q F0(delete)27.66 E F1 -(\\f)144 120 Q F0(form feed)29.89 E F1(\\n)144 132 Q F0(ne)27.66 E -(wline)-.25 E F1(\\r)144 144 Q F0(carriage return)28.78 E F1(\\t)144 156 -Q F0(horizontal tab)29.89 E F1(\\v)144 168 Q F0 -.15(ve)28.22 G -(rtical tab).15 E F1(\\)144 180 Q/F2 10/Times-Italic@0 SF(nnn)A F0 +.315(is bound to the func-)3.545 F(tion)108 314.4 Q F1 -.18(re)2.5 G +.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F2 +(ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3 +(Function Key 1)2.5 E F0(.)A +(The full set of GNU Emacs style escape sequences is)108 331.2 Q F1 +<5c43ad>144 343.2 Q F0(control pre\214x)20.3 E F1<5c4dad>144 355.2 Q F0 +(meta pre\214x)18.08 E F1(\\e)144 367.2 Q F0(an escape character)28.78 E +F1(\\\\)144 379.2 Q F0(backslash)30.44 E F1(\\")144 391.2 Q F0 +(literal ")27.67 E F1<5c08>144 403.2 Q F0(literal \010)30.44 E(In addit\ +ion to the GNU Emacs style escape sequences, a second set of backslash \ +escapes is a)108 420 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 432 Q F0 +(alert \(bell\))28.22 E F1(\\b)144 444 Q F0(backspace)27.66 E F1(\\d)144 +456 Q F0(delete)27.66 E F1(\\f)144 468 Q F0(form feed)29.89 E F1(\\n)144 +480 Q F0(ne)27.66 E(wline)-.25 E F1(\\r)144 492 Q F0(carriage return) +28.78 E F1(\\t)144 504 Q F0(horizontal tab)29.89 E F1(\\v)144 516 Q F0 +-.15(ve)28.22 G(rtical tab).15 E F1(\\)144 528 Q F2(nnn)A F0 (the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E (alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x)144 -192 Q F2(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he) +540 Q F2(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he) -.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E -2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.141 -(When entering the te)108 208.8 R 1.141(xt of a macro, single or double\ - quotes must be used to indicate a macro de\214nition.)-.15 F .09 -(Unquoted te)108 220.8 R .09(xt is assumed to be a function name.)-.15 F -.089(In the macro body)5.089 F 2.589(,t)-.65 G .089 -(he backslash escapes described abo)-2.589 F -.15(ve)-.15 G(are e)108 -232.8 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G +2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142 +(When entering the te)108 556.8 R 1.141(xt of a macro, single or double\ + quotes must be used to indicate a macro de\214nition.)-.15 F .089 +(Unquoted te)108 568.8 R .089(xt is assumed to be a function name.)-.15 +F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09 +(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108 +580.8 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G (ther character in the macro te)-2.5 E(xt, including " and \010.)-.15 E -F1(Bash)108 249.6 Q F0(allo)2.929 E .429(ws the current readline k)-.25 -F .729 -.15(ey b)-.1 H .429 -(indings to be displayed or modi\214ed with the).15 F F1(bind)2.93 E F0 --.2(bu)2.93 G .43(iltin command.).2 F .046 -(The editing mode may be switched during interacti)108 261.6 R .346 -.15 -(ve u)-.25 H .046(se by using the).15 F F12.545 E F0 .045 -(option to the)2.545 F F1(set)2.545 E F0 -.2(bu)2.545 G .045 -(iltin command).2 F(\(see)108 273.6 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E +F1(Bash)108 597.6 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F +.73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the) +.15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045 +(The editing mode may be switched during interacti)108 609.6 R .345 -.15 +(ve u)-.25 H .046(se by using the).15 F F12.546 E F0 .046 +(option to the)2.546 F F1(set)2.546 E F0 -.2(bu)2.546 G .046 +(iltin command).2 F(\(see)108 621.6 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -(Readline V)87 290.4 Q(ariables)-.92 E F0 .043(Readline has v)108 302.4 +(Readline V)87 638.4 Q(ariables)-.92 E F0 .044(Readline has v)108 650.4 R .043(ariables that can be used to further customize its beha)-.25 F (vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 -(riable may be set in the).25 F F2(inpu-)2.554 E(tr)108 314.4 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F1(set)144 331.2 Q F2 +(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 662.4 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F1(set)144 679.2 Q F2 (variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -348 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) +696 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) -.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79(\(without re)3.29 -F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .448(nized v) -108 360 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F -.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .449 -(alues, "on" \(case-insensi-)-.25 F(ti)108 372 Q -.15(ve)-.25 G .468 +F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .449(nized v) +108 708 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F +.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .448 +(alues, "on" \(case-insensi-)-.25 F(ti)108 720 Q -.15(ve)-.25 G .467 (\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) 2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 -F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467 -(he v)-5.468 F .467(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 -384 S(lues are:).25 E F1(bell\255style \(audible\))108 400.8 Q F0 .01 -(Controls what happens when readline w)144 412.8 R .011 -(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none) -2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E -.94(rings the bell.)144 424.8 R .94(If set to)5.94 F F1(visible)3.44 E -F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25 -(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0 -(,)A(readline attempts to ring the terminal')144 436.8 Q 2.5(sb)-.55 G -(ell.)-2.5 E F1(bind\255tty\255special\255chars \(On\))108 448.8 Q F0 -.055(If set to)144 460.8 R F1(On)2.555 E F0 2.555(,r)C .056(eadline att\ -empts to bind the control characters treated specially by the k)-2.555 F -(ernel')-.1 E 2.556(st)-.55 G(ermi-)-2.556 E(nal dri)144 472.8 Q -.15 +F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468 +(he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(37)190.95 E 0 Cg EP +%%Page: 38 38 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E -.25(va)108 84 S(lues are:).25 E/F1 10/Times-Bold@0 SF +(bell\255style \(audible\))108 100.8 Q F0 .011 +(Controls what happens when readline w)144 112.8 R .011 +(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51 +E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 +(rings the bell.)144 124.8 R .94(If set to)5.94 F F1(visible)3.44 E F0 +3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) +-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A +(readline attempts to ring the terminal')144 136.8 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 148.8 Q F0 .056 +(If set to)144 160.8 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\ +s to bind the control characters treated specially by the k)-2.556 F +(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 172.8 Q -.15 (ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) --.25 G(lents.).25 E F1(comment\255begin \(`)108 484.8 Q(`#')-.63 E('\)) --.63 E F0 .885(The string that is inserted when the readline)144 496.8 R -F1(insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G -3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 508.8 Q F1 +-.25 G(lents.).25 E F1(color)108 184.8 Q(ed\255stats \(Off\))-.18 E F0 +1.579(If set to)144 196.8 R F1(On)4.079 E F0 4.079(,r)C 1.579 +(eadline displays possible completions using dif)-4.079 F 1.58 +(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 208.8 R +(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)-.25 +E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1 +(comment\255begin \(`)108 220.8 Q(`#')-.63 E('\))-.63 E F0 .885 +(The string that is inserted when the readline)144 232.8 R F1 +(insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G +3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 244.8 Q F1 (M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 -(in vi command mode.)2.5 E F1(completion\255ignor)108 520.8 Q -(e\255case \(Off\))-.18 E F0(If set to)144 532.8 Q F1(On)2.5 E F0 2.5 +(in vi command mode.)2.5 E F1(completion\255ignor)108 256.8 Q +(e\255case \(Off\))-.18 E F0(If set to)144 268.8 Q F1(On)2.5 E F0 2.5 (,r)C(eadline performs \214lename matching and completion in a case\255\ insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1(completion\255pr) -108 544.8 Q(e\214x\255display\255length \(0\))-.18 E F0 .829(The length\ +108 280.8 Q(e\214x\255display\255length \(0\))-.18 E F0 .829(The length\ in characters of the common pre\214x of a list of possible completions\ - that is displayed)144 556.8 R 1.275(without modi\214cation.)144 568.8 R + that is displayed)144 292.8 R 1.275(without modi\214cation.)144 304.8 R 1.275(When set to a v)6.275 F 1.274 (alue greater than zero, common pre\214x)-.25 F 1.274 -(es longer than this)-.15 F -.25(va)144 580.8 S(lue are replaced with a\ +(es longer than this)-.15 F -.25(va)144 316.8 S(lue are replaced with a\ n ellipsis when displaying possible completions.).25 E F1 -(completion\255query\255items \(100\))108 592.8 Q F0 .529 -(This determines when the user is queried about vie)144 604.8 R .53 +(completion\255query\255items \(100\))108 328.8 Q F0 .529 +(This determines when the user is queried about vie)144 340.8 R .53 (wing the number of possible completions gen-)-.25 F .561(erated by the) -144 616.8 R F1(possible\255completions)3.061 E F0 3.061(command. It) +144 352.8 R F1(possible\255completions)3.061 E F0 3.061(command. It) 3.061 F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56 (ger v)-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 -628.8 R .783(If the number of possible completions is greater than or e\ -qual to the v)5.782 F .783(alue of this)-.25 F -.25(va)144 640.8 S .237 +364.8 R .783(If the number of possible completions is greater than or e\ +qual to the v)5.782 F .783(alue of this)-.25 F -.25(va)144 376.8 S .237 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie) -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G -.237(re simply listed)-2.737 F(on the terminal.)144 652.8 Q F1(con)108 -664.8 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 676.8 +.237(re simply listed)-2.737 F(on the terminal.)144 388.8 Q F1(con)108 +400.8 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 412.8 R F1(On)3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15(ey s)-.1 H .613(equence by).15 F .541 (stripping the eighth bit and pre\214xing an escape character \(in ef) -144 688.8 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 -F(e-)-.37 E<8c78>144 700.8 Q F0(\).)A(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(36)185.955 E 0 Cg EP -%%Page: 37 37 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(disable\255completion \(Off\))108 84 Q F0 -.038(If set to)144 96 R F1(On)2.538 E F0 2.538(,r)C .038 -(eadline will inhibit w)-2.538 F .038(ord completion.)-.1 F .038 +144 424.8 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 +SF .541(meta pr)3.041 F(e-)-.37 E<8c78>144 436.8 Q F0(\).)A F1 +(disable\255completion \(Off\))108 448.8 Q F0 .038(If set to)144 460.8 R +F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 +(ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) -144 108 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(editing\255mode \(emacs\))108 120 Q F0 .142 -(Controls whether readline be)144 132 R .141(gins with a set of k)-.15 F -.441 -.15(ey b)-.1 H .141(indings similar to).15 F/F2 10/Times-Italic@0 -SF(Emacs)2.641 E F0(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode) -5.141 E F0(can be set to either)144 144 Q F1(emacs)2.5 E F0(or)2.5 E F1 -(vi)2.5 E F0(.)A F1(echo\255contr)108 156 Q(ol\255characters \(On\))-.18 -E F0 1.21(When set to)144 168 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 -G 1.211(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 +144 472.8 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E +F0(.)A F1(editing\255mode \(emacs\))108 484.8 Q F0 .142 +(Controls whether readline be)144 496.8 R .141(gins with a set of k)-.15 +F .441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 +(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 +(can be set to either)144 508.8 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(echo\255contr)108 520.8 Q(ol\255characters \(On\))-.18 E F0 +1.21(When set to)144 532.8 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G +1.211(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 (upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 180 Q -.15(ey)-.1 G -(board.).15 E F1(enable\255k)108 192 Q(eypad \(Off\))-.1 E F0 .893 -(When set to)144 204 R F1(On)3.393 E F0 3.393(,r)C .893 +(corresponding to a signal generated from the k)144 544.8 Q -.15(ey)-.1 +G(board.).15 E F1(enable\255k)108 556.8 Q(eypad \(Off\))-.1 E F0 .893 +(When set to)144 568.8 R F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G .893(pad when it is called.).15 F .892(Some sys-)5.893 F -(tems need this to enable the arro)144 216 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(enable\255meta\255k)108 228 Q(ey \(On\))-.1 E F0 .64 -(When set to)144 240 R F1(On)3.14 E F0 3.14(,r)C .64 +(tems need this to enable the arro)144 580.8 Q 2.5(wk)-.25 G -.15(ey) +-2.6 G(s.).15 E F1(enable\255meta\255k)108 592.8 Q(ey \(On\))-.1 E F0 +.64(When set to)144 604.8 R F1(On)3.14 E F0 3.14(,r)C .64 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 -(he terminal claims to support).15 F(when it is called.)144 252 Q +(he terminal claims to support).15 F(when it is called.)144 616.8 Q (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 -(expand\255tilde \(Off\))108 264 Q F0(If set to)144 276 Q F1(On)2.5 E F0 -2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) --.15 E(ord completion.)-.1 E F1(history\255pr)108 288 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 1.339(If set to)144 300 R F1(On) -3.839 E F0 3.839(,t)C 1.338(he history code attempts to place point at \ -the same location on each history line)-3.839 F(retrie)144 312 Q -.15 -(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G -(ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 -(history\255size \(0\))108 324 Q F0 .462 -(Set the maximum number of history entries sa)144 336 R -.15(ve)-.2 G -2.963(di).15 G 2.963(nt)-2.963 G .463(he history list.)-2.963 F .463 -(If set to zero, the number of)5.463 F -(entries in the history list is not limited.)144 348 Q F1 -(horizontal\255scr)108 360 Q(oll\255mode \(Off\))-.18 E F0 .449 -(When set to)144 372 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 -(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 +(expand\255tilde \(Off\))108 628.8 Q F0(If set to)144 640.8 Q F1(On)2.5 +E F0 2.5(,t)C(ilde e)-2.5 E +(xpansion is performed when readline attempts w)-.15 E(ord completion.) +-.1 E F1(history\255pr)108 652.8 Q(eser)-.18 E -.1(ve)-.1 G +(\255point \(Off\)).1 E F0 1.339(If set to)144 664.8 R F1(On)3.839 E F0 +3.839(,t)C 1.338(he history code attempts to place point at the same lo\ +cation on each history line)-3.839 F(retrie)144 676.8 Q -.15(ve)-.25 G +2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F0 +(or)2.5 E F1(next-history)2.5 E F0(.)A F1(history\255size \(0\))108 +688.8 Q F0 .948(Set the maximum number of history entries sa)144 700.8 R +-.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.) +-3.448 F .949(If set to zero, an)5.948 F 3.449(ye)-.15 G(xisting)-3.599 +E .483(history entries are deleted and no ne)144 712.8 R 2.983(we)-.25 G +.483(ntries are sa)-2.983 F -.15(ve)-.2 G 2.983(d. If).15 F .482 +(set to a v)2.983 F .482(alue less than zero, the num-)-.25 F +(ber of history entries is not limited.)144 724.8 Q(By def)5 E +(ault, the number of history entries is not limited.)-.1 E(GNU Bash 4.3) +72 768 Q(2014 February 2)141.79 E(38)190.95 E 0 Cg EP +%%Page: 39 39 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(horizontal\255scr)108 84 Q +(oll\255mode \(Off\))-.18 E F0 .448(When set to)144 96 R F1(On)2.948 E +F0 2.948(,m)C(ak)-2.948 E .448 +(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .449 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\ when it becomes longer than the screen width rather than wrapping to a\ - ne)144 384 R(w)-.25 E(line.)144 396 Q F1(input\255meta \(Off\))108 408 -Q F0 .228(If set to)144 420 R F1(On)2.728 E F0 2.728(,r)C .227(eadline \ + ne)144 108 R(w)-.25 E(line.)144 120 Q F1(input\255meta \(Off\))108 132 +Q F0 .227(If set to)144 144 R F1(On)2.727 E F0 2.727(,r)C .228(eadline \ will enable eight-bit input \(that is, it will not strip the high bit f\ -rom the char)-2.728 F(-)-.2 E .956(acters it reads\), re)144 432 R -.05 +rom the char)-2.727 F(-)-.2 E .957(acters it reads\), re)144 156 R -.05 (ga)-.15 G .956(rdless of what the terminal claims it can support.).05 F -.957(The name)5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F -(synon)144 444 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 456 Q +.956(The name)5.956 F F1(meta\255\215ag)3.456 E F0 .956(is a)3.456 F +(synon)144 168 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 180 Q (ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))-.63 E F0 .439(\ The string of characters that should terminate an incremental search wi\ -thout subsequently e)144 468 R -.15(xe)-.15 G(cut-).15 E .934 -(ing the character as a command.)144 480 R .935(If this v)5.935 F .935 -(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935 -(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 492 Q F2 -(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) -108 504 S(ymap \(emacs\)).1 E F0 2.021(Set the current readline k)144 -516 R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021 -(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.02 -(emacs, emacs\255standar)4.52 F(d,)-.37 E .068 -(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 528 R F0 2.568(,a)C -(nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068 -(is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command) -2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 540 R -.25(va)-.25 -G 1.544(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C +thout subsequently e)144 192 R -.15(xe)-.15 G(cut-).15 E .935 +(ing the character as a command.)144 204 R .935(If this v)5.935 F .935 +(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934 +(alue, the characters)-3.684 F/F2 10/Times-Italic@0 SF(ESC)3.434 E F0 +(and)144 216 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) +2.5 E F1 -.1(ke)108 228 S(ymap \(emacs\)).1 E F0 2.02 +(Set the current readline k)144 240 R -.15(ey)-.1 G 4.521(map. The).15 F +2.021(set of v)4.521 F 2.021(alid k)-.25 F -.15(ey)-.1 G 2.021 +(map names is).15 F F2 2.021(emacs, emacs\255standar)4.521 F(d,)-.37 E +.069(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 252 R F0 2.568 +(,a)C(nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 +.068(is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command) +2.568 E F0(;)A F2(emacs)2.568 E F0 1.543(is equi)144 264 R -.25(va)-.25 +G 1.543(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C 1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs) 4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1 -(editing\255mode)4.043 E F0(also)4.043 E(af)144 552 Q(fects the def)-.25 -E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1(mark\255dir)108 564 Q -(ectories \(On\))-.18 E F0(If set to)144 576 Q F1(On)2.5 E F0 2.5(,c)C +(editing\255mode)4.044 E F0(also)4.044 E(af)144 276 Q(fects the def)-.25 +E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 288 S +(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 300 R +F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 +(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) +-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 312 R +1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar) +-.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea) +-.1 G(dditional)-3.856 E .32(input to complete a longer k)144 324 R .62 +-.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F +-.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re) +2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 336 R .907 +(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 +(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907 +(alue of)-.25 F .05(1000 means that)144 348 R F2 -.37(re)2.55 G(adline) +.37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1 +F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 +(less than or equal to zero, or to a non-numeric v)144 360 R(alue,)-.25 +E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 +(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) +-2.552 E(to decide which k)144 372 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 384 Q(ectories \(On\)) +-.18 E F0(If set to)144 396 Q F1(On)2.5 E F0 2.5(,c)C (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) -.15 E F1(mark\255modi\214ed\255lines \(Off\))108 588 Q F0(If set to)144 -600 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) +.15 E F1(mark\255modi\214ed\255lines \(Off\))108 408 Q F0(If set to)144 +420 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 -(*)A F0(\).)A F1(mark\255symlink)108 612 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 624 R F1(On)2.675 E F0 +(*)A F0(\).)A F1(mark\255symlink)108 432 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 444 R F1(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 --.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 636 -Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 648 Q F0 .193(This v)144 660 R -.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192 -(auses readline to match \214les whose names be)-2.693 F .192 -(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 -(\214les\) when performing \214lename completion.)144 672 R .456 -(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) --2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 684 Q F1 -(menu\255complete\255display\255pr)108 696 Q(e\214x \(Off\))-.18 E F0 -1.586(If set to)144 708 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\ -ion displays the common pre\214x of the list of possible completions) --4.086 F(\(which may be empty\) before c)144 720 Q -(ycling through the list.)-.15 E(GNU Bash-4.2)72 768 Q(2010 December 28) -135.965 E(37)185.955 E 0 Cg EP -%%Page: 38 38 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(output\255meta \(Off\))108 84 Q F0 .506 -(If set to)144 96 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will displ\ -ay characters with the eighth bit set directly rather than as a meta-) --3.006 F(pre\214x)144 108 Q(ed escape sequence.)-.15 E F1 -(page\255completions \(On\))108 120 Q F0 .809(If set to)144 132 R F1(On) -3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F/F2 10 -/Times-Italic@0 SF(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 456 +Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 +(match\255hidden\255\214les \(On\))108 468 Q F0 .192(This v)144 480 R +.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192 +(auses readline to match \214les whose names be)-2.692 F .193 +(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 +(\214les\) when performing \214lename completion.)144 492 R .456 +(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) +-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F +(user in the \214lename to be completed.)144 504 Q F1 +(menu\255complete\255display\255pr)108 516 Q(e\214x \(Off\))-.18 E F0 +1.585(If set to)144 528 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ +ion displays the common pre\214x of the list of possible completions) +-4.085 F(\(which may be empty\) before c)144 540 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 552 Q F0 +.507(If set to)144 564 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ +display characters with the eighth bit set directly rather than as a me\ +ta-)-3.007 F(pre\214x)144 576 Q(ed escape sequence.)-.15 E F1 +(page\255completions \(On\))108 588 Q F0 .808(If set to)144 600 R F1(On) +3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor) +3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F -(tions at a time.)144 144 Q F1 -(print\255completions\255horizontally \(Off\))108 156 Q F0 1.318 -(If set to)144 168 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ -play completions with matches sorted horizontally in alphabetical)-3.818 -F(order)144 180 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1 -2.29 -.18(re v)108 192 T(ert\255all\255at\255newline \(Off\)).08 E -F0 .699(If set to)144 204 R F1(On)3.199 E F0 3.199(,r)C .699 +(tions at a time.)144 612 Q F1 +(print\255completions\255horizontally \(Off\))108 624 Q F0 1.319 +(If set to)144 636 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\ +play completions with matches sorted horizontally in alphabetical)-3.819 +F(order)144 648 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1 -2.29 -.18(re v)108 660 T(ert\255all\255at\255newline \(Off\)).08 E +F0 .698(If set to)144 672 R F1(On)3.198 E F0 3.198(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 216 S +-3.198 F F1(accept\255line)3.199 E F0(is)3.199 E -.15(exe)144 684 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 -(vidual undo lists across calls to)-.25 F F1 -.18(re)144 228 S(adline) -.18 E F0(.)A F1(sho)108 240 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .304(This alters the def)144 252 R .304(ault beha)-.1 F .304 -(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) -2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H -(ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 264 R(bell.)144 276 Q F1 -(sho)108 288 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 -(This alters the def)144 300 R 5.346(ault beha)-.1 F 5.345 -(vior of the completion functions in a f)-.2 F 5.345(ashion similar to) --.1 F F1(sho)144 312 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C -4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 696 S(adline) +.18 E F0(.)A(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(39)190.95 E +0 Cg EP +%%Page: 40 40 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(sho)108 84 Q +(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .303(This alters the def) +144 96 R .303(ault beha)-.1 F .304(vior of the completion functions.)-.2 +F .304(If set to)5.304 F F1(On)2.804 E F0 2.804(,w)C .304(ords which ha) +-2.904 F .604 -.15(ve m)-.2 H(ore).15 E 1.264(than one possible complet\ +ion cause the matches to be listed immediately instead of ringing the) +144 108 R(bell.)144 120 Q F1(sho)108 132 Q +(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 +(This alters the def)144 144 R 5.345(ault beha)-.1 F 5.345 +(vior of the completion functions in a f)-.2 F 5.346(ashion similar to) +-.1 F F1(sho)144 156 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C +4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 -(ore than one possible completion).15 F 1.04(without an)144 324 R 3.54 +(ore than one possible completion).15 F 1.039(without an)144 168 R 3.539 (yp)-.15 G 1.039 -(ossible partial completion \(the possible completions don')-3.54 F -3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ -es to be listed immediately instead of ringing the bell.)144 336 Q F1 -(skip\255completed\255text \(Off\))108 348 Q F0 .094(If set to)144 360 R +(ossible partial completion \(the possible completions don')-3.539 F +3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\ +s to be listed immediately instead of ringing the bell.)144 180 Q F1 +(sho)108 192 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.019 +(If set to)144 204 R F1(On)3.519 E F0 3.519(,a)C 1.018 +(dd a character to the be)-3.519 F 1.018 +(ginning of the prompt indicating the editing mode: emacs)-.15 F +(\(@\), vi command \(:\) or vi insertion \(+\).)144 216 Q F1 +(skip\255completed\255text \(Off\))108 228 Q F0 .094(If set to)144 240 R F1(On)2.594 E F0 2.594(,t)C .095(his alters the def)-2.594 F .095 (ault completion beha)-.1 F .095 -(vior when inserting a single match into the line.)-.2 F(It')144 372 Q +(vior when inserting a single match into the line.)-.2 F(It')144 252 Q 2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046 (hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1 F .045(enabled, readline does not)2.545 F 1.394(insert characters from \ -the completion that match characters after point in the w)144 384 R -1.395(ord being com-)-.1 F(pleted, so portions of the w)144 396 Q +the completion that match characters after point in the w)144 264 R +1.395(ord being com-)-.1 F(pleted, so portions of the w)144 276 Q (ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(visible\255stats \(Off\))108 408 Q F0 .847(If set to)144 420 R F1(On) +(visible\255stats \(Off\))108 288 Q F0 .847(If set to)144 300 R F1(On) 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346 -(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846 -(\(2\) is appended to the \214lename)B -(when listing possible completions.)144 432 Q F1 -(Readline Conditional Constructs)87 448.8 Q F0 .05 -(Readline implements a f)108 460.8 R .05(acility similar in spirit to t\ +(st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF +(stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B +(when listing possible completions.)144 312 Q F1 +(Readline Conditional Constructs)87 328.8 Q F0 .05 +(Readline implements a f)108 340.8 R .05(acility similar in spirit to t\ he conditional compilation features of the C preprocessor)-.1 F .097 -(which allo)108 472.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(which allo)108 352.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 (indings and v).15 F .096 (ariable settings to be performed as the result of tests.)-.25 F .096 -(There are four parser)5.096 F(directi)108 484.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 501.6 Q F0(The)24.89 E F1($if)2.962 E +(There are four parser)5.096 F(directi)108 364.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 381.6 Q F0(The)24.89 E F1($if)2.962 E F0 .462(construct allo)2.962 F .463(ws bindings to be made based on the\ editing mode, the terminal being used,)-.25 F .478 -(or the application using readline.)144 513.6 R .477(The te)5.477 F .477 +(or the application using readline.)144 393.6 R .477(The te)5.477 F .477 (xt of the test e)-.15 F .477 (xtends to the end of the line; no characters)-.15 F -(are required to isolate it.)144 525.6 Q F1(mode)144 542.4 Q F0(The) +(are required to isolate it.)144 405.6 Q F1(mode)144 422.4 Q F0(The) 12.67 E F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0 (directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 (sed to test whether readline is in emacs or vi)-3.711 F 3.065 -(mode. This)180 554.4 R .565(may be used in conjunction with the)3.065 F +(mode. This)180 434.4 R .565(may be used in conjunction with the)3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) -3.065 F .735(set bindings in the)180 566.4 R F2(emacs\255standar)3.235 E +3.065 F .735(set bindings in the)180 446.4 R F2(emacs\255standar)3.235 E (d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735 -(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 578.4 -Q F1(term)144 595.2 Q F0(The)15.46 E F1(term=)3.197 E F0 .696 +(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 458.4 +Q F1(term)144 475.2 Q F0(The)15.46 E F1(term=)3.197 E F0 .696 (form may be used to include terminal-speci\214c k)3.197 F .996 -.15 -(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 607.2 R +(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 487.2 R .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 -(wo)3.154 G .654(rd on the right side of).1 F(the)180 619.2 Q F1(=)3.232 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 499.2 Q F1(=)3.232 E F0 .732(is tested ag)3.232 F .732(ainst the both full name of the ter\ minal and the portion of the terminal)-.05 F(name before the \214rst)180 -631.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +511.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 -2.5(,f).77 G(or instance.)-2.5 E F1(application)144 648 Q F0(The)180 660 +2.5(,f).77 G(or instance.)-2.5 E F1(application)144 528 Q F0(The)180 540 Q F1(application)3.003 E F0 .503 (construct is used to include application-speci\214c settings.)3.003 F .503(Each program)5.503 F .114(using the readline library sets the)180 -672 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +552 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 (nd an initialization \214le can test for a)-2.614 F .5(particular v)180 -684 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 +564 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 (ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397 -(ci\214c program.)180 696 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +(ci\214c program.)180 576 R -.15(Fo)5.397 G 2.896(ri).15 G .396 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 -(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 708 Q -(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(38)185.955 E 0 Cg EP -%%Page: 39 39 +(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 588 Q +(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 612 Q F0 +(Bash)2.5 E 2.5(#Q)180 624 S(uote the current or pre)-2.5 E(vious w)-.25 +E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 636 Q F1($endif)180 648 Q +($endif)108 664.8 Q F0(This command, as seen in the pre)9.33 E(vious e) +-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1 +($else)108 681.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 +E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G +(cuted if the test f).15 E(ails.)-.1 E F1($include)108 698.4 Q F0 .356 +(This directi)144 710.4 R .656 -.15(ve t)-.25 H(ak).15 E .356 +(es a single \214lename as an ar)-.1 F .357 +(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) +144 722.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(40)190.95 E 0 Cg EP +%%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF($if)180 84 Q F0(Bash)2.5 E 2.5(#Q)180 96 S -(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E -("\\C\255xq": "\\eb\\"\\ef\\"")180 108 Q F1($endif)180 120 Q($endif)108 -136.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E -(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else) -108 153.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0 -(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G -(cuted if the test f).15 E(ails.)-.1 E F1($include)108 170.4 Q F0 .356 -(This directi)144 182.4 R .656 -.15(ve t)-.25 H(ak).15 E .356 -(es a single \214lename as an ar)-.1 F .357 -(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 194.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 --.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5 -E(c)-.37 E F0(:)A F1($include)144 218.4 Q F2(/etc/inputr)5.833 E(c)-.37 -E F1(Sear)87 235.2 Q(ching)-.18 E F0 .835(Readline pro)108 247.2 R .835 +-.35 E/F1 10/Times-Bold@0 SF($include)144 84 Q/F2 10/Times-Italic@0 SF +(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 100.8 Q(ching)-.18 E F0 .835 +(Readline pro)108 112.8 R .835 (vides commands for searching through the command history \(see)-.15 F /F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E -.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 259.2 Q +.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 124.8 Q (There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E (emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 -E .697(Incremental searches be)108 276 R .697 +E .697(Incremental searches be)108 141.6 R .697 (gin before the user has \214nished typing the search string.)-.15 F .698(As each character of the)5.698 F .113 -(search string is typed, readline displays the ne)108 288 R .112 +(search string is typed, readline displays the ne)108 153.6 R .112 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1 E 5.112(.A)-.55 G(n)-5.112 E .542 -(incremental search requires only as man)108 300 R 3.042(yc)-.15 G .542 -(haracters as needed to \214nd the desired history entry)-3.042 F 5.542 -(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224(acters present in the v) -108 312 R .224(alue of the)-.25 F F1(isear)2.724 E(ch-terminators)-.18 E -F0 -.25(va)2.724 G .224 +(incremental search requires only as man)108 165.6 R 3.042(yc)-.15 G +.542(haracters as needed to \214nd the desired history entry)-3.042 F +5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224 +(acters present in the v)108 177.6 R .224(alue of the)-.25 F F1(isear) +2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224 (riable are used to terminate an incremental search.).25 F .66 -(If that v)108 324 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 189.6 R .66(ariable has not been assigned a v)-.25 F .66 (alue the Escape and Control-J characters will terminate an incre-)-.25 -F .097(mental search.)108 336 R .096(Control-G will abort an incrementa\ -l search and restore the original line.)5.097 F .096(When the search is) -5.096 F(terminated, the history entry containing the search string beco\ -mes the current line.)108 348 Q 2.938 -.8(To \214)108 364.8 T 1.339(nd \ -other matching entries in the history list, type Control-S or Control-R\ - as appropriate.).8 F 1.339(This will)6.339 F .675(search backw)108 -376.8 R .675(ard or forw)-.1 F .675(ard in the history for the ne)-.1 F -.674(xt entry matching the search string typed so f)-.15 F(ar)-.1 E -5.674(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 388.8 R .474 -.15 -(ey s)-.1 H .174 +F .097(mental search.)108 201.6 R .096(Control-G will abort an incremen\ +tal search and restore the original line.)5.097 F .096 +(When the search is)5.096 F(terminated, the history entry containing th\ +e search string becomes the current line.)108 213.6 Q 2.938 -.8(To \214) +108 230.4 T 1.339(nd other matching entries in the history list, type C\ +ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 +(search backw)108 242.4 R .675(ard or forw)-.1 F .675 +(ard in the history for the ne)-.1 F .674 +(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674 +(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 254.4 R .474 -.15(ey s)-.1 +H .174 (equence bound to a readline command will terminate the search and e).15 F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E -.541(instance, a)108 400.8 R F2(ne)3.041 E(wline)-.15 E F0 .541 +.541(instance, a)108 266.4 R F2(ne)3.041 E(wline)-.15 E F0 .541 (will terminate the search and accept the line, thereby e)3.041 F -.15 -(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 412.8 -Q .653(Readline remembers the last incremental search string.)108 429.6 +(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 278.4 +Q .653(Readline remembers the last incremental search string.)108 295.2 R .653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) -3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E -(ing characters de\214ning a ne)108 441.6 Q 2.5(ws)-.25 G +(ing characters de\214ning a ne)108 307.2 Q 2.5(ws)-.25 G (earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.) -2.5 E .567(Non-incremental searches read the entire search string befo\ -re starting to search for matching history lines.)108 458.4 R(The searc\ -h string may be typed by the user or be part of the contents of the cur\ -rent line.)108 470.4 Q F1(Readline Command Names)87 487.2 Q F0 1.391 -(The follo)108 499.2 R 1.391 +re starting to search for matching history lines.)108 324 R(The search \ +string may be typed by the user or be part of the contents of the curre\ +nt line.)108 336 Q F1(Readline Command Names)87 352.8 Q F0 1.391 +(The follo)108 364.8 R 1.391 (wing is a list of the names of the commands and the def)-.25 F 1.391 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F -3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 511.2 R .122 +3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 376.8 R .122 (names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1 H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121 -(the follo)2.621 F(wing)-.25 E(descriptions,)108 523.2 Q F2(point)3.41 E +(the follo)2.621 F(wing)-.25 E(descriptions,)108 388.8 Q F2(point)3.41 E F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) -.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 535.2 Q F0 2.5 +.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 400.8 Q F0 2.5 (command. The)2.5 F(te)2.5 E (xt between the point and mark is referred to as the)-.15 E F2 -.37(re) -2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 552 Q(or Mo)-.25 E(ving)-.1 E -(beginning\255of\255line \(C\255a\))108 564 Q F0(Mo)144 576 Q .3 -.15 -(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 -(end\255of\255line \(C\255e\))108 588 Q F0(Mo)144 600 Q .3 -.15(ve t) --.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 612 S -(rward\255char \(C\255f\)).25 E F0(Mo)144 624 Q .3 -.15(ve f)-.15 H(orw) -.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 -636 Q F0(Mo)144 648 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E -F1 -.25(fo)108 660 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 672 -Q .823 -.15(ve f)-.15 H(orw).15 E .523(ard to the end of the ne)-.1 F -.523(xt w)-.15 F 3.023(ord. W)-.1 F .522 -(ords are composed of alphanumeric characters \(let-)-.8 F -(ters and digits\).)144 684 Q F1(backward\255w)108 696 Q(ord \(M\255b\)) --.1 E F0(Mo)144 708 Q 1.71 -.15(ve b)-.15 H 1.41 +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 417.6 Q(or Mo)-.25 E(ving)-.1 +E(beginning\255of\255line \(C\255a\))108 429.6 Q F0(Mo)144 441.6 Q .3 +-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 +(end\255of\255line \(C\255e\))108 453.6 Q F0(Mo)144 465.6 Q .3 -.15 +(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 +477.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 489.6 Q .3 -.15(ve f) +-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 +(backward\255char \(C\255b\))108 501.6 Q F0(Mo)144 513.6 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 525.6 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 537.6 Q .823 -.15(ve f)-.15 H(orw) +.15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W) +-.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F +(ters and digits\).)144 549.6 Q F1(backward\255w)108 561.6 Q +(ord \(M\255b\))-.1 E F0(Mo)144 573.6 Q 1.71 -.15(ve b)-.15 H 1.41 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F -(characters \(letters and digits\).)144 720 Q(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(39)185.955 E 0 Cg EP -%%Page: 40 40 +(characters \(letters and digits\).)144 585.6 Q F1(shell\255f)108 597.6 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 609.6 Q .784 -.15(ve f)-.15 H +(orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984 +(ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-) +-.8 F(ters.)144 621.6 Q F1(shell\255backward\255w)108 633.6 Q(ord)-.1 E +F0(Mo)144 645.6 Q .908 -.15(ve b)-.15 H .609 +(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109 +(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F +(metacharacters.)144 657.6 Q F1(clear\255scr)108 669.6 Q(een \(C\255l\)) +-.18 E F0 .993(Clear the screen lea)144 681.6 R .993 +(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G +.993(th an ar).4 F .993(gument, refresh the)-.18 F +(current line without clearing the screen.)144 693.6 Q F1 -.18(re)108 +705.6 S(draw\255curr).18 E(ent\255line)-.18 E F0 +(Refresh the current line.)144 717.6 Q(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(41)190.95 E 0 Cg EP +%%Page: 42 42 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(shell\255f)108 84 Q(orward\255w)-.25 E(ord) --.1 E F0(Mo)144 96 Q .784 -.15(ve f)-.15 H(orw).15 E .484 -(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984(ord. W)-.1 F .484 -(ords are delimited by non-quoted shell metacharac-)-.8 F(ters.)144 108 -Q F1(shell\255backward\255w)108 120 Q(ord)-.1 E F0(Mo)144 132 Q .908 --.15(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609 -(vious w)-.25 F 3.109(ord. W)-.1 F .609 -(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 144 Q -F1(clear\255scr)108 156 Q(een \(C\255l\))-.18 E F0 .993 -(Clear the screen lea)144 168 R .993 -(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G -.993(th an ar).4 F .993(gument, refresh the)-.18 F -(current line without clearing the screen.)144 180 Q F1 -.18(re)108 192 -S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -204 Q F1(Commands f)87 220.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 232.8 Q(n\))-.15 E F0 .158 -(Accept the line re)144 244.8 R -.05(ga)-.15 G .158 +-.35 E/F1 10/Times-Bold@0 SF(Commands f)87 84 Q +(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108 +96 Q(n\))-.15 E F0 .158(Accept the line re)144 108 R -.05(ga)-.15 G .158 (rdless of where the cursor is.).05 F .158(If this line is non-empty) 5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699 -(according to the state of the)144 256.8 R/F2 9/Times-Bold@0 SF -(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F -.699(the line is a modi\214ed history line, then)3.199 F -(restore the history line to its original state.)144 268.8 Q F1(pr)108 -280.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 292.8 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 304.8 -Q F0(Fetch the ne)144 316.8 Q(xt command from the history list, mo)-.15 -E(ving forw)-.15 E(ard in the list.)-.1 E F1 -(beginning\255of\255history \(M\255<\))108 328.8 Q F0(Mo)144 340.8 Q .3 --.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) --.65 E F1(end\255of\255history \(M\255>\))108 352.8 Q F0(Mo)144 364.8 Q -.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 -(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 -(re v)108 376.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.47(Search backw)144 388.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.471 -(ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 400.8 Q F1 -.25(fo)108 412.8 S +(according to the state of the)144 120 R/F2 9/Times-Bold@0 SF(HISTCONTR) +3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F .699 +(the line is a modi\214ed history line, then)3.199 F +(restore the history line to its original state.)144 132 Q F1(pr)108 144 +Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 +156 Q(vious command from the history list, mo)-.25 E +(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 168 Q +F0(Fetch the ne)144 180 Q(xt command from the history list, mo)-.15 E +(ving forw)-.15 E(ard in the list.)-.1 E F1 +(beginning\255of\255history \(M\255<\))108 192 Q F0(Mo)144 204 Q .3 -.15 +(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)-.65 E +F1(end\255of\255history \(M\255>\))108 216 Q F0(Mo)144 228 Q .3 -.15 +(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5(,i)-.65 +G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18(re v)108 +240 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47 +(Search backw)144 252 R 1.471(ard starting at the current line and mo) +-.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E +(This is an incremental search.)144 264 Q F1 -.25(fo)108 276 S (rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 -(Search forw)144 424.8 R 1.132(ard starting at the current line and mo) --.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary) --.25 F(.)-.65 E(This is an incremental search.)144 436.8 Q F1 -(non\255incr)108 448.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H -(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw) -144 460.8 R .164(ard through the history starting at the current line u\ -sing a non-incremental search for)-.1 F 2.5(as)144 472.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 484.8 Q -(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.354(Search forw)144 496.8 R 1.354(ard through the history using \ -a non-incremental search for a string supplied by the)-.1 F(user)144 -508.8 Q(.)-.55 E F1(history\255sear)108 520.8 Q(ch\255f)-.18 E(orward) --.25 E F0 .248(Search forw)144 532.8 R .249(ard through the history for\ - the string of characters between the start of the current line)-.1 F -(and the point.)144 544.8 Q(This is a non-incremental search.)5 E F1 -(history\255sear)108 556.8 Q(ch\255backward)-.18 E F0 .951(Search backw) -144 568.8 R .951(ard through the history for the string of characters b\ -etween the start of the current)-.1 F(line and the point.)144 580.8 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 592.8 Q -2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 -604.8 R .622(gument to the pre)-.18 F .622 +(Search forw)144 288 R 1.132(ard starting at the current line and mo)-.1 +F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)-.25 +F(.)-.65 E(This is an incremental search.)144 300 Q F1(non\255incr)108 +312 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E +(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)144 324 R .164(ar\ +d through the history starting at the current line using a non-incremen\ +tal search for)-.1 F 2.5(as)144 336 S(tring supplied by the user)-2.5 E +(.)-.55 E F1(non\255incr)108 348 Q(emental\255f)-.18 E(orward\255sear) +-.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 360 R +1.354(ard through the history using a non-incremental search for a stri\ +ng supplied by the)-.1 F(user)144 372 Q(.)-.55 E F1(history\255sear)108 +384 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 396 R .249(a\ +rd through the history for the string of characters between the start o\ +f the current line)-.1 F(and the point.)144 408 Q +(This is a non-incremental search.)5 E F1(history\255sear)108 420 Q +(ch\255backward)-.18 E F0 .951(Search backw)144 432 R .951(ard through \ +the history for the string of characters between the start of the curre\ +nt)-.1 F(line and the point.)144 444 Q +(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 456 Q +2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 468 +R .622(gument to the pre)-.18 F .622 (vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F -.622(vious line\))-.25 F .795(at point.)144 616.8 R -.4(Wi)5.795 G .794 +.622(vious line\))-.25 F .795(at point.)144 480 R -.4(Wi)5.795 G .794 (th an ar).4 F(gument)-.18 E/F3 10/Times-Italic@0 SF(n)3.294 E F0 3.294 (,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 (ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794 -(ords in the)-.1 F(pre)144 628.8 Q .291(vious command be)-.25 F .291 +(ords in the)-.1 F(pre)144 492 Q .291(vious command be)-.25 F .291 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 (ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .292 -(ord from the end of)-.1 F .282(the pre)144 640.8 R .282(vious command.) +(ord from the end of)-.1 F .282(the pre)144 504 R .282(vious command.) -.25 F .282(Once the ar)5.282 F(gument)-.18 E F3(n)2.781 E F0 .281 (is computed, the ar)2.781 F .281(gument is e)-.18 F .281 -(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 652.8 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 664.8 Q +(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 516 Q +(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 528 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 -(Insert the last ar)144 676.8 R 1.307(gument to the pre)-.18 F 1.307 +(Insert the last ar)144 540 R 1.307(gument to the pre)-.18 F 1.307 (vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 -(vious history entry\).)-.25 F -.4(Wi)144 688.8 S .204(th a numeric ar) -.4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F -(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi) --5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar) -2.703 E(g)-.1 E F0(mo)144 700.8 Q .806 -.15(ve b)-.15 H .507 +(vious history entry\).)-.25 F -.4(Wi)144 552 S .204(th a numeric ar).4 +F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) +-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203 +E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E +(g)-.1 E F0(mo)144 564 Q .806 -.15(ve b)-.15 H .507 (ack through the history list, inserting the last w).15 F .507 (ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E -1.397(to the \214rst call\) of each line in turn.)144 712.8 R(An)6.396 E +1.397(to the \214rst call\) of each line in turn.)144 576 R(An)6.396 E 3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396 (gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls) -.15 E .491(determines the direction to mo)144 724.8 R .791 -.15(ve t) --.15 H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga) --.15 G(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492 -(ument switches the direction).18 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(40)185.955 E 0 Cg EP -%%Page: 41 41 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .494(through the history \(back or forw)144 84 R 2.994 -(ard\). The)-.1 F .494(history e)2.994 F .494(xpansion f)-.15 F .494 -(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 96 Q -(gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.) --.15 E/F1 10/Times-Bold@0 SF(shell\255expand\255line \(M\255C\255e\))108 -108 Q F0 .622(Expand the line as the shell does.)144 120 R .622 +.15 E .491(determines the direction to mo)144 588 R .791 -.15(ve t)-.15 +H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G +(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492 +(ument switches the direction).18 F .494 +(through the history \(back or forw)144 600 R 2.994(ard\). The)-.1 F +.494(history e)2.994 F .494(xpansion f)-.15 F .494 +(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 +612 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) +-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 624 Q F0 .622 +(Expand the line as the shell does.)144 636 R .622 (This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 132 Q(ord e)-.1 E 2.5 -(xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 -(YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G +(xpansion as well as all of the)-.15 F(shell w)144 648 Q(ord e)-.1 E 2.5 +(xpansions. See)-.15 F F2(HIST)2.5 E(OR)-.162 E 2.25(YE)-.315 G(XP)-2.25 +E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G (or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(history\255expand\255line \(M\255^\))108 144 Q F0 .939 -(Perform history e)144 156 R .939(xpansion on the current line.)-.15 F +(history\255expand\255line \(M\255^\))108 660 Q F0 .939 +(Perform history e)144 672 R .939(xpansion on the current line.)-.15 F (See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E (ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-) --3.438 F(tion of history e)144 168 Q(xpansion.)-.15 E F1(magic\255space) -108 180 Q F0 1.626(Perform history e)144 192 R 1.626 +-3.438 F(tion of history e)144 684 Q(xpansion.)-.15 E F1(magic\255space) +108 696 Q F0 1.626(Perform history e)144 708 R 1.626 (xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2 (HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 -(belo)144 204 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E F1(alias\255expand\255line)108 216 Q F0 .395 -(Perform alias e)144 228 R .395(xpansion on the current line.)-.15 F -(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .694 -.15(ve f)-.15 H -.394(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 240 Q F1 -(history\255and\255alias\255expand\255line)108 252 Q F0 -(Perform history and alias e)144 264 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 276 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 288 S(ynon)-2.5 E(ym for) +(belo)144 720 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(42) +190.95 E 0 Cg EP +%%Page: 43 43 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(alias\255expand\255line)108 84 Q F0 .395 +(Perform alias e)144 96 R .395(xpansion on the current line.)-.15 F(See) +5.395 E/F2 9/Times-Bold@0 SF(ALIASES)2.895 E F0(abo)2.645 E .694 -.15 +(ve f)-.15 H .394(or a description of alias e).15 F(xpan-)-.15 E(sion.) +144 108 Q F1(history\255and\255alias\255expand\255line)108 120 Q F0 +(Perform history and alias e)144 132 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 144 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 156 S(ynon)-2.5 E(ym for) -.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 -(operate\255and\255get\255next \(C\255o\))108 300 Q F0 .947 -(Accept the current line for e)144 312 R -.15(xe)-.15 G .948 +(operate\255and\255get\255next \(C\255o\))108 168 Q F0 .947 +(Accept the current line for e)144 180 R -.15(xe)-.15 G .948 (cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15 (ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F -(history for editing.)144 324 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G +(history for editing.)144 192 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G (ument is ignored.).18 E F1 -(edit\255and\255execute\255command \(C\255xC\255e\))108 336 Q F0(In)144 -348 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(edit\255and\255execute\255command \(C\255xC\255e\))108 204 Q F0(In)144 +216 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 (ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026 (cute the result as shell commands.).15 F F1(Bash)6.026 E F0 -(attempts to in)144 360 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) +(attempts to in)144 228 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) -.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0 (and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E 2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 -376.8 Q(or Changing T)-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 -388.8 Q F0 .357(Delete the character at point.)144 400.8 R .358 -(If point is at the be)5.358 F .358 -(ginning of the line, there are no characters in the)-.15 F -(line, and the last character typed w)144 412.8 Q(as not bound to)-.1 E -F1(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F2(EOF)2.5 E F3(.) -A F1(backward\255delete\255char \(Rubout\))108 424.8 Q F0 .553 -(Delete the character behind the cursor)144 436.8 R 5.553(.W)-.55 G .553 -(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553(umeric ar)-3.053 F -.552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552(he deleted te).15 F -.552(xt on)-.15 F(the kill ring.)144 448.8 Q F1 -.25(fo)108 460.8 S -(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 472.8 R 2.973(,u)-.4 G .474 +244.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 256.8 +Q F1(\(usually C\255d\))2.5 E F0 .798 +(The character indicating end-of-\214le as set, for e)144 268.8 R .799 +(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 +(ft)-5.799 G .799(his character is read when)-3.299 F .592 +(there are no characters on the line, and point is at the be)144 280.8 R +.592(ginning of the line, Readline interprets it)-.15 F +(as the end of input and returns)144 292.8 Q F2(EOF)2.5 E F3(.)A F1 +(delete\255char \(C\255d\))108 304.8 Q F0 .441 +(Delete the character at point.)144 316.8 R .442 +(If this function is bound to the same character as the tty)5.441 F F1 +(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 328.8 Q 2.5(,a)-.4 G(s) +-2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H +(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) +108 340.8 Q F0 .553(Delete the character behind the cursor)144 352.8 R +5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553 +(umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552 +(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 364.8 Q F1 +-.25(fo)108 376.8 S(rward\255backward\255delete\255char).25 E F0 .473 +(Delete the character under the cursor)144 388.8 R 2.973(,u)-.4 G .474 (nless the cursor is at the end of the line, in which case the)-2.973 F -(character behind the cursor is deleted.)144 484.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 496.8 Q F0 .779(Add the ne)144 -508.8 R .779(xt character typed to the line v)-.15 F 3.279 +(character behind the cursor is deleted.)144 400.8 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 412.8 Q F0 .779(Add the ne)144 +424.8 R .779(xt character typed to the line v)-.15 F 3.279 (erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 -(,f)C(or)-3.278 E -.15(ex)144 520.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 532.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 544.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 556.8 Q F0 -(Insert the character typed.)144 568.8 Q F1 -(transpose\255chars \(C\255t\))108 580.8 Q F0 .321 -(Drag the character before point forw)144 592.8 R .321(ard o)-.1 F -.15 +(,f)C(or)-3.278 E -.15(ex)144 436.8 S(ample.).15 E F1 +(tab\255insert \(C\255v T)108 448.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 460.8 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 472.8 Q F0 +(Insert the character typed.)144 484.8 Q F1 +(transpose\255chars \(C\255t\))108 496.8 Q F0 .321 +(Drag the character before point forw)144 508.8 R .321(ard o)-.1 F -.15 (ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 (ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 (If point is at the end of the line, then this transposes the tw)144 -604.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 616.8 Q(guments ha)-.18 E +520.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 532.8 Q(guments ha)-.18 E .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 -(transpose\255w)108 628.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -640.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) +(transpose\255w)108 544.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 +556.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) -.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) -2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F -(is at the end of the line, this transposes the last tw)144 652.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 664.8 Q +(is at the end of the line, this transposes the last tw)144 568.8 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 580.8 Q (ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 -676.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F +592.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 688.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 700.8 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 712.8 Q 1.647 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 604.8 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 616.8 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 628.8 Q 1.647 (wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 (ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 (ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) --.25 F(vious)-.25 E -.1(wo)144 724.8 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E(GNU Bash-4.2)72 768 Q(2010 December 28) -135.965 E(41)185.955 E 0 Cg EP -%%Page: 42 42 +-.25 F(vious)-.25 E -.1(wo)144 640.8 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 652.8 Q +(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 +664.8 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F +-.05(ga)-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 676.8 S(rd, b) +.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 +688.8 S(rwrite\255mode).1 E F0 -.8(To)144 700.8 S .437(ggle o).8 F -.15 +(ve)-.15 G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 +(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 +(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 +(Wi)144 712.8 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 +-.15(ve n)-.25 H .781(umeric ar).15 F .781 +(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F +(fects)-.25 E(only)144 724.8 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) +4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 +F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F F4 -.37(re) +4.395 G(adline\(\)).37 E F0 1.895(starts in insert)4.395 F(GNU Bash 4.3) +72 768 Q(2014 February 2)141.79 E(43)190.95 E 0 Cg EP +%%Page: 44 44 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(capitalize\255w)108 84 Q(ord \(M\255c\))-.1 -E F0 1.975(Capitalize the current \(or follo)144 96 R 1.974(wing\) w) --.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E -2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974(ument, capitalize the pre).18 -F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15 -(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 120 S(rwrite\255mode).1 E F0 -.8 -(To)144 132 S .437(ggle o).8 F -.15(ve)-.15 G .437(rwrite mode.).15 F --.4(Wi)5.437 G .437(th an e).4 F .437(xplicit positi)-.15 F .738 -.15 -(ve n)-.25 H .438(umeric ar).15 F .438(gument, switches to o)-.18 F -.15 -(ve)-.15 G .438(rwrite mode.).15 F -.4(Wi)144 144 S .781(th an e).4 F -.781(xplicit non-positi)-.15 F 1.081 -.15(ve n)-.25 H .781(umeric ar).15 -F .781(gument, switches to insert mode.)-.18 F .78(This command af)5.781 -F(fects)-.25 E(only)144 156 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) -4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 -F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10 -/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895 -(starts in insert)4.395 F 3.969(mode. In)144 168 R -.15(ove)3.969 G -1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E -F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F -.957(pushing the te)144 180 R .957(xt to the right.)-.15 F .958 -(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 -.958(replace the character)3.458 F(before point with a space.)144 192 Q -(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 -208.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 220.8 Q F0 -(Kill the te)144 232.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 244.8 Q F0(Kill backw) -144 256.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 268.8 Q F0(Kill backw)144 280.8 +-.35 E 3.969(mode. In)144 84 R -.15(ove)3.969 G 1.469 +(rwrite mode, characters bound to).15 F/F1 10/Times-Bold@0 SF +(self\255insert)3.969 E F0 1.468(replace the te)3.969 F 1.468 +(xt at point rather than)-.15 F .957(pushing the te)144 96 R .957 +(xt to the right.)-.15 F .958(Characters bound to)5.957 F F1 +(backward\255delete\255char)3.458 E F0 .958(replace the character)3.458 +F(before point with a space.)144 108 Q(By def)5 E +(ault, this command is unbound.)-.1 E F1(Killing and Y)87 124.8 Q +(anking)-.85 E(kill\255line \(C\255k\))108 136.8 Q F0(Kill the te)144 +148.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 160.8 Q F0(Kill backw) +144 172.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 184.8 Q F0(Kill backw)144 196.8 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) --2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 292.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 208.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -304.8 Q F1(kill\255w)108 316.8 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 328.8 R .728 +220.8 Q F1(kill\255w)108 232.8 Q(ord \(M\255d\))-.1 E F0 .729 +(Kill from point to the end of the current w)144 244.8 R .728 (ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 340.8 S +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 256.8 S (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G -(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 352.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 364.8 Q(ord behind point.) +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 268.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 280.8 Q(ord behind point.) -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 -(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 376.8 Q +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 292.8 Q (ord \(M\255d\))-.1 E F0 .728 -(Kill from point to the end of the current w)144 388.8 R .729 +(Kill from point to the end of the current w)144 304.8 R .729 (ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 400.8 S +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 316.8 S (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) -108 412.8 Q(ord \(M\255Rubout\))-.1 E F0 3.025(Kill the w)144 424.8 R +108 328.8 Q(ord \(M\255Rubout\))-.1 E F0 3.025(Kill the w)144 340.8 R 3.025(ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 (rd boundaries are the same as those used by).8 F F1(shell\255back-) -5.525 E(ward\255w)144 436.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 448.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 460.8 R .364 +5.525 E(ward\255w)144 352.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 364.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 376.8 R .364 (ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 (ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 -472.8 Q F1(unix\255\214lename\255rubout)108 484.8 Q F0 .167(Kill the w) -144 496.8 R .166 +388.8 Q F1(unix\255\214lename\255rubout)108 400.8 Q F0 .167(Kill the w) +144 412.8 R .166 (ord behind point, using white space and the slash character as the w) --.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 508.8 Q +-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 424.8 Q (xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) --2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 520.8 Q F0 -(Delete all spaces and tabs around point.)144 532.8 Q F1(kill\255r)108 -544.8 Q(egion)-.18 E F0(Kill the te)144 556.8 Q(xt in the current re) --.15 E(gion.)-.15 E F1(copy\255r)108 568.8 Q(egion\255as\255kill)-.18 E -F0(Cop)144 580.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 436.8 Q F0 +(Delete all spaces and tabs around point.)144 448.8 Q F1(kill\255r)108 +460.8 Q(egion)-.18 E F0(Kill the te)144 472.8 Q(xt in the current re) +-.15 E(gion.)-.15 E F1(copy\255r)108 484.8 Q(egion\255as\255kill)-.18 E +F0(Cop)144 496.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E (gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 -(copy\255backward\255w)108 592.8 Q(ord)-.1 E F0(Cop)144 604.8 Q 4.8(yt) +(copy\255backward\255w)108 508.8 Q(ord)-.1 E F0(Cop)144 520.8 Q 4.8(yt) -.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E (fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301 (ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 -616.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 628.8 Q(orward\255w)-.25 E -(ord)-.1 E F0(Cop)144 640.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 +532.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 544.8 Q(orward\255w)-.25 E +(ord)-.1 E F0(Cop)144 556.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 (ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 (ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G -(ward\255w)144 652.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 664.8 Q -F0 -1(Ya)144 676.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E -(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 688.8 Q F0 -(Rotate the kill ring, and yank the ne)144 700.8 Q 2.5(wt)-.25 G 2.5 +(ward\255w)144 568.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 580.8 Q +F0 -1(Ya)144 592.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E +(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 604.8 Q F0 +(Rotate the kill ring, and yank the ne)144 616.8 Q 2.5(wt)-.25 G 2.5 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E -F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(42)185.955 E 0 Cg EP -%%Page: 43 43 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Numeric Ar)87 84 Q(guments)-.1 E -(digit\255ar)108 96 Q(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 -.641(Add this digit to the ar)144 108 R .641 +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 633.6 Q +(guments)-.1 E(digit\255ar)108 645.6 Q +(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641 +(Add this digit to the ar)144 657.6 R .641 (gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18 (rg)-3.141 G 3.142(ument. M\255\255).18 F .642(starts a ne)3.142 F(g-) --.15 E(ati)144 120 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 -(uni)108 132 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 -(This is another w)144 144 R .779(ay to specify an ar)-.1 F 3.279 +-.15 E(ati)144 669.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 +(uni)108 681.6 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 +(This is another w)144 693.6 R .779(ay to specify an ar)-.1 F 3.279 (gument. If)-.18 F .779(this command is follo)3.279 F .778 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 -156 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -168 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +705.6 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +717.6 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) --.2 F(-)-.2 E .898(wise ignored.)144 180 R .898 +-.2 F(-)-.2 E .898(wise ignored.)144 729.6 R .898 (As a special case, if this command is immediately follo)5.898 F .898 -(wed by a character that is)-.25 F .243 -(neither a digit or minus sign, the ar)144 192 R .243 +(wed by a character that is)-.25 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(44)190.95 E 0 Cg EP +%%Page: 45 45 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .243(neither a digit or minus sign, the ar)144 84 R .243 (gument count for the ne)-.18 F .243(xt command is multiplied by four) --.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 204 Q .378 +-.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 96 Q .378 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378 (cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F -.378(gument count)-.18 F(four)144 216 Q 2.5(,as)-.4 G(econd time mak) --2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1 -(Completing)87 232.8 Q(complete \(T)108 244.8 Q(AB\))-.9 E F0 1.137 -(Attempt to perform completion on the te)144 256.8 R 1.137 +.378(gument count)-.18 F(four)144 108 Q 2.5(,as)-.4 G(econd time mak) +-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E/F1 10 +/Times-Bold@0 SF(Completing)87 124.8 Q(complete \(T)108 136.8 Q(AB\))-.9 +E F0 1.137(Attempt to perform completion on the te)144 148.8 R 1.137 (xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 -(attempts completion treating the)3.637 F(te)144 268.8 Q .532(xt as a v) +(attempts completion treating the)3.637 F(te)144 160.8 Q .532(xt as a v) -.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with) -.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F .533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te) -144 280.8 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 +144 172.8 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 (\), or command \(including aliases and functions\) in turn.)B .701 (If none of these pro-)5.701 F -(duces a match, \214lename completion is attempted.)144 292.8 Q F1 -(possible\255completions \(M\255?\))108 304.8 Q F0 -(List the possible completions of the te)144 316.8 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 328.8 Q F0 .783 -(Insert all completions of the te)144 340.8 R .783 +(duces a match, \214lename completion is attempted.)144 184.8 Q F1 +(possible\255completions \(M\255?\))108 196.8 Q F0 +(List the possible completions of the te)144 208.8 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 220.8 Q F0 .783 +(Insert all completions of the te)144 232.8 R .783 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H .783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144 -352.8 Q F0(.)A F1(menu\255complete)108 364.8 Q F0 .929(Similar to)144 -376.8 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 +244.8 Q F0(.)A F1(menu\255complete)108 256.8 Q F0 .929(Similar to)144 +268.8 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 F .929(ord to be completed with a single match from the list of)-.1 F -1.193(possible completions.)144 388.8 R 1.193(Repeated e)6.193 F -.15 +1.193(possible completions.)144 280.8 R 1.193(Repeated e)6.193 F -.15 (xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194 (steps through the list of possible)3.694 F .829 -(completions, inserting each match in turn.)144 400.8 R .828 +(completions, inserting each match in turn.)144 292.8 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 412.8 R F1(bell\255style)3.227 E F0 +(\(subject to the setting of)144 304.8 R F1(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 -(positions forw)144 424.8 R 1.73(ard in the list of matches; a ne)-.1 F +(positions forw)144 316.8 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 -E(through the list.)144 436.8 Q(This command is intended to be bound to) +E(through the list.)144 328.8 Q(This command is intended to be bound to) 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 448.8 Q F0 .82 -(Identical to)144 460.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 +(ault.)-.1 E F1(menu\255complete\255backward)108 340.8 Q F0 .82 +(Identical to)144 352.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 (ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 (ard through the list of possible completions, as if)-.1 F F1 -(menu\255complete)144 472.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 +(menu\255complete)144 364.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 (nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) .15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 484.8 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 496.8 R +F1(delete\255char\255or\255list)108 376.8 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 388.8 R .234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.734 E F0(\).)A .425(If at the end of the line, beha)144 508.8 R -.15 +2.734 E F0(\).)A .425(If at the end of the line, beha)144 400.8 R -.15 (ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 (possible\255completions)2.925 E F0 5.425(.T)C .425 -(his command is unbound)-5.425 F(by def)144 520.8 Q(ault.)-.1 E F1 -(complete\255\214lename \(M\255/\))108 532.8 Q F0 -(Attempt \214lename completion on the te)144 544.8 Q(xt before point.) --.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 556.8 Q -F0(List the possible completions of the te)144 568.8 Q +(his command is unbound)-5.425 F(by def)144 412.8 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 424.8 Q F0 +(Attempt \214lename completion on the te)144 436.8 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 448.8 Q +F0(List the possible completions of the te)144 460.8 Q (xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 580.8 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 592.8 Q +(complete\255user)108 472.8 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 484.8 Q (xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 604.8 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 616.8 Q +108 496.8 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 508.8 Q (xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -628.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 -640.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E -F1(possible\255v)108 652.8 Q(ariable\255completions \(C\255x $\))-.1 E -F0(List the possible completions of the te)144 664.8 Q +520.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 +532.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E +F1(possible\255v)108 544.8 Q(ariable\255completions \(C\255x $\))-.1 E +F0(List the possible completions of the te)144 556.8 Q (xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 676.8 Q F0 -(Attempt completion on the te)144 688.8 Q +(complete\255hostname \(M\255@\))108 568.8 Q F0 +(Attempt completion on the te)144 580.8 Q (xt before point, treating it as a hostname.)-.15 E F1 -(possible\255hostname\255completions \(C\255x @\))108 700.8 Q F0 -(List the possible completions of the te)144 712.8 Q -(xt before point, treating it as a hostname.)-.15 E(GNU Bash-4.2)72 768 -Q(2010 December 28)135.965 E(43)185.955 E 0 Cg EP -%%Page: 44 44 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(complete\255command \(M\255!\))108 84 Q F0 -.581(Attempt completion on the te)144 96 R .581 +(possible\255hostname\255completions \(C\255x @\))108 592.8 Q F0 +(List the possible completions of the te)144 604.8 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(complete\255command \(M\255!\))108 616.8 Q F0 .581 +(Attempt completion on the te)144 628.8 R .581 (xt before point, treating it as a command name.)-.15 F .58 -(Command comple-)5.58 F .715(tion attempts to match the te)144 108 R +(Command comple-)5.58 F .715(tion attempts to match the te)144 640.8 R .715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F .715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F -(\214nally e)144 120 Q -.15(xe)-.15 G +(\214nally e)144 652.8 Q -.15(xe)-.15 G (cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 132 Q F0 -(List the possible completions of the te)144 144 Q +(possible\255command\255completions \(C\255x !\))108 664.8 Q F0 +(List the possible completions of the te)144 676.8 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 156 Q(AB\))-.9 E F0 .425 -(Attempt completion on the te)144 168 R .425 +(dynamic\255complete\255history \(M\255T)108 688.8 Q(AB\))-.9 E F0 .425 +(Attempt completion on the te)144 700.8 R .425 (xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 (ainst lines from the history list)-.05 F -(for possible completion matches.)144 180 Q F1(dab)108 192 Q(br)-.1 E --.15(ev)-.18 G(\255expand).15 E F0 .61 -(Attempt menu completion on the te)144 204 R .611 +(for possible completion matches.)144 712.8 Q(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(45)190.95 E 0 Cg EP +%%Page: 46 46 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(dab)108 84 Q(br)-.1 E -.15(ev)-.18 G +(\255expand).15 E F0 .61(Attempt menu completion on the te)144 96 R .611 (xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611 (ainst lines from the his-)-.05 F -(tory list for possible completion matches.)144 216 Q F1 -(complete\255into\255braces \(M\255{\))108 228 Q F0 .4(Perform \214lena\ +(tory list for possible completion matches.)144 108 Q F1 +(complete\255into\255braces \(M\255{\))108 120 Q F0 .4(Perform \214lena\ me completion and insert the list of possible completions enclosed with\ -in braces so)144 240 R(the list is a)144 252 Q -.25(va)-.2 G +in braces so)144 132 R(the list is a)144 144 Q -.25(va)-.2 G (ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 268.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 280.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 292.8 Q(gin sa)-.15 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 160.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 172.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 184.8 Q(gin sa)-.15 E (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G -(board macro.).15 E F1(end\255kbd\255macr)108 304.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 316.8 Q +(board macro.).15 E F1(end\255kbd\255macr)108 196.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 208.8 Q (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 -(call\255last\255kbd\255macr)108 328.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 340.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) +(call\255last\255kbd\255macr)108 220.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 232.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) -.1 G .999(board macro de\214ned, by making the characters in the macro\ - appear as if).15 F(typed at the k)144 352.8 Q -.15(ey)-.1 G(board.).15 -E F1(Miscellaneous)87 369.6 Q -.18(re)108 381.6 S.18 E + appear as if).15 F(typed at the k)144 244.8 Q -.15(ey)-.1 G(board.).15 +E F1(print\255last\255kbd\255macr)108 256.8 Q 2.5(o\()-.18 G(\))-2.5 E +F0(Print the last k)144 268.8 Q -.15(ey)-.1 G +(board macro de\214ned in a format suitable for the).15 E/F2 10 +/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 +(Miscellaneous)87 285.6 Q -.18(re)108 297.6 S.18 E (ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 -(Read in the contents of the)144 393.6 R/F2 10/Times-Italic@0 SF(inputr) -4.277 E(c)-.37 E F0 1.776(\214le, and incorporate an)4.276 F 4.276(yb) --.15 G 1.776(indings or v)-4.276 F 1.776(ariable assignments)-.25 F -(found there.)144 405.6 Q F1(abort \(C\255g\))108 417.6 Q F0 3.248 -(Abort the current editing command and ring the terminal')144 429.6 R +(Read in the contents of the)144 309.6 R F2(inputr)4.277 E(c)-.37 E F0 +1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776 +(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144 +321.6 Q F1(abort \(C\255g\))108 333.6 Q F0 3.248 +(Abort the current editing command and ring the terminal')144 345.6 R 5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 -(bell\255style)144 441.6 Q F0(\).)A F1(do\255upper)108 453.6 Q +(bell\255style)144 357.6 Q F0(\).)A F1(do\255upper)108 369.6 Q (case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 465.6 R F2(x) +C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 381.6 R F2(x) 4.256 E F0 1.755(is lo)4.256 F 1.755 (wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 477.6 Q(.)-.55 E F1(pr)108 489.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 501.6 Q +(uppercase character)144 393.6 Q(.)-.55 E F1(pr)108 405.6 Q +(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 417.6 Q (xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0 (is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1 -(undo \(C\255_, C\255x C\255u\))108 513.6 Q F0 -(Incremental undo, separately remembered for each line.)144 525.6 Q F1 --2.29 -.18(re v)108 537.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 549.6 R 1.095(This is lik)6.095 +(undo \(C\255_, C\255x C\255u\))108 429.6 Q F0 +(Incremental undo, separately remembered for each line.)144 441.6 Q F1 +-2.29 -.18(re v)108 453.6 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 465.6 R 1.095(This is lik)6.095 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E F0 1.095(command enough times to)3.595 F -(return the line to its initial state.)144 561.6 Q F1 -(tilde\255expand \(M\255&\))108 573.6 Q F0(Perform tilde e)144 585.6 Q +(return the line to its initial state.)144 477.6 Q F1 +(tilde\255expand \(M\255&\))108 489.6 Q F0(Perform tilde e)144 501.6 Q (xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 597.6 Q F0 -(Set the mark to the point.)144 609.6 Q(If a numeric ar)5 E +(set\255mark \(C\255@, M\255\))108 513.6 Q F0 +(Set the mark to the point.)144 525.6 Q(If a numeric ar)5 E (gument is supplied, the mark is set to that position.)-.18 E F1 -(exchange\255point\255and\255mark \(C\255x C\255x\))108 621.6 Q F0(Sw) -144 633.6 Q .283(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 537.6 Q F0(Sw) +144 549.6 Q .283(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G 2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) -144 645.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 -(character\255sear)108 657.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 -669.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G +144 561.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 +(character\255sear)108 573.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 +585.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G 3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 (xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05 (ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 681.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 693.6 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 705.6 S 1.044 +144 597.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 609.6 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 621.6 S 1.044 (haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 (vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 717.6 Q(GNU Bash-4.2)72 -768 Q(2010 December 28)135.965 E(44)185.955 E 0 Cg EP -%%Page: 45 45 +(count searches for subsequent occurrences.)144 633.6 Q F1 +(skip\255csi\255sequence)108 645.6 Q F0 1.826 +(Read enough characters to consume a multi-k)144 657.6 R 2.126 -.15 +(ey s)-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey) +-.1 G 4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 669.6 R +.791(Such sequences be)5.791 F .791 +(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F +.331(If this sequence is bound to "\\[", k)144 681.6 R -.15(ey)-.1 G +2.831(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15 +(ve n)-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F +(xplic-)-.15 E .026(itly bound to a readline command, instead of insert\ +ing stray characters into the editing b)144 693.6 R(uf)-.2 E(fer)-.25 E +5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 705.6 Q(ault, b)-.1 E +(ut usually bound to ESC\255[.)-.2 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(46)190.95 E 0 Cg EP +%%Page: 47 47 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(skip\255csi\255sequence)108 84 Q F0 1.826 -(Read enough characters to consume a multi-k)144 96 R 2.126 -.15(ey s) --.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G -4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 108 R .791 -(Such sequences be)5.791 F .791 -(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.331(If this sequence is bound to "\\[", k)144 120 R -.15(ey)-.1 G 2.831 -(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n) --.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-) --.15 E .026(itly bound to a readline command, instead of inserting stra\ -y characters into the editing b)144 132 R(uf)-.2 E(fer)-.25 E 5.026(.T) --.55 G(his)-5.026 E(is unbound by def)144 144 Q(ault, b)-.1 E -(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -156 Q F0 -.4(Wi)144 168 S .48(thout a numeric ar).4 F .48(gument, the v) --.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 --.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 180 Q .098 +-.35 E/F1 10/Times-Bold@0 SF(insert\255comment \(M\255#\))108 84 Q F0 +-.4(Wi)144 96 S .48(thout a numeric ar).4 F .48(gument, the v)-.18 F +.481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va) +2.981 G .481(riable is inserted at the).25 F(be)144 108 Q .098 (ginning of the current line.)-.15 F .098(If a numeric ar)5.098 F .097 (gument is supplied, this command acts as a toggle:)-.18 F(if)5.097 E -.321(the characters at the be)144 192 R .321 +.321(the characters at the be)144 120 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 (comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) --.25 F .832(inserted, otherwise the characters in)144 204 R F1 +-.25 F .832(inserted, otherwise the characters in)144 132 R F1 (comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 (ginning of the line.)-.15 F 1.468 -(In either case, the line is accepted as if a ne)144 216 R 1.468 +(In either case, the line is accepted as if a ne)144 144 R 1.468 (wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F -1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 228 Q F0 .84 +1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 156 Q F0 .84 (causes this command to mak)3.34 F 3.339(et)-.1 G .839 (he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F -(gu-)-.18 E(ment causes the comment character to be remo)144 240 Q -.15 +(gu-)-.18 E(ment causes the comment character to be remo)144 168 Q -.15 (ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G -(cuted by the shell.).15 E F1(glob\255complete\255w)108 252 Q -(ord \(M\255g\))-.1 E F0 .791(The w)144 264 R .791 +(cuted by the shell.).15 E F1(glob\255complete\255w)108 180 Q +(ord \(M\255g\))-.1 E F0 .791(The w)144 192 R .791 (ord before point is treated as a pattern for pathname e)-.1 F .792 -(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 276 -R(pattern is used to generate a list of matching \214le names for possi\ -ble completions.)2.5 E F1(glob\255expand\255w)108 288 Q -(ord \(C\255x *\))-.1 E F0 .372(The w)144 300 R .372 -(ord before point is treated as a pattern for pathname e)-.1 F .371 -(xpansion, and the list of matching \214le)-.15 F .516 -(names is inserted, replacing the w)144 312 R 3.016(ord. If)-.1 F 3.016 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 204 +R(pattern is used to generate a list of matching \214lenames for possib\ +le completions.)2.5 E F1(glob\255expand\255w)108 216 Q(ord \(C\255x *\)) +-.1 E F0 .176(The w)144 228 R .176 +(ord before point is treated as a pattern for pathname e)-.1 F .176 +(xpansion, and the list of matching \214le-)-.15 F .516 +(names is inserted, replacing the w)144 240 R 3.016(ord. If)-.1 F 3.016 (an)3.016 G .516(umeric ar)-3.016 F .516 (gument is supplied, an asterisk is appended)-.18 F(before pathname e) -144 324 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 336 Q F0 .923(The list of e)144 348 R .923(xpansions that w)-.15 F +144 252 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 264 Q F0 .923(The list of e)144 276 R .923(xpansions that w)-.15 F .923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1 (glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F -.872(the line is redra)144 360 R 3.372(wn. If)-.15 F 3.372(an)3.372 G +.872(the line is redra)144 288 R 3.372(wn. If)-.15 F 3.372(an)3.372 G .872(umeric ar)-3.372 F .872 (gument is supplied, an asterisk is appended before pathname)-.18 F -.15 -(ex)144 372 S(pansion.).15 E F1(dump\255functions)108 384 Q F0 .627 -(Print all of the functions and their k)144 396 R .927 -.15(ey b)-.1 H +(ex)144 300 S(pansion.).15 E F1(dump\255functions)108 312 Q F0 .627 +(Print all of the functions and their k)144 324 R .927 -.15(ey b)-.1 H .626(indings to the readline output stream.).15 F .626(If a numeric ar) 5.626 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 408 Q +(ment is supplied, the output is formatted in such a w)144 336 Q (ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) -2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 420 Q(ariables)-.1 E F0 -1.799(Print all of the settable readline v)144 432 R 1.799 +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 348 Q(ariables)-.1 E F0 +1.799(Print all of the settable readline v)144 360 R 1.799 (ariables and their v)-.25 F 1.8(alues to the readline output stream.) --.25 F 1.8(If a)6.8 F .305(numeric ar)144 444 R .304 +-.25 F 1.8(If a)6.8 F .305(numeric ar)144 372 R .304 (gument is supplied, the output is formatted in such a w)-.18 F .304 -(ay that it can be made part of an)-.1 F F2(inputr)144 456 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 468 Q(os)-.18 E F0 .592 -(Print all of the readline k)144 480 R .892 -.15(ey s)-.1 H .592 +(ay that it can be made part of an)-.1 F F2(inputr)144 384 Q(c)-.37 E F0 +(\214le.)2.5 E F1(dump\255macr)108 396 Q(os)-.18 E F0 .592 +(Print all of the readline k)144 408 R .892 -.15(ey s)-.1 H .592 (equences bound to macros and the strings the).15 F 3.093(yo)-.15 G -3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 492 Q +3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 420 Q .528(gument is supplied, the output is formatted in such a w)-.18 F .528 (ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 -(\214le.)144 504 Q F1(display\255shell\255v)108 516 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 528 Q +(\214le.)144 432 Q F1(display\255shell\255v)108 444 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 456 Q (ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 544.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 -556.8 R .147(ord completion is attempted for an ar)-.1 F .147 +F0(.)A F1(Pr)87 472.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 +484.8 R .147(ord completion is attempted for an ar)-.1 F .147 (gument to a command for which a completion speci\214cation \(a)-.18 F -F2(compspec)108 568.8 Q F0 3.829(\)h)C 1.329 +F2(compspec)108 496.8 Q F0 3.829(\)h)C 1.329 (as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) --.25 F(programmable completion f)108 580.8 Q(acilities are in)-.1 E -.2 +-.25 F(programmable completion f)108 508.8 Q(acilities are in)-.1 E -.2 (vo)-.4 G -.1(ke).2 G(d.).1 E .497 -(First, the command name is identi\214ed.)108 597.6 R .497 +(First, the command name is identi\214ed.)108 525.6 R .497 (If the command w)5.497 F .498 (ord is the empty string \(completion attempted at)-.1 F .234(the be)108 -609.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +537.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 (ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) 2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-) 5.233 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 621.6 R .823 -(for the w)108 633.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F +used to generate the list of possible completions)108 549.6 R .823 +(for the w)108 561.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F .822(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.866(\214rst. If)108 645.6 R .367(no compspec is found fo\ +ed for)-.1 F 2.866(\214rst. If)108 573.6 R .367(no compspec is found fo\ r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.866 F(follo)108 657.6 Q .299(wing the \214nal slash.)-.25 F .298 +rtion)2.866 F(follo)108 585.6 Q .299(wing the \214nal slash.)-.25 F .298 (If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0(option to) -108 669.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E +108 597.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E .817(Once a compspec has been found, it is used to generate the list of\ - matching w)108 686.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(found, the def)108 698.4 Q(ault)-.1 E F1(bash) + matching w)108 614.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 +(ompspec is not)-3.317 F(found, the def)108 626.4 Q(ault)-.1 E F1(bash) 2.5 E F0(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .464 -(First, the actions speci\214ed by the compspec are used.)108 715.2 R +(First, the actions speci\214ed by the compspec are used.)108 643.2 R .463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F -.463(ord being)-.1 F .595(completed are returned.)108 727.2 R .595 +.463(ord being)-.1 F .595(completed are returned.)108 655.2 R .595 (When the)5.595 F F13.095 E F0(or)3.095 E F13.095 E F0 .596 (option is used for \214lename or directory name completion, the)3.095 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(45)185.955 E 0 Cg EP -%%Page: 46 46 +(shell v)108 667.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 +(is used to \214lter the matches.)2.25 E(An)108 684 Q 4.084(yc)-.15 G +1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 +(xpansion pattern to the)-.15 F F14.084 E F0 1.584 +(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 696 S +.554(rds generated by the pattern need not match the w).1 F .555 +(ord being completed.)-.1 F(The)5.555 E F3(GLOBIGNORE)3.055 E F0 .555 +(shell v)2.805 F(ari-)-.25 E +(able is not used to \214lter the matches, b)108 708 Q(ut the)-.2 E F3 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 724.8 Q +.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 +F F12.821 E F0 .32(option is considered.)2.821 F .32 +(The string is \214rst split using the)5.32 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(47)190.95 E 0 Cg EP +%%Page: 48 48 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(shell v)108 84 Q(ariable)-.25 E/F1 9/Times-Bold@0 SF(FIGNORE)2.5 -E F0(is used to \214lter the matches.)2.25 E(An)108 100.8 Q 4.084(yc) --.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 -(xpansion pattern to the)-.15 F/F2 10/Times-Bold@0 SF4.084 E F0 -1.584(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 -112.8 S .554(rds generated by the pattern need not match the w).1 F .555 -(ord being completed.)-.1 F(The)5.555 E F1(GLOBIGNORE)3.055 E F0 .555 -(shell v)2.805 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 124.8 Q(ut the)-.2 E F1 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 141.6 Q -.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 -F F22.821 E F0 .32(option is considered.)2.821 F .32 -(The string is \214rst split using the)5.32 F .412(characters in the)108 -153.6 R F1(IFS)2.912 E F0 .412(special v)2.662 F .412 -(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F -.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 -(using brace e)108 165.6 R .092(xpansion, tilde e)-.15 F .092 -(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091 -(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 -177.6 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H -(nder).15 E F1(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 -1.396(The results are split using the rules described)5.896 F(abo)108 -189.6 Q .51 -.15(ve u)-.15 H(nder).15 E F2 -.75(Wo)2.71 G .21 +-.35 E .412(characters in the)108 84 R/F1 9/Times-Bold@0 SF(IFS)2.912 E +F0 .412(special v)2.662 F .412(ariable as delimiters.)-.25 F .412 +(Shell quoting is honored.)5.412 F .413(Each w)5.412 F .413 +(ord is then e)-.1 F(xpanded)-.15 E .092(using brace e)108 96 R .092 +(xpansion, tilde e)-.15 F .092(xpansion, parameter and v)-.15 F .092 +(ariable e)-.25 F .091(xpansion, command substitution, and arith-)-.15 F +1.396(metic e)108 108 R 1.396(xpansion, as described abo)-.15 F 1.696 +-.15(ve u)-.15 H(nder).15 E F1(EXP)3.896 E(ANSION)-.666 E/F2 9 +/Times-Roman@0 SF(.)A F0 1.396 +(The results are split using the rules described)5.896 F(abo)108 120 Q +.51 -.15(ve u)-.15 H(nder).15 E/F3 10/Times-Bold@0 SF -.75(Wo)2.71 G .21 (rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 (xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 -(ord being com-)-.1 F(pleted, and the matching w)108 201.6 Q +(ord being com-)-.1 F(pleted, and the matching w)108 132 Q (ords become the possible completions.)-.1 E 1.237 -(After these matches ha)108 218.4 R 1.537 -.15(ve b)-.2 H 1.237 +(After these matches ha)108 148.8 R 1.537 -.15(ve b)-.2 H 1.237 (een generated, an).15 F 3.737(ys)-.15 G 1.238 -(hell function or command speci\214ed with the)-3.737 F F23.738 E -F0(and)3.738 E F23.738 E F0 3.376(options is in)108 230.4 R -.2 +(hell function or command speci\214ed with the)-3.737 F F33.738 E +F0(and)3.738 E F33.738 E F0 3.376(options is in)108 160.8 R -.2 (vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 (the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 -(d, the).1 F F1(COMP_LINE)5.875 E F3(,)A F1(COMP_POINT)5.625 E F3(,)A F1 -(COMP_KEY)108 242.4 Q F3(,)A F0(and)2.407 E F1(COMP_TYPE)2.657 E F0 -.25 +(d, the).1 F F1(COMP_LINE)5.875 E F2(,)A F1(COMP_POINT)5.625 E F2(,)A F1 +(COMP_KEY)108 172.8 Q F2(,)A F0(and)2.407 E F1(COMP_TYPE)2.657 E F0 -.25 (va)2.407 G .157(riables are assigned v).25 F .157 -(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F2 .158 +(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F3 .158 (Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108 -254.4 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G +184.8 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G .986(d, the).1 F F1(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F1 (COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 -(riables are also set.).25 F(When)5.985 E .608 -(the function or command is in)108 266.4 R -.2(vo)-.4 G -.1(ke).2 G .608 -(d, the \214rst ar).1 F .608(gument is the name of the command whose ar) --.18 F .609(guments are)-.18 F .073(being completed, the second ar)108 -278.4 R .073(gument is the w)-.18 F .073 -(ord being completed, and the third ar)-.1 F .073(gument is the w)-.18 F -.072(ord pre-)-.1 F .607(ceding the w)108 290.4 R .607 -(ord being completed on the current command line.)-.1 F .608 -(No \214ltering of the generated completions)5.607 F(ag)108 302.4 Q .094 -(ainst the w)-.05 F .093(ord being completed is performed; the function\ - or command has complete freedom in generat-)-.1 F(ing the matches.)108 -314.4 Q(An)108 331.2 Q 2.937(yf)-.15 G .437(unction speci\214ed with) --2.937 F F22.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G -2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F -2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .438 -(acilities, including)-.1 F(the)108 343.2 Q F2(compgen)2.957 E F0 -.2 -(bu)2.957 G .457(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956 -(og).65 G .456(enerate the matches.)-2.956 F .456 +(riables are also set.).25 F(When)5.985 E .346 +(the function or command is in)108 196.8 R -.2(vo)-.4 G -.1(ke).2 G .346 +(d, the \214rst ar).1 F .346(gument \()-.18 F F3($1)A F0 2.847(\)i)C +2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments) +-.18 E .264(are being completed, the second ar)108 208.8 R .264 +(gument \()-.18 F F3($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w) +-2.764 F .263(ord being completed, and the third ar)-.1 F .263 +(gument \()-.18 F F3($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 220.8 +R .628(ord preceding the w)-.1 F .629 +(ord being completed on the current command line.)-.1 F .629 +(No \214ltering of the generated)5.629 F .715(completions ag)108 232.8 R +.715(ainst the w)-.05 F .714(ord being completed is performed; the func\ +tion or command has complete free-)-.1 F(dom in generating the matches.) +108 244.8 Q(An)108 261.6 Q 2.937(yf)-.15 G .437 +(unction speci\214ed with)-2.937 F F32.937 E F0 .437(is in)2.937 F +-.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437 +(function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437 +(he shell f)-2.937 F .438(acilities, including)-.1 F(the)108 273.6 Q F3 +(compgen)2.957 E F0 -.2(bu)2.957 G .457(iltin described belo).2 F 1.756 +-.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .456 (It must put the possible completions in the)5.456 F F1(COMPREPL)108 -355.2 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E(Ne)108 372 Q .08 -(xt, an)-.15 F 2.58(yc)-.15 G .08(ommand speci\214ed with the)-2.58 F F2 -2.58 E F0 .081(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581 -(di).1 G 2.581(na)-2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081 -(ironment equi).4 F -.25(va)-.25 G .081(lent to command sub-).25 F 2.859 -(stitution. It)108 384 R .359(should print a list of completions, one p\ -er line, to the standard output.)2.859 F .358(Backslash may be used) -5.359 F(to escape a ne)108 396 Q(wline, if necessary)-.25 E(.)-.65 E -.376(After all of the possible completions are generated, an)108 412.8 R -2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F22.877 -E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 424.8 R +285.6 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 +E(Ne)108 302.4 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 +(ommand speci\214ed with the)-2.58 F F32.58 E F0 .081 +(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na) +-2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25 +(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 314.4 +R .359(should print a list of completions, one per line, to the standar\ +d output.)2.859 F .358(Backslash may be used)5.359 F(to escape a ne)108 +326.4 Q(wline, if necessary)-.25 E(.)-.65 E .376 +(After all of the possible completions are generated, an)108 343.2 R +2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F32.877 +E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 355.2 R .682(\214lter is a pattern as used for pathname e)3.182 F .681 -(xpansion; a)-.15 F F2(&)3.181 E F0 .681 +(xpansion; a)-.15 F F3(&)3.181 E F0 .681 (in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522 -(the w)108 436.8 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G -(iteral)-3.022 E F2(&)3.022 E F0 .523 +(the w)108 367.2 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G +(iteral)-3.022 E F3(&)3.022 E F0 .523 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 448.8 R +-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 379.2 R (An)5.85 E 3.35(yc)-.15 G .849 (ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G 3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading) --3.349 E F2(!)3.349 E F0(ne)108 460.8 Q -.05(ga)-.15 G +-3.349 E F3(!)3.349 E F0(ne)108 391.2 Q -.05(ga)-.15 G (tes the pattern; in this case an).05 E 2.5(yc)-.15 G (ompletion not matching the pattern will be remo)-2.5 E -.15(ve)-.15 G -(d.).15 E(Finally)108 477.6 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H -.586(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F2 -3.087 E F0(and)3.087 E F23.087 E F0 .587 +(d.).15 E(Finally)108 408 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586 +(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F3 +3.087 E F0(and)3.087 E F33.087 E F0 .587 (options are added to each member of the com-)3.087 F(pletion list, and\ the result is returned to the readline completion code as the list of \ -possible completions.)108 489.6 Q .247(If the pre)108 506.4 R .247 +possible completions.)108 420 Q .247(If the pre)108 436.8 R .247 (viously-applied actions do not generate an)-.25 F 2.747(ym)-.15 G .247 -(atches, and the)-2.747 F F2 .247(\255o dir)2.747 F(names)-.15 E F0 .247 -(option w)2.747 F .246(as supplied to)-.1 F F2(complete)108 518.4 Q F0 +(atches, and the)-2.747 F F3 .247(\255o dir)2.747 F(names)-.15 E F0 .247 +(option w)2.747 F .246(as supplied to)-.1 F F3(complete)108 448.8 Q F0 (when the compspec w)2.5 E (as de\214ned, directory name completion is attempted.)-.1 E .461 -(If the)108 535.2 R F2 .462(\255o plusdirs)2.961 F F0 .462(option w) -2.962 F .462(as supplied to)-.1 F F2(complete)2.962 E F0 .462 +(If the)108 465.6 R F3 .462(\255o plusdirs)2.961 F F0 .462(option w) +2.962 F .462(as supplied to)-.1 F F3(complete)2.962 E F0 .462 (when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 -F(pletion is attempted and an)108 547.2 Q 2.5(ym)-.15 G +F(pletion is attempted and an)108 477.6 Q 2.5(ym)-.15 G (atches are added to the results of the other actions.)-2.5 E .56 -(By def)108 564 R .56(ault, if a compspec is found, whate)-.1 F -.15(ve) --.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559 +(By def)108 494.4 R .56(ault, if a compspec is found, whate)-.1 F -.15 +(ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559 (enerates is returned to the completion code as the full set)-3.06 F -.631(of possible completions.)108 576 R .631(The def)5.631 F(ault)-.1 E -F2(bash)3.131 E F0 .631 +.631(of possible completions.)108 506.4 R .631(The def)5.631 F(ault)-.1 +E F3(bash)3.131 E F0 .631 (completions are not attempted, and the readline def)3.131 F .632 -(ault of \214le-)-.1 F .559(name completion is disabled.)108 588 R .559 -(If the)5.559 F F2 .559(\255o bashdefault)3.059 F F0 .559(option w)3.059 -F .559(as supplied to)-.1 F F2(complete)3.058 E F0 .558 -(when the compspec)3.058 F -.1(wa)108 600 S 3.171(sd).1 G .671 -(e\214ned, the)-3.171 F F2(bash)3.171 E F0(def)3.171 E .671 +(ault of \214le-)-.1 F .559(name completion is disabled.)108 518.4 R +.559(If the)5.559 F F3 .559(\255o bashdefault)3.059 F F0 .559(option w) +3.059 F .559(as supplied to)-.1 F F3(complete)3.058 E F0 .558 +(when the compspec)3.058 F -.1(wa)108 530.4 S 3.171(sd).1 G .671 +(e\214ned, the)-3.171 F F3(bash)3.171 E F0(def)3.171 E .671 (ault completions are attempted if the compspec generates no matches.) --.1 F .672(If the)5.672 F F23.172 E(default)108 612 Q F0 1.207 -(option w)3.707 F 1.207(as supplied to)-.1 F F2(complete)3.707 E F0 +-.1 F .672(If the)5.672 F F33.172 E(default)108 542.4 Q F0 1.207 +(option w)3.707 F 1.207(as supplied to)-.1 F F3(complete)3.707 E F0 1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F 3.707(sd)-.55 G(ef)-3.707 E 1.206(ault completion)-.1 F -(will be performed if the compspec \(and, if attempted, the def)108 624 -Q(ault)-.1 E F2(bash)2.5 E F0(completions\) generate no matches.)2.5 E -.245(When a compspec indicates that directory name completion is desire\ -d, the programmable completion func-)108 640.8 R .633(tions force readl\ -ine to append a slash to completed names which are symbolic links to di\ -rectories, subject)108 652.8 R 2.761(to the v)108 664.8 R 2.761 -(alue of the)-.25 F F2(mark\255dir)5.261 E(ectories)-.18 E F0 2.761 +(will be performed if the compspec \(and, if attempted, the def)108 +554.4 Q(ault)-.1 E F3(bash)2.5 E F0(completions\) generate no matches.) +2.5 E .245(When a compspec indicates that directory name completion is \ +desired, the programmable completion func-)108 571.2 R .633(tions force\ + readline to append a slash to completed names which are symbolic links\ + to directories, subject)108 583.2 R 2.761(to the v)108 595.2 R 2.761 +(alue of the)-.25 F F3(mark\255dir)5.261 E(ectories)-.18 E F0 2.761 (readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762 -(rdless of the setting of the).05 F F2(mark-sym-)5.262 E(link)108 676.8 +(rdless of the setting of the).05 F F3(mark-sym-)5.262 E(link)108 607.2 Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E .191(There is some support for dynamically modifying completions.)108 -693.6 R .19(This is most useful when used in combina-)5.191 F 1.33 -(tion with a def)108 705.6 R 1.33(ault completion speci\214ed with)-.1 F -F2 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83(sp)-.55 G 1.33 +624 R .19(This is most useful when used in combina-)5.191 F 1.33 +(tion with a def)108 636 R 1.33(ault completion speci\214ed with)-.1 F +F3 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83(sp)-.55 G 1.33 (ossible for shell functions e)-3.83 F -.15(xe)-.15 G 1.33(cuted as).15 F .93(completion handlers to indicate that completion should be retried\ - by returning an e)108 717.6 R .93(xit status of 124.)-.15 F .93(If a) -5.93 F .1(shell function returns 124, and changes the compspec associat\ -ed with the command on which completion is)108 729.6 R(GNU Bash-4.2)72 -768 Q(2010 December 28)135.965 E(46)185.955 E 0 Cg EP -%%Page: 47 47 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .666(being attempted \(supplied as the \214rst ar)108 84 R .665 + by returning an e)108 648 R .93(xit status of 124.)-.15 F .93(If a)5.93 +F .1(shell function returns 124, and changes the compspec associated wi\ +th the command on which completion is)108 660 R .666 +(being attempted \(supplied as the \214rst ar)108 672 R .665 (gument when the function is e)-.18 F -.15(xe)-.15 G .665 -(cuted\), programmable completion).15 F .083(restarts from the be)108 96 -R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 G -.084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084 -(ws a set of)-.25 F(completions to be b)108 108 Q(uilt dynamically as c\ +(cuted\), programmable completion).15 F .083(restarts from the be)108 +684 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 +G .084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084 +(ws a set of)-.25 F(completions to be b)108 696 Q(uilt dynamically as c\ ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 -(Fo)108 124.8 S 2.637(ri).15 G .137 +(Fo)108 712.8 S 2.637(ri).15 G .137 (nstance, assuming that there is a library of compspecs, each k)-2.637 F .137(ept in a \214le corresponding to the name of)-.1 F -(the command, the follo)108 136.8 Q(wing def)-.25 E +(the command, the follo)108 724.8 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E/F1 10/Courier@0 SF(_completion_loader\(\))108 153.6 Q({)108 165.6 Q 6 -(.")144 177.6 S +E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(48)190.95 E 0 Cg EP +%%Page: 49 49 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Courier@0 SF(_completion_loader\(\))108 84 Q({)108 96 Q 6 +(.")144 108 S (/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -189.6 Q(complete -D -F _completion_loader)108 201.6 Q/F2 10.95 -/Times-Bold@0 SF(HIST)72 230.4 Q(OR)-.197 E(Y)-.383 E F0 .371(When the) -108 242.4 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871 F F0 .371 -(option to the)2.871 F F3(set)2.872 E F0 -.2(bu)2.872 G .372 +120 Q(complete -D -F _completion_loader -o bashdefault -o default)108 +132 Q/F2 10.95/Times-Bold@0 SF(HIST)72 160.8 Q(OR)-.197 E(Y)-.383 E F0 +.371(When the)108 172.8 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871 +F F0 .371(option to the)2.871 F F3(set)2.872 E F0 -.2(bu)2.872 G .372 (iltin is enabled, the shell pro).2 F .372(vides access to the)-.15 F/F4 10/Times-Italic@0 SF .372(command history)2.872 F F0(,)A .305 -(the list of commands pre)108 254.4 R .305(viously typed.)-.25 F .305 +(the list of commands pre)108 184.8 R .305(viously typed.)-.25 F .305 (The v)5.305 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) 2.804 E F0 -.25(va)2.554 G .304(riable is used as the number of com-).25 -F .429(mands to sa)108 266.4 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429 +F .429(mands to sa)108 196.8 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429 (istory list.)-2.929 F .429(The te)5.429 F .429(xt of the last)-.15 F F5 (HISTSIZE)2.93 E F0 .43(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F -.15(ve)-.2 G 2.93(d. The).15 F(shell)2.93 E .287 (stores each command in the history list prior to parameter and v)108 -278.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E -(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 290.4 +208.8 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 220.8 S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 (xpansion is performed, subject to the v)-.15 F 1.565 (alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 -(and)3.816 E F5(HISTCONTR)108 302.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) +(and)3.816 E F5(HISTCONTR)108 232.8 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) A F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 319.2 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 +108 249.6 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 -331.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 +261.6 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 (is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G -.315(ontain no more than the number of)-2.815 F .532 -(lines speci\214ed by the v)108 343.2 R .532(alue of)-.25 F F5 -(HISTFILESIZE)3.032 E F6(.)A F0 .532 -(When the history \214le is read, lines be)5.032 F .532 -(ginning with the his-)-.15 F 1.158(tory comment character follo)108 -355.2 R 1.159(wed immediately by a digit are interpreted as timestamps \ -for the preceding)-.25 F .053(history line.)108 367.2 R .053 -(These timestamps are optionally displayed depending on the v)5.053 F -.052(alue of the)-.25 F F5(HISTTIMEFORMA)2.552 E(T)-.855 E F0 -.25(va) -108 379.2 S 4.386(riable. When).25 F 1.886(an interacti)4.386 F 2.187 --.15(ve s)-.25 H 1.887(hell e).15 F 1.887(xits, the last)-.15 F F5 -($HISTSIZE)4.387 E F0 1.887(lines are copied from the history list to) -4.137 F F5($HISTFILE)108 391.2 Q F6(.)A F0 .056(If the)4.556 F F3 -(histappend)2.556 E F0 .056 -(shell option is enabled \(see the description of)2.556 F F3(shopt)2.556 -E F0(under)2.556 E F5 .056(SHELL B)2.556 F(UIL)-.09 E(TIN)-.828 E -(COMMANDS)108 403.2 Q F0(belo)2.671 E .422(w\), the lines are appended \ -to the history \214le, otherwise the history \214le is o)-.25 F -.15(ve) --.15 G 2.922(rwritten. If).15 F F5(HISTFILE)108 415.2 Q F0 .435(is unse\ -t, or if the history \214le is unwritable, the history is not sa)2.685 F --.15(ve)-.2 G 2.934(d. If).15 F(the)2.934 E F5(HISTTIMEFORMA)2.934 E(T) --.855 E F0 -.25(va)108 427.2 S .916 +.315(ontain no more than the number of)-2.815 F .659 +(lines speci\214ed by the v)108 273.6 R .659(alue of)-.25 F F5 +(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F3(HISTFILESIZE)3.158 E F0 +.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 285.6 S +.142(lue, or a numeric v).25 F .142 +(alue less than zero, the history \214le is not truncated.)-.25 F .142 +(When the history \214le is read, lines)5.142 F(be)108 297.6 Q 1.605 +(ginning with the history comment character follo)-.15 F 1.604 +(wed immediately by a digit are interpreted as time-)-.25 F .098 +(stamps for the preceding history line.)108 309.6 R .098 +(These timestamps are optionally displayed depending on the v)5.098 F +.098(alue of)-.25 F(the)108 321.6 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E +F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 +($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158 +(copied from the history list to)108 333.6 R F5($HISTFILE)2.658 E F6(.)A +F0 .158(If the)4.658 F F3(histappend)2.658 E F0 .159 +(shell option is enabled \(see the description of)2.659 F F3(shopt)108 +345.6 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082 +(TIN COMMANDS)-.828 F F0(belo)2.332 E .082 +(w\), the lines are appended to the history \214le, otherwise the)-.25 F +.196(history \214le is o)108 357.6 R -.15(ve)-.15 G 2.696(rwritten. If) +.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\ + unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584 +(If the)108 369.6 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834 +G .584 (riable is set, time stamps are written to the history \214le, mark).25 -F .917(ed with the history comment character)-.1 F 3.417(,s)-.4 G(o) --3.417 E(the)108 439.2 Q 3.083(ym)-.15 G .583(ay be preserv)-3.083 F -.583(ed across shell sessions.)-.15 F .582 -(This uses the history comment character to distinguish time-)5.583 F -.986(stamps from other history lines.)108 451.2 R .986(After sa)5.986 F -.986(ving the history)-.2 F 3.486(,t)-.65 G .987 -(he history \214le is truncated to contain no more)-3.486 F(than)108 -463.2 Q F5(HISTFILESIZE)2.5 E F0 2.5(lines. If)2.25 F F5(HISTFILESIZE) -2.5 E F0(is not set, no truncation is performed.)2.25 E 1.294(The b)108 -480 R 1.294(uiltin command)-.2 F F3(fc)3.794 E F0(\(see)3.794 E F5 1.293 -(SHELL B)3.794 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F F0(belo)3.543 E -1.293(w\) may be used to list or edit and re-)-.25 F -.15(exe)108 492 S -.673(cute a portion of the history list.).15 F(The)5.673 E F3(history) -3.173 E F0 -.2(bu)3.173 G .673 +F .583(ed with the his-)-.1 F 1.147(tory comment character)108 381.6 R +3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147 +(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148 +(This uses the history comment)6.148 F 1.377 +(character to distinguish timestamps from other history lines.)108 393.6 +R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G +1.376(he history \214le is)-3.876 F .756 +(truncated to contain no more than)108 405.6 R F5(HISTFILESIZE)3.257 E +F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 +(is unset, or set to null, a non-)3.007 F(numeric v)108 417.6 Q +(alue, or a numeric v)-.25 E +(alue less than zero, the history \214le is not truncated.)-.25 E 1.294 +(The b)108 434.4 R 1.294(uiltin command)-.2 F F3(fc)3.794 E F0(\(see) +3.794 E F5 1.293(SHELL B)3.794 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F +F0(belo)3.543 E 1.293(w\) may be used to list or edit and re-)-.25 F +-.15(exe)108 446.4 S .673(cute a portion of the history list.).15 F(The) +5.673 E F3(history)3.173 E F0 -.2(bu)3.173 G .673 (iltin may be used to display or modify the history list).2 F .28 -(and manipulate the history \214le.)108 504 R .279 +(and manipulate the history \214le.)108 458.4 R .279 (When using command-line editing, search commands are a)5.279 F -.25(va) --.2 G .279(ilable in each).25 F(editing mode that pro)108 516 Q -(vide access to the history list.)-.15 E 1.485(The shell allo)108 532.8 +-.2 G .279(ilable in each).25 F(editing mode that pro)108 470.4 Q +(vide access to the history list.)-.15 E 1.485(The shell allo)108 487.2 R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 (hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) -3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F5(HISTCONTR)3.986 -E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 544.8 Q F0 -.25(va)2.708 G +E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 499.2 Q F0 -.25(va)2.708 G .458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o) -.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F3 -(cmdhist)108 556.8 Q F0 .75 +(cmdhist)108 511.2 Q F0 .75 (shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 -.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 -(the same history entry)108 568.8 R 3.577(,a)-.65 G 1.077 +(the same history entry)108 523.2 R 3.577(,a)-.65 G 1.077 (dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G 1.077(yntactic correctness.)-3.577 F(The)6.077 E F3(lithist)3.576 E F0 -.373(shell option causes the shell to sa)108 580.8 R .674 -.15(ve t)-.2 +.373(shell option causes the shell to sa)108 535.2 R .674 -.15(ve t)-.2 H .374(he command with embedded ne).15 F .374 (wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319 -(description of the)108 592.8 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318 +(description of the)108 547.2 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318 (iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F (UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318 (for information on setting and)2.568 F(unsetting shell options.)108 -604.8 Q F2(HIST)72 621.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E -(ANSION)-.81 E F0 .61(The shell supports a history e)108 633.6 R .611 +559.2 Q F2(HIST)72 576 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION) +-.81 E F0 .61(The shell supports a history e)108 588 R .611 (xpansion feature that is similar to the history e)-.15 F .611 (xpansion in)-.15 F F3(csh.)3.111 E F0 .611(This section)5.611 F .871 -(describes what syntax features are a)108 645.6 R -.25(va)-.2 G 3.371 +(describes what syntax features are a)108 600 R -.25(va)-.2 G 3.371 (ilable. This).25 F .871(feature is enabled by def)3.371 F .87 (ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F -2.013(can be disabled using the)108 657.6 R F3(+H)4.514 E F0 2.014 +2.013(can be disabled using the)108 612 R F3(+H)4.514 E F0 2.014 (option to the)4.514 F F3(set)4.514 E F0 -.2(bu)4.514 G 2.014 (iltin command \(see).2 F F5 2.014(SHELL B)4.514 F(UIL)-.09 E 2.014 -(TIN COMMANDS)-.828 F F0(belo)108 669.6 Q 2.5(w\). Non-interacti)-.25 F -.3 -.15(ve s)-.25 H(hells do not perform history e).15 E -(xpansion by def)-.15 E(ault.)-.1 E 1.306(History e)108 686.4 R 1.306 +(TIN COMMANDS)-.828 F F0(belo)108 624 Q 2.5(w\). Non-interacti)-.25 F .3 +-.15(ve s)-.25 H(hells do not perform history e).15 E(xpansion by def) +-.15 E(ault.)-.1 E 1.306(History e)108 640.8 R 1.306 (xpansions introduce w)-.15 F 1.306(ords from the history list into the\ input stream, making it easy to repeat)-.1 F .209 -(commands, insert the ar)108 698.4 R .209(guments to a pre)-.18 F .21 +(commands, insert the ar)108 652.8 R .209(guments to a pre)-.18 F .21 (vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 710.4 Q(.)-.65 E 1.164(History e)108 -727.2 R 1.163(xpansion is performed immediately after a complete line i\ -s read, before the shell breaks it into)-.15 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(47)185.955 E 0 Cg EP -%%Page: 48 48 +F(vious)-.25 E(commands quickly)108 664.8 Q(.)-.65 E 1.164(History e)108 +681.6 R 1.163(xpansion is performed immediately after a complete line i\ +s read, before the shell breaks it into)-.15 F -.1(wo)108 693.6 S 3.2 +(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 +(arts. The)-3.2 F .7 +(\214rst is to determine which line from the history list to use during) +3.2 F 4.368(substitution. The)108 705.6 R 1.868(second is to select por\ +tions of that line for inclusion into the current one.)4.368 F 1.867 +(The line)6.867 F .662(selected from the history is the)108 717.6 R F4 +-.15(ev)3.162 G(ent).15 E F0 3.162(,a)C .663 +(nd the portions of that line that are acted upon are)-3.162 F F4(wor) +3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F4(modi\214er)108 729.6 +Q(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 +(ilable to manipulate the selected w).25 F 2.727(ords. The)-.1 F .226 +(line is brok)2.726 F .226(en into w)-.1 F .226(ords in the same f)-.1 F +(ashion)-.1 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(49)190.95 E +0 Cg EP +%%Page: 50 50 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E -.1(wo)108 84 S 3.2(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 -F 3.2(op)-.1 G 3.2(arts. The)-3.2 F .7 -(\214rst is to determine which line from the history list to use during) -3.2 F 4.368(substitution. The)108 96 R 1.868(second is to select portio\ -ns of that line for inclusion into the current one.)4.368 F 1.867 -(The line)6.867 F .662(selected from the history is the)108 108 R/F1 10 -/Times-Italic@0 SF -.15(ev)3.162 G(ent).15 E F0 3.162(,a)C .663 -(nd the portions of that line that are acted upon are)-3.162 F F1(wor) -3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F1(modi\214er)108 120 Q -(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 -(ilable to manipulate the selected w).25 F 2.727(ords. The)-.1 F .226 -(line is brok)2.726 F .226(en into w)-.1 F .226(ords in the same f)-.1 F -(ashion)-.1 E .351(as when reading input, so that se)108 132 R -.15(ve) --.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .352 -(-separated w)B .352(ords surrounded by quotes are considered)-.1 F .625 -(one w)108 144 R 3.125(ord. History)-.1 F -.15(ex)3.125 G .624 +-.35 E .351(as when reading input, so that se)108 84 R -.15(ve)-.25 G +(ral).15 E/F1 10/Times-Italic@0 SF(metac)2.852 E(har)-.15 E(acter)-.15 E +F0 .352(-separated w)B .352(ords surrounded by quotes are considered)-.1 +F .625(one w)108 96 R 3.125(ord. History)-.1 F -.15(ex)3.125 G .624 (pansions are introduced by the appearance of the history e).15 F .624 -(xpansion character)-.15 F 3.124(,w)-.4 G(hich)-3.124 E(is)108 156 Q/F2 +(xpansion character)-.15 F 3.124(,w)-.4 G(hich)-3.124 E(is)108 108 Q/F2 10/Times-Bold@0 SF(!)3.333 E F0(by def)3.333 E 2.5(ault. Only)-.1 F (backslash \()2.5 E F2(\\).833 E F0 2.5(\)a).833 G (nd single quotes can quote the history e)-2.5 E(xpansion character)-.15 -E(.)-.55 E(Se)108 172.8 Q -.15(ve)-.25 G .03 +E(.)-.55 E(Se)108 124.8 Q -.15(ve)-.25 G .03 (ral characters inhibit history e).15 F .03 (xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 -F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 184.8 T +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 136.8 T 3.163(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G .662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) -.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2 (extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.162 E -F0(will also inhibit e)108 196.8 Q(xpansion.)-.15 E(Se)108 213.6 Q -.15 +F0(will also inhibit e)108 148.8 Q(xpansion.)-.15 E(Se)108 165.6 Q -.15 (ve)-.25 G .109(ral shell options settable with the).15 F F2(shopt)2.609 E F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 -(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 225.6 R F2 +(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 177.6 R F2 (histv)3.643 E(erify)-.1 E F0 1.143 (shell option is enabled \(see the description of the)3.643 F F2(shopt) 3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2 -.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\ -stitutions are not immediately passed to the shell parser)108 237.6 R +stitutions are not immediately passed to the shell parser)108 189.6 R 5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F -1.516(is reloaded into the)108 249.6 R F2 -.18(re)4.016 G(adline).18 E +1.516(is reloaded into the)108 201.6 R F2 -.18(re)4.016 G(adline).18 E F0 1.516(editing b)4.016 F(uf)-.2 E 1.516 (fer for further modi\214cation.)-.25 F(If)6.516 E F2 -.18(re)4.015 G -(adline).18 E F0 1.515(is being used, and the)4.015 F F2(histr)108 261.6 +(adline).18 E F0 1.515(is being used, and the)4.015 F F2(histr)108 213.6 Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202 (ailed history substitution will be reloaded into the)-.1 F F2 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 273.6 S -.25(ff).2 G +3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 225.6 S -.25(ff).2 G 1.161(er for correction.).25 F(The)6.161 E F23.661 E F0 1.161 (option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16 -(iltin command may be used to see what a history).2 F -.15(ex)108 285.6 +(iltin command may be used to see what a history).2 F -.15(ex)108 237.6 S .055(pansion will do before using it.).15 F(The)5.055 E F22.555 E F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G .056(iltin may be used to add commands to the).2 F -(end of the history list without actually e)108 297.6 Q -.15(xe)-.15 G +(end of the history list without actually e)108 249.6 Q -.15(xe)-.15 G (cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G -(ilable for subsequent recall.).25 E 2.2(The shell allo)108 314.4 R 2.2 +(ilable for subsequent recall.).25 E 2.2(The shell allo)108 266.4 R 2.2 (ws control of the v)-.25 F 2.2(arious characters used by the history e) -.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108 -326.4 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) +278.4 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) .15 E F2 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 (shell uses the history comment character to)3.646 F -(mark history timestamps when writing the history \214le.)108 338.4 Q F2 -(Ev)87 355.2 Q(ent Designators)-.1 E F0 .205(An e)108 367.2 R -.15(ve) +(mark history timestamps when writing the history \214le.)108 290.4 Q F2 +(Ev)87 307.2 Q(ent Designators)-.1 E F0 .205(An e)108 319.2 R -.15(ve) -.25 G .204(nt designator is a reference to a command line entry in the\ history list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e) -108 379.2 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 -(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 396 Q +108 331.2 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 +(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 348 Q F0 1.607(Start a history substitution, e)32.67 F 1.607(xcept when follo) -.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107(,n)C -.25(ew) --4.107 G 1.608(line, carriage return, = or \().25 F(\(when the)144 408 Q +-4.107 G 1.608(line, carriage return, = or \().25 F(\(when the)144 360 Q F2(extglob)2.5 E F0(shell option is enabled using the)2.5 E F2(shopt)2.5 -E F0 -.2(bu)2.5 G(iltin\).).2 E F2(!)108 420 Q F1(n)A F0 -(Refer to command line)27.67 E F1(n)2.5 E F0(.).24 E F2<21ad>108 432 Q +E F0 -.2(bu)2.5 G(iltin\).).2 E F2(!)108 372 Q F1(n)A F0 +(Refer to command line)27.67 E F1(n)2.5 E F0(.).24 E F2<21ad>108 384 Q F1(n)A F0(Refer to the current command minus)21.97 E F1(n)2.5 E F0(.).24 -E F2(!!)108 444 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 456 Q F1(string)A +E F2(!!)108 396 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E +(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 408 Q F1(string)A F0 .865(Refer to the most recent command preceding the current position\ - in the history list starting with)9.33 F F1(string)144 468 Q F0(.).22 E -F2(!?)108 480 Q F1(string)A F2([?])A F0 1.304(Refer to the most recent \ -command preceding the current postition in the history list containing) -144 492 R F1(string)144 504 Q F0 5(.T).22 G(he trailing)-5 E F2(?)2.5 E + in the history list starting with)9.33 F F1(string)144 420 Q F0(.).22 E +F2(!?)108 432 Q F1(string)A F2([?])A F0 1.503(Refer to the most recent \ +command preceding the current position in the history list containing) +144 444 R F1(string)144 456 Q F0 5(.T).22 G(he trailing)-5 E F2(?)2.5 E F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo)2.72 E (wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 SF(^) -108 521 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 .784 -(Quick substitution.)144 528 R .784(Repeat the pre)5.784 F .784 +108 473 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 .784 +(Quick substitution.)144 480 R .784(Repeat the pre)5.784 F .784 (vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.283 E F1 (string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783 -(lent to).25 F -.74(``)144 540 S(!!:s/).74 E F1(string1)A F0(/)A F1 +(lent to).25 F -.74(``)144 492 S(!!:s/).74 E F1(string1)A F0(/)A F1 (string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F2(!#)108 552 Q F0 +(belo)2.5 E(w\).)-.25 E F2(!#)108 504 Q F0 (The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75 -(Wo)87 568.8 S(rd Designators).75 E F0 -.8(Wo)108 580.8 S 1.313 +(Wo)87 520.8 S(rd Designators).75 E F0 -.8(Wo)108 532.8 S 1.313 (rd designators are used to select desired w).8 F 1.314(ords from the e) -.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314 (separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F -.53(from the w)108 592.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G +.53(from the w)108 544.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 (ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 ($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F23.029 E F0 3.029(,o)C(r) -3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 -(are numbered from the be)108 604.8 R 1.3 +(are numbered from the be)108 556.8 R 1.3 (ginning of the line, with the \214rst w)-.15 F 1.301 (ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 -F(inserted into the current line separated by single spaces.)108 616.8 Q -F2 2.5(0\()108 633.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 645.6 Q +F(inserted into the current line separated by single spaces.)108 568.8 Q +F2 2.5(0\()108 585.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 597.6 Q 2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E -F1(n)108.36 657.6 Q F0(The)30.64 E F1(n)2.5 E F0(th w)A(ord.)-.1 E F2(^) -108 669.6 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 -E(ord 1.)-.1 E F2($)108 681.6 Q F0(The last ar)31 E(gument.)-.18 E F2(%) -108 693.6 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F1 -(string)A F0(?' search.)A F1(x)108.77 705.6 Q F2A F1(y)A F0 2.5(Ar) +F1(n)108.36 609.6 Q F0(The)30.64 E F1(n)2.5 E F0(th w)A(ord.)-.1 E F2(^) +108 621.6 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 +E(ord 1.)-.1 E F2($)108 633.6 Q F0 .064(The last w)31 F 2.564(ord. This) +-.1 F .064(is usually the last ar)2.564 F .064(gument, b)-.18 F .064 +(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F .063 +(ord if there is only)-.1 F(one w)144 645.6 Q(ord in the line.)-.1 E F2 +(%)108 657.6 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F1 +(string)A F0(?' search.)A F1(x)108.77 669.6 Q F2A F1(y)A F0 2.5(Ar) 20.65 G(ange of w)-2.5 E(ords; `\255)-.1 E F1(y)A F0 2.5('a)C(bbre)-2.5 -E(viates `0\255)-.25 E F1(y)A F0('.)A F2(*)108 717.6 Q F0 .316 -(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315 +E(viates `0\255)-.25 E F1(y)A F0('.)A F2(*)108 681.6 Q F0 .315 +(All of the w)31 F .315(ords b)-.1 F .315(ut the zeroth.)-.2 F .315 (This is a synon)5.315 F .315(ym for `)-.15 F F1(1\255$)A F0 2.815 -('. It)B .315(is not an error to use)2.815 F F2(*)2.815 E F0 .315 -(if there is)2.815 F(just one w)144 729.6 Q(ord in the e)-.1 E -.15(ve) --.25 G(nt; the empty string is returned in that case.).15 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(48)185.955 E 0 Cg EP -%%Page: 49 49 +('. It)B .315(is not an error to use)2.815 F F2(*)2.816 E F0 .316 +(if there is)2.816 F(just one w)144 693.6 Q(ord in the e)-.1 E -.15(ve) +-.25 G(nt; the empty string is returned in that case.).15 E F2(x*)108 +705.6 Q F0(Abbre)26 E(viates)-.25 E F1(x\255$)2.5 E F0(.)A F2<78ad>108 +717.6 Q F0(Abbre)25.3 E(viates)-.25 E F1(x\255$)2.5 E F0(lik)2.5 E(e)-.1 +E F2(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(50)190.95 E 0 Cg EP +%%Page: 51 51 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(x*)108 84 Q F0(Abbre)26 E(viates)-.25 E/F2 -10/Times-Italic@0 SF(x\255$)2.5 E F0(.)A F1<78ad>108 96 Q F0(Abbre)25.3 -E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5 -(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108 112.8 Q -(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G -(nt speci\214cation, the pre).15 E(vious command is used as the e)-.25 E --.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 129.6 Q F0 .183 -(After the optional w)108 141.6 R .183(ord designator)-.1 F 2.683(,t)-.4 -G .184(here may appear a sequence of one or more of the follo)-2.683 F -.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 153.6 Q F1(h) -108 170.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H -(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1 -(t)108 182.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H -(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r) -108 194.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E -(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 206.4 Q F0(Remo)31.56 E .3 -.15(ve a) --.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 218.4 -Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2 -E -.15(xe)-.15 G(cute it.).15 E F1(q)108 230.4 Q F0 +-.35 E(If a w)108 84 Q(ord designator is supplied without an e)-.1 E +-.15(ve)-.25 G(nt speci\214cation, the pre).15 E +(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E/F1 10 +/Times-Bold@0 SF(Modi\214ers)87 100.8 Q F0 .184(After the optional w)108 +112.8 R .184(ord designator)-.1 F 2.684(,t)-.4 G .183 +(here may appear a sequence of one or more of the follo)-2.684 F .183 +(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 124.8 Q F1(h)108 +141.6 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H +(railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) +108 153.6 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H +(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) +108 165.6 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E +(\214x of the form)-.25 E/F2 10/Times-Italic@0 SF(.xxx)2.5 E F0 2.5(,l)C +(ea)-2.5 E(ving the basename.)-.2 E F1(e)108 177.6 Q F0(Remo)31.56 E .3 +-.15(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1 +(p)108 189.6 Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E +(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 201.6 Q F0 (Quote the substituted w)30.44 E(ords, escaping further substitutions.) --.1 E F1(x)108 242.4 Q F0(Quote the substituted w)31 E(ords as with)-.1 +-.1 E F1(x)108 213.6 Q F0(Quote the substituted w)31 E(ords as with)-.1 E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks) -2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 254.4 Q F2(old)A F1(/)A -F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 266.4 Q F2(ne)3.082 E(w)-.15 E -F0 .221(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221 +2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 225.6 Q F2(old)A F1(/)A +F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 237.6 Q F2(ne)3.081 E(w)-.15 E +F0 .221(for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221 (in the e)3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721 -(yd)-.15 G .221(elimiter can be used in place)-2.721 F .616(of /.)144 -278.4 R .617 +(yd)-.15 G .221(elimiter can be used in place)-2.721 F .617(of /.)144 +249.6 R .617 (The \214nal delimiter is optional if it is the last character of the e) -5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617 -F .666(be quoted in)144 290.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) +5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 +F .666(be quoted in)144 261.6 R F2(old)3.396 E F0(and)3.936 E F2(ne) 3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E -F0 5.666(.A).77 G .274(single backslash will quote the &.)144 302.4 R -(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 -F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775 -(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E -(ous history substitutions took place, the last)144 314.4 Q F2(string) +F0 5.666(.A).77 G .275(single backslash will quote the &.)144 273.6 R +(If)5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 +F F2(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774 +(fn)-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E +(ous history substitutions took place, the last)144 285.6 Q F2(string) 2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 -(&)108 326.4 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1 -(g)108 338.4 Q F0 .398(Cause changes to be applied o)31 F -.15(ve)-.15 G -2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.) -.15 F .397(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897 -('\()C(e.g.,)-2.897 E(`)144 350.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) --.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218 -(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219 -(elimiter can be used in place of /, and the \214nal)-3.718 F .09 -(delimiter is optional if it is the last character of the e)144 362.4 R --.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089 -(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 374.4 Q F0 -(.)A F1(G)108 386.4 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 -2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 -G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 403.2 Q(UIL)-.11 E -(TIN COMMANDS)-1.007 E F0 .062(Unless otherwise noted, each b)108 415.2 +(&)108 297.6 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1 +(g)108 309.6 Q F0 .397(Cause changes to be applied o)31 F -.15(ve)-.15 G +2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.) +.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898 +('\()C(e.g.,)-2.898 E(`)144 321.6 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) +-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219 +(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218 +(elimiter can be used in place of /, and the \214nal)-3.718 F .089 +(delimiter is optional if it is the last character of the e)144 333.6 R +-.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 +(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 345.6 Q F0(.)A +F1(G)108 357.6 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 2.5 +('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G +(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 374.4 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 386.4 R .062(uiltin command documented in this section as accepting options p\ -receded by)-.2 F F1108 427.2 Q F0(accepts)2.534 E F12.534 E F0 -.034(to signify the end of the options.)2.534 F(The)5.034 E F1(:)2.534 E +receded by)-.2 F F1108 398.4 Q F0(accepts)2.533 E F12.533 E F0 +.034(to signify the end of the options.)2.533 F(The)5.034 E F1(:)2.534 E F0(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F1(test)2.534 E F0 -.2(bu)2.534 G .033(iltins do not accept options and) -.2 F .077(do not treat)108 439.2 R F12.577 E F0(specially)2.577 E +F1(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) +.2 F .078(do not treat)108 410.4 R F12.577 E F0(specially)2.577 E 5.077(.T)-.65 G(he)-5.077 E F1(exit)2.577 E F0(,)A F1(logout)2.577 E F0 (,)A F1(br)2.577 E(eak)-.18 E F0(,)A F1(continue)2.577 E F0(,)A F1(let) 2.577 E F0 2.577(,a)C(nd)-2.577 E F1(shift)2.577 E F0 -.2(bu)2.577 G -.077(iltins accept and process ar).2 F(gu-)-.18 E .32(ments be)108 451.2 -R .32(ginning with)-.15 F F12.82 E F0 .32(without requiring)2.82 F -F12.82 E F0 5.319(.O)C .319(ther b)-5.319 F .319 -(uiltins that accept ar)-.2 F .319(guments b)-.18 F .319 -(ut are not speci\214ed as)-.2 F 1.143(accepting options interpret ar) -108 463.2 R 1.143(guments be)-.18 F 1.143(ginning with)-.15 F F1 +.077(iltins accept and process ar).2 F(gu-)-.18 E .319(ments be)108 +422.4 R .319(ginning with)-.15 F F12.819 E F0 .319 +(without requiring)2.819 F F12.819 E F0 5.319(.O)C .319(ther b) +-5.319 F .319(uiltins that accept ar)-.2 F .32(guments b)-.18 F .32 +(ut are not speci\214ed as)-.2 F 1.144(accepting options interpret ar) +108 434.4 R 1.144(guments be)-.18 F 1.144(ginning with)-.15 F F1 3.643 E F0 1.143(as in)3.643 F -.25(va)-.4 G 1.143 -(lid options and require).25 F F13.644 E F0 1.144(to pre)3.644 F --.15(ve)-.25 G 1.144(nt this).15 F(interpretation.)108 475.2 Q F1(:)108 -493.2 Q F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .452(No ef)144 505.2 R -.452(fect; the command does nothing be)-.25 F .452(yond e)-.15 F -(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an) -3.221 F 2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. A)144 -517.2 R(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 534 Q F2 +(lid options and require).25 F F13.643 E F0 1.143(to pre)3.643 F +-.15(ve)-.25 G 1.143(nt this).15 F(interpretation.)108 446.4 Q F1(:)108 +464.4 Q F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .451(No ef)144 476.4 R +.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F +(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an) +3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. A)144 +488.4 R(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 505.2 Q F2 (\214lename)6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 -546 Q(ce)-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0 -(])A 1.02(Read and e)144 558 R -.15(xe)-.15 G 1.02(cute commands from) -.15 F F2(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 -(vironment and return the e)-.4 F(xit)-.15 E 1.68 -(status of the last command e)144 570 R -.15(xe)-.15 G 1.68(cuted from) -.15 F F2(\214lename)4.18 E F0 6.68(.I).18 G(f)-6.68 E F2(\214lename)6.09 -E F0 1.68(does not contain a slash, \214le)4.36 F .608(names in)144 582 -R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 .608 +517.2 Q(ce)-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E +F0(])A 1.02(Read and e)144 529.2 R -.15(xe)-.15 G 1.02 +(cute commands from).15 F F2(\214lename)5.43 E F0 1.02 +(in the current shell en)3.7 F 1.02(vironment and return the e)-.4 F +(xit)-.15 E 1.458(status of the last command e)144 541.2 R -.15(xe)-.15 +G 1.458(cuted from).15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f) +-6.458 E F2(\214lename)5.868 E F0 1.458 +(does not contain a slash, \214le-)4.138 F .608(names in)144 553.2 R/F4 +9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 .608 (are used to \214nd the directory containing)2.858 F F2(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 -.666(PA) -3.108 G(TH)-.189 E F0 .833(need not be e)144 594 R -.15(xe)-.15 G 3.333 -(cutable. When).15 F F1(bash)3.333 E F0 .832(is not in)3.333 F F2 .832 -(posix mode)3.332 F F0 3.332(,t)C .832 -(he current directory is searched if no)-3.332 F .981 -(\214le is found in)144 606 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 +3.108 G(TH)-.189 E F0 .832(need not be e)144 565.2 R -.15(xe)-.15 G +3.332(cutable. When).15 F F1(bash)3.332 E F0 .832(is not in)3.332 F F2 +.832(posix mode)3.332 F F0 3.332(,t)C .833 +(he current directory is searched if no)-3.332 F .982 +(\214le is found in)144 577.2 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 /Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 -(iltin command is turned of).2 F .982(f, the)-.25 F F4 -.666(PA)144 618 -S(TH)-.189 E F0 .112(is not searched.)2.363 F .112(If an)5.112 F(y)-.15 -E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F 2.612 -(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2 -(\214lename)144 630 Q F0 .341(is e)2.841 F -.15(xe)-.15 G 2.841 -(cuted. Otherwise).15 F .341(the positional parameters are unchanged.) -2.841 F .342(The return status is the)5.342 F .716 -(status of the last command e)144 642 R .716 +(iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144 +589.2 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F +(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F +2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2 +(\214lename)144 601.2 Q F0 .342(is e)2.842 F -.15(xe)-.15 G 2.842 +(cuted. Otherwise).15 F .342(the positional parameters are unchanged.) +2.842 F .341(The return status is the)5.341 F .716 +(status of the last command e)144 613.2 R .716 (xited within the script \(0 if no commands are e)-.15 F -.15(xe)-.15 G -.716(cuted\), and f).15 F .715(alse if)-.1 F F2(\214lename)145.91 654 Q -F0(is not found or cannot be read.)2.68 E F1(alias)108 670.8 Q F0([)2.5 +.716(cuted\), and f).15 F .716(alse if)-.1 F F2(\214lename)145.91 625.2 +Q F0(is not found or cannot be read.)2.68 E F1(alias)108 642 Q F0([)2.5 E F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E F1(Alias)144 682.8 Q F0 2.724(with no ar)5.224 F 2.724 +(..])-2.5 E F1(Alias)144 654 Q F0 2.725(with no ar)5.225 F 2.724 (guments or with the)-.18 F F15.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E -F2(name)144 694.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F +(option prints the list of aliases in the form)5.224 F F1(alias)5.224 E +F2(name)144 666 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F .58(When ar)5.58 F .58 (guments are supplied, an alias is de\214ned for each)-.18 F F2(name) -3.08 E F0(whose)144 706.8 Q F2(value)2.895 E F0 .395(is gi)2.895 F -.15 +3.08 E F0(whose)144 678 Q F2(value)2.895 E F0 .395(is gi)2.895 F -.15 (ve)-.25 G 2.895(n. A).15 F .395(trailing space in)2.895 F F2(value) 5.395 E F0 .395(causes the ne)2.895 F .395(xt w)-.15 F .395 (ord to be check)-.1 F .395(ed for alias sub-)-.1 F .054 -(stitution when the alias is e)144 718.8 R 2.554(xpanded. F)-.15 F .054 +(stitution when the alias is e)144 690 R 2.554(xpanded. F)-.15 F .054 (or each)-.15 F F2(name)2.554 E F0 .054(in the ar)2.554 F .054 -(gument list for which no)-.18 F F2(value)2.554 E F0 .053(is sup-)2.553 -F 1.313(plied, the name and v)144 730.8 R 1.314 +(gument list for which no)-.18 F F2(value)2.554 E F0 .054(is sup-)2.554 +F 1.314(plied, the name and v)144 702 R 1.314 (alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F --.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(49)185.955 E 0 Cg EP -%%Page: 50 50 +(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F +-.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E +(which no alias has been de\214ned.)144 714 Q(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(51)190.95 E 0 Cg EP +%%Page: 52 52 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(which no alias has been de\214ned.)144 84 Q/F1 10/Times-Bold@0 SF -(bg)108 100.8 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(jobspec)A F0(...])2.5 -E .745(Resume each suspended job)144 112.8 R F2(jobspec)3.245 E F0 .745 -(in the background, as if it had been started with)3.245 F F1(&)3.244 E -F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 124.8 Q F0 .671 -(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) --3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 -(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 -(when job control is disabled or)144 136.8 R 2.919(,w)-.4 G .419 -(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G -(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G -(ot)-2.918 E(found or w)144 148.8 Q(as started without job control.)-.1 -E F1(bind)108 165.6 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F1(\255lpsvPSV)-2.5 E F0(])A F1(bind)108 177.6 Q F0([)2.5 E F1 +-.35 E/F1 10/Times-Bold@0 SF(bg)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 +SF(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 96 R F2 +(jobspec)3.244 E F0 .745 +(in the background, as if it had been started with)3.244 F F1(&)3.245 E +F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 108 Q F0 .672 +(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) +-3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 +(when job control is disabled or)144 120 R 2.919(,w)-.4 G .419 +(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G +(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G +(ot)-2.919 E(found or w)144 132 Q(as started without job control.)-.1 E +F1(bind)108 148.8 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 160.8 Q F0([)2.5 E F1 A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1-2.5 E F2 (function)2.5 E F0 2.5(][)C F1-2.5 E F2(function)2.5 E F0 2.5(][)C -F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 189.6 Q F0 +F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 172.8 Q F0 ([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 -(\214lename)2.5 E F1(bind)108 201.6 Q F0([)2.5 E F1A F2 -.1(ke)2.5 +(\214lename)2.5 E F1(bind)108 184.8 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(shell\255command)A F1(bind)108 213.6 Q F0([)2.5 E F1A F2 -.1(ke) +(shell\255command)A F1(bind)108 196.8 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(function\255name)A F1(bind)108 225.6 Q F2 -.37(re)2.5 G -(adline\255command).37 E F0 .238(Display current)144 237.6 R F1 -.18(re) -2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 -(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 -(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or) -2.739 F .476(macro, or set a)144 249.6 R F1 -.18(re)2.976 G(adline).18 E -F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F -.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2 -(.inputr)144 261.6 Q(c)-.37 E F0 2.983(,b).31 G .484 -(ut each binding or command must be passed as a separate ar)-3.183 F -.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 -(re\255read\255init\255\214le'. Options,)144 273.6 R(if supplied, ha)2.5 +(function\255name)A F1(bind)108 208.8 Q F2 -.37(re)2.5 G +(adline\255command).37 E F0 .239(Display current)144 220.8 R F1 -.18(re) +2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239 +(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238 +(equence to a).15 F F1 -.18(re)2.738 G(adline).18 E F0 .238(function or) +2.738 F .475(macro, or set a)144 232.8 R F1 -.18(re)2.975 G(adline).18 E +F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F +.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 +(.inputr)144 244.8 Q(c)-.37 E F0 2.984(,b).31 G .484 +(ut each binding or command must be passed as a separate ar)-3.184 F +.483(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 256.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 -285.6 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 297.6 Q F2 -.1(ke)5.159 G -(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E -F2 -.1(ke)180 309.6 S(ymap)-.2 E F0 3.192(names are)5.882 F F2 3.192 -(emacs, emacs\255standar)5.692 F 3.193 +268.8 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 280.8 Q F2 -.1(ke)5.158 G +(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) +.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E +F2 -.1(ke)180 292.8 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 +(emacs, emacs\255standar)5.693 F 3.192 (d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 321.6 Q F0 4.43(,a)C(nd)-4.43 E F2(vi\255insert)4.429 -E F0(.).68 E F2(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.929 -(lent to).25 F F2(vi\255command)4.429 E F0(;)A F2(emacs)4.429 E F0 1.929 -(is equi)4.429 F -.25(va)-.25 G 1.929(lent to).25 F F2(emacs\255standar) -180 333.6 Q(d)-.37 E F0(.)A F1144 345.6 Q F0 +(vi\255command)180 304.8 Q F0 4.429(,a)C(nd)-4.429 E F2(vi\255insert) +4.429 E F0(.).68 E F2(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G +1.929(lent to).25 F F2(vi\255command)4.429 E F0(;)A F2(emacs)4.429 E F0 +1.929(is equi)4.429 F -.25(va)-.25 G 1.93(lent to).25 F F2 +(emacs\255standar)180 316.8 Q(d)-.37 E F0(.)A F1144 328.8 Q F0 (List the names of all)27.52 E F1 -.18(re)2.5 G(adline).18 E F0 -(functions.)2.5 E F1144 357.6 Q F0(Display)24.74 E F1 -.18(re)2.5 +(functions.)2.5 E F1144 340.8 Q F0(Display)24.74 E F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E -(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 369.6 +(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 352.8 Q F0(List current)24.19 E F1 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings.)2.5 E F1144 381.6 Q F0(Display)26.41 +(function names and bindings.)2.5 E F1144 364.8 Q F0(Display)26.41 E F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) --.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 393.6 S 2.5(yt).1 G -(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 405.6 Q +-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 376.8 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 388.8 Q F0(Display)24.74 E F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys) -.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G -(utput.)-2.5 E F1144 417.6 Q F0(Display)25.3 E F1 -.18(re)2.5 G +(utput.)-2.5 E F1144 400.8 Q F0(Display)25.3 E F1 -.18(re)2.5 G (adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E (alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G -(an be re-read.)-2.5 E F1144 429.6 Q F0(List current)23.08 E F1 +(an be re-read.)-2.5 E F1144 412.8 Q F0(List current)23.08 E F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues.)-.25 E F1144 441.6 Q F2(\214lename)2.5 E F0(Read k)180 -453.6 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A -F1144 465.6 Q F2(function)2.5 E F0(Query about which k)180 477.6 Q +(alues.)-.25 E F1144 424.8 Q F2(\214lename)2.5 E F0(Read k)180 +436.8 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A +F1144 448.8 Q F2(function)2.5 E F0(Query about which k)180 460.8 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H -(he named).1 E F2(function)2.5 E F0(.)A F1144 489.6 Q F2(function) -2.5 E F0(Unbind all k)180 501.6 Q -.15(ey)-.1 G 2.5(sb).15 G -(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 513.6 Q -F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 525.6 Q .3 -.15(ve a)-.15 H .3 +(he named).1 E F2(function)2.5 E F0(.)A F1144 472.8 Q F2(function) +2.5 E F0(Unbind all k)180 484.8 Q -.15(ey)-.1 G 2.5(sb).15 G +(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 496.8 Q +F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 508.8 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0 -(.)A F1144 537.6 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 -(shell\255command)A F0(Cause)180 549.6 Q F2(shell\255command)4.325 E F0 +(.)A F1144 520.8 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 +(shell\255command)A F0(Cause)180 532.8 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) -.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F -(When)6.825 E F2(shell\255com-)4.325 E(mand)180 561.6 Q F0 1.764(is e) -4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 544.8 Q F0 1.765(is e) +4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 /Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 -(riable to the contents of the).25 F F1 -.18(re)180 573.6 S(adline).18 E -F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3 +(riable to the contents of the).25 F F1 -.18(re)180 556.8 S(adline).18 E +F0 1.353(line b)3.852 F(uf)-.2 E 1.353(fer and the)-.25 F F3 (READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 -(riable to the current location of the).25 F 2.011(insertion point.)180 -585.6 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 +(riable to the current location of the).25 F 2.012(insertion point.)180 +568.8 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 (cuted command changes the v).15 F 2.011(alue of)-.25 F F3 -(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 597.6 Q/F4 9 +(READLINE_LINE)4.511 E F0(or)4.261 E F3(READLINE_POINT)180 580.8 Q/F4 9 /Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G -(alues will be re\215ected in the editing state.)-2.75 E(The return v) -144 614.4 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +(alues will be re\215ected in the editing state.)-2.75 E F1144 +592.8 Q F0 .829(List all k)23.08 F 1.129 -.15(ey s)-.1 H .829 +(equences bound to shell commands and the associated commands in a for) +.15 F(-)-.2 E(mat that can be reused as input.)180 604.8 Q(The return v) +144 621.6 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 631.2 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 -(Exit from within a)144 643.2 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1 +E F1(br)108 638.4 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 +(Exit from within a)144 650.4 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1 (while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 (select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 (is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G (ls.).15 E F2(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 -E F0(1.)2.554 E(If)144 655.2 Q F2(n)3.074 E F0 .215(is greater than the\ +E F0(1.)2.554 E(If)144 662.4 Q F2(n)3.074 E F0 .215(is greater than the\ number of enclosing loops, all enclosing loops are e)2.954 F 2.715 (xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144 -667.2 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 684 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E F2 -(ar)A(guments)-.37 E F0(])A(Ex)144 696 Q .793 +674.4 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 691.2 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E +F2(ar)A(guments)-.37 E F0(])A(Ex)144 703.2 Q .793 (ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F2 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 -(when de\214ning a function whose name is the same as a shell b)144 708 -R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 720 R -.57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 -.2(bu) -3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E 5.57(.T) --.65 G .57(he return status)-5.57 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(50)185.955 E 0 Cg EP -%%Page: 51 51 +(when de\214ning a function whose name is the same as a shell b)144 +715.2 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 +727.2 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +-.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E +5.57(.T)-.65 G .57(he return status)-5.57 F(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(52)190.95 E 0 Cg EP +%%Page: 53 53 %%BeginPageSetup BP %%EndPageSetup @@ -6020,2367 +6359,2556 @@ ent e)144 148.8 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) (cuting a subroutine call or).15 F F1 -.2(ex)3.019 G(pr).2 E F0 .519 (does not corre-)3.019 F(spond to a v)144 184.8 Q (alid position in the call stack.)-.25 E F2(cd)108 201.6 Q F0([)2.5 E F2 -A F0(|[)A F2A F0([)2.5 E F2A F0(]]] [)A F1(dir)A F0(]) -A .21(Change the current directory to)144 213.6 R F1(dir)2.71 E F0 5.21 -(.T)C .21(he v)-5.21 F(ariable)-.25 E/F3 9/Times-Bold@0 SF(HOME)2.71 E -F0 .21(is the def)2.46 F(ault)-.1 E F1(dir)2.71 E F0 5.21(.T).73 G .21 -(he v)-5.21 F(ariable)-.25 E F3(CDP)2.71 E -.855(AT)-.666 G(H).855 E F0 -.777(de\214nes the search path for the directory containing)144 225.6 R -F1(dir)3.276 E F0 5.776(.A).73 G(lternati)-5.776 E 1.076 -.15(ve d)-.25 -H .776(irectory names in).15 F F3(CDP)3.276 E -.855(AT)-.666 G(H).855 E -F0 .764(are separated by a colon \(:\).)144 237.6 R 3.264(An)5.764 G -.764(ull directory name in)-3.264 F F3(CDP)3.264 E -.855(AT)-.666 G(H) -.855 E F0 .764(is the same as the current direc-)3.014 F(tory)144 249.6 -Q 2.974(,i)-.65 G .474(.e., `)-2.974 F(`)-.74 E F2(.)A F0 -.74('')C -5.474(.I).74 G(f)-5.474 E F1(dir)3.324 E F0(be)3.704 E .474 -(gins with a slash \(/\), then)-.15 F F3(CDP)2.974 E -.855(AT)-.666 G(H) -.855 E F0 .473(is not used. The)2.724 F F22.973 E F0 .473 -(option says to use)2.973 F .579(the ph)144 261.6 R .579 -(ysical directory structure instead of follo)-.05 F .579 -(wing symbolic links \(see also the)-.25 F F23.08 E F0 .58 -(option to the)3.08 F F2(set)144 273.6 Q F0 -.2(bu)2.717 G .217 -(iltin command\); the).2 F F22.717 E F0 .217 -(option forces symbolic links to be follo)2.717 F 2.716(wed. If)-.25 F -(the)2.716 E F22.716 E F0 .216(option is sup-)2.716 F 1.086 -(plied with)144 285.6 R F23.586 E F0 3.586(,a)C 1.086 -(nd the current w)-3.586 F 1.087 -(orking directory cannot be successfully determined after a suc-)-.1 F -.44(cessful directory change,)144 297.6 R F2(cd)2.94 E F0 .44 -(will return an unsuccessful status.)2.94 F .44(An ar)5.44 F .44 -(gument of)-.18 F F22.94 E F0 .44(is equi)2.94 F -.25(va)-.25 G .44 -(lent to).25 F F3($OLDPWD)144 309.6 Q/F4 9/Times-Roman@0 SF(.)A F0 1.044 -(If a non-empty directory name from)5.544 F F3(CDP)3.544 E -.855(AT) --.666 G(H).855 E F0 1.045(is used, or if)3.295 F F23.545 E F0 1.045 -(is the \214rst ar)3.545 F(gument,)-.18 E .021(and the directory change\ - is successful, the absolute pathname of the ne)144 321.6 R 2.521(ww) --.25 G .021(orking directory is writ-)-2.621 F .165 -(ten to the standard output.)144 333.6 R .165(The return v)5.165 F .165 -(alue is true if the directory w)-.25 F .165(as successfully changed; f) --.1 F(alse)-.1 E(otherwise.)144 345.6 Q F2(command)108 362.4 Q F0([)2.5 -E F2(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E F1(ar)A(g)-.37 E F0 -(...])2.5 E(Run)144 374.4 Q F1(command)2.957 E F0(with)3.527 E F1(ar) -3.087 E(gs)-.37 E F0 .257 +A F0(|[)A F2A F0([)2.5 E F2A F0(]] [\255@]] [)A F1 +(dir)A F0(])A .321(Change the current directory to)144 213.6 R F1(dir) +2.821 E F0 5.321(.i)C(f)-5.321 E F1(dir)2.821 E F0 .322 +(is not supplied, the v)2.821 F .322(alue of the)-.25 F/F3 9 +/Times-Bold@0 SF(HOME)2.822 E F0 .322(shell v)2.572 F .322(ariable is) +-.25 F 1.036(the def)144 225.6 R 3.536(ault. An)-.1 F 3.536(ya)-.15 G +1.035(dditional ar)-3.536 F 1.035(guments follo)-.18 F(wing)-.25 E F1 +(dir)3.535 E F0 1.035(are ignored.)3.535 F 1.035(The v)6.035 F(ariable) +-.25 E F3(CDP)3.535 E -.855(AT)-.666 G(H).855 E F0(de\214nes)3.285 E +.849(the search path for the directory containing)144 237.6 R F1(dir) +3.349 E F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F3(CDP)3.35 E +-.855(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F1(dir)144 249.6 +Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 +(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 +(ull directory name)-3.165 F(in)144 261.6 Q F3(CDP)4.162 E -.855(AT) +-.666 G(H).855 E F0 1.662(is the same as the current directory)3.912 F +4.162(,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F2(.)A F0 -.74('')C 6.662 +(.I).74 G(f)-6.662 E F1(dir)4.513 E F0(be)4.893 E 1.663 +(gins with a slash \(/\), then)-.15 F F3(CDP)144 273.6 Q -.855(AT)-.666 +G(H).855 E F0 .347(is not used. The)2.598 F F22.847 E F0 .347 +(option causes)2.847 F F2(cd)2.847 E F0 .347(to use the ph)2.847 F .347 +(ysical directory structure by resolving)-.05 F 1.12 +(symbolic links while tra)144 285.6 R -.15(ve)-.2 G(rsing).15 E F1(dir) +3.62 E F0 1.12(and before processing instances of)3.62 F F1(..)3.62 E F0 +(in)3.62 E F1(dir)3.62 E F0 1.12(\(see also the)3.62 F F23.62 E F0 +.395(option to the)144 297.6 R F2(set)2.895 E F0 -.2(bu)2.895 G .395 +(iltin command\); the).2 F F22.895 E F0 .395 +(option forces symbolic links to be follo)2.895 F .395(wed by resolv-) +-.25 F .443(ing the link after processing instances of)144 309.6 R F1 +(..)2.943 E F0(in)2.943 E F1(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F1(..) +2.943 E F0 .443(appears in)2.943 F F1(dir)2.943 E F0 2.943(,i)C 2.943 +(ti)-2.943 G 2.944(sp)-2.943 G .444(rocessed by remo)-2.944 F(ving)-.15 +E .744(the immediately pre)144 321.6 R .744 +(vious pathname component from)-.25 F F1(dir)3.244 E F0 3.244(,b)C .744 +(ack to a slash or the be)-3.244 F .744(ginning of)-.15 F F1(dir)3.244 E +F0(.)A 1.465(If the)144 333.6 R F23.965 E F0 1.465 +(option is supplied with)3.965 F F23.965 E F0 3.965(,a)C 1.465 +(nd the current w)-3.965 F 1.466 +(orking directory cannot be successfully)-.1 F .468 +(determined after a successful directory change,)144 345.6 R F2(cd)2.968 +E F0 .468(will return an unsuccessful status.)2.968 F .467(On systems) +5.467 F .336(that support it, the)144 357.6 R F22.836 E F0 .336 +(option presents the e)2.836 F .336(xtended attrib)-.15 F .337 +(utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) +144 369.6 R .71(gument of)-.18 F F23.21 E F0 .71(is con)3.21 F -.15 +(ve)-.4 G .71(rted to).15 F F3($OLDPWD)3.21 E F0 .71 +(before the directory change is attempted.)2.96 F .71(If a non-)5.71 F +.106(empty directory name from)144 381.6 R F3(CDP)2.606 E -.855(AT)-.666 +G(H).855 E F0 .107(is used, or if)2.356 F F22.607 E F0 .107 +(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F +.038(is successful, the absolute pathname of the ne)144 393.6 R 2.538 +(ww)-.25 G .038(orking directory is written to the standard output.) +-2.638 F(The return v)144 405.6 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108 +422.4 Q F0([)2.5 E F2(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E F1 +(ar)A(g)-.37 E F0(...])2.5 E(Run)144 434.4 Q F1(command)2.956 E F0(with) +3.527 E F1(ar)3.087 E(gs)-.37 E F0 .257 (suppressing the normal shell function lookup. Only b)3.027 F .257 -(uiltin commands or)-.2 F .501(commands found in the)144 386.4 R F3 --.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G 3.002 +(uiltin commands or)-.2 F .502(commands found in the)144 446.4 R F3 +-.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G 3.002 (cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi)3.002 -F -.15(ve)-.25 G .502(n, the search for).15 F F1(command)3.202 E F0(is) -3.772 E .4(performed using a def)144 398.4 R .4(ault v)-.1 F .4 -(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 +F -.15(ve)-.25 G .501(n, the search for).15 F F1(command)3.201 E F0(is) +3.771 E .399(performed using a def)144 458.4 R .399(ault v)-.1 F .399 +(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4 (that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.399 E .174(either the)144 410.4 R F22.674 E F0(or)2.674 E F2 -2.674 E F0 .175(option is supplied, a description of)2.674 F F1 -(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F22.675 E -F0 .175(option causes)2.675 F 3.11(as)144 422.4 S .61(ingle w)-3.11 F -.61(ord indicating the command or \214le name used to in)-.1 F -.2(vo) --.4 G -.1(ke).2 G F1(command)3.41 E F0 .61(to be displayed; the)3.88 F -F2144 434.4 Q F0 .249(option produces a more v)2.749 F .249 -(erbose description.)-.15 F .249(If the)5.249 F F22.749 E F0(or) -2.749 E F22.75 E F0 .25(option is supplied, the e)2.75 F .25 -(xit status)-.15 F 1.005(is 0 if)144 446.4 R F1(command)3.705 E F0 -.1 -(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 +5.4 E .175(either the)144 470.4 R F22.675 E F0(or)2.675 E F2 +2.675 E F0 .175(option is supplied, a description of)2.675 F F1(command) +2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F22.674 E F0 .174 +(option causes)2.674 F 3.317(as)144 482.4 S .817(ingle w)-3.317 F .817 +(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G +-.1(ke).2 G F1(command)3.618 E F0 .818(to be displayed; the)4.088 F F2 +144 494.4 Q F0 .25(option produces a more v)2.75 F .25 +(erbose description.)-.15 F .249(If the)5.25 F F22.749 E F0(or) +2.749 E F22.749 E F0 .249(option is supplied, the e)2.749 F .249 +(xit status)-.15 F 1.004(is 0 if)144 506.4 R F1(command)3.704 E F0 -.1 +(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 (If neither option is supplied and an error occurred or)6.005 F F1 -(command)144.2 458.4 Q F0 1.598(cannot be found, the e)4.868 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 -(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 470.4 S +(command)144.2 518.4 Q F0 1.599(cannot be found, the e)4.869 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 +(xit status of the)-.15 F F2(command)4.098 E F0 -.2(bu)144 530.4 S (iltin is the e).2 E(xit status of)-.15 E F1(command)2.5 E F0(.).77 E F2 -(compgen)108 487.2 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) --.37 E F0(])A .013(Generate possible completion matches for)144 499.2 R +(compgen)108 547.2 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) +-.37 E F0(])A .012(Generate possible completion matches for)144 559.2 R F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 -E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 -(accepted by the)144 511.2 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +E F0 .013(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 +(accepted by the)144 571.2 R F2(complete)3.482 E F0 -.2(bu)3.481 G .981 (iltin with the e).2 F .981(xception of)-.15 F F23.481 E F0(and) -3.481 E F23.481 E F0 3.481(,a)C .982(nd write the matches to the) --3.481 F 1.415(standard output.)144 523.2 R 1.415(When using the)6.415 F +3.481 E F23.481 E F0 3.481(,a)C .981(nd write the matches to the) +-3.481 F 1.415(standard output.)144 583.2 R 1.415(When using the)6.415 F F23.915 E F0(or)3.915 E F23.915 E F0 1.415(options, the v) 3.915 F 1.415(arious shell v)-.25 F 1.415(ariables set by the pro-)-.25 -F(grammable completion f)144 535.2 Q(acilities, while a)-.1 E -.25(va) +F(grammable completion f)144 595.2 Q(acilities, while a)-.1 E -.25(va) -.2 G(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.) --.25 E .352(The matches will be generated in the same w)144 559.2 R .352 +-.25 E .352(The matches will be generated in the same w)144 619.2 R .352 (ay as if the programmable completion code had gen-)-.1 F .02(erated th\ em directly from a completion speci\214cation with the same \215ags.)144 -571.2 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) -2.52 F(those completions matching)144 583.2 Q F1(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 607.2 Q +631.2 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 643.2 Q F1(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 667.2 Q (alue is true unless an in)-.25 E -.25(va)-.4 G (lid option is supplied, or no matches were generated.).25 E F2 -(complete)108 624 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C F2 --3.728 E F1(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E +(complete)108 684 Q F0([)3.729 E F2(\255abcdefgjksuv)A F0 3.729(][)C F2 +-3.729 E F1(comp-option)3.729 E F0 3.729(][)C F2(\255DE)-3.729 E F0 3.728(][)C F2-3.728 E F1(action)3.728 E F0 3.728(][)C F2 --3.728 E F1(globpat)3.728 E F0 3.729(][)C F2-3.729 E F1(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F1(func-)3.729 E(tion)108 -636 Q F0 2.5(][)C F2-2.5 E F1(command)2.5 E F0(])A([)144 648 Q F2 +-3.728 E F1(globpat)3.728 E F0 3.728(][)C F2-3.728 E F1(wor)3.728 +E(dlist)-.37 E F0 3.728(][)C F2-3.728 E F1(func-)3.728 E(tion)108 +696 Q F0 2.5(][)C F2-2.5 E F1(command)2.5 E F0(])A([)144 708 Q F2 A F1(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F1(pr)2.5 E (e\214x)-.37 E F0 2.5(][)C F2-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(]) -A F1(name)2.5 E F0([)2.5 E F1(name ...)A F0(])A F2(complete \255pr)108 -660 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E -.633(Specify ho)144 672 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 -(uments to each).18 F F1(name)3.133 E F0 .633(should be completed.)3.133 -F .634(If the)5.634 F F23.134 E F0 .634 -(option is supplied, or if no)3.134 F .14(options are supplied, e)144 -684 R .139(xisting completion speci\214cations are printed in a w)-.15 F -.139(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.) -144 696 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve) --.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F1 -(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F1(name)2.81 E F0(s)A 1.347 -(are supplied, all completion speci\214cations.)144 708 R(The)6.347 E F2 -3.847 E F0 1.346(option indicates that the remaining options)3.847 -F .5(and actions should apply to the `)144 720 R(`def)-.74 E(ault')-.1 E -3('c)-.74 G .5(ommand completion; that is, completion attempted on)-3 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(51)185.955 E 0 Cg EP -%%Page: 52 52 +A F1(name)2.5 E F0([)2.5 E F1(name ...)A F0(])A(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(53)190.95 E 0 Cg EP +%%Page: 54 54 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 3.455(ac)144 84 S .955(ommand for which no completion has pre) --3.455 F .955(viously been de\214ned.)-.25 F(The)5.955 E/F1 10 -/Times-Bold@0 SF3.455 E F0 .955(option indicates that)3.455 F .064 -(the remaining options and actions should apply to `)144 96 R(`empty') --.74 E 2.565('c)-.74 G .065(ommand completion; that is, comple-)-2.565 F -(tion attempted on a blank line.)144 108 Q 1.438 +-.35 E/F1 10/Times-Bold@0 SF(complete \255pr)108 84 Q F0([)2.5 E F1 +(\255DE)A F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E +.634(Specify ho)144 96 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 +(uments to each).18 F F2(name)3.134 E F0 .634(should be completed.)3.134 +F .633(If the)5.634 F F13.133 E F0 .633 +(option is supplied, or if no)3.133 F .139(options are supplied, e)144 +108 R .139(xisting completion speci\214cations are printed in a w)-.15 F +.14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.)144 +120 R(The)5.31 E F12.81 E F0 .31(option remo)2.81 F -.15(ve)-.15 G +2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F2(name) +2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2 +(name)2.81 E F0(s)A 1.346 +(are supplied, all completion speci\214cations.)144 132 R(The)6.347 E F1 +3.847 E F0 1.347(option indicates that the remaining options)3.847 +F .5(and actions should apply to the `)144 144 R(`def)-.74 E(ault')-.1 E +3('c)-.74 G .5(ommand completion; that is, completion attempted on)-3 F +3.455(ac)144 156 S .955(ommand for which no completion has pre)-3.455 F +.955(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 +(option indicates that)3.455 F .065 +(the remaining options and actions should apply to `)144 168 R(`empty') +-.74 E 2.564('c)-.74 G .064(ommand completion; that is, comple-)-2.564 F +(tion attempted on a blank line.)144 180 Q 1.437 (The process of applying these completion speci\214cations when w)144 -132 R 1.437(ord completion is attempted is)-.1 F(described abo)144 144 Q +204 R 1.438(ord completion is attempted is)-.1 F(described abo)144 216 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(.)A .555(Other options, if speci\214ed, ha)144 168 R .855 -.15(ve t) +F0(.)A .556(Other options, if speci\214ed, ha)144 240 R .856 -.15(ve t) -.2 H .555(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F -.555(guments to the)-.18 F F13.056 E F0(,)A F13.056 E F0 -3.056(,a)C(nd)-3.056 E F13.056 E F0 .723 -(options \(and, if necessary)144 180 R 3.223(,t)-.65 G(he)-3.223 E F1 -3.223 E F0(and)3.223 E F13.223 E F0 .722 -(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E -(sion before the)144 192 Q F1(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 204 Q/F2 -10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 216 Q F2(comp-option) -2.79 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291 -(ral aspects of the compspec').15 F 2.791(sb)-.55 G(eha)-2.791 E .291 -(vior be)-.2 F .291(yond the simple)-.15 F(generation of completions.) -184 228 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 -240 Q F0 .281(Perform the rest of the def)224 252 R(ault)-.1 E F1(bash) -2.781 E F0 .281(completions if the compspec generates no)2.781 F -(matches.)224 264 Q F1(default)184 276 Q F0 2.875(Use readline')10 F -5.375(sd)-.55 G(ef)-5.375 E 2.876 -(ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 288 Q F1(dir)184 300 Q(names)-.15 E F0(Perform directory name compl\ -etion if the compspec generates no matches.)224 312 Q F1(\214lenames)184 -324 Q F0 -.7(Te)224 336 S .137(ll readline that the compspec generates \ -\214lenames, so it can perform an).7 F 2.636<798c>-.15 G(le-)-2.636 E -.134(name\255speci\214c processing \(lik)224 348 R 2.634(ea)-.1 G .134 -(dding a slash to directory names, quoting spe-)-2.634 F .45 -(cial characters, or suppressing trailing spaces\).)224 360 R .45 -(Intended to be used with shell)5.45 F(functions.)224 372 Q F1(nospace) -184 384 Q F0 -.7(Te)6.11 G .22 -(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 F -.22(ords completed at the end)-.1 F(of the line.)224 396 Q F1(plusdirs) -184 408 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G 1.985 -(atches de\214ned by the compspec are generated, directory name)-4.485 F -.583(completion is attempted and an)224 420 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 432 -Q F1144 444 Q F2(action)2.5 E F0(The)184 456 Q F2(action)2.5 E F0 -(may be one of the follo)2.5 E +.555(guments to the)-.18 F F13.055 E F0(,)A F13.055 E F0 +3.055(,a)C(nd)-3.055 E F13.055 E F0 .722 +(options \(and, if necessary)144 252 R 3.222(,t)-.65 G(he)-3.222 E F1 +3.222 E F0(and)3.222 E F13.222 E F0 .723 +(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E +(sion before the)144 264 Q F1(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 276 Q F2 +(comp-option)2.5 E F0(The)184 288 Q F2(comp-option)2.791 E F0 .291 +(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') +.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 +(yond the simple)-.15 F(generation of completions.)184 300 Q F2 +(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 312 Q F0 +.281(Perform the rest of the def)224 324 R(ault)-.1 E F1(bash)2.781 E F0 +.281(completions if the compspec generates no)2.781 F(matches.)224 336 Q +F1(default)184 348 Q F0 2.876(Use readline')10 F 5.376(sd)-.55 G(ef) +-5.376 E 2.875(ault \214lename completion if the compspec generates no) +-.1 F(matches.)224 360 Q F1(dir)184 372 Q(names)-.15 E F0(Perform direc\ +tory name completion if the compspec generates no matches.)224 384 Q F1 +(\214lenames)184 396 Q F0 -.7(Te)224 408 S .137(ll readline that the co\ +mpspec generates \214lenames, so it can perform an).7 F 2.637<798c>-.15 +G(le-)-2.637 E .134(name\255speci\214c processing \(lik)224 420 R 2.634 +(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F +.45(cial characters, or suppressing trailing spaces\).)224 432 R .45 +(Intended to be used with shell)5.45 F(functions.)224 444 Q F1(noquote) +184 456 Q F0 -.7(Te)5.55 G .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 468 Q(ault\).)-.1 E F1(nospace)184 480 Q F0 +-.7(Te)6.11 G .22(ll readline not to append a space \(the def).7 F .22 +(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224 +492 Q F1(plusdirs)184 504 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G +1.985(atches de\214ned by the compspec are generated, directory name) +-4.485 F .583(completion is attempted and an)224 516 R 3.084(ym)-.15 G +.584(atches are added to the results of the other)-3.084 F(actions.)224 +528 Q F1144 540 Q F2(action)2.5 E F0(The)184 552 Q F2(action)2.5 E +F0(may be one of the follo)2.5 E (wing to generate a list of possible completions:)-.25 E F1(alias)184 -468 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(arrayv)184 480 Q(ar)-.1 E F0(Array v)224 492 Q -(ariable names.)-.25 E F1 4.7(binding Readline)184 504 R F0 -.1(ke)2.5 G -2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 516 S(iltin).2 E F0 +564 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(arrayv)184 576 Q(ar)-.1 E F0(Array v)224 588 Q +(ariable names.)-.25 E F1 4.7(binding Readline)184 600 R F0 -.1(ke)2.5 G +2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 612 S(iltin).2 E F0 (Names of shell b)11.85 E(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 528 -Q F0(Command names.)224 540 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 552 Q(ectory)-.18 E F0(Directory names.)224 564 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 576 -Q F0(Names of disabled shell b)224 588 Q(uiltins.)-.2 E F1(enabled)184 -600 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 -612 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May) --.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -624 Q F0(File names.)27.22 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(function)184 636 Q F0(Names of shell functions.)224 648 Q F1 -(gr)184 660 Q(oup)-.18 E F0(Group names.)14.62 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -672 Q F0(Help topics as accepted by the)224 684 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 696 Q F0(Hostnames, as tak)224 708 -Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(52)185.955 E 0 Cg EP -%%Page: 53 53 +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 624 +Q F0(Command names.)224 636 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 648 Q(ectory)-.18 E F0(Directory names.)224 660 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 672 +Q F0(Names of disabled shell b)224 684 Q(uiltins.)-.2 E F1(enabled)184 +696 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 +708 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May) +-.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A(GNU Bash 4.3)72 +768 Q(2014 February 2)141.79 E(54)190.95 E 0 Cg EP +%%Page: 55 55 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(job)184 84 Q F0 -(Job names, if job control is acti)26.11 E -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 96 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 108 Q(ed w)-.15 E 2.5(ords. May) --.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -120 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve) --.25 G(.).15 E F1(ser)184 132 Q(vice)-.1 E F0(Service names.)10.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 144 Q -F0 -1.11(Va)14.45 G(lid ar)1.11 E(guments for the)-.18 E F12.5 E -F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 156 Q F0(Shell option names as accepted by the)16.66 E F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 168 Q F0 -(Signal names.)14.99 E F1(stopped)184 180 Q F0 +-.35 E/F1 10/Times-Bold@0 SF(\214le)184 84 Q F0(File names.)27.22 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(function)184 96 +Q F0(Names of shell functions.)224 108 Q F1(gr)184 120 Q(oup)-.18 E F0 +(Group names.)14.62 E(May also be speci\214ed as)5 E F12.5 E F0(.) +A F1(helptopic)184 132 Q F0(Help topics as accepted by the)224 144 Q F1 +(help)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(hostname)184 156 Q F0 +(Hostnames, as tak)224 168 Q(en from the \214le speci\214ed by the)-.1 E +/F2 9/Times-Bold@0 SF(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E +F1(job)184 180 Q F0(Job names, if job control is acti)26.11 E -.15(ve) +-.25 G 5(.M).15 G(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 +-.1(ke)184 192 S(yw).1 E(ord)-.1 E F0(Shell reserv)224 204 Q(ed w)-.15 E +2.5(ords. May)-.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1 +(running)184 216 Q F0(Names of running jobs, if job control is acti)5.54 +E -.15(ve)-.25 G(.).15 E F1(ser)184 228 Q(vice)-.1 E F0(Service names.) +10.67 E(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt) +184 240 Q F0 -1.11(Va)14.45 G(lid ar)1.11 E(guments for the)-.18 E F1 +2.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.) +.2 E F1(shopt)184 252 Q F0(Shell option names as accepted by the)16.66 E +F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 264 Q F0 +(Signal names.)14.99 E F1(stopped)184 276 Q F0 (Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.) -.15 E F1(user)184 192 Q F0(User names.)21.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 204 S +.15 E F1(user)184 288 Q F0(User names.)21.67 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 300 S (riable).1 E F0(Names of all shell v)5.1 E 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 216 Q/F2 -10/Times-Italic@0 SF(command)2.5 E(command)184 228 Q F0 1.056(is e)3.556 +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 312 Q/F3 +10/Times-Italic@0 SF(command)2.5 E(command)184 324 Q F0 1.056(is e)3.556 F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 (vironment, and its output is used as the possible)-.4 F(completions.) -184 240 Q F1144 252 Q F2(function)2.5 E F0 1.18 -(The shell function)184 264 R F2(function)3.68 E F0 1.181(is e)3.681 F --.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.681 -(vironment. When)-.4 F 1.181(it \214n-)3.681 F .932 -(ishes, the possible completions are retrie)184 276 R -.15(ve)-.25 G -3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F/F3 9 -/Times-Bold@0 SF(COMPREPL)3.431 E(Y)-.828 E F0(array)3.181 E -.25(va)184 -288 S(riable.).25 E F1144 300 Q F2(globpat)2.5 E F0 1.007 -(The pathname e)184 312 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507 -E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-) --.15 F(tions.)184 324 Q F1144 336 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 348 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534 +184 336 Q F1144 348 Q F3(function)2.5 E F0 .113 +(The shell function)184 360 R F3(function)2.614 E F0 .114(is e)2.614 F +-.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 +(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 372 R +-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 +(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 +(are being completed, the second ar)184 384 R 1.407(gument \()-.18 F F1 +($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 +(ord being completed, and the)-.1 F .104(third ar)184 396 R .104 +(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) +-2.604 F .104(ord preceding the w)-.1 F .103 +(ord being completed on the current com-)-.1 F .101(mand line.)184 408 R +.101(When it \214nishes, the possible completions are retrie)5.101 F +-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) +-.25 F F2(COMPREPL)184 420 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E +F1144 432 Q F3(globpat)2.5 E F0 1.008(The pathname e)184 444 R +1.008(xpansion pattern)-.15 F F3(globpat)3.507 E F0 1.007(is e)3.507 F +1.007(xpanded to generate the possible comple-)-.15 F(tions.)184 456 Q +F1144 468 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 480 Q(e\214x)-.37 E +F0 .534(is added at the be)3.034 F .534 (ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 360 Q F1144 372 Q F2(suf)2.5 E +-.15(ve)-.2 G(been applied.)184 492 Q F1144 504 Q F3(suf)2.5 E 2.81(\214x suf)-.18 F<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 384 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 396 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.639 F F3(IFS)3.64 E F0 1.14 -(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F 2.008 -(each resultant w)184 408 R 2.008(ord is e)-.1 F 4.508(xpanded. The)-.15 -F 2.007(possible completions are the members of the)4.508 F -(resultant list which match the w)184 420 Q(ord being completed.)-.1 E -F1144 432 Q F2(\214lterpat)2.5 E(\214lterpat)184 444 Q F0 .455 -(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F -.456(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 456 R 1.596 -(guments, and each completion)-.18 F(matching)184 468 Q F2(\214lterpat) -3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704 -(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 -(tes the pattern;).05 F(in this case, an)184 480 Q 2.5(yc)-.15 G -(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .467(The return v)144 496.8 R .467 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 516 Q F3(wor)2.5 E +(dlist)-.37 E F0(The)184 528 Q F3(wor)3.64 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.64 F F2(IFS)3.64 E F0 1.139 +(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007 +(each resultant w)184 540 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 +F 2.008(possible completions are the members of the)4.507 F +(resultant list which match the w)184 552 Q(ord being completed.)-.1 E +F1144 564 Q F3(\214lterpat)2.5 E(\214lterpat)184 576 Q F0 .456 +(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F +.455(is applied to the list of possible)2.956 F 1.596 +(completions generated by the preceding options and ar)184 588 R 1.596 +(guments, and each completion)-.18 F(matching)184 600 Q F3(\214lterpat) +3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 +(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 +(in)3.204 E F3(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 +(tes the pattern;).05 F(in this case, an)184 612 Q 2.5(yc)-.15 G +(ompletion not matching)-2.5 E F3(\214lterpat)2.5 E F0(is remo)2.5 E +-.15(ve)-.15 G(d.).15 E .466(The return v)144 628.8 R .466 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F12.966 E F0 -(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 -(plied without a)144 508.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 -(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H -1.362(ompletion speci\214cation for a).15 F F2(name)144 520.8 Q F0 +(lid option is supplied, an option other than).25 F F12.967 E F0 +(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 +(plied without a)144 640.8 R F3(name)3.862 E F0(ar)3.862 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H +1.361(ompletion speci\214cation for a).15 F F3(name)144 652.8 Q F0 (for which no speci\214cation e)2.5 E (xists, or an error occurs adding a completion speci\214cation.)-.15 E -F1(compopt)108 537.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C -F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 549.6 R -F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 -.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725 -(completion if no)144 561.6 R F2(name)3.225 E F0 3.225(sa)C .725 -(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .726 -(n, display the completion options for).15 F(each)144 573.6 Q F2(name) -3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) -5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 585.6 Q F0 -.2(bu) -2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) +F1(compopt)108 669.6 Q F0([)2.5 E F1A F3(option)2.5 E F0 2.5(][)C +F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F3(option)2.5 E F0 2.5(][)C F3 +(name)-2.5 E F0(])A .447(Modify completion options for each)144 681.6 R +F3(name)2.947 E F0 .447(according to the)2.947 F F3(option)2.947 E F0 +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 +(completion if no)144 693.6 R F3(name)3.226 E F0 3.226(sa)C .726 +(re supplied.)-3.226 F .725(If no)5.725 F F3(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .725 +(n, display the completion options for).15 F(each)144 705.6 Q F3(name) +3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) +5.724 F .724(alues of)-.25 F F3(option)3.224 E F0 .724(are those v)3.224 +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 717.6 Q F0 -.2(bu) +2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) -5.297 E F12.797 E F0 .297 (option indicates that the remaining options should apply to)2.797 F -1.228(the `)144 597.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +1.227(the `)144 729.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.728 F 2.177(completion has pre)144 609.6 R 2.177 -(viously been de\214ned.)-.25 F(The)7.177 E F14.677 E F0 2.178 -(option indicates that the remaining options)4.678 F(should apply to `) -144 621.6 Q(`empty')-.74 E 2.5('c)-.74 G +no)-3.727 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(55)190.95 E 0 +Cg EP +%%Page: 56 56 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E 2.178(completion has pre)144 84 R 2.178(viously been de\214ned.) +-.25 F(The)7.178 E/F1 10/Times-Bold@0 SF4.678 E F0 2.177 +(option indicates that the remaining options)4.677 F(should apply to `) +144 96 Q(`empty')-.74 E 2.5('c)-.74 G (ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.388(The return v)144 645.6 R 1.388(alue is true unless an in)-.25 F --.25(va)-.4 G 1.387 +E 1.387(The return v)144 120 R 1.387(alue is true unless an in)-.25 F +-.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 657.6 Q F2(name)2.5 E F0 +(options for a)144 132 Q/F2 10/Times-Italic@0 SF(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 674.4 Q F0([) -2.5 E F2(n)A F0(])A 1.753(Resume the ne)144 686.4 R 1.753 +(xists, or an output error occurs.)-.15 E F1(continue)108 148.8 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 160.8 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 -(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754 -(is speci\214ed,)4.494 F 1.209(resume at the)144 698.4 R F2(n)3.709 E F0 -1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10 +(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 +(is speci\214ed,)4.493 F 1.208(resume at the)144 172.8 R F2(n)3.709 E F0 +1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10 /Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 -(is greater than the number of enclosing)3.949 F .513 -(loops, the last enclosing loop \(the `)144 710.4 R(`top-le)-.74 E -.15 -(ve)-.25 G(l').15 E 3.013('l)-.74 G .513(oop\) is resumed.)-3.013 F .514 -(The return v)5.514 F .514(alue is 0 unless)-.25 F F2(n)3.014 E F0(is) -3.014 E(not greater than or equal to 1.)144 722.4 Q(GNU Bash-4.2)72 768 -Q(2010 December 28)135.965 E(53)185.955 E 0 Cg EP -%%Page: 54 54 +(is greater than the number of enclosing)3.949 F .514 +(loops, the last enclosing loop \(the `)144 184.8 R(`top-le)-.74 E -.15 +(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 +(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) +3.013 E(not greater than or equal to 1.)144 196.8 Q F1(declar)108 213.6 +Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E +F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 +(typeset)108 225.6 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E 1.264(Declare v)144 237.6 R 1.264(ariables and/or gi)-.25 F +1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) +3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 +G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F +-.25(va)144 249.6 S 3.483(riables. The).25 F F13.483 E F0 .983 +(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 +(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 +3.482 E F0 .982(is used)3.482 F(with)144 261.6 Q F2(name)2.774 E +F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 +2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 +(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) +2.775 F(without)144 273.6 Q F2(name)4.814 E F0(ar)4.814 E 2.314 +(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 +(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F +(attrib)144 285.6 Q 1.181(utes speci\214ed by the additional options.) +-.2 F 1.182(If no other options are supplied with)6.181 F F13.682 +E F0(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 +297.6 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 +(ariables. The)-.25 F F13.12 E F0 .62 +(option will restrict the display)3.12 F 1.29(to shell functions.)144 +309.6 R(The)6.29 E F13.79 E F0 1.291(option inhibits the display \ +of function de\214nitions; only the function)3.791 F .948 +(name and attrib)144 321.6 R .948(utes are printed.)-.2 F .948(If the) +5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 +(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C +.948(he source)-3.448 F 1.342(\214le name and line number where the fun\ +ction is de\214ned are displayed as well.)144 333.6 R(The)6.342 E F1 +3.842 E F0(option)3.842 E(implies)144 345.6 Q F13.892 E F0 +6.392(.T)C(he)-6.392 E F13.892 E F0 1.391(option forces v)3.892 F +1.391(ariables to be created or modi\214ed at the global scope, e)-.25 F +-.15(ve)-.25 G(n).15 E(when)144 357.6 Q F1(declar)4.382 E(e)-.18 E F0 +1.882(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F +1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F +(wing)-.25 E .794(options can be used to restrict output to v)144 369.6 +R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 +F 1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 381.6 Q(utes:)-.2 E +F1144 393.6 Q F0(Each)25.3 E F2(name)2.5 E F0(is an inde)2.5 E +-.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1 +(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 405.6 Q +F0(Each)23.08 E F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 +H(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15 +(ve)-.15 G(\).).15 E F1144 417.6 Q F0(Use function names only) +26.97 E(.)-.65 E F1144 429.6 Q F0 .557(The v)27.52 F .558 +(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 +(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .558 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 441.6 Q F0(abo) +2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) +-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 453.6 Q +F0 .91(When the v)27.52 F .909(ariable is assigned a v)-.25 F .909 +(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 465.6 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 477.6 +Q F0(Gi)24.74 E 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) +3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E +1.033(That other v)180 489.6 R 1.033(ariable is de\214ned by the v)-.25 +F 1.033(alue of)-.25 F F2(name)3.533 E F0 6.033(.A)C 1.033 +(ll references and assignments to)-6.033 F F2(name)180 501.6 Q F0 4.032 +(,e)C 1.532(xcept for changing the)-4.182 F F14.032 E F0(attrib) +4.032 E 1.532(ute itself, are performed on the v)-.2 F 1.533 +(ariable refer)-.25 F(-)-.2 E(enced by)180 513.6 Q F2(name)2.5 E F0 1.1 +-.55('s v)D 2.5(alue. The).3 F F12.5 E F0(attrib)2.5 E +(ute cannot be applied to array v)-.2 E(ariables.)-.25 E F1144 +525.6 Q F0(Mak)25.86 E(e)-.1 E F2(name)5.047 E F0 5.047(sr)C(eadonly) +-5.047 E 7.547(.T)-.65 G 2.546(hese names cannot then be assigned v) +-7.547 F 2.546(alues by subsequent)-.25 F +(assignment statements or unset.)180 537.6 Q F1144 549.6 Q F0(Gi) +26.97 E .729 -.15(ve e)-.25 H(ach).15 E F2(name)2.929 E F0(the)2.929 E +F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929(ute. T)-.2 F .429 +(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG)-.1 E F0(and)2.93 +E F1(RETURN)2.93 E F0(traps from the calling shell.)180 561.6 Q +(The trace attrib)5 E(ute has no special meaning for v)-.2 E(ariables.) +-.25 E F1144 573.6 Q F0 .91(When the v)24.74 F .909 +(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 +(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F +(-)-.2 E 2.5(case. The)180 585.6 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 +E(ute is disabled.)-.2 E F1144 597.6 Q F0(Mark)25.3 E F2(name)2.5 +E F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E +(vironment.)-.4 E .12(Using `+' instead of `\255' turns of)144 614.4 R +2.62(ft)-.25 G .12(he attrib)-2.62 F .121(ute instead, with the e)-.2 F +.121(xceptions that)-.15 F F1(+a)2.621 E F0 .121(may not be used)2.621 F +.645(to destro)144 626.4 R 3.145(ya)-.1 G 3.145(na)-3.145 G .645(rray v) +-3.145 F .645(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) +3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.144 +(ute. When)-.2 F .644(used in a func-)3.144 F(tion,)144 638.4 Q F1 +(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 F12.835 E F0(option)2.835 E 1.283 +(is supplied.)144 650.4 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 +662.4 R F13.426 E F0(or)3.426 E F13.426 E F0 .927 +(and the compound assignment syntax to create array v)3.426 F .927 +(ariables, additional)-.25 F(attrib)144 674.4 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 686.4 R/F5 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 +698.4 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 710.4 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 722.4 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(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(56) +190.95 E 0 Cg EP +%%Page: 57 57 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(declar)108 84 Q(e)-.18 E F0([)2.5 E F1 -(\255aAfFgilrtux)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10 -/Times-Italic@0 SF(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E -F1(typeset)108 96 Q F0([)2.5 E F1(\255aAfFgilrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..]) --2.5 E 1.265(Declare v)144 108 R 1.265(ariables and/or gi)-.25 F 1.565 --.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)3.765 E -F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 G 3.764 -(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F -.25 -(va)144 120 S 3.482(riables. The).25 F F13.482 E F0 .982 -(option will display the attrib)3.482 F .982(utes and v)-.2 F .983 -(alues of each)-.25 F F2(name)3.483 E F0 5.983(.W).18 G(hen)-5.983 E F1 -3.483 E F0 .983(is used)3.483 F(with)144 132 Q F2(name)3.58 E F0 -(ar)3.58 E 1.079(guments, additional options are ignored.)-.18 F(When) -6.079 E F13.579 E F0 1.079(is supplied without)3.579 F F2(name) -3.579 E F0(ar)3.579 E(gu-)-.18 E .15(ments, it will display the attrib) -144 144 R .15(utes and v)-.2 F .151(alues of all v)-.25 F .151 -(ariables ha)-.25 F .151(ving the attrib)-.2 F .151 -(utes speci\214ed by the)-.2 F .047(additional options.)144 156 R .047 -(If no other options are supplied with)5.047 F F12.547 E F0(,)A F1 -(declar)2.547 E(e)-.18 E F0 .046(will display the attrib)2.546 F .046 -(utes and)-.2 F -.25(va)144 168 S 1.362(lues of all shell v).25 F 3.862 -(ariables. The)-.25 F F13.862 E F0 1.363 -(option will restrict the display to shell functions.)3.862 F(The)6.363 -E F13.863 E F0 2.422(option inhibits the display of function de\ -\214nitions; only the function name and attrib)144 180 R 2.422(utes are) --.2 F 2.663(printed. If)144 192 R(the)2.663 E F1(extdeb)2.663 E(ug)-.2 E -F0 .164(shell option is enabled using)2.663 F F1(shopt)2.664 E F0 2.664 -(,t)C .164(he source \214le name and line number)-2.664 F 1.288 -(where the function is de\214ned are displayed as well.)144 204 R(The) -6.288 E F13.788 E F0 1.288(option implies)3.788 F F13.788 E -F0 6.288(.T)C(he)-6.288 E F13.788 E F0(option)3.788 E .49 -(forces v)144 216 R .49 -(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G 2.991(nw).15 G(hen)-2.991 E F1(declar)2.991 E(e)-.18 E F0 -.491(is e)2.991 F -.15(xe)-.15 G .491(cuted in a).15 F .125 -(shell function.)144 228 R .125(It is ignored in all other cases.)5.125 -F .125(The follo)5.125 F .124 -(wing options can be used to restrict output)-.25 F(to v)144 240 Q -(ariables with the speci\214ed attrib)-.25 E(ute or to gi)-.2 E .3 -.15 -(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 252 Q F0 -(Each)25.3 E F2(name)2.5 E F0(is an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 -G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15 -(ve)-.15 G(\).).15 E F1144 264 Q F0(Each)23.08 E F2(name)2.5 E F0 -(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v).15 E(ariable \(see) --.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 -276 Q F0(Use function names only)26.97 E(.)-.65 E F1144 288 Q F0 -.557(The v)27.52 F .558(ariable is treated as an inte)-.25 F .558 -(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F3 9 -/Times-Bold@0 SF .558(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION) -180 300 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G -(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E -F1144 312 Q F0 .91(When the v)27.52 F .909 -(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to lo).15 F(wer) --.25 E(-)-.2 E 2.5(case. The)180 324 R(upper)2.5 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 336 Q F0(Mak)25.86 E(e)-.1 E F2 -(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546 -(hese names cannot then be assigned v)-7.546 F 2.547 -(alues by subsequent)-.25 F(assignment statements or unset.)180 348 Q F1 -144 360 Q F0(Gi)26.97 E .73 -.15(ve e)-.25 H(ach).15 E F2(name) -2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929 -(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG) --.1 E F0(and)2.929 E F1(RETURN)2.929 E F0(traps from the calling shell.) -180 372 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E -(ariables.)-.25 E F1144 384 Q F0 .909(When the v)24.74 F .909 -(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .91(rted to upper).15 F(-) --.2 E 2.5(case. The)180 396 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 408 Q F0(Mark)25.3 E F2(name)2.5 E -F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E -(vironment.)-.4 E .121(Using `+' instead of `\255' turns of)144 424.8 R -2.621(ft)-.25 G .121(he attrib)-2.621 F .121(ute instead, with the e)-.2 -F .12(xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F -.644(to destro)144 436.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) --3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) -3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 -(ute. When)-.2 F .645(used in a func-)3.145 F 1.186(tion, mak)144 448.8 -R 1.186(es each)-.1 F F2(name)3.686 E F0 1.186(local, as with the)3.686 -F F1(local)3.686 E F0 1.186(command, unless the)3.686 F F13.686 E -F0 1.186(option is supplied, If a)3.686 F -.25(va)144 460.8 S .117 -(riable name is follo).25 F .118(wed by =)-.25 F F2(value)A F0 2.618(,t) -C .118(he v)-2.618 F .118(alue of the v)-.25 F .118(ariable is set to) --.25 F F2(value)2.618 E F0 5.118(.T)C .118(he return v)-5.118 F .118 -(alue is 0)-.25 F 2.794(unless an in)144 472.8 R -.25(va)-.4 G 2.793(li\ -d option is encountered, an attempt is made to de\214ne a function usin\ -g).25 F/F4 10/Courier@0 SF5.293 E(foo=bar)144 484.8 Q F0 3.992(,a) -C 3.993(na)-3.992 G 1.493(ttempt is made to assign a v)-3.993 F 1.493 -(alue to a readonly v)-.25 F 1.493(ariable, an attempt is made to)-.25 F -1.183(assign a v)144 496.8 R 1.183(alue to an array v)-.25 F 1.183 -(ariable without using the compound assignment syntax \(see)-.25 F F1 -(Arrays)3.682 E F0(abo)144 508.8 Q -.15(ve)-.15 G .096(\), one of the) -.15 F F2(names)2.597 E F0 .097(is not a v)2.597 F .097(alid shell v)-.25 -F .097(ariable name, an attempt is made to turn of)-.25 F 2.597(fr)-.25 -G(eadonly)-2.597 E .659(status for a readonly v)144 520.8 R .658 -(ariable, an attempt is made to turn of)-.25 F 3.158(fa)-.25 G .658 -(rray status for an array v)-3.158 F .658(ariable, or)-.25 F -(an attempt is made to display a non-e)144 532.8 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1(dirs [+)108 549.6 -Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 2.5(][)C(\255clpv])-2.5 E F0 --.4(Wi)144 561.6 S .328 +-.35 E .96(attempt is made to turn of)144 84 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 96 Q +(xistent function with)-.15 E/F1 10/Times-Bold@0 SF2.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 112.8 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C +-2.5 E F2(n)A F1(])A F0 -.4(Wi)144 124.8 S .329 (thout options, displays the list of currently remembered directories.) -.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 573.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 585.6 Q +.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 136.8 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 148.8 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(+)144 597.6 Q F2(n)A F0 -1.564(Displays the)25.3 F F2(n)4.064 E F0 1.565 -(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1 -(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 609.6 Q F1144 621.6 Q F2 +2.5(se).15 G(ntries from the list.)-2.5 E F1144 160.8 Q F0 +(Clears the directory stack by deleting all of the entries.)25.86 E F1 +144 172.8 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 +184.8 Q(.)-.65 E F1144 196.8 Q F0 +(Print the directory stack with one entry per line.)24.74 E F1144 +208.8 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 220.8 Q F1(+)144 232.8 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 244.8 Q F1144 256.8 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 633.6 Q F1144 645.6 Q F0 -(Clears the directory stack by deleting all of the entries.)25.86 E F1 -144 657.6 Q F0 .324(Produces a longer listing; the def)27.52 F -.324(ault listing format uses a tilde to denote the home direc-)-.1 F -(tory)180 669.6 Q(.)-.65 E F1144 681.6 Q F0 -(Print the directory stack with one entry per line.)24.74 E F1144 -693.6 Q F0 .273(Print the directory stack with one entry per line, pre\ -\214xing each entry with its inde)25.3 F 2.772(xi)-.15 G 2.772(nt)-2.772 -G(he)-2.772 E(stack.)180 705.6 Q 1.706(The return v)144 722.4 R 1.706 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G 1.707 -(lid option is supplied or).25 F F2(n)4.207 E F0(inde)4.207 E -.15(xe) --.15 G 4.207(sb).15 G -.15(ey)-4.207 G 1.707(ond the end of the).15 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(54)185.955 E 0 Cg EP -%%Page: 55 55 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(directory stack.)144 84 Q/F1 10/Times-Bold@0 SF(diso)108 100.8 Q -(wn)-.1 E F0([)2.5 E F1(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C -/F2 10/Times-Italic@0 SF(jobspec)-2.5 E F0(...])2.5 E -.4(Wi)144 112.8 S -.295(thout options, each).4 F F2(jobspec)4.535 E F0 .295(is remo)3.105 F --.15(ve)-.15 G 2.795(df).15 G .295(rom the table of acti)-2.795 F .595 --.15(ve j)-.25 H 2.795(obs. If).15 F F2(jobspec)4.535 E F0 .295 -(is not present,)3.105 F .422(and neither)144 124.8 R F12.922 E F0 -(nor)2.922 E F12.922 E F0 .422(is supplied, the shell')2.922 F -2.922(sn)-.55 G .422(otion of the)-2.922 F F2(curr)2.923 E .423(ent job) --.37 F F0 .423(is used.)2.923 F .423(If the)5.423 F F12.923 E F0 -.423(option is)2.923 F(gi)144 136.8 Q -.15(ve)-.25 G .141(n, each).15 F -F2(jobspec)4.381 E F0 .141(is not remo)2.951 F -.15(ve)-.15 G 2.641(df) -.15 G .141(rom the table, b)-2.641 F .141(ut is mark)-.2 F .141 -(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)2.641 E F0 .14 -(is not sent to the)2.39 F .004(job if the shell recei)144 148.8 R -.15 -(ve)-.25 G 2.504(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .004 -(If no)4.504 F F2(jobspec)4.244 E F0 .004(is present, and neither the) -2.814 F F12.504 E F0 .005(nor the)2.504 F F12.505 E F0 .005 -(option is)2.505 F 1.229(supplied, the)144 160.8 R F2(curr)3.729 E 1.229 -(ent job)-.37 F F0 1.229(is used.)3.729 F 1.229(If no)6.229 F F2 -(jobspec)5.469 E F0 1.229(is supplied, the)4.039 F F13.729 E F0 -1.228(option means to remo)3.729 F 1.528 -.15(ve o)-.15 H(r).15 E .656 -(mark all jobs; the)144 172.8 R F13.156 E F0 .657 -(option without a)3.156 F F2(jobspec)4.897 E F0(ar)3.467 E .657 -(gument restricts operation to running jobs.)-.18 F(The)5.657 E -(return v)144 184.8 Q(alue is 0 unless a)-.25 E F2(jobspec)4.24 E F0 -(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F1(echo)108 201.6 Q -F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.395(Output the)144 213.6 R F2(ar)2.895 E(g)-.37 E F0 .395 -(s, separated by spaces, follo)B .395(wed by a ne)-.25 F 2.895 -(wline. The)-.25 F .394(return status is al)2.895 F -.1(wa)-.1 G .394 -(ys 0.).1 F(If)5.394 E F12.894 E F0 .548 -(is speci\214ed, the trailing ne)144 225.6 R .548(wline is suppressed.) --.25 F .548(If the)5.548 F F13.048 E F0 .548(option is gi)3.048 F --.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 237.6 Q -.053(wing backslash-escaped characters is enabled.)-.25 F(The)5.053 E F1 -2.553 E F0 .052(option disables the interpretation of these)2.552 -F 1.502(escape characters, e)144 249.6 R -.15(ve)-.25 G 4.002(no).15 G -4.002(ns)-4.002 G 1.502(ystems where the)-4.002 F 4.002(ya)-.15 G 1.502 -(re interpreted by def)-4.002 F 4.003(ault. The)-.1 F F1(xpg_echo)4.003 -E F0(shell)4.003 E .009 -(option may be used to dynamically determine whether or not)144 261.6 R -F1(echo)2.509 E F0 -.15(ex)2.509 G .009(pands these escape characters) -.15 F .659(by def)144 273.6 R(ault.)-.1 E F1(echo)5.659 E F0 .659 -(does not interpret)3.159 F F13.159 E F0 .659 -(to mean the end of options.)3.159 F F1(echo)5.66 E F0 .66 -(interprets the follo)3.16 F(wing)-.25 E(escape sequences:)144 285.6 Q -F1(\\a)144 297.6 Q F0(alert \(bell\))28.22 E F1(\\b)144 309.6 Q F0 -(backspace)27.66 E F1(\\c)144 321.6 Q F0(suppress further output)28.78 E -F1(\\e)144 333.6 Q(\\E)144 345.6 Q F0(an escape character)26.55 E F1 -(\\f)144 357.6 Q F0(form feed)29.89 E F1(\\n)144 369.6 Q F0(ne)27.66 E -2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 381.6 Q F0(carriage return)28.78 E -F1(\\t)144 393.6 Q F0(horizontal tab)29.89 E F1(\\v)144 405.6 Q F0 -.15 -(ve)28.22 G(rtical tab).15 E F1(\\\\)144 417.6 Q F0(backslash)30.44 E F1 -(\\0)144 429.6 Q F2(nnn)A F0(the eight-bit character whose v)13.22 E +(without options, starting with zero.)180 268.8 Q .258(The return v)144 +285.6 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 297.6 Q F1(diso)108 314.4 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(...])2.5 E -.4(Wi)144 326.4 S .121(thout options, remo).4 F .422 -.15 +(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122 +(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 +F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096 +(neither the)144 338.4 R F12.596 E F0 .096(nor the)2.596 F F1 +2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)144 350.4 Q F0 .672(is not remo)3.482 F -.15(ve)-.15 G +3.172(df).15 G .672(rom the table, b)-3.172 F .672(ut is mark)-.2 F .672 +(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.172 E F0 .673 +(is not sent to the job if the)2.922 F .962(shell recei)144 362.4 R -.15 +(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 +3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 374.4 R F1 +3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 +(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F +1.359(The return)6.359 F -.25(va)144 386.4 S(lue is 0 unless a).25 E F2 +(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E +F1(echo)108 403.2 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 415.2 R F2(ar)2.925 E(g)-.37 E +F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 +(error occurs.)144 427.2 R(If)5.307 E F12.807 E F0 .307 +(is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 +F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 +(ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 +439.2 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 +(interpretation of these escape characters, e)144 451.2 R -.15(ve)-.25 G +3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 +(ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 +463.2 Q F1(xpg_echo)3.459 E F0 .959 +(shell option may be used to dynamically determine whether or not)3.459 +F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 +(these escape characters by def)144 475.2 R(ault.)-.1 E F1(echo)5.715 E +F0 .716(does not interpret)3.215 F F13.216 E F0 .716 +(to mean the end of options.)3.216 F F1(echo)5.716 E F0 +(interprets the follo)144 487.2 Q(wing escape sequences:)-.25 E F1(\\a) +144 499.2 Q F0(alert \(bell\))28.22 E F1(\\b)144 511.2 Q F0(backspace) +27.66 E F1(\\c)144 523.2 Q F0(suppress further output)28.78 E F1(\\e)144 +535.2 Q(\\E)144 547.2 Q F0(an escape character)26.55 E F1(\\f)144 559.2 +Q F0(form feed)29.89 E F1(\\n)144 571.2 Q F0(ne)27.66 E 2.5(wl)-.25 G +(ine)-2.5 E F1(\\r)144 583.2 Q F0(carriage return)28.78 E F1(\\t)144 +595.2 Q F0(horizontal tab)29.89 E F1(\\v)144 607.2 Q F0 -.15(ve)28.22 G +(rtical tab).15 E F1(\\\\)144 619.2 Q F0(backslash)30.44 E F1(\\0)144 +631.2 Q F2(nnn)A F0(the eight-bit character whose v)13.22 E (alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 -(\(zero to three octal digits\))2.5 E F1(\\x)144 441.6 Q F2(HH)A F0 +(\(zero to three octal digits\))2.5 E F1(\\x)144 643.2 Q F2(HH)A F0 (the eight-bit character whose v)13.78 E(alue is the he)-.25 E (xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 453.6 Q F2(HHHH)A F0 -1.507(the Unicode \(ISO/IEC 10646\) character whose v)180 465.6 R 1.506 +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 655.2 Q F2(HHHH)A F0 +1.507(the Unicode \(ISO/IEC 10646\) character whose v)180 667.2 R 1.506 (alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 477.6 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 489.6 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 501.6 R .547 +4.006 E F0(\(one to four he)180 679.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 691.2 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 703.2 R .547 (alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 513.6 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 530.4 Q F0([)2.5 E F1A F0 2.5(][)C -F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 542.4 R -.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 -(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 -(the same name as a shell b)144 554.4 R .834(uiltin to be e)-.2 F -.15 -(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 -(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 566.4 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 -(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 578.4 R F2(names)4.082 E F0 1.582(are enabled.) +3.048 E(HHH)180 715.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(57)190.95 +E 0 Cg EP +%%Page: 58 58 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([)2.5 E F1A F0 2.5 +(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 +SF(\214lename)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .278 +(Enable and disable b)144 96 R .278(uiltin shell commands.)-.2 F .278 +(Disabling a b)5.278 F .278(uiltin allo)-.2 F .278 +(ws a disk command which has)-.25 F .833(the same name as a shell b)144 +108 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834 +(cuted without specifying a full pathname, e).15 F -.15(ve)-.25 G 3.334 +(nt).15 G(hough)-3.334 E .99(the shell normally searches for b)144 120 R +.989(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 +.989(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 +(abled; otherwise,)144 132 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F -F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 590.4 R .081(uiltin v) --.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) -2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 602.4 S 1.524 +F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0 +SF -.666(PA)4.082 G(TH)-.189 E F0 .081(instead of the shell b)144 144 R +.081(uiltin v)-.2 F .081(ersion, run)-.15 F/F4 10/Courier@0 SF .081 +(enable -n test)2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 156 S 1.524 (iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 614.4 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 168 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F .367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 626.4 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 180 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -638.4 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +192 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F (If)5.098 E F12.598 E F0 1.916 -(is supplied, the list printed includes all b)144 650.4 R 1.916 +(is supplied, the list printed includes all b)144 204 R 1.916 (uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 662.4 R F12.879 E F0 .379 +(enabled. If)144 216 R F12.879 E F0 .379 (is supplied, the output is restricted to the POSIX)2.879 F F2(special) 2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 674.4 R F2(name)3.854 E F0 .994 +(alue)-.25 E .994(is 0 unless a)144 228 R F2(name)3.854 E F0 .994 (is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 -686.4 Q F1 -2.3 -.15(ev a)108 703.2 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 715.2 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C -.671(re read and concatenated together into a single command.)-3.171 F -.67(This command is then read)5.67 F .495(and e)144 727.2 R -.15(xe)-.15 -G .495(cuted by the shell, and its e).15 F .495 +-.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 240 +Q F1 -2.3 -.15(ev a)108 256.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0 +(...])2.5 E(The)144 268.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 +(re read and concatenated together into a single command.)-3.171 F .67 +(This command is then read)5.67 F .495(and e)144 280.8 R -.15(xe)-.15 G +.495(cuted by the shell, and its e).15 F .495 (xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) --2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(55)185.955 E 0 Cg EP -%%Page: 56 56 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(or only null ar)144 84 Q(guments,)-.18 E/F1 10/Times-Bold@0 SF --2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1(exec)108 100.8 Q F0 -([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 292.8 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 309.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) --.37 E F0(]])A(If)144 112.8 Q F2(command)3.006 E F0 .306 +-.37 E F0(]])A(If)144 321.6 Q F2(command)3.006 E F0 .306 (is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 (wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E -(guments)-.37 E F0(become)3.075 E .176(the ar)144 124.8 R .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 333.6 R .176 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G (he)-2.676 E F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 136.8 R .5(gument passed to)-.18 +(ginning of)-.15 F .5(the zeroth ar)144 345.6 R .5(gument passed to)-.18 F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 148.8 Q F0 .638 +.499(option causes)2.999 F F2(com-)3.199 E(mand)144 357.6 Q F0 .638 (to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 160.8 R 1.077(gument to the e)-.18 F -.15 +3.319 F 1.078(zeroth ar)144 369.6 R 1.077(gument to the e)-.18 F -.15 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) -.15 F(non-interacti)144 172.8 Q .617 -.15(ve s)-.25 H .317(hell e).15 F -.317(xits, unless the shell option)-.15 F F1(execfail)2.817 E F0 .318 -(is enabled, in which case it returns f)2.817 F(ail-)-.1 E 2.505 -(ure. An)144 184.8 R(interacti)2.505 E .305 -.15(ve s)-.25 H .005 -(hell returns f).15 F .005(ailure if the \214le cannot be e)-.1 F -.15 -(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 196.8 Q 3.036(yr)-.15 G .536 +.15 F(non-interacti)144 381.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 +F(ail-)-.1 E 2.505(ure. An)144 393.6 R(interacti)2.505 E .305 -.15(ve s) +-.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) +-.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 +(is not speci\214ed,)3.275 F(an)144 405.6 Q 3.036(yr)-.15 G .536 (edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 (ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 208.8 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 225.6 Q F0([)2.5 E F2(n)A F0 +(If there is a redirection)5.536 F(error)144 417.6 Q 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 434.4 Q F0([)2.5 E F2(n)A F0 6.29(]C)C .096(ause the shell to e)-6.29 F .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 237.6 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 -/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 254.4 Q F0([)2.5 -E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 266.4 Q F0 .256(The supplied)144 278.4 R -F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F -.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 290.4 R(the)2.627 E F1 -2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) -.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 302.4 Q F0 .659 -(option is supplied, a list of all names that are e)3.159 F .66 -(xported in this shell is printed.)-.15 F(The)5.66 E F13.16 E F0 -(option)3.16 E 1.587(causes the e)144 314.4 R 1.587 -(xport property to be remo)-.15 F -.15(ve)-.15 G 4.086(df).15 G 1.586 -(rom each)-4.086 F F2(name)4.086 E F0 6.586(.I)C 4.086(fav)-6.586 G -1.586(ariable name is follo)-4.336 F 1.586(wed by)-.25 F(=)144 326.4 Q -F2(wor)A(d)-.37 E F0 2.803(,t)C .303(he v)-2.803 F .303(alue of the v) --.25 F .304(ariable is set to)-.25 F F2(wor)2.804 E(d)-.37 E F0(.)A F1 -(export)5.304 E F0 .304(returns an e)2.804 F .304 -(xit status of 0 unless an in)-.15 F -.25(va)-.4 G(lid).25 E .294 -(option is encountered, one of the)144 338.4 R F2(names)2.793 E F0 .293 -(is not a v)2.793 F .293(alid shell v)-.25 F .293(ariable name, or)-.25 -F F12.793 E F0 .293(is supplied with a)2.793 F F2(name)144.36 -350.4 Q F0(that is not a function.)2.68 E F1(fc)108 367.2 Q F0([)2.5 E +-.15 F -.15(exe)144 446.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 +E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E +F1(export)108 463.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name) +-2.5 E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 475.2 Q +F0 .256(The supplied)144 487.2 R F2(names)3.117 E F0 .257(are mark)3.027 +F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 +(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627 +(commands. If)144 499.2 R(the)2.627 E F12.627 E F0 .127 +(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E +F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E +F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1 +144 511.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F +.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 +2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 523.2 S +1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G +1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 535.2 S .741(lue of the v) +.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 +(export)5.741 E F0 .742(returns an e)3.242 F .742 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) +.25 F .032(encountered, one of the)144 547.2 R F2(names)2.532 E F0 .032 +(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 +(that)2.711 E(is not a function.)144 559.2 Q F1(fc)108 576 Q F0([)2.5 E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -379.2 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 -(cmd)-2.5 E F0(])A .477(Fix Command.)144 391.2 R .478 -(In the \214rst form, a range of commands from)5.477 F F2<8c72>4.888 E -(st)-.1 E F0(to)3.658 E F2(last)3.068 E F0 .478 -(is selected from the his-)3.658 F .882(tory list.)144 403.2 R F2 -.45 -(Fi)5.882 G -.1(rs).45 G(t).1 E F0(and)4.062 E F2(last)3.472 E F0 .882 -(may be speci\214ed as a string \(to locate the last command be)4.062 F -.881(ginning with)-.15 F .797(that string\) or as a number \(an inde)144 -415.2 R 3.297(xi)-.15 G .797(nto the history list, where a ne)-3.297 F --.05(ga)-.15 G(ti).05 E 1.097 -.15(ve n)-.25 H .797(umber is used as an) -.15 F(of)144 427.2 Q .277(fset from the current command number\).)-.25 F -(If)5.277 E F2(last)2.867 E F0 .276 -(is not speci\214ed it is set to the current command)3.457 F .092 -(for listing \(so that)144 439.2 R/F4 10/Courier@0 SF .092 -(fc \255l \25510)2.592 F F0 .092(prints the last 10 commands\) and to) -2.592 F F2<8c72>4.502 E(st)-.1 E F0 2.592(otherwise. If)3.272 F F2<8c72> -4.502 E(st)-.1 E F0 .093(is not)3.273 F -(speci\214ed it is set to the pre)144 451.2 Q -(vious command for editing and \25516 for listing.)-.25 E(The)144 475.2 -Q F12.522 E F0 .022 +588 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +(cmd)-2.5 E F0(])A .431 +(The \214rst form selects a range of commands from)144 600 R F2<8c72> +4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 +(from the history list and displays or)3.612 F .142(edits and re-e)144 +612 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 +(may be speci\214ed as a string \(to locate the last command)3.321 F(be) +144 624 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of) +144 636 R .315(fset from the current command number\).)-.25 F(If)5.315 E +F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F +(-)-.2 E .948(rent command for listing \(so that)144 648 R F4 .948 +(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) +3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) +144 660 R F2<8c72>4.41 E(st)-.1 E F0 +(is not speci\214ed it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 684 Q +F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 487.2 R .438(If the) -5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 +(rses the order of).15 F .438(the commands.)144 696 R .438(If the)5.438 +F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 499.2 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E -F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835 -(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 511.2 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E -F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 -F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 523.2 R .951 -(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 -(When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 535.2 S(cuted.).15 E .039(In the second form,)144 559.2 R -F2(command)2.539 E F0 .039(is re-e)2.539 F -.15(xe)-.15 G .039 -(cuted after each instance of).15 F F2(pat)2.54 E F0 .04(is replaced by) -2.54 F F2 -.37(re)2.54 G(p).37 E F0 5.04(.A)C(useful)-2.5 E .406 -(alias to use with this is)144 571.2 R F4 .406(r='fc \255s')2.906 F F0 -2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F4 6.406(rc)2.906 -G(c)-6.406 E F0 .406(runs the last command be)2.906 F .406(ginning with) --.15 F F4(cc)144 583.2 Q F0(and typing)2.5 E F4(r)2.5 E F0(re-e)2.5 E --.15(xe)-.15 G(cutes the last command.).15 E .142 -(If the \214rst form is used, the return v)144 607.2 R .142 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 -(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .455(specify history lines out of range.)144 619.2 -R .454(If the)5.454 F F12.954 E F0 .454 -(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454 -(alue of the)-.25 F .787(last command e)144 631.2 R -.15(xe)-.15 G .787 -(cuted or f).15 F .788 -(ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F 1.136 -(second form is used, the return status is that of the command re-e)144 -643.2 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 655.2 Q -(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 672 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)144 -684 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 696 Q 3.117(sn)-.55 G .617 -(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617 -(is used.)3.117 F .617(The return v)5.617 F .616 -(alue is that of the command placed into the)-.25 F(fore)144 708 Q .362 -(ground, or f)-.15 F .362(ailure if run when job control is disabled or) --.1 F 2.862(,w)-.4 G .363(hen run with job control enabled, if)-2.862 F -F2(jobspec)145.74 720 Q F0 .004(does not specify a v)2.815 F .004 -(alid job or)-.25 F F2(jobspec)4.244 E F0 .004(speci\214es a job that w) -2.814 F .004(as started without job control.)-.1 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(56)185.955 E 0 Cg EP -%%Page: 57 57 +.335(the editor gi)144 708 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) +.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F +(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E 1.668(the v)144 720 R 1.668(alue of the)-.25 F F3(FCEDIT)4.168 +E F0 -.25(va)3.918 G 1.668(riable is used, and the v).25 F 1.669 +(alue of)-.25 F F3(EDIT)4.169 E(OR)-.162 E F0(if)3.919 E F3(FCEDIT)4.169 +E F0 1.669(is not set.)3.919 F(If)6.669 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(58)190.95 E 0 Cg EP +%%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(getopts)108 84 Q/F2 10/Times-Italic@0 SF -(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 -96 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F2 -(optstring)6.023 E F0 .793(contains the option)3.513 F .15 -(characters to be recognized; if a character is follo)144 108 R .149 -(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 --.15(ve a)-.2 H(n).15 E(ar)144 120 Q .578 -(gument, which should be separated from it by white space.)-.18 F .579 +-.35 E .187(neither v)144 84 R .187(ariable is set,)-.25 F/F1 10 +/Times-Italic@0 SF(vi)4.353 E F0 .187(is used.)4.353 F .187 +(When editing is complete, the edited commands are echoed and)5.187 F +-.15(exe)144 96 S(cuted.).15 E .788(In the second form,)144 120 R F1 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +(cuted after each instance of).15 F F1(pat)3.288 E F0 .788 +(is replaced by)3.288 F F1 -.37(re)3.289 G(p).37 E F0(.)A F1(Com-)5.789 +E(mand)144 132 Q F0 .347(is intepreted the same as)2.847 F F1<8c72>2.847 +E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 +(useful alias to use with this is)-2.5 F/F2 10/Courier@0 SF .346 +(r='fc \255s')2.847 F F0 2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E +(typing)144 144 Q F2 7.165(rc)3.665 G(c)-7.165 E F0 1.165 +(runs the last command be)3.665 F 1.166(ginning with)-.15 F F2(cc)3.666 +E F0 1.166(and typing)3.666 F F2(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15 +G 1.166(cutes the last com-).15 F(mand.)144 156 Q .142 +(If the \214rst form is used, the return v)144 180 R .142 +(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322 +E F1(last)2.732 E F0 .454(specify history lines out of range.)144 192 R +.454(If the)5.454 F/F3 10/Times-Bold@0 SF2.954 E F0 .454 +(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 +(alue of the)-.25 F .788(last command e)144 204 R -.15(xe)-.15 G .788 +(cuted or f).15 F .787 +(ailure if an error occurs with the temporary \214le of commands.)-.1 F +.787(If the)5.787 F 1.135 +(second form is used, the return status is that of the command re-e)144 +216 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F1(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 228 Q +(alid history line, in which case)-.25 E F3(fc)2.5 E F0(returns f)2.5 E +(ailure.)-.1 E F3(fg)108 244.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) +144 256.8 Q F1(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 +(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 +(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0 +1.413(is not present, the)4.223 F(shell')144 268.8 Q 3.116(sn)-.55 G +.616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)-.37 F F0 .617 +(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 280.8 Q +.363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 292.8 Q +F0 .004(does not specify a v)2.814 F .004(alid job or)-.25 F F1(jobspec) +4.244 E F0 .004(speci\214es a job that w)2.814 F .004 +(as started without job control.)-.1 F F3(getopts)108 309.6 Q F1 +(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F3(getopts)144 +321.6 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.294 F F1 +(optstring)6.023 E F0 .793(contains the option)3.513 F .149 +(characters to be recognized; if a character is follo)144 333.6 R .15 +(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 +-.15(ve a)-.2 H(n).15 E(ar)144 345.6 Q .579 +(gument, which should be separated from it by white space.)-.18 F .578 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 132 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) -4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 -(option in the shell v)144 144 R(ariable)-.25 E F2(name)3.296 E F0 3.296 -(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797(if it does not e) -3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G 3.297(ft)-3.297 G -.797(he ne)-3.297 F(xt)-.15 E(ar)144 156 Q .085 -(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) -4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 -(or a shell script is in)144 168 R -.2(vo)-.4 G -.1(ke).2 G 3.345 -(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 -(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 180 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A F0 -.803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 -(automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 192 R F1(getopts)2.793 E F0 .293 +(acters may not be used as option characters.)144 357.6 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F3(getopts) +4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 +(option in the shell v)144 369.6 R(ariable)-.25 E F1(name)3.297 E F0 +3.297(,i).18 G(nitializing)-3.297 E F1(name)3.657 E F0 .797 +(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G +3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 381.6 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E/F4 9 +/Times-Bold@0 SF(OPTIND)2.585 E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND) +4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .846 +(or a shell script is in)144 393.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F3 +(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 +(into the v)144 405.6 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A +F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804 +(automatically; it must be manually)3.054 F .294 +(reset between multiple calls to)144 417.6 R F3(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 204 Q -2.044(When the end of options is encountered,)144 228 R F1(getopts)4.543 -E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F3(OPTIND)144 240 Q F0 +2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 429.6 +Q 2.043(When the end of options is encountered,)144 453.6 R F3(getopts) +4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 +(alue greater than zero.)-.25 F F4(OPTIND)144 465.6 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E F1(getopts)144 264 Q F0 2.392 -(normally parses the positional parameters, b)4.892 F 2.392 -(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 -276 Q F0(parses those instead.)2.5 E F1(getopts)144 300 Q F0 1.166 -(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.263 -(reporting is used.)144 312 R 1.263 -(In normal operation diagnostic messages are printed when in)6.263 F --.25(va)-.4 G 1.263(lid options or).25 F .394(missing option ar)144 324 -R .394(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) --.25 E F3(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F -(will be displayed, e)144 336 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 -G(he \214rst character of)-2.5 E F2(optstring)2.73 E F0(is not a colon.) -2.72 E .666(If an in)144 360 R -.25(va)-.4 G .666(lid option is seen,) -.25 F F1(getopts)3.166 E F0 .667(places ? into)3.167 F F2(name)3.527 E -F0 .667(and, if not silent, prints an error message)3.347 F .4 -(and unsets)144 372 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1 -(getopts)2.899 E F0 .399 -(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 -384 Q 1.241(If a required ar)144 408 R 1.241(gument is not found, and) --.18 F F1(getopts)3.741 E F0 1.241(is not silent, a question mark \() -3.741 F F1(?).833 E F0 3.742(\)i).833 G 3.742(sp)-3.742 G 1.242 -(laced in)-3.742 F F2(name)144 420 Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 -E F0 .234(is unset, and a diagnostic message is printed.)2.485 F(If) -5.234 E F1(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1 -(:).833 E F0(\)).833 E(is placed in)144 432 Q F2(name)2.86 E F0(and)2.68 -E F3(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 -E F1(getopts)144 456 Q F0 .902 +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F3(getopts)144 489.6 Q F0 2.393 +(normally parses the positional parameters, b)4.893 F 2.392 +(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 +(ni).15 G(n)-4.892 E F1(ar)4.892 E(gs)-.37 E F0(,).27 E F3(getopts)144 +501.6 Q F0(parses those instead.)2.5 E F3(getopts)144 525.6 Q F0 1.165 +(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F +1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.166 +(is a colon,)3.886 F F1(silent)4.006 E F0(error)4.346 E 1.071 +(reporting is used.)144 537.6 R 1.071 +(In normal operation, diagnostic messages are printed when in)6.071 F +-.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 549.6 +R .393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) +-.25 E F4(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F +(will be displayed, e)144 561.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft) +-2.5 G(he \214rst character of)-2.5 E F1(optstring)2.73 E F0 +(is not a colon.)2.72 E .667(If an in)144 585.6 R -.25(va)-.4 G .667 +(lid option is seen,).25 F F3(getopts)3.167 E F0 .667(places ? into) +3.167 F F1(name)3.527 E F0 .666 +(and, if not silent, prints an error message)3.347 F .399(and unsets)144 +597.6 R F4(OPT)2.899 E(ARG)-.81 E F5(.)A F0(If)4.899 E F3(getopts)2.899 +E F0 .399(is silent, the option character found is placed in)2.899 F F4 +(OPT)2.899 E(ARG)-.81 E F0 .4(and no)2.65 F +(diagnostic message is printed.)144 609.6 Q 1.242(If a required ar)144 +633.6 R 1.242(gument is not found, and)-.18 F F3(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F3(?).833 E F0 3.741 +(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F F1(name)144 645.6 +Q F0(,).18 E F4(OPT)2.734 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F3 +(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F3(:).833 E +F0(\)).833 E(is placed in)144 657.6 Q F1(name)2.86 E F0(and)2.68 E F4 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F3 +(getopts)144 681.6 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 468 Q F1(hash)108 484.8 -Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E -F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 -(Each time)144 496.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 -G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) -3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 508.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 -.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .099(If the)144 520.8 -R F12.599 E F0 .099 -(option is supplied, no path search is performed, and)2.599 F F2 -(\214lename)4.508 E F0 .098(is used as the full \214le name)2.778 F -1.711(of the command.)144 532.8 R(The)6.711 E F14.211 E F0 1.711 -(option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 -.833(option causes the shell to for)144 544.8 R .833 +3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 693.6 Q(GNU Bash 4.3)72 +768 Q(2014 February 2)141.79 E(59)190.95 E 0 Cg EP +%%Page: 60 60 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(hash)108 84 Q F0([)2.5 E F1(\255lr)A F0 2.5 +(][)C F1-2.5 E/F2 10/Times-Italic@0 SF(\214lename)2.5 E F0 2.5(][) +C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858(Each time)144 +96 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 G -.1(ke).2 G .858 +(d, the full pathname of the command).1 F F2(name)3.718 E F0 .858 +(is determined by searching)3.538 F .956(the directories in)144 108 R F1 +($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An) +5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 +(viously-remembered pathname is discarded.)-.25 F .242(If the)144 120 R +F12.742 E F0 .243 +(option is supplied, no path search is performed, and)2.742 F F2 +(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712 +(of the command.)144 132 R(The)6.712 E F14.212 E F0 1.711 +(option causes the shell to for)4.212 F 1.711 +(get all remembered locations.)-.18 F(The)6.711 E F14.211 E F0 +.833(option causes the shell to for)144 144 R .833 (get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 556.8 R F2(name) -3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F -F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -568.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 -.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 +3.333 F .704(plied, the full pathname to which each)144 156 R F2(name) +3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F +F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 +168 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 .795 +(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 3.295 E F0 .795(option causes)3.295 F .934 -(output to be displayed in a format that may be reused as input.)144 -580.8 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G -.935(n, or if).15 F(only)144 592.8 Q F12.822 E F0 .322 -(is supplied, information about remembered commands is printed.)2.822 F -.321(The return status is true)5.321 F(unless a)144 604.8 Q F2(name)2.86 -E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F1(help)108 621.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 -633.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 -G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 -645.6 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .306 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 657.6 Q F1 -144 669.6 Q F0(Display a short description of each)24.74 E F2 -(pattern)2.5 E F1144 681.6 Q F0(Display the description of each) +(output to be displayed in a format that may be reused as input.)144 180 +R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G .934 +(n, or if).15 F(only)144 192 Q F12.821 E F0 .321 +(is supplied, information about remembered commands is printed.)2.821 F +.322(The return status is true)5.322 F(unless a)144 204 Q F2(name)2.86 E +F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) +.25 E F1(help)108 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 +(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 +232.8 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 +G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144 +244.8 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 +(therwise help for all the b)-2.807 F .307 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1 +144 268.8 Q F0(Display a short description of each)24.74 E F2 +(pattern)2.5 E F1144 280.8 Q F0(Display the description of each) 21.97 E F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat) --2.5 E F1144 693.6 Q F0 +-2.5 E F1144 292.8 Q F0 (Display only a short usage synopsis for each)26.41 E F2(pattern)2.5 E -F0(The return status is 0 unless no command matches)144 710.4 Q F2 -(pattern)2.5 E F0(.).24 E(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 -E(57)185.955 E 0 Cg EP -%%Page: 58 58 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(history [)108 84 Q/F2 10/Times-Italic@0 SF -(n)A F1(])A(history \255c)108 96 Q(history \255d)108 108 Q F2(of)2.5 E -(fset)-.18 E F1(history \255anrw)108 120 Q F0([)2.5 E F2(\214lename)A F0 -(])A F1(history \255p)108 132 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A -2.5(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 144 Q F2(ar)2.5 E(g) --.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 156 -S .752 +F0(The return status is 0 unless no command matches)144 309.6 Q F2 +(pattern)2.5 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A +(history \255c)108 338.4 Q(history \255d)108 350.4 Q F2(of)2.5 E(fset) +-.18 E F1(history \255anrw)108 362.4 Q F0([)2.5 E F2(\214lename)A F0(])A +F1(history \255p)108 374.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 386.4 Q F2(ar)2.5 E(g) +-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +398.4 S .752 (th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 168 R .38(An ar)5.38 F .38(gument of)-.18 F +.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 +G .38(been modi\214ed.)144 410.4 R .38(An ar)5.38 F .38(gument of)-.18 F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 180 Q(T)-.855 E F0 .264 -(is set and not null, it is used as a format string for)2.514 F F2 -(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 192 R 6.019(.N)-.65 G +/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 422.4 Q(T)-.855 E F0 .265 +(is set and not null, it is used as a format string for)2.515 F F2 +(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 +(ciated with each displayed history entry)144 434.4 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 204 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 446.4 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 216 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 -E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 228 Q F0 +(not, the v)144 458.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 470.4 Q F0 (Clear the history list by deleting all the entries.)25.86 E F1144 -240 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) -180 252 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1144 264 Q F0 .599 -(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.099('h)-.74 G .598 -(istory lines \(history lines entered since the be)-3.099 F .598 -(ginning of the current)-.15 F F1(bash)180 276 Q F0 -(session\) to the history \214le.)2.5 E F1144 288 Q F0 .854(Read \ -the history lines not already read from the history \214le into the cur\ -rent history list.)24.74 F .773 -(These are lines appended to the history \214le since the be)180 300 R -.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E -(sion.)180 312 Q F1144 324 Q F0(Read the contents of the history \ -\214le and use them as the current history)25.86 E(.)-.65 E F1144 -336 Q F0(Write the current history to the history \214le, o)23.08 E -.15 -(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G(ontents.) --2.5 E F1144 348 Q F0 .625 +482.4 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) +180 494.4 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1144 506.4 Q F0 .598 +(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.098('h)-.74 G .598 +(istory lines \(history lines entered since the be)-3.098 F .599 +(ginning of the current)-.15 F F1(bash)180 518.4 Q F0 +(session\) to the history \214le.)2.5 E F1144 530.4 Q F0 .854(Rea\ +d the history lines not already read from the history \214le into the c\ +urrent history list.)24.74 F .772 +(These are lines appended to the history \214le since the be)180 542.4 R +.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E +(sion.)180 554.4 Q F1144 566.4 Q F0(Read the contents of the hist\ +ory \214le and append them to the current history list.)25.86 E F1 +144 578.4 Q F0(Write the current history list to the history \214le, o) +23.08 E -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 590.4 Q F0 .626 (Perform history substitution on the follo)24.74 F(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F -2.975(output. Does)180 360 R .475 +3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F +2.975(output. Does)180 602.4 R .475 (not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 372 Q(xpansion.)-.15 E F1144 384 Q F0 .362 -(Store the)26.41 F F2(ar)3.192 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 -(he last command in the history list is)-5.363 F(remo)180 396 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 412.8 R F3(HISTTIMEFORMA)2.645 E(T) +(normal history e)180 614.4 Q(xpansion.)-.15 E F1144 626.4 Q F0 +.363(Store the)26.41 F F2(ar)3.193 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 +(he last command in the history list is)-5.363 F(remo)180 638.4 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 655.2 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .668(entry is written to the history \214le, mark)144 424.8 R .669 -(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 -(hen the history)-5.669 F .956(\214le is read, lines be)144 436.8 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F .415 -(are interpreted as timestamps for the pre)144 448.8 R .416 -(vious history line.)-.25 F .416(The return v)5.416 F .416 +.25 F .669(entry is written to the history \214le, mark)144 667.2 R .669 +(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 +(hen the history)-5.668 F .955(\214le is read, lines be)144 679.2 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F .416 +(are interpreted as timestamps for the pre)144 691.2 R .416 +(vious history line.)-.25 F .416(The return v)5.416 F .415 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 460.8 R -.25(va)-.4 G(lid).25 E F2(of)2.999 E(fset)-.18 E F0 -(is)2.999 E(supplied as an ar)144 472.8 Q(gument to)-.18 E F12.5 E -F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E -(xpansion supplied as an ar)-.15 E(gument to)-.18 E F12.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F1(jobs)108 489.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 -(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 501.6 Q F2(command) -2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 E F0(... ])2.5 E -(The \214rst form lists the acti)144 513.6 Q .3 -.15(ve j)-.25 H 2.5 +, an in)144 703.2 R -.25(va)-.4 G(lid).25 E F2(of)3 E(fset)-.18 E F0(is) +3 E(supplied as an ar)144 715.2 Q(gument to)-.18 E F12.5 E F0 2.5 +(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E(xpansion supplied as an ar)-.15 +E(gument to)-.18 E F12.5 E F0 -.1(fa)2.5 G(ils.).1 E(GNU Bash 4.3) +72 768 Q(2014 February 2)141.79 E(60)190.95 E 0 Cg EP +%%Page: 61 61 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(jobs)108 84 Q F0([)2.5 E F1(\255lnprs)A F0 +2.5(][)C/F2 10/Times-Italic@0 SF(jobspec)A F0(... ])2.5 E F1(jobs \255x) +108 96 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 E F0(... ])2.5 +E(The \214rst form lists the acti)144 108 Q .3 -.15(ve j)-.25 H 2.5 (obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 525.6 Q F0 +(wing meanings:)-.25 E F1144 120 Q F0 (List process IDs in addition to the normal information.)27.52 E F1 -144 537.6 Q F0 .193(Display information only about jobs that ha) -24.74 F .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 F -.194(as last noti-)-.1 F(\214ed of their status.)180 549.6 Q F1144 -561.6 Q F0(List only the process ID of the job')24.74 E 2.5(sp)-.55 G -(rocess group leader)-2.5 E(.)-.55 E F1144 573.6 Q F0 -(Restrict output to running jobs.)25.86 E F1144 585.6 Q F0 -(Restrict output to stopped jobs.)26.41 E(If)144 602.4 Q F2(jobspec) -4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 -(n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(an in)144 614.4 Q -.25 +144 132 Q F0 .194(Display information only about jobs that ha) +24.74 F .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 F +.193(as last noti-)-.1 F(\214ed of their status.)180 144 Q F1144 +156 Q F0(List only the process ID of the job')24.74 E 2.5(sp)-.55 G +(rocess group leader)-2.5 E(.)-.55 E F1144 168 Q F0 +(Display only running jobs.)25.86 E F1144 180 Q F0 +(Display only stopped jobs.)26.41 E(If)144 196.8 Q F2(jobspec)4.553 E F0 +.313(is gi)3.123 F -.15(ve)-.25 G .313 +(n, output is restricted to information about that job).15 F 5.314(.T) +-.4 G .314(he return status is 0 unless)-5.314 F(an in)144 208.8 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 631.2 R F1 -2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 225.6 R F1 +2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 643.2 Q +3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394 +(with the corre-)3.164 F(sponding process group ID, and e)144 237.6 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) 2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F1(kill)108 660 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 +F1(kill)108 254.4 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 (][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 -(kill \255l)108 672 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G -(it_status).2 E F0(])A .12(Send the signal named by)144 684 R F2 -(sigspec)2.96 E F0(or)2.93 E F2(signum)2.96 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2 -(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)2.929 E .318 -(either a case-insensiti)144 696 R .618 -.15(ve s)-.25 H .318 -(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319 -(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 708 Q F2(signum)4.189 E F0 -1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) +(kill \255l)108 266.4 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 +G(it_status).2 E F0(])A .119(Send the signal named by)144 278.4 R F2 +(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 +(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 +(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 +(either a case-insensiti)144 290.4 R .619 -.15(ve s)-.25 H .319 +(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318 +(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 +(pre\214x\) or a signal)2.568 F(number;)144 302.4 Q F2(signum)4.188 E F0 +1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 720 Q .522(gument of)-.18 F -F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 -F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F -F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(58)185.955 E 0 Cg -EP -%%Page: 59 59 +1.349(is assumed.)3.599 F(An)6.349 E(ar)144 314.4 Q .523(gument of)-.18 +F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an) +5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) +.18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 +(n, the names).15 F .28(of the signals corresponding to the ar)144 326.4 +R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E +F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 338.4 Q .378(gument to)-.18 F +F12.878 E F0 .378 +(is a number specifying either a signal number or the e)2.878 F .377 +(xit status of a process termi-)-.15 F .593(nated by a signal.)144 350.4 +R F1(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F +.593(as successfully sent, or f)-.1 F .594(alse if an error)-.1 F +(occurs or an in)144 362.4 Q -.25(va)-.4 G(lid option is encountered.) +.25 E F1(let)108 379.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 +E F0(...])2.5 E(Each)144 391.2 Q F2(ar)3.027 E(g)-.37 E F0 .197 +(is an arithmetic e)2.917 F .197(xpression to be e)-.15 F -.25(va)-.25 G +.196(luated \(see).25 F F3 .196(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855 +(AT)-.54 G(ION).855 E F0(abo)2.446 E -.15(ve)-.15 G 2.696(\). If).15 F +(the last)144 403.2 Q F2(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G +(luates to 0,).25 E F1(let)2.5 E F0(returns 1; 0 is returned otherwise.) +2.5 E F1(local)108 420 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(name)-2.5 +E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E -.15(Fo)144 432 S 2.56(re) +.15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06(ariable named) +-.25 F F2(name)2.92 E F0 .06(is created, and assigned)2.74 F F2(value) +2.56 E F0 5.06(.T).18 G(he)-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F +(an)144 444 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653 +(he options accepted by)-3.153 F F1(declar)3.153 E(e)-.18 E F0 5.652(.W) +C(hen)-5.652 E F1(local)3.152 E F0 .652 +(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 +456 Q F2(name)3.72 E F0 .86(to ha)3.54 F 1.16 -.15(ve a v)-.2 H .861 +(isible scope restricted to that function and its children.).15 F -.4 +(Wi)5.861 G .861(th no operands,).4 F F1(local)144 468 Q F0 1.165 +(writes a list of local v)3.665 F 1.165 +(ariables to the standard output.)-.25 F 1.165(It is an error to use) +6.165 F F1(local)3.664 E F0 1.164(when not)3.664 F .232 +(within a function.)144 480 R .233(The return status is 0 unless)5.232 F +F1(local)2.733 E F0 .233(is used outside a function, an in)2.733 F -.25 +(va)-.4 G(lid).25 E F2(name)3.093 E F0(is)2.913 E(supplied, or)144 492 Q +F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 +508.8 Q F0(Exit a login shell.)9.33 E F1(map\214le)108 525.6 Q F0([)2.5 +E F1A F2(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 +2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5 +(][)C F1-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac) +2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2 +(arr)-2.5 E(ay)-.15 E F0(])A F1 -.18(re)108 537.6 S(adarray).18 E F0([) +2.5 E F1A F2(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 +E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E +F0 2.5(][)C F1-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2 +(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 +2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0(])A .351 +(Read lines from the standard input into the inde)144 549.6 R -.15(xe) +-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.85 E +(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35(rom \214le descriptor) +-2.85 F F2(fd)2.85 E F0 1.248(if the)144 561.6 R F13.748 E F0 +1.248(option is supplied.)3.748 F 1.249(The v)6.249 F(ariable)-.25 E F3 +(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F2(arr)3.749 E +(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,)-6.249 F(ha)144 +573.6 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1 +144 585.6 Q F0(Cop)24.74 E 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost)-2.5 E F2 +(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 +(is 0, all lines are copied.)2.5 E F1144 597.6 Q F0(Be)22.52 E +(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) +-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) +-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 609.6 Q F0 +(Discard the \214rst)26.41 E F2(count)2.5 E F0(lines read.)2.5 E F1 +144 621.6 Q F0(Remo)26.97 E .3 -.15(ve a t)-.15 H(railing ne).15 E +(wline from each line read.)-.25 E F1144 633.6 Q F0 +(Read lines from \214le descriptor)24.74 E F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 645.6 Q F0(Ev)23.08 E +(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2(quantum) +2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 657.6 +Q F0(Specify the number of lines read between each call to)25.86 E F2 +(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 674.4 Q F12.968 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 +(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 +(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +F0 .275(is e)2.775 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .274 +(ut before the array element is)-.2 F(assigned.)144 710.4 Q +(If not supplied with an e)144 727.2 Q(xplicit origin,)-.15 E F1 +(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E(GNU Bash 4.3)72 768 Q(2014 February 2) +141.79 E(61)190.95 E 0 Cg EP +%%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .28(of the signals corresponding to the ar)144 84 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E/F1 10 -/Times-Italic@0 SF -.2(ex)2.78 G(it_status).2 E F0(ar)144 96 Q .377 -(gument to)-.18 F/F2 10/Times-Bold@0 SF2.877 E F0 .378 -(is a number specifying either a signal number or the e)2.877 F .378 -(xit status of a process termi-)-.15 F .594(nated by a signal.)144 108 R -F2(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F -.593(as successfully sent, or f)-.1 F .593(alse if an error)-.1 F -(occurs or an in)144 120 Q -.25(va)-.4 G(lid option is encountered.).25 -E F2(let)108 136.8 Q F1(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0 -(...])2.5 E(Each)144 148.8 Q F1(ar)3.026 E(g)-.37 E F0 .196 -(is an arithmetic e)2.916 F .197(xpression to be e)-.15 F -.25(va)-.25 G -.197(luated \(see).25 F/F3 9/Times-Bold@0 SF .197(ARITHMETIC EV)2.697 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)2.447 E -.15(ve)-.15 G -2.697(\). If).15 F(the last)144 160.8 Q F1(ar)2.83 E(g)-.37 E F0 -.25 -(eva)2.72 G(luates to 0,).25 E F2(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 177.6 Q F0([)2.5 -E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C -(..])-2.5 E -.15(Fo)144 189.6 S 2.56(re).15 G .06(ach ar)-2.56 F .06 -(gument, a local v)-.18 F .06(ariable named)-.25 F F1(name)2.92 E F0 .06 -(is created, and assigned)2.74 F F1(value)2.56 E F0 5.06(.T).18 G(he) --5.06 E F1(option)2.56 E F0 .06(can be)2.56 F(an)144 201.6 Q 3.152(yo) --.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F2(declar) -3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F2(local)3.152 E F0 .653 -(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -213.6 Q F1(name)3.721 E F0 .861(to ha)3.541 F 1.161 -.15(ve a v)-.2 H -.861(isible scope restricted to that function and its children.).15 F --.4(Wi)5.86 G .86(th no operands,).4 F F2(local)144 225.6 Q F0 1.164 -(writes a list of local v)3.664 F 1.165 -(ariables to the standard output.)-.25 F 1.165(It is an error to use) -6.165 F F2(local)3.665 E F0 1.165(when not)3.665 F .233 -(within a function.)144 237.6 R .233(The return status is 0 unless)5.233 -F F2(local)2.733 E F0 .233(is used outside a function, an in)2.733 F --.25(va)-.4 G(lid).25 E F1(name)3.092 E F0(is)2.912 E(supplied, or)144 -249.6 Q F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2 -(logout)108 266.4 Q F0(Exit a login shell.)9.33 E F2(map\214le)108 283.2 -Q F0([)2.5 E F2A F1(count)2.5 E F0 2.5(][)C F2-2.5 E F1 -(origin)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5(][)C F2 --2.5 E F0 2.5(][)C F2-2.5 E F1(fd)2.5 E F0 2.5(][)C F2 --2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][)C F2-2.5 E F1(quantum) -2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0(])A F2 -.18(re)108 295.2 S -(adarray).18 E F0([)2.5 E F2A F1(count)2.5 E F0 2.5(][)C F2 --2.5 E F1(origin)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5 -(][)C F2-2.5 E F0 2.5(][)C F2-2.5 E F1(fd)2.5 E F0 2.5(][)C -F2-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][)C F2-2.5 E F1 -(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0(])A .35 -(Read lines from the standard input into the inde)144 307.2 R -.15(xe) --.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F1(arr)2.851 E -(ay)-.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351 -(rom \214le descriptor)-2.851 F F1(fd)2.851 E F0 1.249(if the)144 319.2 -R F23.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 -F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 -E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) --6.248 F(ha)144 331.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 343.2 Q F0(Cop)24.74 E 2.5(ya)-.1 G -2.5(tm)-2.5 G(ost)-2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1 -(count)2.5 E F0(is 0, all lines are copied.)2.5 E F2144 355.2 Q F0 -(Be)22.52 E(gin assigning to)-.15 E F1(arr)2.83 E(ay)-.15 E F0(at inde) -2.82 E(x)-.15 E F1(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 -E 2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F2144 367.2 Q F0 -(Discard the \214rst)26.41 E F1(count)2.5 E F0(lines read.)2.5 E F2 -144 379.2 Q F0(Remo)26.97 E .3 -.15(ve a t)-.15 H(railing ne).15 E -(wline from each line read.)-.25 E F2144 391.2 Q F0 -(Read lines from \214le descriptor)24.74 E F1(fd)2.5 E F0 -(instead of the standard input.)2.5 E F2144 403.2 Q F0(Ev)23.08 E -(aluate)-.25 E F1(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F1(quantum) -2.5 E F0(lines are read.)2.5 E(The)5 E F22.5 E F0 -(option speci\214es)2.5 E F1(quantum)2.5 E F0(.).32 E F2144 415.2 -Q F0(Specify the number of lines read between each call to)25.86 E F1 -(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 432 Q F22.967 E F0 .467 -(is speci\214ed without)2.967 F F22.967 E F0 2.967(,t)C .467 -(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F1 -(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 444 R 2.762(xo)-.15 G -2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\ -ned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 456 R(guments.)-.18 E F1(callbac)5.274 E(k)-.2 E -F0 .274(is e)2.774 F -.25(va)-.25 G .274 -(luated after the line is read b).25 F .275 -(ut before the array element is)-.2 F(assigned.)144 468 Q -(If not supplied with an e)144 484.8 Q(xplicit origin,)-.15 E F2 -(map\214le)2.5 E F0(will clear)2.5 E F1(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F2(map\214le)144 501.6 Q F0 1.906 -(returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F1(arr) -4.405 E(ay)-.15 E F0(is)4.405 E(in)144 513.6 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F1(arr)2.5 E(ay)-.15 E F0 +-.35 E/F1 10/Times-Bold@0 SF(map\214le)144 84 Q F0 1.905 +(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 +(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F/F2 10 +/Times-Italic@0 SF(arr)4.406 E(ay)-.15 E F0(is)4.406 E(in)144 96 Q -.25 +(va)-.4 G(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F2(popd)108 530.4 Q F0<5bad>2.5 E F2(n)A F0 2.5(][)C(+)-2.5 E F1(n)A F0 -2.5(][)C-2.5 E F1(n)A F0(])A(Remo)144 542.4 Q -.15(ve)-.15 G 2.799 -(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G -.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 -G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 -554.4 R F2(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 -(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 -F(wing)-.25 E(meanings:)144 566.4 Q F2144 578.4 Q F0 .551 +F1(popd)108 112.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 124.8 Q -.15(ve)-.15 G 2.8(se) +.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 +(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G +.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 +136.8 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 +(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 +F(wing)-.25 E(meanings:)144 148.8 Q F1144 160.8 Q F0 .551 (Suppresses the normal change of directory when remo)24.74 F .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 590.4 Q F2(+)144 602.4 Q F1(n)A -F0(Remo)25.3 E -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F1(n)2.64 E F0 +(that only the stack is manipulated.)180 172.8 Q F1(+)144 184.8 Q F2(n)A +F0(Remo)25.3 E -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 F -F2(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -614.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F4(popd +1)2.5 E F0(the second.)2.5 E F2144 626.4 Q F1(n)A F0 -(Remo)25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F1(n)3.759 E F0 -1.259(th entry counting from the right of the list sho)B 1.26(wn by)-.25 -F F2(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 -638.4 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0(remo)2.5 E -.15 -(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F4(popd -1)2.5 -E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 655.2 R F2(popd) -3.144 E F0 .644(command is successful, a)3.144 F F2(dirs)3.143 E F0 .643 -(is performed as well, and the return status is 0.)3.143 F F2(popd)5.643 -E F0 .415(returns f)144 667.2 R .415(alse if an in)-.1 F -.25(va)-.4 G -.415(lid option is encountered, the directory stack is empty).25 F 2.916 -(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 679.2 Q -(ails.)-.1 E F2(printf)108 696 Q F0([)2.5 E F2A F1(var)2.5 E F0(]) -A F1(format)2.5 E F0([)2.5 E F1(ar)A(guments)-.37 E F0(])A 1.437 -(Write the formatted)144 708 R F1(ar)3.937 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.937 F F1(format)3.936 -E F0 6.436(.T)C(he)-6.436 E F23.936 E F0 .126 -(option causes the output to be assigned to the v)144 720 R(ariable)-.25 -E F1(var)2.626 E F0 .126(rather than being printed to the standard)2.626 -F(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(59)185.955 E 0 Cg EP -%%Page: 60 60 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(output.)144 84 Q(The)144 108 Q/F1 10/Times-Italic@0 SF(format) -3.018 E F0 .517(is a character string which contains three types of obj\ -ects: plain characters, which are)3.018 F .704(simply copied to standar\ -d output, character escape sequences, which are con)144 120 R -.15(ve) --.4 G .704(rted and copied to).15 F .036(the standard output, and forma\ -t speci\214cations, each of which causes printing of the ne)144 132 R -.036(xt successi)-.15 F -.15(ve)-.25 G F1(ar)144 144 Q(gument)-.37 E F0 -5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F1 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B/F2 10 -/Times-Bold@0 SF(printf)3.032 E F0 .532(interprets the follo)3.032 F(w-) --.25 E(ing e)144 156 Q(xtensions:)-.15 E F2(%b)144 168 Q F0(causes)20.44 -E F2(printf)5.115 E F0 2.615(to e)5.115 F 2.615 -(xpand backslash escape sequences in the corresponding)-.15 F F1(ar) -5.115 E(gument)-.37 E F0(\(e)180 180 Q .608(xcept that)-.15 F F2(\\c) -3.108 E F0 .608(terminates output, backslashes in)3.108 F F2<5c08>3.108 -E F0(,)A F2(\\")3.108 E F0 3.108(,a)C(nd)-3.108 E F2(\\?)3.108 E F0 .608 +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 208.8 Q F2(n)A F0 +(Remo)25.3 E -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 +E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 +237.6 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 +(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) +3.143 F F1(popd)5.644 E F0 .416(returns f)144 249.6 R .416 +(alse if an in)-.1 F -.25(va)-.4 G .415 +(lid option is encountered, the directory stack is empty).25 F 2.915 +(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 261.6 Q +(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 +(Write the formatted)144 290.4 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(to the standard output under the control of the)3.936 F F2(format)3.937 +E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 +(option causes the output to be assigned to the v)144 302.4 R(ariable) +-.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) +2.626 F(output.)144 314.4 Q(The)144 338.4 Q F2(format)3.017 E F0 .517(i\ +s a character string which contains three types of objects: plain chara\ +cters, which are)3.017 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 350.4 R -.15(ve)-.4 G .703 +(rted and copied to).15 F .036(the standard output, and format speci\ +\214cations, each of which causes printing of the ne)144 362.4 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 Q(gument)-.37 E F0 +5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 386.4 Q +(xtensions:)-.15 E F1(%b)144 398.4 Q F0(causes)20.44 E F1(printf)5.115 E +F0 2.615(to e)5.115 F 2.615 +(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) +5.115 E(gument)-.37 E F0(\(e)180 410.4 Q .608(xcept that)-.15 F F1(\\c) +3.108 E F0 .608(terminates output, backslashes in)3.108 F F1<5c08>3.108 +E F0(,)A F1(\\")3.108 E F0 3.108(,a)C(nd)-3.108 E F1(\\?)3.108 E F0 .608 (are not remo)3.108 F -.15(ve)-.15 G .608(d, and octal).15 F(escapes be) -180 192 Q(ginning with)-.15 E F2(\\0)2.5 E F0 -(may contain up to four digits\).)2.5 E F2(%q)144 204 Q F0(causes)20.44 -E F2(printf)2.51 E F0 .01(to output the corresponding)2.51 F F1(ar)2.51 -E(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 216 Q F2(%\()144 228 Q F1(datefmt)A F2(\)T)A F0(causes)180 -240 Q F2(printf)4.403 E F0 1.904 -(to output the date-time string resulting from using)4.403 F F1(datefmt) -4.404 E F0 1.904(as a format)4.404 F .381(string for)180 252 R F1 -(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F1(ar) +180 422.4 Q(ginning with)-.15 E F1(\\0)2.5 E F0 +(may contain up to four digits\).)2.5 E F1(%q)144 434.4 Q F0(causes) +20.44 E F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2 +(ar)2.51 E(gument)-.37 E F0 .01(in a format that can be reused as shell) +2.51 F(input.)180 446.4 Q F1(%\()144 458.4 Q F2(datefmt)A F1(\)T)A F0 +(causes)180 470.4 Q F1(printf)4.404 E F0 1.904 +(to output the date-time string resulting from using)4.404 F F2(datefmt) +4.404 E F0 1.903(as a format)4.404 F .38(string for)180 482.4 R F2 +(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .457(of seconds since the epoch.)180 -264 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F -(current time, and -2 represents the time the shell w)180 276 Q(as in) --.1 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(Ar)144 292.8 Q .464(guments to n\ -on-string format speci\214ers are treated as C constants, e)-.18 F .463 -(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 304.8 +(ger representing the number)-.15 F .458(of seconds since the epoch.)180 +494.4 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F +.458(alues may be used: -1 represents the)-.25 F .847 +(current time, and -2 represents the time the shell w)180 506.4 R .847 +(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 +F .848(gument is speci-)-.18 F .355(\214ed, con)180 518.4 R -.15(ve)-.4 +G .355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G +2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) +-.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 +(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 530.4 Q +(vior)-.2 E(.)-.55 E(Ar)144 547.2 Q .463(guments to non-string format s\ +peci\214ers are treated as C constants, e)-.18 F .464 +(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 559.2 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.259(alue is the)-.25 F(ASCII v)144 316.8 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 333.6 Q F1(format)3.424 E -F0 .923(is reused as necessary to consume all of the)3.424 F F1(ar)3.423 -E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F1(format) -3.423 E F0 .923(requires more)3.423 F F1(ar)144 345.6 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.533 F .033 +-.25 F 1.258(alue is the)-.25 F(ASCII v)144 571.2 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 588 Q F2(format)3.423 E F0 +.923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 E +(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) +3.423 E F0 .924(requires more)3.424 F F2(ar)144 600 Q(guments)-.37 E F0 +.033(than are supplied, the e)2.534 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) -.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) --.25 F(as appropriate, had been supplied.)144 357.6 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F2(pushd) -108 374.4 Q F0([)2.5 E F2A F0 2.5(][)C(+)-2.5 E F1(n)A F0 2.5(][)C --2.5 E F1(n)A F0(])A F2(pushd)108 386.4 Q F0([)2.5 E F2A F0 -2.5(][)C F1(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\ -rectory stack, or rotates the stack, making the ne)144 398.4 R 3.139(wt) --.25 G .639(op of the)-3.139 F 1.315(stack the current w)144 410.4 R -1.315(orking directory)-.1 F 6.315(.W)-.65 G 1.315(ith no ar)-6.715 F -1.315(guments, e)-.18 F 1.316(xchanges the top tw)-.15 F 3.816(od)-.1 G -1.316(irectories and)-3.816 F .872 -(returns 0, unless the directory stack is empty)144 422.4 R 5.871(.A) --.65 G -.18(rg)-5.871 G .871(uments, if supplied, ha).18 F 1.171 -.15 -(ve t)-.2 H .871(he follo).15 F .871(wing mean-)-.25 F(ings:)144 434.4 Q -F2144 446.4 Q F0 .902(Suppresses the normal change of directory w\ +.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 612 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 628.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 640.8 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ +irectory stack, or rotates the stack, making the ne)144 652.8 R 3.14(wt) +-.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 664.8 R 1.316 +(orking directory)-.1 F 6.316(.W)-.65 G 1.315(ith no ar)-6.716 F 1.315 +(guments, e)-.18 F 1.315(xchanges the top tw)-.15 F 3.815(od)-.1 G 1.315 +(irectories and)-3.815 F .871 +(returns 0, unless the directory stack is empty)144 676.8 R 5.871(.A) +-.65 G -.18(rg)-5.871 G .872(uments, if supplied, ha).18 F 1.172 -.15 +(ve t)-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 688.8 Q +F1144 700.8 Q F0 .902(Suppresses the normal change of directory w\ hen adding directories to the stack, so that)24.74 F -(only the stack is manipulated.)180 458.4 Q F2(+)144 470.4 Q F1(n)A F0 -1.268(Rotates the stack so that the)25.3 F F1(n)3.768 E F0 1.267 -(th directory \(counting from the left of the list sho)B 1.267(wn by) --.25 F F2(dirs)180 482.4 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F2144 494.4 Q F1(n)A F0 -.92(Rotates the stack so that the)25.3 F F1(n)3.42 E F0 .92 +(only the stack is manipulated.)180 712.8 Q(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(62)190.95 E 0 Cg EP +%%Page: 63 63 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 +1.267(Rotates the stack so that the)25.3 F F2(n)3.767 E F0 1.268 +(th directory \(counting from the left of the list sho)B 1.268(wn by) +-.25 F F1(dirs)180 96 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F1144 108 Q F2(n)A F0 .92(Rotates the stack so that the)25.3 +F F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F2(dirs)180 506.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1(dir)144.35 518.4 Q F0(Adds)23.98 E F1(dir)2.85 E F0 -(to the directory stack at the top, making it the ne)3.23 E 2.5(wc)-.25 -G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .489(If the)144 535.2 -R F2(pushd)2.989 E F0 .489(command is successful, a)2.989 F F2(dirs) -2.988 E F0 .488(is performed as well.)2.988 F .488 -(If the \214rst form is used,)5.488 F F2(pushd)2.988 E F0 1.039 -(returns 0 unless the cd to)144 547.2 R F1(dir)3.889 E F0 -.1(fa)4.269 G -3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F2(pushd)3.54 E F0 -1.04(returns 0 unless the directory)3.54 F .847(stack is empty)144 559.2 -R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent directory stack element i\ -s speci\214ed, or the directory change to the)-.15 F(speci\214ed ne)144 -571.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E(ails.)-.1 E F2(pwd)108 -588 Q F0([)2.5 E F2(\255LP)A F0(])A .844 -(Print the absolute pathname of the current w)144 600 R .845 +F F1(dirs)180 120 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 +E F2(dir)144.35 132 Q F0(Adds)23.98 E F2(dir)3.137 E F0 .287 +(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) +-.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F +(if it had been supplied as the ar)180 144 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 160.8 R F1(pushd)2.989 +E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F +F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 172.8 R F2(dir) +3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) +-.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 +(stack is empty)144 184.8 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ + directory stack element is speci\214ed, or the directory change to the) +-.15 F(speci\214ed ne)144 196.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F1(pwd)108 213.6 Q F0([)2.5 E F1(\255LP)A F0(])A .844 +(Print the absolute pathname of the current w)144 225.6 R .845 (orking directory)-.1 F 5.845(.T)-.65 G .845 (he pathname printed contains no)-5.845 F .182(symbolic links if the)144 -612 R F22.681 E F0 .181(option is supplied or the)2.681 F F2 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2(set) -2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If) -144 624 R(the)3.263 E F23.263 E F0 .763 +237.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 +(set)2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263 +(enabled. If)144 249.6 R(the)3.263 E F13.263 E F0 .763 (option is used, the pathname printed may contain symbolic links.)3.263 F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 636 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 648 Q F2 -.18(re)108 664.8 S(ad) -.18 E F0([)3.816 E F2(\255ers)A F0 3.816(][)C F2-3.816 E F1(aname) -3.816 E F0 3.816(][)C F2-3.816 E F1(delim)3.816 E F0 3.816(][)C F2 --3.816 E F1(te)3.816 E(xt)-.2 E F0 3.816(][)C F2-3.816 E F1 -(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2-3.817 E F1(nc) -3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2-3.817 E F1(pr)3.817 E -(ompt)-.45 E F0 3.817(][)C F2-3.817 E F1(timeout)3.817 E F0 3.817 -(][)C F2-3.817 E F1(fd)3.817 E F0(])A([)108 676.8 Q F1(name)A F0 -(...])2.5 E .516(One line is read from the standard input, or from the \ -\214le descriptor)144 688.8 R F1(fd)3.016 E F0 .516(supplied as an ar) -3.016 F .517(gument to)-.18 F(the)144 700.8 Q F22.539 E F0 .039 + reading the name of the current directory or an in)144 261.6 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 273.6 Q F1 -.18(re)108 290.4 S +(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 E F2 +(aname)3.816 E F0 3.816(][)C F1-3.816 E F2(delim)3.816 E F0 3.816 +(][)C F1-3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1 +-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E +F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(pr) +3.817 E(ompt)-.45 E F0 3.817(][)C F1-3.817 E F2(timeout)3.817 E F0 +3.817(][)C F1-3.817 E F2(fd)3.817 E F0(])A([)108 302.4 Q F2(name)A +F0(...])2.5 E .516(One line is read from the standard input, or from th\ +e \214le descriptor)144 314.4 R F2(fd)3.016 E F0 .516(supplied as an ar) +3.016 F .517(gument to)-.18 F(the)144 326.4 Q F12.539 E F0 .039 (option, and the \214rst w)2.539 F .038(ord is assigned to the \214rst) --.1 F F1(name)2.538 E F0 2.538(,t).18 G .038(he second w)-2.538 F .038 -(ord to the second)-.1 F F1(name)2.538 E F0(,).18 E .42 -(and so on, with lefto)144 712.8 R -.15(ve)-.15 G 2.92(rw).15 G .42 +-.1 F F2(name)2.538 E F0 2.538(,t).18 G .038(he second w)-2.538 F .038 +(ord to the second)-.1 F F2(name)2.538 E F0(,).18 E .42 +(and so on, with lefto)144 338.4 R -.15(ve)-.15 G 2.92(rw).15 G .42 (ords and their interv)-3.02 F .42 -(ening separators assigned to the last)-.15 F F1(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .541(are fe)144 724.8 R .541(wer w) +(ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I) +.18 G 2.92(ft)-5.42 G(here)-2.92 E .541(are fe)144 350.4 R .541(wer w) -.25 F .541(ords read from the input stream than names, the remaining n\ -ames are assigned empty)-.1 F(GNU Bash-4.2)72 768 Q(2010 December 28) -135.965 E(60)185.955 E 0 Cg EP -%%Page: 61 61 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E -.25(va)144 84 S 2.51(lues. The).25 F .011(characters in)2.511 F -/F1 9/Times-Bold@0 SF(IFS)2.511 E F0 .011 -(are used to split the line into w)2.261 F 2.511(ords. The)-.1 F .011 -(backslash character \()2.511 F/F2 10/Times-Bold@0 SF(\\)A F0 2.511(\)m) -C(ay)-2.511 E 1.891(be used to remo)144 96 R 2.191 -.15(ve a)-.15 H -2.191 -.15(ny s).15 H 1.891(pecial meaning for the ne).15 F 1.89 -(xt character read and for line continuation.)-.15 F -(Options, if supplied, ha)144 108 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 120 Q/F3 10/Times-Italic@0 SF(aname) -2.5 E F0 1.049(The w)180 132 R 1.049 +ames are assigned empty)-.1 F -.25(va)144 362.4 S 3.357(lues. The).25 F +.857(characters in)3.357 F/F3 9/Times-Bold@0 SF(IFS)3.357 E F0 .857 +(are used to split the line into w)3.107 F .857 +(ords using the same rules the shell)-.1 F .754(uses for e)144 374.4 R +.753(xpansion \(described abo)-.15 F 1.053 -.15(ve u)-.15 H(nder).15 E +F1 -.75(Wo)3.253 G .753(rd Splitting).75 F F0 3.253(\). The)B .753 +(backslash character \()3.253 F F1(\\)A F0 3.253(\)m)C .753(ay be)-3.253 +F .075(used to remo)144 386.4 R .375 -.15(ve a)-.15 H .375 -.15(ny s).15 +H .075(pecial meaning for the ne).15 F .076 +(xt character read and for line continuation.)-.15 F(Options,)5.076 E +(if supplied, ha)144 398.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 410.4 Q F2(aname)2.5 E F0 1.05(The w) +180 422.4 R 1.049 (ords are assigned to sequential indices of the array v)-.1 F(ariable) --.25 E F3(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F3 -(aname)180.33 144 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 -(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F3(name)2.5 E F0(ar)2.5 -E(guments are ignored.)-.18 E F2144 156 Q F3(delim)2.5 E F0 -(The \214rst character of)180 168 Q F3(delim)2.5 E F0 +-.25 E F2(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F +F2(aname)180.33 434.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 +-.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E F1144 446.4 Q F2(delim)2.5 E +F0(The \214rst character of)180 458.4 Q F2(delim)2.5 E F0 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F2144 180 Q F0 .373 -(If the standard input is coming from a terminal,)25.86 F F2 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E F1(READLINE)2.872 E F0(abo)2.622 E --.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E .218 -(to obtain the line.)180 192 R .218(Readline uses the current \(or def) -5.218 F .218(ault, if line editing w)-.1 F .218(as not pre)-.1 F -(viously)-.25 E(acti)180 204 Q -.15(ve)-.25 G 2.5(\)e).15 G -(diting settings.)-2.5 E F2144 216 Q F3(te)2.5 E(xt)-.2 E F0(If) -10.78 E F2 -.18(re)2.716 G(adline).18 E F0 .216 -(is being used to read the line,)2.716 F F3(te)2.716 E(xt)-.2 E F0 .216 -(is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-) --.25 F(ing be)180 228 Q(gins.)-.15 E F2144 240 Q F3(nc)2.5 E(har) --.15 E(s)-.1 E F2 -.18(re)180 252 S(ad).18 E F0 1.394 -(returns after reading)3.894 F F3(nc)3.894 E(har)-.15 E(s)-.1 E F0 1.395 -(characters rather than w)3.894 F 1.395(aiting for a complete line of) --.1 F(input, b)180 264 Q(ut honor a delimiter if fe)-.2 E(wer than)-.25 -E F3(nc)2.5 E(har)-.15 E(s)-.1 E F0 -(characters are read before the delimiter)2.5 E(.)-.55 E F2144 276 -Q F3(nc)2.5 E(har)-.15 E(s)-.1 E F2 -.18(re)180 288 S(ad).18 E F0 1.269 -(returns after reading e)3.77 F(xactly)-.15 E F3(nc)3.769 E(har)-.15 E -(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.269 -(aiting for a complete)-.1 F .274 -(line of input, unless EOF is encountered or)180 300 R F2 -.18(re)2.775 -G(ad).18 E F0 .275(times out.)2.775 F .275(Delimiter characters encoun-) -5.275 F 1.003 -(tered in the input are not treated specially and do not cause)180 312 R -F2 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F3(nc)3.502 -E(har)-.15 E(s)-.1 E F0(characters are read.)180 324 Q F2144 336 Q -F3(pr)2.5 E(ompt)-.45 E F0(Display)180 348 Q F3(pr)3.66 E(ompt)-.45 E F0 -1.161(on standard error)3.66 F 3.661(,w)-.4 G 1.161 +F1144 470.4 Q F0 .372 +(If the standard input is coming from a terminal,)25.86 F F1 -.18(re) +2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)2.623 E +-.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E .218 +(to obtain the line.)180 482.4 R .218 +(Readline uses the current \(or def)5.218 F .218 +(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E +(acti)180 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E +F1144 506.4 Q F2(te)2.5 E(xt)-.2 E F0(If)10.78 E F1 -.18(re)2.715 +G(adline).18 E F0 .216(is being used to read the line,)2.715 F F2(te) +2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 E +.216(fer before edit-)-.25 F(ing be)180 518.4 Q(gins.)-.15 E F1144 +530.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 542.4 S(ad).18 E +F0 1.395(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E +F0 1.395(characters rather than w)3.895 F 1.394 +(aiting for a complete line of)-.1 F(input, b)180 554.4 Q +(ut honor a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 E +(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 +144 566.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 578.4 S +(ad).18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc) +3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F +1.27(aiting for a complete)-.1 F .275 +(line of input, unless EOF is encountered or)180 590.4 R F1 -.18(re) +2.775 G(ad).18 E F0 .274(times out.)2.774 F .274 +(Delimiter characters encoun-)5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 602.4 +R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) +3.503 E(har)-.15 E(s)-.1 E F0(characters are read.)180 614.4 Q F1 +144 626.4 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)180 638.4 Q F2(pr)3.661 E +(ompt)-.45 E F0 1.161(on standard error)3.661 F 3.661(,w)-.4 G 1.161 (ithout a trailing ne)-3.661 F 1.161(wline, before attempting to read) --.25 F(an)180 360 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F -(prompt is displayed only if input is coming from a terminal.)2.5 E F2 -144 372 Q F0 .544(Backslash does not act as an escape character) -25.86 F 5.543(.T)-.55 G .543(he backslash is considered to be part of) --5.543 F(the line.)180 384 Q(In particular)5 E 2.5(,ab)-.4 G +-.25 F(an)180 650.4 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F +(prompt is displayed only if input is coming from a terminal.)2.5 E F1 +144 662.4 Q F0 .543(Backslash does not act as an escape character) +25.86 F 5.543(.T)-.55 G .544(he backslash is considered to be part of) +-5.543 F(the line.)180 674.4 Q(In particular)5 E 2.5(,ab)-.4 G (ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) --.25 E F2144 396 Q F0(Silent mode.)26.41 E -(If input is coming from a terminal, characters are not echoed.)5 E F2 -144 408 Q F3(timeout)2.5 E F0(Cause)180 420 Q F2 -.18(re)3.548 G -(ad).18 E F0 1.048(to time out and return f)3.548 F 1.048 -(ailure if a complete line of input is not read within)-.1 F F3(timeout) -180 432 Q F0(seconds.)3.497 E F3(timeout)5.997 E F0 .997 -(may be a decimal number with a fractional portion follo)3.497 F(wing) --.25 E .576(the decimal point.)180 444 R .576(This option is only ef) -5.576 F(fecti)-.25 E .876 -.15(ve i)-.25 H(f).15 E F2 -.18(re)3.076 G -(ad).18 E F0 .576(is reading input from a terminal,)3.076 F .142 -(pipe, or other special \214le; it has no ef)180 456 R .142 -(fect when reading from re)-.25 F .142(gular \214les.)-.15 F(If)5.141 E -F3(timeout)2.641 E F0 .141(is 0,)2.641 F F2 -.18(re)180 468 S(ad).18 E -F0 .113(returns success if input is a)2.613 F -.25(va)-.2 G .113 -(ilable on the speci\214ed \214le descriptor).25 F 2.613(,f)-.4 G .114 -(ailure otherwise.)-2.713 F(The e)180 480 Q -(xit status is greater than 128 if the timeout is e)-.15 E(xceeded.)-.15 -E F2144 492 Q F3(fd)2.5 E F0(Read input from \214le descriptor) -14.46 E F3(fd)2.5 E F0(.)A .192(If no)144 508.8 R F3(names)3.052 E F0 -.192(are supplied, the line read is assigned to the v)2.962 F(ariable) --.25 E F1(REPL)2.691 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .191 -(The return code is zero,)4.691 F 1.343 -(unless end-of-\214le is encountered,)144 520.8 R F2 -.18(re)3.843 G(ad) +-.25 E F1144 686.4 Q F0(Silent mode.)26.41 E +(If input is coming from a terminal, characters are not echoed.)5 E F1 +144 698.4 Q F2(timeout)2.5 E F0(Cause)180 710.4 Q F1 -.18(re)2.929 +G(ad).18 E F0 .428(to time out and return f)2.929 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 +(ber of characters\) is not read within)180 722.4 R F2(timeout)3.061 E +F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(63)190.95 E 0 Cg +EP +%%Page: 64 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E(with a fractional portion follo)180 84 Q(wing the decimal point.) +-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 +E/F1 10/Times-Bold@0 SF -.18(re)2.5 G(ad).18 E F0 .506(is reading input\ + from a terminal, pipe, or other special \214le; it has no ef)180 96 R +.506(fect when reading)-.25 F .59(from re)180 108 R .59(gular \214les.) +-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589(times out,)3.09 F F1 +-.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 G 3.089(sa).15 G .889 +-.15(ny p)-3.089 H .589(artial input read into the speci\214ed).15 F +-.25(va)180 120 S(riable).25 E/F2 10/Times-Italic@0 SF(name)2.77 E F0 +5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27(is 0,)2.77 F F1 -.18(re) +2.77 G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27 +(ithout trying to read an)-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E 1.12 +(The e)180 132 R 1.12(xit status is 0 if input is a)-.15 F -.25(va)-.2 G +1.12(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G +1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 144 R -.15(ex)2.5 G +(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E +F1144 156 Q F2(fd)2.5 E F0(Read input from \214le descriptor)14.46 +E F2(fd)2.5 E F0(.)A .191(If no)144 172.8 R F2(names)3.051 E F0 .191 +(are supplied, the line read is assigned to the v)2.961 F(ariable)-.25 E +/F3 9/Times-Bold@0 SF(REPL)2.692 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A +F0 .192(The return code is zero,)4.692 F 1.344 +(unless end-of-\214le is encountered,)144 184.8 R F1 -.18(re)3.844 G(ad) .18 E F0 1.343 -(times out \(in which case the return code is greater than)3.843 F -(128\), or an in)144 532.8 Q -.25(va)-.4 G -(lid \214le descriptor is supplied as the ar).25 E(gument to)-.18 E F2 -2.5 E F0(.)A F2 -.18(re)108 549.6 S(adonly).18 E F0([)2.5 E F2 -(\255aAf)A F0 2.5(][)C F2-2.5 E F0 2.5(][)C F3(name)-2.5 E F0([=)A -F3(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 561.6 R -.15(ve) --.25 G(n).15 E F3(names)3.27 E F0 .77(are mark)3.27 F .77 -(ed readonly; the v)-.1 F .77(alues of these)-.25 F F3(names)3.63 E F0 +(times out \(in which case the return code is greater than)3.844 F .871 +(128\), a v)144 196.8 R .871 +(ariable assignment error \(such as assigning to a readonly v)-.25 F +.872(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G(lid).25 E +(\214le descriptor is supplied as the ar)144 208.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 225.6 S(adonly).18 E F0([)2.5 E F1 +(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A +F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 237.6 R -.15(ve) +-.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77 +(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 -573.6 R 1.096(If the)6.096 F F23.596 E F0 1.097 -(option is supplied, the functions corresponding to the)3.596 F F3 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 585.6 Q 3.334(ed. The) --.1 F F23.334 E F0 .834(option restricts the v)3.334 F .834 +249.6 R 1.096(If the)6.096 F F13.596 E F0 1.097 +(option is supplied, the functions corresponding to the)3.596 F F2 +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 261.6 Q 3.334(ed. The) +-.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) --3.334 F F23.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 597.6 R 1.076 -.15(ve a)-.25 H 3.276 -(rrays. If).15 F .777(both options are supplied,)3.276 F F23.277 E -F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F3(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 609.6 R -.15(ve) --.25 G .521(n, or if the).15 F F23.021 E F0 .521 +-3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .776(ables to associati)144 273.6 R 1.076 -.15(ve a)-.25 H 3.276 +(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E +F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 285.6 R -.15(ve) +-.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F .521(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 621.6 R(The)5.296 E F2 +to a subset of the set of readonly names.)144 297.6 R(The)5.296 E F1 2.796 E F0(option)2.796 E .786 (causes output to be displayed in a format that may be reused as input.) -144 633.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -645.6 Q .717(wed by =)-.25 F F3(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) --3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F3(wor) +144 309.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +321.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 657.6 R F3(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) --.25 F .26(ariable name, or)-.25 F F22.76 E F0 .26 -(is supplied with a)2.76 F F3(name)144.36 669.6 Q F0 -(that is not a function.)2.68 E F2 -.18(re)108 686.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F3(n)A F0(])A .586(Causes a function to e)144 698.4 R .587 -(xit with the return v)-.15 F .587(alue speci\214ed by)-.25 F F3(n)3.087 -E F0 5.587(.I).24 G(f)-5.587 E F3(n)3.447 E F0 .587 -(is omitted, the return status is)3.327 F 1.335 -(that of the last command e)144 710.4 R -.15(xe)-.15 G 1.335 -(cuted in the function body).15 F 6.335(.I)-.65 G 3.835(fu)-6.335 G -1.335(sed outside a function, b)-3.835 F 1.335(ut during)-.2 F -.15(exe) -144 722.4 S .794(cution of a script by the).15 F F2(.)3.294 E F0(\() -5.794 E F2(sour)A(ce)-.18 E F0 3.294(\)c)C .794 -(ommand, it causes the shell to stop e)-3.294 F -.15(xe)-.15 G .795 -(cuting that script).15 F(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 -E(61)185.955 E 0 Cg EP -%%Page: 62 62 +144 333.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 +(is supplied with a)2.76 F F2(name)144.36 345.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 362.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 374.4 R +-.15(xe)-.15 G .02(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F +5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .469 +(the return status is that of the last command e)144 386.4 R -.15(xe) +-.15 G .469(cuted in the function body).15 F 5.469(.I)-.65 G(f)-5.469 E +F1 -.18(re)2.969 G(tur).18 E(n)-.15 E F0 .468(is used out-)2.969 F .466 +(side a function, b)144 398.4 R .466(ut during e)-.2 F -.15(xe)-.15 G +.467(cution of a script by the).15 F F1(.)2.967 E F0(\()5.467 E F1(sour) +A(ce)-.18 E F0 2.967(\)c)C .467(ommand, it causes the shell to)-2.967 F +.088(stop e)144 410.4 R -.15(xe)-.15 G .087 +(cuting that script and return either).15 F F2(n)2.947 E F0 .087 +(or the e)2.827 F .087(xit status of the last command e)-.15 F -.15(xe) +-.15 G .087(cuted within).15 F .613(the script as the e)144 422.4 R .613 +(xit status of the script.)-.15 F(If)5.613 E F2(n)3.113 E F0 .613 +(is supplied, the return v)3.113 F .613 +(alue is its least signi\214cant 8)-.25 F 2.511(bits. The)144 434.4 R +.011(return status is non-zero if)2.511 F F1 -.18(re)2.511 G(tur).18 E +(n)-.15 E F0 .011(is supplied a non-numeric ar)2.511 F .01 +(gument, or is used outside)-.18 F 2.909(af)144 446.4 S .409 +(unction and not during e)-2.909 F -.15(xe)-.15 G .41 +(cution of a script by).15 F F1(.)2.91 E F0(or)3.743 E F1(sour)2.91 E +(ce)-.18 E F0 5.41(.A)C .71 -.15(ny c)-5.41 H .41 +(ommand associated with the).15 F F1(RETURN)144 458.4 Q F0(trap is e)2.5 +E -.15(xe)-.15 G(cuted before e).15 E -.15(xe)-.15 G +(cution resumes after the function or script.).15 E F1(set)108 475.2 Q +F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E +F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E +F1(set)108 487.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1 +(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0 +(...])2.5 E -.4(Wi)144 499.2 S .836(thout options, the name and v).4 F +.835(alue of each shell v)-.25 F .835 +(ariable are displayed in a format that can be)-.25 F .784 +(reused as input for setting or resetting the currently-set v)144 511.2 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 +(riables cannot be).25 F 2.912(reset. In)144 523.2 R F2(posix)2.912 E F0 +.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 +(The output is sorted according to the current)5.412 F 3.53 +(locale. When)144 535.2 R 1.031(options are speci\214ed, the)3.53 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) +-.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F +1.624(after option processing are treated as v)144 547.2 R 1.623 +(alues for the positional parameters and are assigned, in)-.25 F(order) +144 559.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 571.2 Q +F0 .539(Automatically mark v)29.3 F .539 +(ariables and functions which are modi\214ed or created for e)-.25 F .54 +(xport to)-.15 F(the en)184 583.2 Q(vironment of subsequent commands.) +-.4 E F1144 595.2 Q F0 .132 +(Report the status of terminated background jobs immediately)28.74 F +2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 607.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 619.2 Q F0 +.087(Exit immediately if a)29.86 F F2(pipeline)2.587 E F0 .087 +(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 631.2 Q +F2 1.294(compound command)3.794 F F0(\(see)3.794 E F3 1.294 +(SHELL GRAMMAR)3.794 F F0(abo)3.544 E -.15(ve)-.15 G 3.793(\), e).15 F +1.293(xits with a non-zero status.)-.15 F .079(The shell does not e)184 +643.2 R .079(xit if the command that f)-.15 F .08 +(ails is part of the command list immediately)-.1 F(follo)184 655.2 Q +1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 +-.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 +(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) +4.154 E(ed)-.15 E -.1(wo)184 667.2 S .581(rds, part of an).1 F 3.081(yc) +-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 +(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 679.2 R +F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) +-3.418 H .918(ommand in a pipeline b).15 F .917 +(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E +-.25(va)184 691.2 S .66(lue is being in).25 F -.15(ve)-.4 G .66 +(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 +(ompound command other than a subshell returns a)-3.161 F 1.113 +(non-zero status because a command f)184 703.2 R 1.112(ailed while)-.1 F +F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 +(eing ignored, the shell does)-3.612 F .177(not e)184 715.2 R 2.677 +(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 +(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 +(option applies to)2.678 F 3.325(the shell en)184 727.2 R 3.325 +(vironment and each subshell en)-.4 F 3.325(vironment separately \(see) +-.4 F F3(COMMAND)5.824 E F0(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 +E(64)190.95 E 0 Cg EP +%%Page: 65 65 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .246(and return either)144 84 R/F1 10/Times-Italic@0 SF(n)3.106 E -F0 .246(or the e)2.986 F .246(xit status of the last command e)-.15 F --.15(xe)-.15 G .246(cuted within the script as the e).15 F .245 -(xit sta-)-.15 F .081(tus of the script.)144 96 R .082 -(If used outside a function and not during e)5.082 F -.15(xe)-.15 G .082 -(cution of a script by).15 F/F2 10/Times-Bold@0 SF(.)2.582 E F0 2.582 -(,t).833 G .082(he return sta-)-2.582 F 2.306(tus is f)144 108 R 4.806 -(alse. An)-.1 F 4.806(yc)-.15 G 2.305(ommand associated with the)-4.806 -F F2(RETURN)4.805 E F0 2.305(trap is e)4.805 F -.15(xe)-.15 G 2.305 -(cuted before e).15 F -.15(xe)-.15 G(cution).15 E -(resumes after the function or script.)144 120 Q F2(set)108 136.8 Q F0 -([)2.5 E F2(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2-2.5 E F1 -(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E F2 -(set)108 148.8 Q F0([)2.5 E F2(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2(+o) --2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0 -(...])2.5 E -.4(Wi)144 160.8 S .835(thout options, the name and v).4 F -.835(alue of each shell v)-.25 F .836 -(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 172.8 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 -(riables cannot be).25 F 2.946(reset. In)144 184.8 R F1 .447(posix mode) -2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 -(ariables are listed.)-.25 F .447 -(The output is sorted according to the current)5.447 F 3.531 -(locale. When)144 196.8 R 1.031(options are speci\214ed, the)3.531 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) --.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 -(after option processing are treated as v)144 208.8 R 1.624 -(alues for the positional parameters and are assigned, in)-.25 F(order) -144 220.8 Q 2.5(,t)-.4 G(o)-2.5 E F2($1)2.5 E F0(,)A F2($2)2.5 E F0(,)A -F2 2.5(... $)2.5 F F1(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2144 232.8 Q -F0 .54(Automatically mark v)29.3 F .539 -(ariables and functions which are modi\214ed or created for e)-.25 F -.539(xport to)-.15 F(the en)184 244.8 Q -(vironment of subsequent commands.)-.4 E F2144 256.8 Q F0 .131 -(Report the status of terminated background jobs immediately)28.74 F -2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 268.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F2144 280.8 Q F0 -.511(Exit immediately if a)29.86 F F1(pipeline)3.011 E F0 .511 -(\(which may consist of a single)3.011 F F1 .51(simple command)3.01 F F0 -3.01(\), a)B F1(sub-)3.01 E(shell)184 292.8 Q F0 .872 -(command enclosed in parentheses, or one of the commands e)3.372 F -.15 -(xe)-.15 G .872(cuted as part of a).15 F .399 -(command list enclosed by braces \(see)184 304.8 R/F3 9/Times-Bold@0 SF -.399(SHELL GRAMMAR)2.899 F F0(abo)2.649 E -.15(ve)-.15 G 2.899(\)e).15 G -.399(xits with a non-zero)-3.049 F 3.968(status. The)184 316.8 R 1.468 -(shell does not e)3.968 F 1.468(xit if the command that f)-.15 F 1.468 -(ails is part of the command list)-.1 F .57(immediately follo)184 328.8 -R .57(wing a)-.25 F F2(while)3.07 E F0(or)3.07 E F2(until)3.07 E F0 -.1 -(ke)3.069 G(yw)-.05 E .569(ord, part of the test follo)-.1 F .569 -(wing the)-.25 F F2(if)3.069 E F0(or)3.069 E F2(elif)3.069 E F0(reserv) -184 340.8 Q .909(ed w)-.15 F .909(ords, part of an)-.1 F 3.409(yc)-.15 G -.909(ommand e)-3.409 F -.15(xe)-.15 G .909(cuted in a).15 F F2(&&)3.409 -E F0(or)3.409 E F2(||)3.41 E F0 .91(list e)3.41 F .91(xcept the command) --.15 F(follo)184 352.8 Q .05(wing the \214nal)-.25 F F2(&&)2.55 E F0(or) -2.55 E F2(||)2.55 E F0 2.55(,a)C .35 -.15(ny c)-2.55 H .049 -(ommand in a pipeline b).15 F .049(ut the last, or if the command')-.2 F -(s)-.55 E .372(return v)184 364.8 R .372(alue is being in)-.25 F -.15 -(ve)-.4 G .372(rted with).15 F F2(!)2.872 E F0 5.372(.A)C .372(trap on) --2.5 F F2(ERR)2.872 E F0 2.872(,i)C 2.873(fs)-2.872 G .373(et, is e) --2.873 F -.15(xe)-.15 G .373(cuted before the shell).15 F -.15(ex)184 -376.8 S 2.897(its. This).15 F .397(option applies to the shell en)2.897 -F .396(vironment and each subshell en)-.4 F .396(vironment sepa-)-.4 F -.19(rately \(see)184 388.8 R F3 .19(COMMAND EXECUTION ENVIR)2.69 F -(ONMENT)-.27 E F0(abo)2.44 E -.15(ve)-.15 G .19 -(\), and may cause subshells).15 F(to e)184 400.8 Q(xit before e)-.15 E --.15(xe)-.15 G(cuting all the commands in the subshell.).15 E F2 -144 412.8 Q F0(Disable pathname e)30.97 E(xpansion.)-.15 E F2144 -424.8 Q F0 2.239(Remember the location of commands as the)28.74 F 4.738 -(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F -.15(xe)-.15 G -4.738(cution. This).15 F(is)4.738 E(enabled by def)184 436.8 Q(ault.)-.1 -E F2144 448.8 Q F0 .513(All ar)28.74 F .514 +-.35 E/F1 9/Times-Bold@0 SF .106(EXECUTION ENVIR)184 84 R(ONMENT)-.27 E +F0(abo)2.356 E -.15(ve)-.15 G .107(\), and may cause subshells to e).15 +F .107(xit before e)-.15 F -.15(xe)-.15 G(cuting).15 E +(all the commands in the subshell.)184 96 Q 2.042 +(If a compound command or shell function e)184 114 R -.15(xe)-.15 G +2.042(cutes in a conte).15 F 2.042(xt where)-.15 F/F2 10/Times-Bold@0 SF +4.542 E F0 2.042(is being)4.542 F 1.435 +(ignored, none of the commands e)184 126 R -.15(xe)-.15 G 1.436 +(cuted within the compound command or function).15 F .194 +(body will be af)184 138 R .194(fected by the)-.25 F F22.694 E F0 +.193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F2 +2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) +-.1 E 3.39(status. If)184 150 R 3.39(ac)3.39 G .89 +(ompound command or shell function sets)-3.39 F F23.39 E F0 .89 +(while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E +(where)184 162 Q F23.154 E F0 .654 +(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 +-.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F +(or the command containing the function call completes.)184 174 Q F2 +144 186 Q F0(Disable pathname e)30.97 E(xpansion.)-.15 E F2 +144 198 Q F0 2.238(Remember the location of commands as the)28.74 F +4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F -.15(xe) +-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 210 Q +(ault.)-.1 E F2144 222 Q F0 .514(All ar)28.74 F .514 (guments in the form of assignment statements are placed in the en)-.18 -F .514(vironment for a)-.4 F -(command, not just those that precede the command name.)184 460.8 Q F2 -144 472.8 Q F0 .149(Monitor mode.)25.97 F .149 -(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F -.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .636 -(on systems that support it \(see)184 484.8 R F3 .636(JOB CONTR)3.136 F -(OL)-.27 E F0(abo)2.886 E -.15(ve)-.15 G 3.136(\). Background).15 F .637 -(processes run in a)3.136 F .642 -(separate process group and a line containing their e)184 496.8 R .641 -(xit status is printed upon their com-)-.15 F(pletion.)184 508.8 Q F2 -144 520.8 Q F0 .652(Read commands b)28.74 F .652(ut do not e)-.2 F --.15(xe)-.15 G .652(cute them.).15 F .653 -(This may be used to check a shell script for)5.652 F(syntax errors.)184 -532.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 -E F2144 544.8 Q F1(option\255name)2.5 E F0(The)184 556.8 Q F1 -(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F2 -(allexport)184 568.8 Q F0(Same as)224 580.8 Q F22.5 E F0(.)A F2 -(braceexpand)184 592.8 Q F0(Same as)224 604.8 Q F22.5 E F0(.)A F2 -(emacs)184 616.8 Q F0 .089 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 234 Q F2 +144 246 Q F0 .148(Monitor mode.)25.97 F .148 +(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F +.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 +(on systems that support it \(see)184 258 R F1 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 +(processes run in a separate)3.151 F .678(process group.)184 270 R .679 +(When a background job completes, the shell prints a line containing it\ +s)5.678 F -.15(ex)184 282 S(it status.).15 E F2144 294 Q F0 .653 +(Read commands b)28.74 F .653(ut do not e)-.2 F -.15(xe)-.15 G .653 +(cute them.).15 F .652(This may be used to check a shell script for) +5.653 F(syntax errors.)184 306 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F2144 318 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 330 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F2(allexport)184 342 Q F0 +(Same as)224 354 Q F22.5 E F0(.)A F2(braceexpand)184 366 Q F0 +(Same as)224 378 Q F22.5 E F0(.)A F2(emacs)184 390 Q F0 .089 (Use an emacs-style command line editing interf)13.9 F 2.589(ace. This) -.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 628.8 R -.15(ve)-.25 G 3.45(,u).15 G -.95(nless the shell is started with the)-3.45 F F2(\255\255noediting) -3.45 E F0 2.5(option. This)224 640.8 R(also af)2.5 E -(fects the editing interf)-.25 E(ace used for)-.1 E F2 -.18(re)2.5 G -(ad \255e).18 E F0(.)A F2(err)184 652.8 Q(exit)-.18 E F0(Same as)11.31 E -F22.5 E F0(.)A F2(errtrace)184 664.8 Q F0(Same as)5.03 E F2 -2.5 E F0(.)A F2(functrace)184 676.8 Q F0(Same as)224 688.8 Q F22.5 -E F0(.)A F2(hashall)184 700.8 Q F0(Same as)9.43 E F22.5 E F0(.)A -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(62)185.955 E 0 Cg EP -%%Page: 63 63 +(when the shell is interacti)224 402 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(nless the shell is started with the)-3.45 F F2(\255\255noediting)3.45 E +F0 2.5(option. This)224 414 R(also af)2.5 E(fects the editing interf) +-.25 E(ace used for)-.1 E F2 -.18(re)2.5 G(ad \255e).18 E F0(.)A F2(err) +184 426 Q(exit)-.18 E F0(Same as)11.31 E F22.5 E F0(.)A F2 +(errtrace)184 438 Q F0(Same as)5.03 E F22.5 E F0(.)A F2(functrace) +184 450 Q F0(Same as)224 462 Q F22.5 E F0(.)A F2(hashall)184 474 Q +F0(Same as)9.43 E F22.5 E F0(.)A F2(histexpand)184 486 Q F0 +(Same as)224 498 Q F22.5 E F0(.)A F2(history)184 510 Q F0 .586 +(Enable command history)10 F 3.087(,a)-.65 G 3.087(sd)-3.087 G .587 +(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E F1(HIST)3.087 E +(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF(.)A F0 .587(This option is) +5.087 F(on by def)224 522 Q(ault in interacti)-.1 E .3 -.15(ve s)-.25 H +(hells.).15 E F2(ignor)184 534 Q(eeof)-.18 E F0 1.657(The ef)224 546 R +1.657(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF +(IGNOREEOF=10)4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted) +.15 E(\(see)224 558 Q F2(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15 +(ve)-.15 G(\).).15 E F2 -.1(ke)184 570 S(yw).1 E(ord)-.1 E F0(Same as) +224 582 Q F22.5 E F0(.)A F2(monitor)184 594 Q F0(Same as)5.56 E F2 +2.5 E F0(.)A F2(noclob)184 606 Q(ber)-.1 E F0(Same as)224 618 Q F2 +2.5 E F0(.)A F2(noexec)184 630 Q F0(Same as)11.12 E F22.5 E +F0(.)A F2(noglob)184 642 Q F0(Same as)11.1 E F22.5 E F0(.)A F2 +(nolog)184 654 Q F0(Currently ignored.)16.66 E F2(notify)184 666 Q F0 +(Same as)15 E F22.5 E F0(.)A F2(nounset)184 678 Q F0(Same as)6.66 +E F22.5 E F0(.)A F2(onecmd)184 690 Q F0(Same as)6.67 E F22.5 +E F0(.)A F2(ph)184 702 Q(ysical)-.15 E F0(Same as)5.14 E F22.5 E +F0(.)A F2(pipefail)184 714 Q F0 1.029(If set, the return v)7.77 F 1.029 +(alue of a pipeline is the v)-.25 F 1.03 +(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 726 R +1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(65)190.95 E 0 Cg +EP +%%Page: 66 66 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(histexpand)184 84 Q F0(Same as)224 96 Q F1 -2.5 E F0(.)A F1(history)184 108 Q F0 .587(Enable command history) -10 F 3.087(,a)-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 --.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E -(Y)-.315 E/F3 9/Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F -(on by def)224 120 Q(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(ignor)184 132 Q(eeof)-.18 E F0 1.656(The ef)224 144 R 1.656 -(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) -4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -156 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 168 S(yw).1 E(ord)-.1 E F0(Same as)224 180 Q F1 -2.5 E F0(.)A F1(monitor)184 192 Q F0(Same as)5.56 E F12.5 E -F0(.)A F1(noclob)184 204 Q(ber)-.1 E F0(Same as)224 216 Q F12.5 E -F0(.)A F1(noexec)184 228 Q F0(Same as)11.12 E F12.5 E F0(.)A F1 -(noglob)184 240 Q F0(Same as)11.1 E F12.5 E F0(.)A F1(nolog)184 -252 Q F0(Currently ignored.)16.66 E F1(notify)184 264 Q F0(Same as)15 E -F12.5 E F0(.)A F1(nounset)184 276 Q F0(Same as)6.66 E F12.5 -E F0(.)A F1(onecmd)184 288 Q F0(Same as)6.67 E F12.5 E F0(.)A F1 -(ph)184 300 Q(ysical)-.15 E F0(Same as)5.14 E F12.5 E F0(.)A F1 -(pipefail)184 312 Q F0 1.03(If set, the return v)7.77 F 1.029 -(alue of a pipeline is the v)-.25 F 1.029 -(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 324 R -1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 336 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 348 Q F0 -2.091(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 -2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F(POSIX standard to match the standard \()224 360 Q -/F5 10/Times-Italic@0 SF(posix mode)A F0(\).)A F1(pri)184 372 Q(vileged) --.1 E F0(Same as)224 384 Q F12.5 E F0(.)A F1 -.1(ve)184 396 S -(rbose).1 E F0(Same as)7.33 E F12.5 E F0(.)A F1(vi)184 408 Q F0 -1.465(Use a vi-style command line editing interf)32.22 F 3.966 -(ace. This)-.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F -(interf)224 420 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0 -(.)A F1(xtrace)184 432 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 -450 Q F13.053 E F0 .553(is supplied with no)3.053 F F5 -(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 -(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 -462 Q F0 1.071(is supplied with no)3.571 F F5(option\255name)3.571 E F0 -3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 -(commands to recreate the current)3.572 F -(option settings is displayed on the standard output.)184 474 Q F1 -144 486 Q F0 -.45(Tu)28.74 G 1.072(rn on).45 F F5(privile)4.822 E -.1 -(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F -F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.071 -(\214les are not pro-)3.322 F 1.5 -(cessed, shell functions are not inherited from the en)184 498 R 1.501 -(vironment, and the)-.4 F F2(SHELLOPTS)4.001 E F3(,)A F2 -.27(BA)184 510 -S(SHOPTS).27 E F3(,)A F2(CDP)2.775 E -.855(AT)-.666 G(H).855 E F3(,)A F0 -(and)2.775 E F2(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G .524 -(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F -(vironment,)-.4 E .379(are ignored.)184 522 R .379 -(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 -(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 -(user \(group\) id, and the)184 534 R F12.961 E F0 .461 -(option is not supplied, these actions are tak)2.961 F .461 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 546 Q .694 -.15(ve u)-.25 H .394 +-.35 E -.15(ex)224 84 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E/F1 10/Times-Bold@0 SF +(posix)184 96 Q F0 2.09(Change the beha)17.77 F 2.091(vior of)-.2 F F1 +(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif) +-.1 F 2.091(fers from the)-.25 F 1.212 +(POSIX standard to match the standard \()224 108 R/F2 10/Times-Italic@0 +SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9/Times-Bold@0 SF 1.212 +(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 120 R 4.807(wp)-.25 G +2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 +132 Q(vior)-.2 E(.)-.55 E F1(pri)184 144 Q(vileged)-.1 E F0(Same as)224 +156 Q F12.5 E F0(.)A F1 -.1(ve)184 168 S(rbose).1 E F0(Same as) +7.33 E F12.5 E F0(.)A F1(vi)184 180 Q F0 1.466 +(Use a vi-style command line editing interf)32.22 F 3.965(ace. This)-.1 +F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 192 Q +(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace)184 +204 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 222 Q F13.052 +E F0 .552(is supplied with no)3.052 F F2(option\255name)3.053 E F0 3.053 +(,t)C .553(he v)-3.053 F .553(alues of the current options are printed.) +-.25 F(If)5.553 E F1(+o)184 234 Q F0 1.072(is supplied with no)3.572 F +F2(option\255name)3.572 E F0 3.572(,a)C 1.071(series of)-.001 F F1(set) +3.571 E F0 1.071(commands to recreate the current)3.571 F +(option settings is displayed on the standard output.)184 246 Q F1 +144 258 Q F0 -.45(Tu)28.74 G 1.071(rn on).45 F F2(privile)4.821 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F +F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.072 +(\214les are not pro-)3.322 F 1.501 +(cessed, shell functions are not inherited from the en)184 270 R 1.5 +(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 +-.27(BA)184 282 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G +.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 294 R .38 +(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) +-.25 H .379(ser \(group\) id not equal to the real).15 F .461 +(user \(group\) id, and the)184 306 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .462 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 318 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 -2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .387(user id is not reset.)184 558 R -.45(Tu)5.387 G -.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 -F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F -(set to the real user and group ids.)184 570 Q F1144 582 Q F0 +2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 +E -.15(ve)-.25 G .386(user id is not reset.)184 330 R -.45(Tu)5.386 G +.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 +F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F +(set to the real user and group ids.)184 342 Q F1144 354 Q F0 (Exit after reading and e)30.97 E -.15(xe)-.15 G(cuting one command.).15 -E F1144 594 Q F0 -.35(Tr)28.74 G .043(eat unset v).35 F .044(aria\ +E F1144 366 Q F0 -.35(Tr)28.74 G .044(eat unset v).35 F .044(aria\ bles and parameters other than the special parameters "@" and "*" as an) --.25 F .183(error when performing parameter e)184 606 R 2.683 -(xpansion. If)-.15 F -.15(ex)2.683 G .182 +-.25 F .182(error when performing parameter e)184 378 R 2.682 +(xpansion. If)-.15 F -.15(ex)2.682 G .183 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746 -(able or parameter)184 618 R 3.246(,t)-.4 G .746 +(able or parameter)184 390 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -630 Q F1144 642 Q F0(Print shell input lines as the)29.3 E 2.5(ya) --.15 G(re read.)-2.5 E F1144 654 Q F0 .315(After e)29.3 F .315 -(xpanding each)-.15 F F5 .315(simple command)2.815 F F0(,)A F1 -.25(fo) +402 Q F1144 414 Q F0(Print shell input lines as the)29.3 E 2.5(ya) +-.15 G(re read.)-2.5 E F1144 426 Q F0 .315(After e)29.3 F .315 +(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25(fo) 2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E -F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 666 R F1 +F1(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 438 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F 1.236 -(xpanded v)-.15 F 1.236(alue of)-.25 F F2(PS4)3.736 E F3(,)A F0(follo) -3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 678 Q +(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0(follo) +3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 450 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 690 Q F0 2.579(The shell performs brace e)27.63 F 2.578 +144 462 Q F0 2.578(The shell performs brace e)27.63 F 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 702 Q -(ault.)-.1 E F1144 714 Q F0 .213(If set,)27.08 F F1(bash)2.713 E -F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 474 Q +(ault.)-.1 E F1144 486 Q F0 .214(If set,)27.08 F F1(bash)2.714 E +F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F -5.436(tors. This)184 726 R 2.936(may be o)5.436 F -.15(ve)-.15 G 2.936 -(rridden when creating output \214les by using the redirection).15 F -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(63)185.955 E 0 Cg EP -%%Page: 64 64 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(operator)184 84 Q/F1 10/Times-Bold@0 SF(>|)2.5 E F0(instead of) -2.5 E F1(>)2.5 E F0(.)A F1144 96 Q F0 .103(If set, an)27.63 F -2.603(yt)-.15 G .103(rap on)-2.603 F F1(ERR)2.603 E F0 .104 -(is inherited by shell functions, command substitutions, and com-)2.603 -F .839(mands e)184 108 R -.15(xe)-.15 G .839(cuted in a subshell en).15 -F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 -(trap is normally not inherited in)3.338 F(such cases.)184 120 Q F1 -144 132 Q F0(Enable)26.52 E F1(!)3.031 E F0 .531 -(style history substitution.)5.531 F .531(This option is on by def)5.531 -F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 144 Q -.15 -(ve)-.25 G(.).15 E F1144 156 Q F0 1.165 -(If set, the shell does not follo)28.19 F 3.664(ws)-.25 G 1.164 -(ymbolic links when e)-3.664 F -.15(xe)-.15 G 1.164 -(cuting commands such as).15 F F1(cd)3.664 E F0 2.821 -(that change the current w)184 168 R 2.822(orking directory)-.1 F 7.822 -(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 -(ysical directory structure)-.05 F 2.686(instead. By)184 180 R(def)2.686 +2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F +3.053(tors. This)184 498 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +(rridden when creating output \214les by using the redirection opera-) +.15 F(tor)184 510 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 522 Q F0 .104(If set, an)27.63 F 2.604(yt)-.15 G .104(rap on) +-2.604 F F1(ERR)2.604 E F0 .103 +(is inherited by shell functions, command substitutions, and com-)2.604 +F .838(mands e)184 534 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 +(trap is normally not inherited in)3.339 F(such cases.)184 546 Q F1 +144 558 Q F0(Enable)26.52 E F1(!)3.032 E F0 .532 +(style history substitution.)5.532 F .531(This option is on by def)5.532 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 570 Q -.15 +(ve)-.25 G(.).15 E F1144 582 Q F0 .959 +(If set, the shell does not resolv)28.19 F 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 +(cuting commands such as).15 F F1(cd)3.46 E F0 2.822 +(that change the current w)184 594 R 2.822(orking directory)-.1 F 7.822 +(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821 +(ysical directory structure)-.05 F 2.685(instead. By)184 606 R(def)2.685 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 192 Q(.)-.65 E F1144 -204 Q F0 .89(If set, an)27.63 F 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 618 Q(.)-.65 E F1144 +630 Q F0 .89(If set, an)27.63 F 3.39(yt)-.15 G .89(raps on)-3.39 F F1 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 216 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 642 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 228 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 240 Q -F0 .4(If no ar)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 654 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 666 Q +F0 .401(If no ar)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 (his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.401 E(the positional parameters are set to the)184 252 Q -/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5 -(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1 -2.5 E F0(.)A F1144 264 Q F0 1.945 -(Signal the end of options, cause all remaining)34.3 F F2(ar)4.444 E(g) --.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944 -(ssigned to the positional)-4.444 F 3.445(parameters. The)184 276 R F1 -3.445 E F0(and)3.445 E F13.445 E F0 .945 -(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) -3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B -(parameters remain unchanged.)184 288 Q .425(The options are of)144 -304.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(Otherwise,)5.4 E(the positional parameters are set to the)184 678 Q F2 +(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G +(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 +690 Q F0 1.944(Signal the end of options, cause all remaining)34.3 F F2 +(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G +1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 702 R +F13.446 E F0(and)3.446 E F13.446 E F0 .945 +(options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no) +3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B +(parameters remain unchanged.)184 714 Q .425(The options are of)144 +730.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 -(Using + rather than \255 causes these options)5.425 F .177 -(to be turned of)144 316.8 R 2.677(f. The)-.25 F .178 +(Using + rather than \255 causes these options)5.425 F(GNU Bash 4.3)72 +768 Q(2014 February 2)141.79 E(66)190.95 E 0 Cg EP +%%Page: 67 67 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E .178(to be turned of)144 84 R 2.678(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 -(current set of options may be found in)144 328.8 R F1<24ad>2.566 E F0 -5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F -(is encountered.)144 340.8 Q F1(shift)108 357.6 Q F0([)2.5 E F2(n)A F0 -(])A .428(The positional parameters from)144 369.6 R F2(n)2.928 E F0 -.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G -.429(rameters represented by the num-).15 F(bers)144 381.6 Q F1($#)2.583 -E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 -(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) --.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) -.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 -(is 0, no parameters are changed.)144 393.6 R(If)5.06 E F2(n)2.92 E F0 -.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F -(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 -(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 405.6 R -.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 -.143(is greater than)2.883 F F1($#)2.643 E F0 -(or less than zero; otherwise 0.)144 417.6 Q F1(shopt)108 434.4 Q F0([) +-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 +(current set of options may be found in)144 96 R/F1 10/Times-Bold@0 SF +<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa) +-.1 G .066(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F +(is encountered.)144 108 Q F1(shift)108 124.8 Q F0([)2.5 E/F2 10 +/Times-Italic@0 SF(n)A F0(])A .429(The positional parameters from)144 +136.8 R F2(n)2.929 E F0 .429(+1 ... are renamed to)B F1 .429($1 ....) +2.929 F F0 -.15(Pa)5.428 G .428(rameters represented by the num-).15 F +(bers)144 148.8 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#) +2.582 E F0A F2(n)A F0 .082(+1 are unset.)B F2(n)5.442 E F0 .082 +(must be a non-ne)2.822 F -.05(ga)-.15 G(ti).05 E .383 -.15(ve n)-.25 H +.083(umber less than or equal to).15 F F1($#)2.583 E F0 5.083(.I)C(f) +-5.083 E F2(n)2.943 E F0 .06(is 0, no parameters are changed.)144 160.8 +R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06 +(n, it is assumed to be 1.).15 F(If)5.06 E F2(n)2.92 E F0 .06 +(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t)C(he)-2.56 E .143 +(positional parameters are not changed.)144 172.8 R .144 +(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 .144 +(is greater than)2.884 F F1($#)2.644 E F0 +(or less than zero; otherwise 0.)144 184.8 Q F1(shopt)108 201.6 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 446.4 S .222(ggle the v).8 F .222 -(alues of v)-.25 F .222(ariables controlling optional shell beha)-.25 F -(vior)-.2 E 5.222(.W)-.55 G .222(ith no options, or with the)-5.622 F F1 -2.722 E F0 .721(option, a list of all settable options is display\ -ed, with an indication of whether or not each is set.)144 458.4 R(The) -144 470.4 Q F12.827 E F0 .327(option causes output to be displaye\ -d in a form that may be reused as input.)2.827 F .328(Other options) -5.328 F(ha)144 482.4 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:) --.25 E F1144 494.4 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 -E F0(.)A F1144 506.4 Q F0(Disable \(unset\) each)24.74 E F2 -(optname)2.5 E F0(.)A F1144 518.4 Q F0 .003(Suppresses normal out\ -put \(quiet mode\); the return status indicates whether the)24.74 F F2 -(optname)2.503 E F0(is)2.503 E .255(set or unset.)180 530.4 R .255 -(If multiple)5.255 F F2(optname)2.755 E F0(ar)2.755 E .256 -(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G(ith)-2.756 E F1 -2.756 E F0 2.756(,t)C .256(he return status is zero if)-2.756 F -(all)180 542.4 Q F2(optnames)2.5 E F0(are enabled; non-zero otherwise.) -2.5 E F1144 554.4 Q F0(Restricts the v)25.3 E(alues of)-.25 E F2 -(optname)2.5 E F0(to be those de\214ned for the)2.5 E F12.5 E F0 -(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .128 -(If either)144 571.2 R F12.628 E F0(or)2.628 E F12.628 E F0 -.127(is used with no)2.627 F F2(optname)2.627 E F0(ar)2.627 E .127 -(guments, the display is limited to those options which)-.18 F 1.023 -(are set or unset, respecti)144 583.2 R -.15(ve)-.25 G(ly).15 E 6.023 -(.U)-.65 G 1.024(nless otherwise noted, the)-6.023 F F1(shopt)3.524 E F0 -1.024(options are disabled \(unset\) by)3.524 F(def)144 595.2 Q(ault.) +-2.5 E F0(...])2.5 E -.8(To)144 213.6 S .64(ggle the v).8 F .639 +(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E +5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 +(listed belo)144 225.6 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 +(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 +F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 237.6 R .826 +(ith no options, or with the)-.4 F F13.326 E F0 .825 +(option, a list of all settable options is displayed, with an)3.326 F +.945(indication of whether or not each is set.)144 249.6 R(The)5.945 E +F13.445 E F0 .945(option causes output to be displayed in a form) +3.445 F(that may be reused as input.)144 261.6 Q(Other options ha)5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 273.6 Q +F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1144 285.6 +Q F0(Disable \(unset\) each)24.74 E F2(optname)2.5 E F0(.)A F1144 +297.6 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)24.74 F F2(optname)2.503 E F0(is)2.503 E .255 +(set or unset.)180 309.6 R .255(If multiple)5.255 F F2(optname)2.755 E +F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 +(he return status is zero if)-2.756 F(all)180 321.6 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 333.6 Q F0 +(Restricts the v)25.3 E(alues of)-.25 E F2(optname)2.5 E F0 +(to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 350.4 R F1 +3.125 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 +E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.233 +(set or unset, respecti)144 362.4 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +-.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 +2.234(options are disabled \(unset\) by)4.734 F(def)144 374.4 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -612 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.) +391.2 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.) 4.044 F .696 (When setting or unsetting options, the return status is zero unless an) -144 624 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) --.25 F(option.)144 636 Q(The list of)144 652.8 Q F1(shopt)2.5 E F0 -(options is:)2.5 E F1(autocd)144 670.8 Q F0 .2 +144 403.2 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 +(alid shell)-.25 F(option.)144 415.2 Q(The list of)144 432 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(autocd)144 450 Q F0 .2 (If set, a command name that is the name of a directory is e)11.11 F -.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 682.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(ment to the)184 462 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 694.8 Q(ars)-.1 E F0 .155(If set, an ar)184 706.8 R .155 +F1(cdable_v)144 474 Q(ars)-.1 E F0 .155(If set, an ar)184 486 R .155 (gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 718.8 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(64)185.955 E 0 Cg EP -%%Page: 65 65 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(cdspell)144 84 Q F0 1.055 +(name of a v)184 498 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 510 Q F0 +1.055 (If set, minor errors in the spelling of a directory component in a) 10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 96 R 1.487(errors check)3.987 F 1.487 +(corrected. The)184 522 R 1.487(errors check)3.987 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .552(one character too man)184 108 R 4.352 -.65(y. I) --.15 H 3.052(fac).65 G .552 -(orrection is found, the corrected \214le name is printed, and)-3.052 F -(the command proceeds.)184 120 Q(This option is only used by interacti)5 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 132 Q F0 2.079 -(If set,)184 144 R F1(bash)4.579 E F0 2.079 +-.4 G(nd)-3.988 E .77(one character too man)184 534 R 4.57 -.65(y. I) +-.15 H 3.27(fac).65 G .77 +(orrection is found, the corrected \214lename is printed, and)-3.27 F +(the command proceeds.)184 546 Q(This option is only used by interacti)5 +E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 558 Q F0 2.079 +(If set,)184 570 R F1(bash)4.579 E F0 2.079 (checks that a command found in the hash table e)4.579 F 2.08 -(xists before trying to)-.15 F -.15(exe)184 156 S(cute it.).15 E +(xists before trying to)-.15 F -.15(exe)184 582 S(cute it.).15 E (If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 168 Q -F0 .449(If set,)184 180 R F1(bash)2.949 E F0 .449 +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 594 Q +F0 .449(If set,)184 606 R F1(bash)2.949 E F0 .449 (lists the status of an)2.949 F 2.949(ys)-.15 G .448 (topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.438(shell. If)184 192 R(an)3.438 E 3.438(yj)-.15 G +F -.15(ve)-.25 G 3.438(shell. If)184 618 R(an)3.438 E 3.438(yj)-.15 G .938(obs are running, this causes the e)-3.438 F .938 (xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 -(attempted without an interv)184 204 R 2.203(ening command \(see)-.15 F -/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 216 Q -.1(wa)-.1 +(attempted without an interv)184 630 R 2.203(ening command \(see)-.15 F +/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 642 Q -.1(wa)-.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 228 Q F0 .796(If set,)184 -240 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 654 Q F0 .796(If set,)184 +666 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G .797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G -.797(pdates the)-3.297 F -.25(va)184 252 S(lues of).25 E F2(LINES)2.5 E -F0(and)2.25 E F2(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF(.)A F1(cmdhist)144 -264 Q F0 1.202(If set,)6.11 F F1(bash)3.702 E F0 1.202(attempts to sa) +.797(pdates the)-3.297 F -.25(va)184 678 S(lues of).25 E F3(LINES)2.5 E +F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist)144 +690 Q F0 1.202(If set,)6.11 F F1(bash)3.702 E F0 1.202(attempts to sa) 3.702 F 1.502 -.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -276 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 288 Q -F0 .419(If set,)184 300 R F1(bash)2.919 E F0 .419(changes its beha)2.919 -F .419(vior to that of v)-.2 F .42(ersion 3.1 with respect to quoted ar) --.15 F(guments)-.18 E(to the)184 312 Q F1([[)2.5 E F0 -(conditional command')2.5 E(s)-.55 E F1(=~)2.5 E F0(operator)2.5 E(.) --.55 E F1(compat32)144 324 Q F0 1.41(If set,)184 336 R F1(bash)3.91 E F0 -1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 -(ersion 3.2 with respect to locale-speci\214c)-.15 F 1.265 -(string comparison when using the)184 348 R F1([[)3.766 E F0 1.266 -(conditional command')3.766 F(s)-.55 E F1(<)3.766 E F0(and)3.766 E F1(>) -3.766 E F0 3.766(operators. Bash)3.766 F -.15(ve)184 360 S .513 -(rsions prior to bash-4.1 use ASCII collation and).15 F/F4 10 -/Times-Italic@0 SF(str)3.012 E(cmp)-.37 E F0 .512 -(\(3\); bash-4.1 and later use the).19 F(current locale')184 372 Q 2.5 -(sc)-.55 G(ollation sequence and)-2.5 E F4(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat40)144 384 Q F0 1.409(If set,)184 396 R F1(bash) -3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F -1.41(ersion 4.0 with respect to locale-speci\214c)-.15 F .423 -(string comparison when using the)184 408 R F1([[)2.922 E F0 .422 +702 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E(GNU Bash 4.3)72 768 Q +(2014 February 2)141.79 E(67)190.95 E 0 Cg EP +%%Page: 68 68 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF(compat31)144 84 Q F0 .419(If set,)184 96 R +F1(bash)2.919 E F0 .419(changes its beha)2.919 F .419(vior to that of v) +-.2 F .42(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E +.462(to the)184 108 R F1([[)2.962 E F0 .462(conditional command')2.962 F +(s)-.55 E F1(=~)2.962 E F0 .462 +(operator and locale-speci\214c string comparison when)2.962 F .71 +(using the)184 120 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) +3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821 +(use ASCII collation and)184 132 R/F2 10/Times-Italic@0 SF(str)3.321 E +(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') +.19 F 3.32(sc)-.55 G(ollation)-3.32 E(sequence and)184 144 Q F2(str)2.5 +E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 156 Q F0 1.409(If set,)184 +168 R F1(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409 +(vior to that of v)-.2 F 1.41 +(ersion 3.2 with respect to locale-speci\214c)-.15 F .423 +(string comparison when using the)184 180 R F1([[)2.922 E F0 .422 (conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) -2.922 E F0 .422(operators \(see pre-)2.922 F(vious item\) and the ef)184 -420 Q(fect of interrupting a command list.)-.25 E F1(compat41)144 432 Q -F0 1.443(If set,)184 444 R F1(bash)3.943 E F0 3.943(,w)C 1.444 -(hen in posix mode, treats a single quote in a double-quoted parameter) --3.943 F -.15(ex)184 456 S .959(pansion as a special character).15 F -5.959(.T)-.55 G .958(he single quotes must match \(an e)-5.959 F -.15 -(ve)-.25 G 3.458(nn).15 G .958(umber\) and)-3.458 F .59 -(the characters between the single quotes are considered quoted.)184 468 +2.922 E F0 .422(operators \(see pre-)2.922 F(vious item\).)184 192 Q F1 +(compat40)144 204 Q F0 1.409(If set,)184 216 R F1(bash)3.909 E F0 1.409 +(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 +(string comparison when using the)184 228 R F1([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 240 R +F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) +-.15 E .087(4.0 and later interrupt the list as if the shell recei)184 +252 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 264 Q +(xt command in the list.)-.15 E F1(compat41)144 276 Q F0 1.483(If set,) +184 288 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F2(posix) +3.983 E F0 1.484 +(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 +(ex)184 300 S .959(pansion as a special character).15 F 5.959(.T)-.55 G +.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 +(nn).15 G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 312 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 480 R .589(ersion 4.1.)-.15 F .589(The def) +(posix mode through v)184 324 R .589(ersion 4.1.)-.15 F .589(The def) 5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 492 Q F1(dirspell)144 504 Q -F0 .858(If set,)7.77 F F1(bash)3.358 E F0 .858 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 336 Q F1(compat42)144 348 Q +F0 1.796(If set,)184 360 R F1(bash)4.296 E F0 1.796 +(does not process the replacement string in the pattern substitution w) +4.296 F(ord)-.1 E -.15(ex)184 372 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(complete_fullquote)144 384 Q F0 .654(If set,)184 +396 R F1(bash)3.153 E F0 .653(quotes all shell metacharacters in \214le\ +names and directory names when per)3.153 F(-)-.2 E 1.524 +(forming completion.)184 408 R 1.524(If not set,)6.524 F F1(bash)4.024 E +F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ +haracters that will be quoted in completed \214lenames when these)184 +420 R .028(metacharacters appear in shell v)184 432 R .028 +(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 +(This means)5.029 F 1.073(that dollar signs in v)184 444 R 1.073 +(ariable names that e)-.25 F 1.073 +(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 +(ev e)184 456 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ollar signs appearing in \214lenames will not be quoted, either).15 F +6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 +(only when bash is using backslashes to quote completed \214lenames.)184 +468 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 480 Q +(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E +(ersions through 4.2.)-.15 E F1(dir)144 492 Q(expand)-.18 E F0 .486 +(If set,)184 504 R F1(bash)2.986 E F0 .486 +(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F +.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 +516 R .179(This changes the contents of the readline editing b)5.18 F +(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) +184 528 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 540 Q F0 .858(If set,)7.77 F +F1(bash)3.358 E F0 .858 (attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 516 Q(xist.)-.15 E -F1(dotglob)144 528 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165 +(the directory name initially supplied does not e)184 552 Q(xist.)-.15 E +F1(dotglob)144 564 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165 (includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) -.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E F1(execfail)144 540 Q F0 1.386 +(xpansion.)-.15 E F1(execfail)144 576 Q F0 1.386 (If set, a non-interacti)7.79 F 1.686 -.15(ve s)-.25 H 1.386 (hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G -1.387(cute the \214le speci\214ed as an).15 F(ar)184 552 Q +1.387(cute the \214le speci\214ed as an).15 F(ar)184 588 Q (gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E (An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 564 Q F0 -.717(If set, aliases are e)184 576 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E F2(ALIASES)3.217 E F3(.)A F0 .716 -(This option is enabled)5.217 F(by def)184 588 Q(ault for interacti)-.1 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 600 Q(ug)-.2 E F0 -(If set, beha)184 612 Q(vior intended for use by deb)-.2 E -(uggers is enabled:)-.2 E F1(1.)184 624 Q F0(The)28.5 E F14.25 E -F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 -G 1.751(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 636 Q -(gument.)-.18 E F1(2.)184 648 Q F0 1.667(If the command run by the)28.5 +E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 600 Q F0 +.717(If set, aliases are e)184 612 R .717(xpanded as described abo)-.15 +F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E +/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 624 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 636 Q(ug)-.2 E F0(If set, beha)184 648 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 +660 Q F0(The)28.5 E F14.25 E F0 1.75(option to the)4.25 F F1 +(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 +(iltin displays the source \214le name and line).2 F +(number corresponding to each function name supplied as an ar)220 672 Q +(gument.)-.18 E F1(2.)184 684 Q F0 1.667(If the command run by the)28.5 F F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 660 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 672 Q F0 .84 +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 696 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 708 Q F0 .84 (If the command run by the)28.5 F F1(DEB)3.34 E(UG)-.1 E F0 .841 (trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 -(exe)220 684 S .488 +(exe)220 720 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F --.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 696 Q(ce)-.18 E F0 -.2(bu)2.5 G(iltins\), a call to).2 E F1 --.18(re)2.5 G(tur).18 E(n)-.15 E F0(is simulated.)2.5 E F1(4.)184 708 Q -F2 -.27(BA)28.5 G(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G -(SH_ARGV).27 E F0 .904(are updated as described in their descriptions) -3.154 F(abo)220 720 Q -.15(ve)-.15 G(.).15 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(65)185.955 E 0 Cg EP -%%Page: 66 66 +-.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(68)190.95 E 0 Cg EP +%%Page: 69 69 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(5.)184 84 Q F0 1.359 +-.35 E/F1 10/Times-Bold@0 SF(sour)220 84 Q(ce)-.18 E F0 -.2(bu)2.5 G +(iltins\), a call to).2 E F1 -.18(re)2.5 G(tur).18 E(n)-.15 E F0 +(is simulated.)2.5 E F1(4.)184 96 Q/F2 9/Times-Bold@0 SF -.27(BA)28.5 G +(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 108 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 120 Q F0 1.359 (Function tracing is enabled:)28.5 F 1.359 (command substitution, shell functions, and sub-)6.359 F(shells in)220 -96 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F2 10 +132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F3 10 /Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1 (DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0(traps.)2.5 E F1(6.) -184 108 Q F0 .804(Error tracing is enabled:)28.5 F .805 -(command substitution, shell functions, and subshells)5.804 F(in)220 120 -Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F2 +184 144 Q F0 .804(Error tracing is enabled:)28.5 F .805 +(command substitution, shell functions, and subshells)5.804 F(in)220 156 +Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3 (command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.) -2.5 E F1(extglob)144 132 Q F0 .4(If set, the e)8.89 F .4 +2.5 E F1(extglob)144 168 Q F0 .4(If set, the e)8.89 F .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 144 Q -F0(are enabled.)2.5 E F1(extquote)144 156 Q F0 2.473(If set,)184 168 R -F1($)4.973 E F0<08>A F2(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 -E F0(")A F2(string)A F0 4.973("q)C 2.473(uoting is performed within) --4.973 F F1(${)4.973 E F2(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 180 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 192 Q F0 +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 180 Q +F0(are enabled.)2.5 E F1(extquote)144 192 Q F0 2.473(If set,)184 204 R +F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 +E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) +-4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G +(pansions).15 E(enclosed in double quotes.)184 216 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 228 Q F0 1.425(If set, patterns which f)7.77 F 1.425 (ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 204 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 216 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 228 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 -(ariable cause w)-.25 F .937(ords to be ignored)-.1 F .32 -(when performing w)184 240 R .32(ord completion e)-.1 F -.15(ve)-.25 G -2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32 -(ords are the only possible com-)-.1 F 2.947(pletions. See)184 252 R F3 -.447(SHELL V)2.947 F(ARIABLES)-1.215 E F0(abo)2.697 E .747 -.15(ve f) --.15 H .448(or a description of).15 F F3(FIGNORE)2.948 E/F4 9 -/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 F(enabled by def)184 -264 Q(ault.)-.1 E F1(globstar)144 276 Q F0 .519(If set, the pattern)5 F -F1(**)3.019 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte) --.15 F .518(xt will match all \214les and zero)-.15 F .431 -(or more directories and subdirectories.)184 288 R .431 +(xpansion result in an)-.15 F -.15(ex)184 240 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 252 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 264 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 276 R .32 +(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 288 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 +F(enabled by def)184 300 Q(ault.)-.1 E F1(globasciiranges)144 312 Q F0 +2.519(If set, range e)184 324 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 336 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F 1.02(That is, the current locale')184 348 R 3.52(sc)-.55 G 1.02 +(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 360 R F1(A) +3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F +.957(-case and lo)-.2 F(wer)-.25 E .957 +(-case ASCII characters will collate)-.2 F(together)184 372 Q(.)-.55 E +F1(globstar)144 384 Q F0 .519(If set, the pattern)5 F F1(**)3.019 E F0 +.519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 396 R .431 (If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 -300 Q F1(gnu_errfmt)144 312 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 324 Q F1(histappend)144 -336 Q F0 .676 +408 Q F1(gnu_errfmt)144 420 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 432 Q F1(histappend)144 +444 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -348 R .676(alue of the)-.25 F F3(HISTFILE)3.176 E F0 -.25(va)2.926 G -(ri-).25 E(able when the shell e)184 360 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 372 Q(eedit)-.18 -E F0 .575(If set, and)184 384 R F1 -.18(re)3.075 G(adline).18 E F0 .575 +456 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G +(ri-).25 E(able when the shell e)184 468 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 480 Q(eedit)-.18 +E F0 .575(If set, and)184 492 R F1 -.18(re)3.075 G(adline).18 E F0 .575 (is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576 (he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F -(tory substitution.)184 396 Q F1(histv)144 408 Q(erify)-.1 E F0 .403 -(If set, and)184 420 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +(tory substitution.)184 504 Q F1(histv)144 516 Q(erify)-.1 E F0 .403 +(If set, and)184 528 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .661(passed to the shell parser)184 432 R 5.661(.I)-.55 G .662 +2.903 F .661(passed to the shell parser)184 540 R 5.661(.I)-.55 G .662 (nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 -G(adline).18 E F0(editing)3.162 E -.2(bu)184 444 S -.25(ff).2 G(er).25 E +G(adline).18 E F0(editing)3.162 E -.2(bu)184 552 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 456 Q F0 1.182(If set, and)184 468 R F1 -.18(re)3.682 +(hostcomplete)144 564 Q F0 1.182(If set, and)184 576 R F1 -.18(re)3.682 G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 (will attempt to perform hostname completion)3.681 F 1.38(when a w)184 -480 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +588 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 (is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E -F3(READLINE)3.881 E F0(abo)184 492 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 504 Q F0(If set,) -184 516 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E F0 +F2(READLINE)3.881 E F0(abo)184 600 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 612 Q F0(If set,) +184 624 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(interacti)144 528 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 540 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 +.15 E(xits.)-.15 E F1(interacti)144 636 Q -.1(ve)-.1 G(_comments).1 E F0 +.33(If set, allo)184 648 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 (ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 (ord and all remaining characters on)-.1 F .967 -(that line to be ignored in an interacti)184 552 R 1.267 -.15(ve s)-.25 -H .967(hell \(see).15 F F3(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 564 Q -(ault.)-.1 E F1(lastpipe)144 576 Q F0 1.212 +(that line to be ignored in an interacti)184 660 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 +G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 672 Q +(ault.)-.1 E F1(lastpipe)144 684 Q F0 1.212 (If set, and job control is not acti)6.66 F -.15(ve)-.25 G 3.712(,t).15 G 1.212(he shell runs the last command of a pipeline not)-3.712 F -.15 -(exe)184 588 S(cuted in the background in the current shell en).15 E -(vironment.)-.4 E F1(lithist)144 600 Q F0 .654(If set, and the)15.55 F +(exe)184 696 S(cuted in the background in the current shell en).15 E +(vironment.)-.4 E F1(lithist)144 708 Q F0 .654(If set, and the)15.55 F F1(cmdhist)3.154 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F -(with embedded ne)184 612 Q -(wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 624 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -636 R F3(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) --.15 G 2.986(\). The).15 F -.25(va)184 648 S(lue may not be changed.).25 -E F1(mailwar)144 660 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -672 R F1(bash)3.314 E F0 .815 -(is checking for mail has been accessed since the last time it)3.314 F --.1(wa)184 684 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E F2(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 696 -Q F0 .325(If set, and)184 708 R F1 -.18(re)2.825 G(adline).18 E F0 .325 -(is being used,)2.825 F F1(bash)2.824 E F0 .324 -(will not attempt to search the)2.824 F F3 -.666(PA)2.824 G(TH)-.189 E -F0 .324(for possible)2.574 F -(completions when completion is attempted on an empty line.)184 720 Q -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(66)185.955 E 0 Cg EP -%%Page: 67 67 +(with embedded ne)184 720 Q +(wlines rather than using semicolon separators where possible.)-.25 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(69)190.95 E 0 Cg EP +%%Page: 70 70 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(nocaseglob)144 84 Q F0 .436(If set,)184 96 -R F1(bash)2.936 E F0 .436(matches \214lenames in a case\255insensiti) -2.936 F .737 -.15(ve f)-.25 H .437(ashion when performing pathname).05 F --.15(ex)184 108 S(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion) -.1 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 -1.194(If set,)184 132 R F1(bash)3.694 E F0 1.194 -(matches patterns in a case\255insensiti)3.694 F 1.493 -.15(ve f)-.25 H -1.193(ashion when performing matching).05 F(while e)184 144 Q -.15(xe) --.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5 E F1([[)2.5 E F0 -(conditional commands.)2.5 E F1(nullglob)144 156 Q F0 .854(If set,)184 -168 R F1(bash)3.354 E F0(allo)3.354 E .855 +-.35 E/F1 10/Times-Bold@0 SF(login_shell)144 84 Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +96 R/F2 9/Times-Bold@0 SF(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo) +2.736 E -.15(ve)-.15 G 2.986(\). The).15 F -.25(va)184 108 S +(lue may not be changed.).25 E F1(mailwar)144 120 Q(n)-.15 E F0 .814 +(If set, and a \214le that)184 132 R F1(bash)3.314 E F0 .815 +(is checking for mail has been accessed since the last time it)3.314 F +-.1(wa)184 144 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0 +(has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1 +(no_empty_cmd_completion)144 156 Q F0 .325(If set, and)184 168 R F1 -.18 +(re)2.825 G(adline).18 E F0 .325(is being used,)2.825 F F1(bash)2.824 E +F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH) +-.189 E F0 .324(for possible)2.574 F +(completions when completion is attempted on an empty line.)184 180 Q F1 +(nocaseglob)144 192 Q F0 .436(If set,)184 204 R F1(bash)2.936 E F0 .436 +(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25 +H .437(ashion when performing pathname).05 F -.15(ex)184 216 S +(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 228 Q F0 1.194(If set,)184 +240 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti) +3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05 +F(while e)184 252 Q -.15(xe)-.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5 +E F1([[)2.5 E F0(conditional commands.)2.5 E F1(nullglob)144 264 Q F0 +.854(If set,)184 276 R F1(bash)3.354 E F0(allo)3.354 E .855 (ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)3.355 G .855 (thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355(\)t).15 G(o) --3.355 E -.15(ex)184 180 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 192 Q(ogcomp)-.18 E F0 .677 -(If set, the programmable completion f)184 204 R .677(acilities \(see) +-3.355 E -.15(ex)184 288 S(pand to a null string, rather than themselv) +.15 E(es.)-.15 E F1(pr)144 300 Q(ogcomp)-.18 E F0 .677 +(If set, the programmable completion f)184 312 R .677(acilities \(see) -.1 F F1(Pr)3.176 E .676(ogrammable Completion)-.18 F F0(abo)3.176 E --.15(ve)-.15 G(\)).15 E(are enabled.)184 216 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 228 Q(omptv) --.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 240 R 1.448 +-.15(ve)-.15 G(\)).15 E(are enabled.)184 324 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 336 Q(omptv) +-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 348 R 1.448 (go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 252 S .171(pansion, and quote remo).15 F -.25(va)-.15 +-.15 F -.15(ex)184 360 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17(fter being e)-2.67 F .17(xpanded as described in) --.15 F/F2 9/Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15 -(ve)-.15 G(.).15 E(This option is enabled by def)184 264 Q(ault.)-.1 E -F1 -.18(re)144 276 S(stricted_shell).18 E F0 1.069 +-.15 F F2(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E +(This option is enabled by def)184 372 Q(ault.)-.1 E F1 -.18(re)144 384 +S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 288 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 300 Q 4.178 +184 396 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 408 Q 4.178 (w\). The)-.25 F -.25(va)4.178 G 1.678(lue may not be changed.).25 F 1.678(This is not reset when the startup \214les are)6.678 F -.15(exe) -184 312 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E +184 420 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 324 Q(erbose)-.1 E F0 .501(If set, the)184 336 R F1 +F1(shift_v)144 432 Q(erbose)-.1 E F0 .501(If set, the)184 444 R F1 (shift)3.001 E F0 -.2(bu)3.001 G .501 (iltin prints an error message when the shift count e).2 F .502 -(xceeds the number)-.15 F(of positional parameters.)184 348 Q F1(sour) -144 360 Q(cepath)-.18 E F0 .771(If set, the)184 372 R F1(sour)3.271 E +(xceeds the number)-.15 F(of positional parameters.)184 456 Q F1(sour) +144 468 Q(cepath)-.18 E F0 .771(If set, the)184 480 R F1(sour)3.271 E (ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v) -3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77 (to \214nd the directory containing the)3.02 F(\214le supplied as an ar) -184 384 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 396 Q F0(If set, the)184 408 Q F1(echo)2.5 E F0 +184 492 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 504 Q F0(If set, the)184 516 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 -E(ault.)-.1 E F1(suspend)108 424.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 436.8 R -.15(xe)-.15 G 1.001 +E(ault.)-.1 E F1(suspend)108 532.8 Q F0([)2.5 E F1A F0(])A 1.001 +(Suspend the e)144 544.8 R -.15(xe)-.15 G 1.001 (cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) -3.502 F .023(suspended; the)144 448.8 R F12.523 E F0 .023 +3.502 F .023(suspended; the)144 556.8 R F12.523 E F0 .023 (option can be used to o)2.523 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .022(The return status is) -5.022 F 2.5(0u)144 460.8 S(nless the shell is a login shell and)-2.5 E +5.022 F 2.5(0u)144 568.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 477.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 489.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 1.15 -(Return a status of 0 or 1 depending on the e)6.77 F -.25(va)-.25 G 1.15 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)3.65 G -(pr).2 E F0 6.15(.E).73 G(ach)-6.15 E 1.188 -(operator and operand must be a separate ar)144 501.6 R 3.688 -(gument. Expressions)-.18 F 1.187(are composed of the primaries)3.688 F -1.889(described abo)144 513.6 R 2.189 -.15(ve u)-.15 H(nder).15 E F2 -(CONDITION)4.389 E 1.889(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A -F1(test)6.389 E F0 1.89(does not accept an)4.389 F 4.39(yo)-.15 G 1.89 -(ptions, nor)-4.39 F(does it accept and ignore an ar)144 525.6 Q -(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 -E .786(Expressions may be combined using the follo)144 543.6 R .785 +E F1(test)108 585.6 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 597.6 Q F3 -.2 +(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 +(Return a status of 0 \(true\) or 1 \(f)6.77 F .878 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .878 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 609.6 +S(pr).2 E F0 5.53(.E).73 G .53 +(ach operator and operand must be a separate ar)-5.53 F 3.03 +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079 +(primaries described abo)144 621.6 R 3.379 -.15(ve u)-.15 H(nder).15 E +F2(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF +(.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 633.6 Q(gument of)-.18 +E F12.5 E F0(as signifying the end of options.)2.5 E .786 +(Expressions may be combined using the follo)144 651.6 R .785 (wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 555.6 R -.25(eva)3.411 G .911 +(dence. The)144 663.6 R -.25(eva)3.411 G .911 (luation depends on the number of ar).25 F .912(guments; see belo)-.18 F 4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F -(used when there are \214v)144 567.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 579.6 Q F3 -.2(ex)2.5 G(pr).2 E +(used when there are \214v)144 675.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 687.6 Q F3 -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)12.6 G(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E -(alse.)-.1 E F1(\()144 591.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +(alse.)-.1 E F1(\()144 699.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)6.77 F .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 603.6 Q F3 -.2 -(ex)144 615.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 627.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 -E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 639.6 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -651.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 -(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 668.4 Q F0(and)2.5 E -F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E -(xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 686.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 698.4 Q(xpression is f)-.15 E(alse.)-.1 E(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(67)185.955 E 0 Cg EP -%%Page: 68 68 +(rride the normal precedence of opera-).15 F(tors.)180 711.6 Q +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(70)190.95 E 0 Cg EP +%%Page: 71 71 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 2.5(1a)144 84 S -.18(rg)-2.5 G(ument).18 E(The e)180 96 Q +-.35 E/F1 10/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F02.5 E/F2 +10/Times-Bold@0 SF(a)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S +(ue if both).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F1 -.2(ex)2.5 G +(pr2).2 E F0(are true.)2.52 E F1 -.2(ex)144 108 S(pr1).2 E F02.5 E +F2(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 120 S(ue if either).35 E +F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0 +(is true.)2.52 E F2(test)144 136.8 Q F0(and)2.5 E F2([)2.5 E F0 -.25 +(eva)2.5 G(luate conditional e).25 E +(xpressions using a set of rules based on the number of ar)-.15 E +(guments.)-.18 E 2.5(0a)144 154.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 166.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 178.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 190.8 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 108 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180 -120 R .37(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.87 E F0 2.87(,t)C -.37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 -F .37(gument is null.)-.18 F .38(If the \214rst ar)180 132 R .38 +E 2.5(2a)144 202.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 214.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +F .37(xpression is true if and only if the second ar)-.15 F .37 +(gument is null.)-.18 F .38(If the \214rst ar)180 226.8 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .679 --.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 -144 Q .552(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552 +-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 +238.8 Q .552(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 (the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 156 Q +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 250.8 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 168 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 180 R .236 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 262.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 274.8 R .236 (wing conditions are applied in the order listed.)-.25 F .236 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 192 R 1.155 -.15(ve u) --.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F F3(,)A -F0(the)3.105 E .579(result of the e)180 204 R .578(xpression is the res\ -ult of the binary test using the \214rst and third ar)-.15 F(guments) --.18 E 1.332(as operands.)180 216 R(The)6.332 E F13.832 E F0(and) -3.832 E F13.832 E F0 1.333 +(the binary conditional operators listed abo)180 286.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.105 E .579(result of the e)180 298.8 R .578(xpression i\ +s the result of the binary test using the \214rst and third ar)-.15 F +(guments)-.18 E 1.332(as operands.)180 310.8 R(The)6.332 E F23.832 +E F0(and)3.832 E F23.832 E F0 1.333 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 228 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F -.558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 -(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 -E(gument)-.18 E .52(test using the second and third ar)180 240 R 3.021 -(guments. If)-.18 F .521(the \214rst ar)3.021 F .521(gument is e)-.18 F -(xactly)-.15 E F1(\()3.021 E F0 .521(and the third)3.021 F(ar)180 252 Q -.485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485 -(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 -F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 264 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 276 S -.18(rg)-2.5 G -(uments).18 E .384(If the \214rst ar)180 288 R .384(gument is)-.18 F F1 -(!)2.884 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 -G .385(tion of the three-ar).05 F .385(gument e)-.18 F .385 -(xpression com-)-.15 F 1.648(posed of the remaining ar)180 300 R 4.147 -(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647 -(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E -(according to precedence using the rules listed abo)180 312 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 324 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 -E 1.635(The e)180 336 R 1.635(xpression is parsed and e)-.15 F -.25(va) --.25 G 1.635(luated according to precedence using the rules listed).25 F -(abo)180 348 Q -.15(ve)-.15 G(.).15 E(When used with)144 366 Q F1(test) -2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 -E F1(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F1(times)108 382.8 Q F0 +(three ar)180 322.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F +(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180 +334.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .521 +(gument is e)-.18 F(xactly)-.15 E F2(\()3.021 E F0 .521(and the third) +3.021 F(ar)180 346.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985 +E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E +(wise, the e)180 358.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +370.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 382.8 R +.384(gument is)-.18 F F2(!)2.884 E F0 2.885(,t)C .385 +(he result is the ne)-2.885 F -.05(ga)-.15 G .385(tion of the three-ar) +.05 F .385(gument e)-.18 F .385(xpression com-)-.15 F 1.648 +(posed of the remaining ar)180 394.8 R 4.147(guments. Otherwise,)-.18 F +1.647(the e)4.147 F 1.647(xpression is parsed and e)-.15 F -.25(va)-.25 +G(luated).25 E(according to precedence using the rules listed abo)180 +406.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 418.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 430.8 R 1.635 +(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 +442.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 460.8 Q F2(test)2.5 E +F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2 +(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F2(times)108 477.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)13.23 F(The return status is 0.)144 394.8 -Q F1(trap)108 411.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E/F4 10 -/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...])2.5 E -.702(The command)144 423.6 R F4(ar)3.532 E(g)-.37 E F0 .702 -(is to be read and e)3.422 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G -(ignal\(s\))-3.203 E F4(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F4 -(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) -144 435.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E -F0 3.108(,e)C .608 + processes run from the shell.)13.23 F(The return status is 0.)144 489.6 +Q F2(trap)108 506.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E F1(ar) +A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .702(The command)144 +518.4 R F1(ar)3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F -.15 +(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203 +(ss).15 G(ignal\(s\))-3.203 E F1(sigspec)3.203 E F0 5.703(.I).31 G(f) +-5.703 E F1(ar)3.533 E(g)-.37 E F0(is)3.423 E .609 +(absent \(and there is a single)144 530.4 R F1(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F23.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.658(\(the v)144 447.6 R .658(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .659 -(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) -144.34 459.6 Q F0 .581 +.658(\(the v)144 542.4 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659 +(is the null string the signal speci\214ed by each)3.378 F F1(sigspec) +144.34 554.4 Q F0 .581 (is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G --.1(ke).2 G 3.08(s. If).1 F F4(ar)3.41 E(g)-.37 E F0 .58 -(is not present and)3.3 F F13.08 E F0(has)3.08 E 1.214 -(been supplied, then the trap commands associated with each)144 471.6 R -F4(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 -F(gu-)-.18 E .86(ments are supplied or if only)144 483.6 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +-.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58 +(is not present and)3.3 F F23.08 E F0(has)3.08 E 1.214 +(been supplied, then the trap commands associated with each)144 566.4 R +F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 +F(gu-)-.18 E .86(ments are supplied or if only)144 578.4 R F23.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F2(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 495.6 R F12.83 E F0 .33(option causes the shell \ +(signal. The)144 590.4 R F22.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F -4.311(bers. Each)144 507.6 R F4(sigspec)4.651 E F0 1.811 -(is either a signal name de\214ned in <)4.621 F F4(signal.h)A F0 1.81 +4.311(bers. Each)144 602.4 R F1(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81 (>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E -(names are case insensiti)144 519.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 537.6 R F4 -(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648 -(\(0\) the command)3.898 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +(names are case insensiti)144 614.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 632.4 R F1 +(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 1.648 +(\(0\) the command)3.898 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F -1.649(If a)6.649 F F4(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 549.6 Q -(UG)-.09 E F3(,)A F0 1.168(the command)3.418 F F4(ar)3.998 E(g)-.37 E F0 +1.649(If a)6.649 F F1(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 644.4 Q +(UG)-.09 E F4(,)A F0 1.168(the command)3.418 F F1(ar)3.998 E(g)-.37 E F0 1.168(is e)3.888 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F4 1.167(simple command)3.667 F F0(,)A F4(for)3.667 E F0 -(command,)3.667 E F4(case)3.667 E F0(com-)3.667 E(mand,)144 561.6 Q F4 +-.25 G(ry).15 E F1 1.167(simple command)3.667 F F0(,)A F1(for)3.667 E F0 +(command,)3.667 E F1(case)3.667 E F0(com-)3.667 E(mand,)144 656.4 Q F1 (select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146 -(ry arithmetic).15 F F4(for)2.646 E F0 .147 +(ry arithmetic).15 F F1(for)2.646 E F0 .147 (command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147 -(cutes in a).15 F .146(shell function \(see)144 573.6 R F2 .146 +(cutes in a).15 F .146(shell function \(see)144 668.4 R F3 .146 (SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 585.6 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7 -(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG) --.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E F2 -(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 597.6 Q F4(ar) +F .146(to the description of the)2.646 F F2(extdeb)2.645 E(ug)-.2 E F0 +.145(option to)2.645 F(the)144 680.4 Q F2(shopt)3.2 E F0 -.2(bu)3.2 G .7 +(iltin for details of its ef).2 F .7(fect on the)-.25 F F2(DEB)3.2 E(UG) +-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0(is)3.51 E F3 +(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 692.4 Q F1(ar) 3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 609.6 Q -.15(xe) --.15 G(cuting.).15 E .928(If a)144 627.6 R F4(sigspec)3.768 E F0(is) -3.738 E F2(ERR)3.429 E F3(,)A F0 .929(the command)3.179 F F4(ar)3.759 E -(g)-.37 E F0 .929(is e)3.649 F -.15(xe)-.15 G .929(cuted whene).15 F --.15(ve)-.25 G 3.429(ras).15 G .929(imple command has a non\255zero) --3.429 F -.15(ex)144 639.6 S 1.009(it status, subject to the follo).15 F -1.009(wing conditions.)-.25 F(The)6.009 E F2(ERR)3.509 E F0 1.009 -(trap is not e)3.259 F -.15(xe)-.15 G 1.008(cuted if the f).15 F 1.008 -(ailed com-)-.1 F .324 -(mand is part of the command list immediately follo)144 651.6 R .324 -(wing a)-.25 F F1(while)2.824 E F0(or)2.824 E F1(until)2.824 E F0 -.1 -(ke)2.824 G(yw)-.05 E .324(ord, part of the test)-.1 F .151(in an)144 -663.6 R F4(if)2.661 E F0 .151(statement, part of a command e)4.611 F --.15(xe)-.15 G .151(cuted in a).15 F F1(&&)2.651 E F0(or)2.651 E F1(||) -2.651 E F0 .151(list, or if the command')2.651 F 2.651(sr)-.55 G .151 -(eturn v)-2.651 F(alue)-.25 E(is being in)144 675.6 Q -.15(ve)-.4 G -(rted via).15 E F1(!)2.5 E F0 5(.T)C(hese are the same conditions obe)-5 -E(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(option.)2.5 E 1.095 -(Signals ignored upon entry to the shell cannot be trapped or reset.)144 -693.6 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 705.6 R .662 -(alues in a subshell or subshell en)-.25 F .661(vironment when one is) --.4 F 2.5(created. The)144 717.6 R(return status is f)2.5 E(alse if an) --.1 E(y)-.15 E F4(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G -(lid; otherwise).25 E F1(trap)2.5 E F0(returns true.)2.5 E(GNU Bash-4.2) -72 768 Q(2010 December 28)135.965 E(68)185.955 E 0 Cg EP -%%Page: 69 69 +.643(cuted with the).15 F F2(.)3.143 E F0(or)3.143 E F2(sour)3.143 E(ce) +-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 704.4 Q -.15(xe) +-.15 G(cuting.).15 E .521(If a)144 722.4 R F1(sigspec)3.361 E F0(is) +3.331 E F3(ERR)3.021 E F4(,)A F0 .522(the command)2.771 F F1(ar)3.352 E +(g)-.37 E F0 .522(is e)3.242 F -.15(xe)-.15 G .522(cuted whene).15 F +-.15(ve)-.25 G 3.022(raap).15 G .522(ipeline \(which may consist of a) +-3.022 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(71)190.95 E 0 Cg +EP +%%Page: 72 72 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(type)108 84 Q F0([)2.5 E F1(\255aftpP)A F0 -(])A/F2 10/Times-Italic@0 SF(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 -E -.4(Wi)144 96 S .173(th no options, indicate ho).4 F 2.673(we)-.25 G -(ach)-2.673 E F2(name)3.033 E F0 -.1(wo)2.853 G .174 +-.35 E .185(single simple command\), a list, or a compound command retu\ +rns a non\255zero e)144 84 R .184(xit status, subject to)-.15 F .451 +(the follo)144 96 R .451(wing conditions.)-.25 F(The)5.451 E/F1 9 +/Times-Bold@0 SF(ERR)2.951 E F0 .451(trap is not e)2.701 F -.15(xe)-.15 +G .451(cuted if the f).15 F .452(ailed command is part of the com-)-.1 F +.388(mand list immediately follo)144 108 R .388(wing a)-.25 F/F2 10 +/Times-Bold@0 SF(while)2.888 E F0(or)2.888 E F2(until)2.888 E F0 -.1(ke) +2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F/F3 10 +/Times-Italic@0 SF(if)2.897 E F0 .387(statement, part)4.847 F .777 +(of a command e)144 120 R -.15(xe)-.15 G .778(cuted in a).15 F F2(&&) +3.278 E F0(or)3.278 E F2(||)3.278 E F0 .778(list e)3.278 F .778 +(xcept the command follo)-.15 F .778(wing the \214nal)-.25 F F2(&&)3.278 +E F0(or)3.278 E F2(||)3.278 E F0 3.278(,a)C -.15(ny)-3.278 G 1.28 +(command in a pipeline b)144 132 R 1.28(ut the last, or if the command') +-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 F 1.28(alue is being in)-.25 F +-.15(ve)-.4 G 1.28(rted using).15 F F2(!)3.78 E F0(.)A +(These are the same conditions obe)144 144 Q(yed by the)-.15 E F2(err) +2.5 E(exit)-.18 E F0(\()2.5 E F2A F0 2.5(\)o)C(ption.)-2.5 E 1.095 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +162 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 174 R .662 +(alues in a subshell or subshell en)-.25 F .661(vironment when one is) +-.4 F 2.5(created. The)144 186 R(return status is f)2.5 E(alse if an)-.1 +E(y)-.15 E F3(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F2(trap)2.5 E F0(returns true.)2.5 E F2(type)108 +202.8 Q F0([)2.5 E F2(\255aftpP)A F0(])A F3(name)2.5 E F0([)2.5 E F3 +(name)A F0(...])2.5 E -.4(Wi)144 214.8 S .173 +(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F3(name) +3.033 E F0 -.1(wo)2.853 G .174 (uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F1144 108 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0 -.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E -F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0 -(,).24 E F2 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F2 -(\214le)5.252 E F0(if)3.522 E F2(name)144.36 120 Q F0 .086 +F2144 226.8 Q F0 .843(option is used,)3.343 F F2(type)3.343 E F0 +.843(prints a string which is one of)3.343 F F3(alias)3.343 E F0(,).27 E +F3 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F3(function)3.343 E F0 +(,).24 E F3 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F3 +(\214le)5.252 E F0(if)3.522 E F3(name)144.36 238.8 Q F0 .086 (is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 (ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F2 +(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F3 (name)2.947 E F0 .087(is not)2.767 F .119 -(found, then nothing is printed, and an e)144 132 R .118 +(found, then nothing is printed, and an e)144 250.8 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F -F12.618 E F0 .118(option is used,)2.618 F F1(type)2.618 E F0 .855 -(either returns the name of the disk \214le that w)144 144 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 +F22.618 E F0 .118(option is used,)2.618 F F2(type)2.618 E F0 .855 +(either returns the name of the disk \214le that w)144 262.8 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F3(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if) -144 156 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 G -.641(uld not return).1 F F2(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E F1 -3.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666 -(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 168 R F2(name)2.612 E -F0 2.612(,e)C -.15(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113 -(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F2 -(\214le)2.613 E F0 5.113(.I).18 G 2.613(fac)-5.113 G .113 -(ommand is hashed,)-2.613 F F12.613 E F0(and)144 180 Q F1 -2.945 E F0 .445(print the hashed v)2.945 F .444 -(alue, not necessarily the \214le that appears \214rst in)-.25 F F4 --.666(PA)2.944 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .444(If the) -4.944 F F12.944 E F0(option)2.944 E .265(is used,)144 192 R F1 -(type)2.765 E F0 .265(prints all of the places that contain an e)2.765 F --.15(xe)-.15 G .265(cutable named).15 F F2(name)2.765 E F0 5.265(.T).18 -G .265(his includes aliases)-5.265 F .427 -(and functions, if and only if the)144 204 R F12.926 E F0 .426 -(option is not also used.)2.926 F .426 -(The table of hashed commands is not)5.426 F .548(consulted when using) -144 216 R F13.048 E F0 5.548(.T)C(he)-5.548 E F13.048 E F0 -.549(option suppresses shell function lookup, as with the)3.048 F F1 -(command)3.049 E F0 -.2(bu)144 228 S(iltin.).2 E F1(type)5 E F0 -(returns true if all of the ar)2.5 E(guments are found, f)-.18 E -(alse if an)-.1 E 2.5(ya)-.15 G(re not found.)-2.5 E F1(ulimit)108 244.8 -Q F0([)2.5 E F1(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F2 -(limit)A F0(]])A(Pro)144 256.8 Q .244(vides control o)-.15 F -.15(ve) --.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25(va)-.2 G .244 +144 274.8 R/F4 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 +G .641(uld not return).1 F F3(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E +F23.14 E F0 .64(option forces a)3.14 F F1 -.666(PA)3.14 G(TH)-.189 +E F0 .112(search for each)144 286.8 R F3(name)2.612 E F0 2.612(,e)C -.15 +(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F4 .113(type -t name)2.613 F F0 +-.1(wo)2.613 G .113(uld not return).1 F F3(\214le)2.613 E F0 5.113(.I) +.18 G 2.613(fac)-5.113 G .113(ommand is hashed,)-2.613 F F22.613 E +F0(and)144 298.8 Q F23.231 E F0 .731(print the hashed v)3.231 F +.73(alue, which is not necessarily the \214le that appears \214rst in) +-.25 F F1 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73 +(If the)5.23 F F2144 310.8 Q F0 1.748(option is used,)4.248 F F2 +(type)4.248 E F0 1.748(prints all of the places that contain an e)4.248 +F -.15(xe)-.15 G 1.748(cutable named).15 F F3(name)4.249 E F0 6.749(.T) +.18 G(his)-6.749 E .744 +(includes aliases and functions, if and only if the)144 322.8 R F2 +3.244 E F0 .744(option is not also used.)3.244 F .743 +(The table of hashed)5.744 F 1.223(commands is not consulted when using) +144 334.8 R F23.723 E F0 6.223(.T)C(he)-6.223 E F23.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .326(with the) +144 346.8 R F2(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F2(type) +5.326 E F0 .326(returns true if all of the ar)2.826 F .325 +(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325 +(re not)-2.825 F(found.)144 358.8 Q F2(ulimit)108 375.6 Q F0([)2.5 E F2 +(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F3(limit)A F0(]])A +(Pro)144 387.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 +G .243(he resources a)-2.743 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 268.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +.944(that allo)144 399.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F23.444 E F0(and)3.444 E F23.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 280.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 411.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 292.8 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E -F0(nor)2.926 E F12.926 E F0 .426 -(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -304.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +ft limit may)2.708 F .426(be increased up to the v)144 423.6 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F22.925 E +F0(nor)2.925 E F22.925 E F0 .425 +(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 +435.6 R .139(The v)5.139 F .139(alue of)-.25 F F3(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 316.8 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) +.742(of the special v)144 447.6 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 328.8 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 459.6 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F3(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .498(resource is printed, unless the)144 340.8 R F12.999 E F0 -.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 +F .499(resource is printed, unless the)144 471.6 R F22.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 352.8 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1 -144 364.8 Q F0(All current limits are reported)25.3 E F1144 -376.8 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E -F1144 388.8 Q F0(The maximum size of core \214les created)25.86 E -F1144 400.8 Q F0(The maximum size of a process')24.74 E 2.5(sd) --.55 G(ata se)-2.5 E(gment)-.15 E F1144 412.8 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F1144 424.8 Q +(limit name and unit are printed before the v)144 483.6 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 +144 495.6 Q F0(All current limits are reported)25.3 E F2144 +507.6 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E +F2144 519.6 Q F0(The maximum size of core \214les created)25.86 E +F2144 531.6 Q F0(The maximum size of a process')24.74 E 2.5(sd) +-.55 G(ata se)-2.5 E(gment)-.15 E F2144 543.6 Q F0 +(The maximum scheduling priority \("nice"\))25.86 E F2144 555.6 Q F0(The maximum size of \214les written by the shell and its children) -26.97 E F1144 436.8 Q F0(The maximum number of pending signals) -27.52 E F1144 448.8 Q F0(The maximum size that may be lock)27.52 E -(ed into memory)-.1 E F1144 460.8 Q F0 +26.97 E F2144 567.6 Q F0(The maximum number of pending signals) +27.52 E F2144 579.6 Q F0(The maximum size that may be lock)27.52 E +(ed into memory)-.1 E F2144 591.6 Q F0 (The maximum resident set size \(man)21.97 E 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F1144 472.8 Q F0 .791(Th\ +(ystems do not honor this limit\))-2.5 E F2144 603.6 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -24.74 F 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F(be set\))180 -484.8 Q F1144 496.8 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1 -144 508.8 Q F0 -(The maximum number of bytes in POSIX message queues)24.74 E F1144 -520.8 Q F0(The maximum real-time scheduling priority)25.86 E F1144 -532.8 Q F0(The maximum stack size)26.41 E F1144 544.8 Q F0 -(The maximum amount of cpu time in seconds)26.97 E F1144 556.8 Q +24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F +(be set\))180 615.6 Q F2144 627.6 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F2 +144 639.6 Q F0 +(The maximum number of bytes in POSIX message queues)24.74 E F2144 +651.6 Q F0(The maximum real-time scheduling priority)25.86 E F2144 +663.6 Q F0(The maximum stack size)26.41 E F2144 675.6 Q F0 +(The maximum amount of cpu time in seconds)26.97 E F2144 687.6 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F1144 568.8 Q F0 .47 +(ilable to a single user).25 E F2144 699.6 Q F0 .47 (The maximum amount of virtual memory a)25.3 F -.25(va)-.2 G .47 (ilable to the shell and, on some systems, to).25 F(its children)180 -580.8 Q F1144 592.8 Q F0(The maximum number of \214le locks)25.3 E -F1144 604.8 Q F0(The maximum number of threads)23.63 E(If)144 -621.6 Q F2(limit)2.933 E F0 .343(is gi)3.523 F -.15(ve)-.25 G .343 -(n, it is the ne).15 F 2.843(wv)-.25 G .343 -(alue of the speci\214ed resource \(the)-3.093 F F12.843 E F0 .343 -(option is display only\).)2.843 F .343(If no)5.343 F .175(option is gi) -144 633.6 R -.15(ve)-.25 G .175(n, then).15 F F12.675 E F0 .175 -(is assumed.)2.675 F -1.11(Va)5.175 G .175 -(lues are in 1024-byte increments, e)1.11 F .176(xcept for)-.15 F F1 -2.676 E F0 2.676(,w)C .176(hich is in)-2.676 F(seconds,)144 645.6 -Q F12.516 E F0 2.516(,w)C .016 -(hich is in units of 512-byte blocks, and)-2.516 F F12.516 E F0(,) -A F12.515 E F0(,)A F12.515 E F0 2.515(,a)C(nd)-2.515 E F1 -2.515 E F0 2.515(,w)C .015(hich are unscaled v)-2.515 F(al-)-.25 E -3.787(ues. The)144 657.6 R 1.287(return status is 0 unless an in)3.787 F --.25(va)-.4 G 1.287(lid option or ar).25 F 1.287 +711.6 Q(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(72)190.95 E 0 Cg +EP +%%Page: 73 73 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(The maximum number of \214le locks)25.3 E F1144 96 Q F0 +(The maximum number of threads)23.63 E(If)144 112.8 Q/F2 10 +/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 +F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 +(no option is gi)144 124.8 R -.15(ve)-.25 G .045(n, then).15 F F1 +2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 +2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .402(in seconds;)144 +136.8 R F12.902 E F0 2.902(,w)C .402 +(hich is in units of 512-byte blocks; and)-2.902 F F12.902 E F0(,) +A F12.902 E F0(,)A F12.902 E F0 2.902(,a)C(nd)-2.902 E F1 +2.903 E F0 2.903(,w)C .403(hich are unscaled)-2.903 F -.25(va)144 +148.8 S 3.083(lues. The).25 F .583(return status is 0 unless an in)3.083 +F -.25(va)-.4 G .583(lid option or ar).25 F .583 (gument is supplied, or an error occurs)-.18 F(while setting a ne)144 -669.6 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 686.4 Q F0([)2.5 E F1 +160.8 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 177.6 Q F0([)2.5 E F1 A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A .2 -(The user \214le-creation mask is set to)144 698.4 R F2(mode)2.7 E F0 +(The user \214le-creation mask is set to)144 189.6 R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 710.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -722.4 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 201.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +213.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 -(option causes the mask to be)2.882 F(GNU Bash-4.2)72 768 Q -(2010 December 28)135.965 E(69)185.955 E 0 Cg EP -%%Page: 70 70 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .547(printed in symbolic form; the def)144 84 R .547 +(option causes the mask to be)2.882 F .547 +(printed in symbolic form; the def)144 225.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G -(he)-3.047 E/F1 10/Times-Bold@0 SF3.047 E F0 .547 -(option is supplied, and)3.047 F/F2 10/Times-Italic@0 SF(mode)144.38 96 -Q F0 .552 -(is omitted, the output is in a form that may be reused as input.)3.232 -F .551(The return status is 0 if the)5.551 F(mode w)144 108 Q +(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 +(mode)144.38 237.6 Q F0 .551 +(is omitted, the output is in a form that may be reused as input.)3.231 +F .552(The return status is 0 if the)5.552 F(mode w)144 249.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 124.8 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 136.8 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 266.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 278.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) 4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 148.8 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 290.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 165.6 Q F0<5bad>2.5 E F1 -(fv)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.15(Fo)144 177.6 S 3.107 -(re).15 G(ach)-3.107 E F2(name)3.107 E F0 3.107(,r).18 G(emo)-3.107 E -.907 -.15(ve t)-.15 H .607(he corresponding v).15 F .607 -(ariable or function.)-.25 F .606(If no options are supplied, or the) -5.607 F F1144 189.6 Q F0 .304(option is gi)2.804 F -.15(ve)-.25 G -.304(n, each).15 F F2(name)3.164 E F0 .305(refers to a shell v)2.985 F -2.805(ariable. Read-only)-.25 F -.25(va)2.805 G .305 -(riables may not be unset.).25 F(If)5.305 E F1144 201.6 Q F0 .46 -(is speci\214ed, each)2.96 F F2(name)3.32 E F0 .459 -(refers to a shell function, and the function de\214nition is remo)3.14 -F -.15(ve)-.15 G 2.959(d. Each).15 F .902(unset v)144 213.6 R .902 -(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.402(df).15 G .902 -(rom the en)-3.402 F .903(vironment passed to subsequent commands.)-.4 F -(If)5.903 E(an)144 225.6 Q 6.916(yo)-.15 G(f)-6.916 E/F3 9/Times-Bold@0 -SF(COMP_W)6.916 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM) -6.665 E F4(,)A F3(SECONDS)6.665 E F4(,)A F3(LINENO)6.665 E F4(,)A F3 -(HISTCMD)6.665 E F4(,)A F3(FUNCN)6.665 E(AME)-.18 E F4(,)A F3(GR)144 -237.6 Q(OUPS)-.27 E F4(,)A F0(or)2.522 E F3(DIRST)2.772 E -.495(AC)-.81 -G(K).495 E F0 .272(are unset, the)2.522 F 2.772(yl)-.15 G .272 -(ose their special properties, e)-2.772 F -.15(ve)-.25 G 2.772(ni).15 G -2.772(ft)-2.772 G(he)-2.772 E 2.773(ya)-.15 G .273(re subsequently) --2.773 F 2.5(reset. The)144 249.6 R -.15(ex)2.5 G -(it status is true unless a).15 E F2(name)2.86 E F0(is readonly)2.68 E -(.)-.65 E F1(wait)108 266.4 Q F0([)2.5 E F2 2.5(n.)C(..)-2.5 E F0(])A --.8(Wa)144 278.4 S .288 -(it for each speci\214ed process and return its termination status.).8 F -(Each)5.288 E F2(n)3.148 E F0 .287(may be a process ID or a)3.028 F .722 -(job speci\214cation; if a job spec is gi)144 290.4 R -.15(ve)-.25 G -.722(n, all processes in that job').15 F 3.222(sp)-.55 G .722 -(ipeline are w)-3.222 F .722(aited for)-.1 F 5.722(.I)-.55 G(f)-5.722 E -F2(n)3.583 E F0(is)3.463 E 1.266(not gi)144 302.4 R -.15(ve)-.25 G 1.266 -(n, all currently acti).15 F 1.566 -.15(ve c)-.25 H 1.265 -(hild processes are w).15 F 1.265(aited for)-.1 F 3.765(,a)-.4 G 1.265 -(nd the return status is zero.)-3.765 F(If)6.265 E F2(n)4.125 E F0 .456 -(speci\214es a non-e)144 314.4 R .457 -(xistent process or job, the return status is 127.)-.15 F .457 -(Otherwise, the return status is the)5.457 F -.15(ex)144 326.4 S -(it status of the last process or job w).15 E(aited for)-.1 E(.)-.55 E -/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 343.2 Q F0(If)108 355.2 Q -F1(bash)4.397 E F0 1.897(is started with the name)4.397 F F1(rbash)4.397 -E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 E F0 1.896 -(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896 -(cation, the shell becomes).2 F 3.445(restricted. A)108 367.2 R .945 -(restricted shell is used to set up an en)3.445 F .946 -(vironment more controlled than the standard shell.)-.4 F(It)5.946 E -(beha)108 379.2 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 307.2 Q F0<5bad>2.5 E F1 +(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 319.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 +(he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 +(If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) +-.25 G 1.328(n, each).15 F F2(name)144.36 331.2 Q F0 1.551 +(refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 +(ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 343.2 R F1 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 +2.141(refers to a shell function, and the function de\214nition is)4.821 +F(remo)144 355.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 +2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 +(is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E +F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492 +(be unset rather than the v)144 367.2 R .492(ariable it references.)-.25 +F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 +2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F +.221(options are supplied, each)144 379.2 R F2(name)2.721 E F0 .221 +(refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 +(ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 +(tion with that name is unset.)144 391.2 R 1.189(Each unset v)6.189 F +1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G +1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 +(passed to subsequent commands.)144 403.2 R 3.206(If an)8.206 F 5.706 +(yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 +E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E +F4(,)A F3(LINENO)144 415.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E +F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 +F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 +427.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 444 Q +F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 +(Wa)144 456 S .027(it for each speci\214ed child process and return its\ + termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 +(may be a process ID)2.766 F .256 +(or a job speci\214cation; if a job spec is gi)144 468 R -.15(ve)-.25 G +.256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 +(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E +F2(n)3.116 E F0 .318(is not gi)144 480 R -.15(ve)-.25 G .318 +(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 +(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 +(nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 +492 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) +2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 +(ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) +5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 504 S(on-e) +-2.596 E .096(xistent process or job, the return status is 127.)-.15 F +.095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15 +F(of the last process or job w)144 516 Q(aited for)-.1 E(.)-.55 E/F5 +10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 532.8 Q F0(If)108 544.8 Q F1 +(bash)4.396 E F0 1.896(is started with the name)4.396 F F1(rbash)4.397 E +F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 E F0 1.897 +(option is supplied at in)4.397 F -.2(vo)-.4 G 1.897 +(cation, the shell becomes).2 F 3.446(restricted. A)108 556.8 R .945 +(restricted shell is used to set up an en)3.446 F .945 +(vironment more controlled than the standard shell.)-.4 F(It)5.945 E +(beha)108 568.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 (bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E 32.5<8363>108 396 -S(hanging directories with)-32.5 E F1(cd)2.5 E F0 32.5<8373>108 412.8 S -(etting or unsetting the v)-32.5 E(alues of)-.25 E F3(SHELL)2.5 E F4(,)A -F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or)2.25 E -F3 -.27(BA)2.5 G(SH_ENV).27 E F0 32.5<8373>108 429.6 S +(wing are disallo)-.25 E(wed or not performed:)-.25 E 32.5<8363>108 +585.6 S(hanging directories with)-32.5 E F1(cd)2.5 E F0 32.5<8373>108 +602.4 S(etting or unsetting the v)-32.5 E(alues of)-.25 E F3(SHELL)2.5 E +F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) +2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0 32.5<8373>108 619.2 S (pecifying command names containing)-32.5 E F1(/)2.5 E F0 32.5<8373>108 -446.4 S(pecifying a \214le name containing a)-32.5 E F1(/)2.5 E F0 +636 S(pecifying a \214lename containing a)-32.5 E F1(/)2.5 E F0 (as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E 32.5<8373>108 463.2 S .45 +(iltin command).2 E 32.5<8373>108 652.8 S .449 (pecifying a \214lename containing a slash as an ar)-32.5 F .449 -(gument to the)-.18 F F12.949 E F0 .449(option to the)2.949 F F1 -(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 475.2 Q -32.5<8369>108 492 S(mporting function de\214nitions from the shell en) --32.5 E(vironment at startup)-.4 E 32.5<8370>108 508.8 S(arsing the v) +(gument to the)-.18 F F12.95 E F0 .45(option to the)2.95 F F1 +(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 664.8 Q 32.5 +<8369>108 681.6 S(mporting function de\214nitions from the shell en) +-32.5 E(vironment at startup)-.4 E 32.5<8370>108 698.4 S(arsing the v) -32.5 E(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E 32.5<8372>108 525.6 S(edirecting output usi\ -ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 -<8375>108 542.4 S(sing the)-32.5 E F1(exec)2.5 E F0 -.2(bu)2.5 G +(vironment at startup)-.4 E 32.5<8372>108 715.2 S(edirecting output usi\ +ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E +(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(73)190.95 E 0 Cg EP +%%Page: 74 74 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) +-.35 E 32.5<8375>108 84 S(sing the)-32.5 E/F1 10/Times-Bold@0 SF(exec) +2.5 E F0 -.2(bu)2.5 G (iltin command to replace the shell with another command).2 E 32.5<8361> -108 559.2 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E +108 100.8 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E F12.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 576 S +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 117.6 S (sing the)-32.5 E F1(enable)2.5 E F0 -.2(bu)2.5 G (iltin command to enable disabled shell b).2 E(uiltins)-.2 E 32.5<8373> -108 592.8 S(pecifying the)-32.5 E F12.5 E F0(option to the)2.5 E -F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 609.6 +108 134.4 S(pecifying the)-32.5 E F12.5 E F0(option to the)2.5 E +F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 151.2 S(urning of)-32.5 E 2.5(fr)-.25 G(estricted mode with)-2.5 E F1(set +r) 2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 626.4 Q 2.5(ys)-.15 G +(These restrictions are enforced after an)108 168 Q 2.5(ys)-.15 G (tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 643.2 R -.15 -(xe)-.15 G 1.567(cuted \(see).15 F F3 1.567(COMMAND EXECUTION)4.067 F F0 -(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 655.2 Q F0(turns of) -2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 -E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F5(SEE ALSO)72 -672 Q F2(Bash Refer)108 684 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 -E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu Readline Libr)108 696 Q +(When a command that is found to be a shell script is e)108 184.8 R -.15 +(xe)-.15 G 1.566(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.566 +(COMMAND EXECUTION)4.066 F F0(abo)3.816 E -.15(ve)-.15 G(\),).15 E F1 +(rbash)108 196.8 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H +(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G +(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 213.6 Q/F4 +10/Times-Italic@0 SF(Bash Refer)108 225.6 Q(ence Manual)-.37 E F0 2.5 +(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4 +(The Gnu Readline Libr)108 237.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 249.6 Q (ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(70)185.955 E 0 Cg EP -%%Page: 71 71 +F4 -.8(Po)108 261.6 S(rtable Oper).8 E +(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 273.6 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 285.6 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) +108 297.6 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A +F4(emacs)108 309.6 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 +321.6 S(adline).37 E F0(\(3\))A F3(FILES)72 338.4 Q F4(/bin/bash)109.666 +350.4 Q F0(The)144 362.4 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E +F4(/etc/pr)109.666 374.4 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 386.4 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bash_pr)109.666 398.4 Q(o\214le)-.45 +E F0(The personal initialization \214le, e)144 410.4 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bashr)109.666 422.4 Q(c)-.37 E F0 +(The indi)144 434.4 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F4(~/.bash_lo)109.666 446.4 Q(gout)-.1 E F0 +(The indi)144 458.4 Q(vidual login shell cleanup \214le, e)-.25 E -.15 +(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr) +109.666 470.4 Q(c)-.37 E F0(Indi)144 482.4 Q(vidual)-.25 E F4 -.37(re) +2.5 G(adline).37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 499.2 S +(THORS).548 E F0(Brian F)108 511.2 Q(ox, Free Softw)-.15 E(are F)-.1 E +(oundation)-.15 E(bfox@gnu.or)108 523.2 Q(g)-.18 E(Chet Rame)108 540 Q +1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni) +-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 552 Q(y@case.edu)-.15 E +F3 -.11(BU)72 568.8 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 +(If you \214nd a b)108 580.8 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568 +(you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F +3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 +F 5.626(that it appears in the latest v)108 592.8 R 5.625(ersion of)-.15 +F F1(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.625 +(ersion is al)-.15 F -.1(wa)-.1 G 5.625(ys a).1 F -.25(va)-.2 G 5.625 +(ilable from).25 F F4(ftp://ftp.gnu.or)108 604.8 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .41(Once you ha)108 621.6 R .71 -.15(ve d)-.2 H .41 +(etermined that a b).15 F .41(ug actually e)-.2 F .411(xists, use the) +-.15 F F4(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F +.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 633.6 R .895 -.15 +(ve a \214)-.2 H .595(x, you are encouraged to mail that as well!).15 F +.594(Suggestions and `philosophical' b)5.595 F .594(ug reports may)-.2 F +(be mailed to)108 645.6 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 662.4 Q(ug reports should include:)-.2 E(The v) +108 679.2 Q(ersion number of)-.15 E F1(bash)2.5 E F0(The hardw)108 691.2 +Q(are and operating system)-.1 E(The compiler used to compile)108 703.2 +Q(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(74)190.95 E 0 Cg EP +%%Page: 75 75 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Italic@0 SF(The Gnu History Libr)108 84 Q(ary)-.15 E -F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F1 -.8(Po)108 -96 S(rtable Oper).8 E(ating System Interface \(POSIX\) P)-.15 E -(art 2: Shell and Utilities)-.8 E F0 2.5(,I)C(EEE)-2.5 E F1(sh)108 108 Q -F0(\(1\),)A F1(ksh)2.5 E F0(\(1\),)A F1(csh)2.5 E F0(\(1\))A F1(emacs) -108 120 Q F0(\(1\),)A F1(vi)2.5 E F0(\(1\))A F1 -.37(re)108 132 S -(adline).37 E F0(\(3\))A/F2 10.95/Times-Bold@0 SF(FILES)72 148.8 Q F1 -(/bin/bash)109.666 160.8 Q F0(The)144 172.8 Q/F3 10/Times-Bold@0 SF -(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F1(/etc/pr)109.666 184.8 Q -(o\214le)-.45 E F0(The systemwide initialization \214le, e)144 196.8 Q --.15(xe)-.15 G(cuted for login shells).15 E F1(~/.bash_pr)109.666 208.8 -Q(o\214le)-.45 E F0(The personal initialization \214le, e)144 220.8 Q --.15(xe)-.15 G(cuted for login shells).15 E F1(~/.bashr)109.666 232.8 Q -(c)-.37 E F0(The indi)144 244.8 Q(vidual per)-.25 E(-interacti)-.2 E --.15(ve)-.25 G(-shell startup \214le).15 E F1(~/.bash_lo)109.666 256.8 Q -(gout)-.1 E F0(The indi)144 268.8 Q -(vidual login shell cleanup \214le, e)-.25 E -.15(xe)-.15 G -(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr)109.666 280.8 -Q(c)-.37 E F0(Indi)144 292.8 Q(vidual)-.25 E F1 -.37(re)2.5 G(adline).37 -E F0(initialization \214le)2.5 E F2 -.548(AU)72 309.6 S(THORS).548 E F0 -(Brian F)108 321.6 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E -(bfox@gnu.or)108 333.6 Q(g)-.18 E(Chet Rame)108 350.4 Q 1.3 -.65(y, C) --.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) --.25 G(rsity).15 E(chet.rame)108 362.4 Q(y@case.edu)-.15 E F2 -.11(BU)72 -379.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568 -(If you \214nd a b)108 391.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 -(you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F -3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .567(ug, and)-.2 -F 5.625(that it appears in the latest v)108 403.2 R 5.625(ersion of)-.15 -F F3(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 -(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 -(ilable from).25 F F1(ftp://ftp.gnu.or)108 415.2 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .411(Once you ha)108 432 R .711 -.15(ve d)-.2 H .411 -(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the) --.15 F F1(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 -(ug report.)-.2 F(If)5.41 E .594(you ha)108 444 R .894 -.15(ve a \214) --.2 H .595(x, you are encouraged to mail that as well!).15 F .595 -(Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F -(be mailed to)108 456 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 -(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 472.8 Q(ug reports should include:)-.2 E(The v) -108 489.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 501.6 -Q(are and operating system)-.1 E(The compiler used to compile)108 513.6 -Q 2.5(Ad)108 525.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 -E 2.5(As)108 537.6 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 -G(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 554.4 Q(ug)-.2 E F0 +-.35 E 2.5(Ad)108 84 S(escription of the b)-2.5 E(ug beha)-.2 E(viour) +-.2 E 2.5(As)108 96 S(hort script or `recipe' which e)-2.5 E -.15(xe) +-.15 G(rcises the b).15 E(ug)-.2 E/F1 10/Times-Italic@0 SF(bashb)108.27 +112.8 Q(ug)-.2 E F0 (inserts the \214rst three items automatically into the template it pro) 2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 -571.2 Q(ug reports concerning this manual page should be directed to)-.2 +129.6 Q(ug reports concerning this manual page should be directed to)-.2 E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E F2 -.11(BU)72 588 S(GS).11 E F0(It')108 600 Q 2.5(st)-.55 G -(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869 -(There are some subtle dif)108 616.8 R 1.869(ferences between)-.25 F F3 -(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F -F3(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9 -/Times-Bold@0 SF(POSIX)108 628.8 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 645.6 Q(Shell b)108 662.4 Q +.25 E/F2 10.95/Times-Bold@0 SF -.11(BU)72 146.4 S(GS).11 E F0(It')108 +158.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.868 +(There are some subtle dif)108 175.2 R 1.868(ferences between)-.25 F/F3 +10/Times-Bold@0 SF(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869 +(ersions of)-.15 F F3(sh)4.369 E F0 4.369(,m)C 1.869 +(ostly because of the)-4.369 F/F4 9/Times-Bold@0 SF(POSIX)108 187.2 Q F0 +(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 204 Q +(Shell b)108 220.8 Q (uiltin commands and functions are not stoppable/restartable.)-.2 E 1.315(Compound commands and command sequences of the form `a ; b ; c' a\ -re not handled gracefully when)108 679.2 R .39 -(process suspension is attempted.)108 691.2 R .389 -(When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15 -G .389(cutes the ne).15 F .389(xt com-)-.15 F .192 -(mand in the sequence.)108 703.2 R .192(It suf)5.192 F .192(\214ces to \ -place the sequence of commands between parentheses to force it into a) --.25 F(subshell, which may be stopped as a unit.)108 715.2 Q -(GNU Bash-4.2)72 768 Q(2010 December 28)135.965 E(71)185.955 E 0 Cg EP -%%Page: 72 72 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(Array v)108 84 Q(ariables may not \(yet\) be e)-.25 E(xported.) --.15 E(There may be only one acti)108 100.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash-4.2)72 768 Q(2010 December 28) -135.965 E(72)185.955 E 0 Cg EP +re not handled gracefully when)108 237.6 R .389 +(process suspension is attempted.)108 249.6 R .389 +(When a process is stopped, the shell immediately e)5.389 F -.15(xe)-.15 +G .39(cutes the ne).15 F .39(xt com-)-.15 F .193(mand in the sequence.) +108 261.6 R .192(It suf)5.193 F .192(\214ces to place the sequence of c\ +ommands between parentheses to force it into a)-.25 F +(subshell, which may be stopped as a unit.)108 273.6 Q(Array v)108 290.4 +Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 307.2 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 +E(75)190.95 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi index 5494dbf10148ab66664502fca338cbdb59fca4bd..f56627f8eb9e0b3e0c5b2c11d3b7dae87180a7b0 100644 GIT binary patch delta 144812 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 C!fh=8 delta 113906 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%0AWCkFSC2r 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 UJ#FOJtAA*#u1`N?|4RP-KWSCQZU6uP diff --git a/doc/bashref.html b/doc/bashref.html index ee63422..6f92707 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,6 +1,6 @@ - +

*
-Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, it expands to a single word + +($*) Expands to the positional parameters, starting from one. +When the expansion is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and pathname expansion. +When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS special variable. That is, "$*" is equivalent @@ -1895,10 +2059,11 @@ If IFS is null, the parameters are joined without intervening separators.

- +

@ -
-Expands to the positional parameters, starting from one. When the +
+ +($@) Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$@" is equivalent to "$1" "$2" .... @@ -1911,46 +2076,53 @@ When there are no positional parameters, "$@" and expand to nothing (i.e., they are removed).

- +

# -
-Expands to the number of positional parameters in decimal. +
+ +($#) Expands to the number of positional parameters in decimal.

- +

? -
-Expands to the exit status of the most recently executed foreground +
+ +($?) Expands to the exit status of the most recently executed foreground pipeline.

- +

- -
-(A hyphen.) Expands to the current option flags as specified upon +
+ +($-, a hyphen.) Expands to the current option flags as specified upon invocation, by the set builtin command, or those set by the shell itself (such as the `-i' option).

- +

$ -
-Expands to the process ID of the shell. In a () subshell, it +
+ +($$) Expands to the process ID of the shell. In a () subshell, it expands to the process ID of the invoking shell, not the subshell.

- +

! -
-Expands to the process ID of the most recently executed background -(asynchronous) command. +
+ +($!) Expands to the process ID of the job most recently placed into the +background, whether executed as an asynchronous command or using +the bg builtin (see section 7.2 Job Control Builtins).

- +

0 -
-Expands to the name of the shell or shell script. This is set at +
+ +($0) Expands to the name of the shell or shell script. This is set at shell initialization. If Bash is invoked with a file of commands (see section 3.8 Shell Scripts), $0 is set to the name of that file. If Bash is started with the `-c' option (see section 6.1 Invoking Bash), @@ -1959,10 +2131,11 @@ executed, if one is present. Otherwise, it is set to the filename used to invoke Bash, as given by argument zero.

- +

_ -
-(An underscore.) +
+ +($_, an underscore.) At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. @@ -1985,7 +2158,7 @@ When checking mail, this parameter holds the name of the mail file. [ >> ]         [Top] [Contents] -[Index] +[Index] [ ? ]

3.5 Shell Expansions

@@ -1994,6 +2167,8 @@ When checking mail, this parameter holds the name of the mail file. Expansion is performed on the command line after it has been split into tokens. There are seven kinds of expansion performed: +

+